<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 在FPGA上建立一個UWB脈沖發(fā)生器

          在FPGA上建立一個UWB脈沖發(fā)生器

          作者: 時間:2011-09-21 來源:網(wǎng)絡(luò) 收藏

          用大多數(shù)FPGA都可以實現(xiàn)一個數(shù)字UWB(超寬帶)脈沖發(fā)生器。本設(shè)計可以創(chuàng)建一個兩倍于FPGA時鐘頻率的脈沖信號(圖1)。以前的設(shè)計要采用異步延遲,才能制造出所需頻率的脈沖。不過該設(shè)計需要一只支持三態(tài)上拉的FPGA,如Xilinx公司的Virtex 2(參考文獻1)。這種方案亦需要手工布局與布線。今天的FPGA都不支持三態(tài)上拉。另外,異步延遲會隨溫度而變化。本例采用了一種有多時鐘相位組合的同步延遲方案。這一設(shè)計可以實現(xiàn)于所有類別的FPGA上。

            

          在FPGA上建立一個UWB脈沖發(fā)生器

            本設(shè)計中的主要限制因素是DCM(數(shù)字時鐘管理器)以及觸發(fā)器的主時鐘頻率。例如,Xilinx公司Virtex 4的DCM不能超過400 MHz。一片F(xiàn)PGA可以生成頻率為時鐘頻率一半的信號,因為它用兩個時鐘脈沖使信號從0轉(zhuǎn)換為1,再回到0。因此,不能直接生成大于時鐘頻率一半的頻率。本設(shè)計用DCM的多時鐘相位以及小于單個時鐘周期的同步延遲,可以產(chǎn)生出高于時鐘頻率一半的脈沖信號,達到時鐘頻率的兩倍。

            圖2即所稱的脈沖發(fā)生器。它包括三個功能塊:一個OOK(on/off鍵控)調(diào)制器、一個同步延遲發(fā)生器,還有一個包含一只異或門的邊沿結(jié)合器。OOK調(diào)制器由一只反相器構(gòu)成,它在每個新脈沖的開始時作為脈沖重復(fù)頻率信號觸發(fā)器。當發(fā)生一個觸發(fā)時,OOK電路將一個預(yù)初始化的信號轉(zhuǎn)換成為一個時間,該時間等于來自一個脈沖帶寬的計數(shù)值,然后在下個觸發(fā)出現(xiàn)前保持為零。OOK塊產(chǎn)生的頻率是時鐘頻率的一半。這個OOK輸出通過同步延遲發(fā)生器,產(chǎn)生出三個延遲版的OOK輸出。

            

          在FPGA上建立一個UWB脈沖發(fā)生器

            這些延遲都小于一個時鐘周期。時鐘相位依次為觸發(fā)器FF1、FF2和FF3提供時鐘,它們分別延遲90°、180°和 270°。這些延遲脈沖再使用組合邏輯,與OOK調(diào)幅器的輸出相結(jié)合,產(chǎn)生出UWB脈沖所需要的頻率。邊沿結(jié)合器完成一次XOR(異或)運算,獲得的信號頻率取決于希望組合的邊沿。將OOK輸出邊沿與FF1 輸出相結(jié)合,就得到一個等于時鐘頻率的信號。將所有輸出邊沿結(jié)合起來,就得到一個兩倍于時鐘頻率的信號。DCM對這些延遲做同步,產(chǎn)生一個精確的信號頻率。本設(shè)計的復(fù)雜性小于參考文獻1中的異步延遲方案。



          關(guān)鍵詞: UWB脈沖發(fā)生器

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();