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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的幅值可調(diào)信號發(fā)生器設(shè)計

          基于FPGA的幅值可調(diào)信號發(fā)生器設(shè)計

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

          圖中相位累加器是核心,它主要由1個N位二進(jìn)制累加器和1個由固定時鐘控制的N位相位寄存器構(gòu)成。相位寄存器的輸出與累加器的一個輸入端相連,MCU送來的頻率控制字K加到累加器的另一個輸入端。在每個時鐘脈沖到達(dá)時,相位寄存器將其上一個時鐘周期內(nèi)的值送入累加器并與頻率控制字K相加,其結(jié)果作為當(dāng)前時鐘周期的輸出序列,此輸出序列作為波形查找表的地址。波形查找表實質(zhì)上是一個相位/幅度轉(zhuǎn)換ROM電路,ROM內(nèi)部存儲了一個完整周期波形的相位/幅度值。相位寄存器每尋址一次波形查找表,就輸出一個與相位對應(yīng)的信號幅度值。頻率控制字K決定了相應(yīng)的相位增量,相位累加器則不斷的對該相位增量進(jìn)行線性累加,當(dāng)累加器產(chǎn)生一次溢出時,就生成一個周期的DDS合成信號。
          理想情況下,相位寄存器的N位全部用來尋址,這時DDS的合成頻率為:
          c.JPG
          而DDS的最大輸出頻率由乃奎斯特采樣定理決定,即fmax=fc/2。實際中DDS的最高輸出頻率由允許輸出的雜散水平?jīng)Q定,一般取值為fo≤40%fc。因此,要改變DDS的輸出頻率,只要改變頻率控制字K即可。
          這里采用Altra公司的器件EP1C3T144C8,適合中規(guī)模應(yīng)用,該模塊設(shè)計由VHDL實現(xiàn),后級采用10位D/A輸出。為便于頻率調(diào)節(jié),根據(jù)式(1)和式(2),我們將輸出頻率分為兩檔(1Hz~1 MHz和1~10 MHz),并由根據(jù)鍵入的頻率控制字自動選擇。而兩檔輸出的基準(zhǔn)時鐘fc由50 MHz晶振通過內(nèi)部鎖相環(huán)3分頻得到(fc≈16.666 67 MHz),或者再經(jīng)10倍頻得到(fc≈166.666 7 MHz)。若相位累加器字長N為24位,頻率控制字K為20位二進(jìn)制數(shù),則兩檔輸出的最高頻率分別為:
          e.JPG
          f.JPG
          可見,即使在輸出最高頻率時,也能保證每周期波形有16個點,從而有效保證了輸出信號波形的逼真度。
          將波形數(shù)據(jù)存儲在波形ROM中的方案有2種:一種是在一個完整周期內(nèi)進(jìn)行采樣,然后將采樣值依次存于ROM單元中,這個方案的優(yōu)點是思路清晰,實現(xiàn)簡單;另一種方案是根據(jù)周期信號波形的對稱性,只對其在1/2或1/4周期上采樣并存儲,因此可以節(jié)省存儲空間,但實現(xiàn)上要復(fù)雜些。為簡化設(shè)計,本文采用了第一種方案。
          2.2 幅度控制模塊
          輸出信號的幅度控制是通過2片DAC芯片實現(xiàn)的,其電路圖如圖3所示。其中,第1片DAC用來將FPGA輸出的波形的數(shù)字信號轉(zhuǎn)換為模擬階梯信號,的調(diào)節(jié)是通過第2片DAC的輸出改變第1片DAC的參考電壓來實現(xiàn)。

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

          g.JPG



          關(guān)鍵詞: FPGA 幅值 信號發(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); })();