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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA和DDS技術(shù)的任意波形發(fā)生器設(shè)計

          基于FPGA和DDS技術(shù)的任意波形發(fā)生器設(shè)計

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

          2 模塊的實現(xiàn)

          2.1 模塊的基本結(jié)構(gòu)設(shè)計
          整個系統(tǒng)的設(shè)計采用層次結(jié)構(gòu),采用VHDL與原理圖輸入相結(jié)合的方法,DDS基本結(jié)構(gòu)如圖2所示。

          c.JPG
          下面就各個部分的設(shè)計分別介紹:該設(shè)計中采用的頻率字為32位,即N=32,RAM為256×8位,故ROM的地址線寬M=8,輸出數(shù)據(jù)線寬L=8。由于RAM地址線為8位(28=256),而相位累加器的輸出為32位,為了保證它們之間的對應(yīng),將相位累加器的高8位與RAM的地址線相連。這樣存在多個相位地址對應(yīng)同一個RAM地址的情況,如果把相位累加器輸出的所有位數(shù)全部用來查詢RAM,那么RAM的容量會非常的大,如此巨大的RAM表容量在實際工作中難以實現(xiàn)。因此,常使用相位地址高位來尋址,舍去低位的相位截斷方法。當(dāng)然,這種方法會引入一定的噪聲,但
          對于節(jié)省的資源來說,這種方法還是值得的。
          2.2 DDS模塊的總體設(shè)計
          該設(shè)計主要由接口部件、頻率及控制部件、相位累加器、波形數(shù)據(jù)產(chǎn)生部件和輸出選擇器組成,如圖3所示。

          d.JPG
          接口部件主要完成接收單片機發(fā)送過來的頻率參數(shù)及控制參數(shù)其中A0為數(shù)據(jù)通道和地址通道選擇位,EN為數(shù)據(jù)寫入使能。頻率及控制部件主要完成頻率控制字及輸出控制參數(shù)的存儲,由5個帶寫使能的8位同步寄存器組成。相位累加器為DDS主要部件實現(xiàn)相位的累加。波形數(shù)據(jù)產(chǎn)生部件的功能是將相位數(shù)據(jù)轉(zhuǎn)化為所需的波形數(shù)據(jù),其中正弦波和三角波數(shù)據(jù)由查ROM表獲得,鋸齒波數(shù)據(jù)直接由相位累加器輸出得到,方波數(shù)據(jù)是相位累加器輸出數(shù)據(jù)與設(shè)定數(shù)據(jù)比較獲得。輸出選擇器的SEL端接到控制參數(shù)寄存器,它的4個數(shù)值分別選擇4種不同的波形輸出。

          3 DDS仿真實驗結(jié)果
          設(shè)置輸出100 kHz正弦波,由式,得,通過計算K=21 477 072=147B6DOH,按照此數(shù)據(jù)設(shè)置好頻率控制寄存器的參數(shù),其仿真波形如圖4、圖5所示。

          g.JPG



          關(guān)鍵詞: FPGA DDS 任意波形發(fā)生器

          評論


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