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

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的DDS設計及實現(xiàn)

          基于FPGA的DDS設計及實現(xiàn)

          作者: 時間:2010-09-20 來源:網(wǎng)絡 收藏

          3 單片機控制電路
          此次選擇的芯片為Altera公司的ACEXlK系列的EPlK30TTl44-2。它可以采用專用的配置器件來配置,也可以采用單片機來配置。前者價格昂貴,而且專用配置器件的ROM為一次性編程,不易實現(xiàn)的系統(tǒng)功能轉(zhuǎn)換。采用單片機C8051F330D對進行被動串行(PS方式)配置,使用可多次修改的AT24C512(E2PROM)作為配置文件存儲器,真正做到“現(xiàn)場可編程”,對提高生產(chǎn)率、降低生產(chǎn)成本均有好處。

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


          系統(tǒng)的配置電路如圖5所示。其電路的工作過程為:經(jīng)QuartusⅡ編譯生成的配置文件(.rbf),利用PC機端的控制程序,通過PC機的串行通信口,經(jīng)U1存儲在U2中,U1再根據(jù)系統(tǒng)的要求通過P0.6,P1.O,P1.1,P1.6和P1.7等5個I/O口將其存儲在U2中的配置數(shù)據(jù)下載到電路中的FPGA器件U3中。PC機的控制程序在此略。

          4 設計結(jié)果
          累加控制器、ROM查找表組成一個整體,實現(xiàn)了一個基本的系統(tǒng)。系統(tǒng)的最后仿真結(jié)果如圖6所示。


          圖6中的pllclk,acum,dai,daq分別代表時鐘輸入、累加輸出及正弦波和余弦波輸出。把O~2π的相位分成3FF段,取出相應的幅度值存儲于ROM中。ROM中存儲數(shù)據(jù)如下,相位數(shù)據(jù)(O~3FF),幅度數(shù)據(jù)(O~FFF)。從仿真圖可以看出dai[11..O]輸出從EFF~FFF~0~EFF變化,daq[11..O]輸出從FFF~O~FFF變化。最后通過單片機配置FPGA運行,把得出的信號通過D/A轉(zhuǎn)換和濾波能夠得到所需的正弦波和余弦波信號。

          5 結(jié)語
          給出了基于FPGA的設計的實現(xiàn)方案。通過仿真分析可以看出,DDS輸出信號具有如下特點:
          (1)頻率穩(wěn)定性好,轉(zhuǎn)換時間短,分辨率高,相位變化連續(xù)。
          (2)設計者只需要通過改變測試輸入數(shù)據(jù),就能夠快速準確地實現(xiàn)不同波形并且驗證正確性,使得測試工作更加全面高效,從而提高了調(diào)試效率和成功率。
          (3)整個信號實現(xiàn)過程較為簡單,實用性較強。
          限于實驗條件,此次設計在降低相位截斷誤差等方面仍有改進的空間,還可以進一步優(yōu)化,限于篇幅,在此不多做介紹。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: FPGA DDS

          評論


          相關(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); })();