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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > DDS原理及基于FPGA的實(shí)現(xiàn)

          DDS原理及基于FPGA的實(shí)現(xiàn)

          作者: 時(shí)間:2010-11-30 來源:網(wǎng)絡(luò) 收藏


          綜上所述,在采樣頻率一定的情況下,可以通過控制頻率控制字K來控制所得離散序列的頻率,經(jīng)保持、濾波之后可唯一地恢復(fù)出此頻率的模擬信號(hào)。

          2 基于技術(shù)實(shí)現(xiàn)的方案
          實(shí)現(xiàn)的基本工作過程為:通過VXI接口電路將生成的數(shù)據(jù)存入固定數(shù)據(jù)RAM中,然后用設(shè)計(jì)的相位累加器來計(jì)算并選擇RAM中的數(shù)據(jù)存放地址,最后將數(shù)據(jù)給定的頻率控制字輸出,經(jīng)DAC轉(zhuǎn)換即實(shí)現(xiàn)了任意波形輸出。圖如圖2所示。虛線部分可用FPGA來實(shí)現(xiàn)。

          本文引用地址:http://www.ex-cimer.com/article/191458.htm


          圖2中參考時(shí)鐘由高穩(wěn)定的晶體振蕩器產(chǎn)生,主要用于控制中各器件同步工作。虛線部分相當(dāng)于相位累加器,它由N位加法器與N位相位寄存器構(gòu)成,它實(shí)際上是一個(gè)計(jì)數(shù)器。每來一個(gè)時(shí)鐘脈沖,加法器將相位增量數(shù)據(jù)與相位寄存器輸出的累積相位數(shù)據(jù)相加,把相加后的結(jié)果送至相位寄存器的數(shù)據(jù)輸入端。相位寄存器將加法器在上一個(gè)時(shí)鐘作用后所產(chǎn)生的新相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一個(gè)時(shí)鐘的作用下繼續(xù)與頻率控制字相加。由此看來,相位累加器在每一個(gè)時(shí)鐘脈沖輸入時(shí),把頻率控制字累加一次,相位累加器輸出的數(shù)據(jù)就是合成信號(hào)的相位,相位累加器的溢出頻率就是DDS輸出的信號(hào)頻率。

          3 結(jié)束語
          采用FPGA設(shè)計(jì)DDS電路,充分發(fā)揮了FPGA在系統(tǒng)可編程的優(yōu)點(diǎn),可以通過軟件靈活改變相關(guān)參數(shù),給設(shè)計(jì)帶來很多方便。用FPGA設(shè)計(jì)DDS電路較采用專用DDS芯片更為靈活,只要改變FPGA中的ROM數(shù)據(jù),DDS就可以產(chǎn)生所需波形數(shù)據(jù),并且FPGA的功能完全取決于設(shè)計(jì)需要,因而具有相當(dāng)大的靈活性,將DDS設(shè)計(jì)嵌入到FPGA芯片所構(gòu)成的系統(tǒng)中,其系統(tǒng)成本并不會(huì)增加多少,因此,采用FPGA來設(shè)計(jì)DDS系統(tǒng)具有很高的性價(jià)比。


          上一頁 1 2 下一頁

          關(guān)鍵詞: FPGA DDS 原理

          評(píng)論


          相關(guān)推薦

          技術(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); })();