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

          新聞中心

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

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

          作者: 時間:2008-11-03 來源:網(wǎng)絡(luò) 收藏
          1 概述
          1.1 基本原理
          直接數(shù)字合成技術(shù)(Direet Digital Synthesis,簡稱)是建立在采樣定理基礎(chǔ)上,首先對需要產(chǎn)生的波形進(jìn)行采樣,將采樣值數(shù)字化后存入存儲器作為查找表,然后通過查表讀取數(shù)據(jù),再經(jīng)D/A轉(zhuǎn)換器轉(zhuǎn)換為模擬量,將保存的波形重新合成出來。DDS基本原理框圖如圖1所示。

          由圖l看出,除了濾波器(LPF)之外,DDS系統(tǒng)都是以數(shù)字集成電路實(shí)現(xiàn),因此DDS系統(tǒng)易于集成和小型化。DDS系統(tǒng)的參考時鐘源通常是一個具有高穩(wěn)定性的晶體振蕩器,整個系統(tǒng)的各個組成部分提供同步時鐘。頻率字(FSW)實(shí)際上是相位增量值(二進(jìn)制編碼),作為相位累加器的累加值。相位累加器在每一個參考時鐘脈沖輸入時,累加一次頻率字,其輸出相應(yīng)增加一個步長的相位增量。由于相位累加器的輸出連接在波形存儲器(ROM)的地址線上,因此其輸出的改變就相當(dāng)于查表。這樣就可把存儲在波形存儲器內(nèi)的波形抽樣值(二進(jìn)制編碼)經(jīng)查找表查出。ROM的輸出送到D/A轉(zhuǎn)換器,經(jīng)D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬量輸出。
          1.2 DDS的基本參數(shù)及其計算
          在系統(tǒng)時鐘脈沖的作用下,相位累加器不停累加,即不停查表,把波形數(shù)據(jù)送到D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬量輸出,從而合成波形。濾波器則進(jìn)一步平滑D/A轉(zhuǎn)換器輸出的近似正弦波的鋸齒階梯波,同時衰減不必要的雜散信號。設(shè)頻率字(FSW)的值為d,系統(tǒng)時鐘頻率為f,相位累加器的字長為N,則系統(tǒng)的輸出頻率為:



          2 的設(shè)計方案
          基于DDS技術(shù)的主要由微處理器控制模塊、鍵盤與顯示模塊、DDS通道的FPGA實(shí)現(xiàn)模塊、D/A轉(zhuǎn)換模塊以及濾波器模塊組成。同時片外擴(kuò)展了4 KB程序存儲器SRAM和6 KB數(shù)據(jù)存儲器ROM,分別用于存儲波形抽樣數(shù)據(jù)和3種標(biāo)準(zhǔn)輸出波形抽樣數(shù)據(jù)。本系統(tǒng)設(shè)計原理如圖2所示。

          2.1 微處理器控制模塊
          采用AT89C5l單片機(jī)完成數(shù)據(jù)處理和控制其他電路工作。將鍵盤接收的數(shù)據(jù)通過特定算法轉(zhuǎn)換成二進(jìn)制碼,再將處理后的控制字、波形參數(shù)和其他器件的控制信號發(fā)送出去。
          由于AT89C5l單片機(jī)主要接口有:微處理器與擴(kuò)展器件的接口;微處理器與FPGA模塊的接口;微處理器與鍵盤、顯示模塊的接口;微處理器與輸出幅值調(diào)節(jié)電路的接口。由于單片機(jī)的輸出引腳有限,需擴(kuò)展其引腳。本設(shè)計采用8255器件擴(kuò)展單片機(jī)的輸出引腳,8255的PA用于相位控制字的輸出;PB用于頻率控制字的輸出;PC是位可控輸出端,用于DDS工作方式的控制字和波形參數(shù)的控制字輸出引腳。AT89C5l單片機(jī)與FPGA的接口電路如圖3所示。

          2.2 鍵盤與顯示模塊
          由于本系統(tǒng)設(shè)計的測量裝置需要設(shè)置輸出波形、頻率、電壓等參數(shù),而且監(jiān)控程序需要菜單驅(qū)動,因此需要設(shè)置鍵盤。鍵盤采用外接44軟鍵盤,使用軟件掃描方式獲得按鍵信息。因?yàn)榘存I需要去抖動,因此采用軟件編程方式實(shí)現(xiàn),這樣可以節(jié)省硬件資源,簡化電路設(shè)計。
          液晶顯示可提供人機(jī)交互界面和系統(tǒng)運(yùn)行狀態(tài),選用精工的MGLS 19264液晶顯示屏。該液晶顯示屏內(nèi)置2塊HD61202U液晶顯示驅(qū)動控制器。其中CSA,CSB作為左、右屏片選信號,接單片機(jī)A8、A9引腳。同時單片機(jī)用地址Al作為R/W信號控制數(shù)據(jù)總線的數(shù)據(jù)流向;地址AO作為D/I信號控制寄存器的選擇;E信號由單片機(jī)的讀信號RD和寫信號WR合成產(chǎn)生,實(shí)現(xiàn)計算機(jī)對內(nèi)置HD61202U圖形液晶顯示模塊的電路連接。電位器用來調(diào)節(jié)顯示屏的對比度,如圖4所示。液晶顯示左半屏命令字地址為0EOOH;狀態(tài)字地址為0EIOH;寫顯示命令字地址為0E0lH;讀顯示命令字地址為0EllH;右半屏對應(yīng)地址為0D00H、0D10H、0D0lH、0DllH。

          2.3 DDS通道的FPGA實(shí)現(xiàn)模塊
          該模塊設(shè)計是DDS信號合成的關(guān)鍵部分,主要由相位累加器、地址總線控制器、數(shù)據(jù)總線控制器與SRAM組成。其中,除了SRAM外,其余3個模塊都由FPGA實(shí)現(xiàn)。
          相位累加器是整個DDS系統(tǒng)的關(guān)鍵,直接影響整個系統(tǒng)的功能。圖5給出的FPGA結(jié)構(gòu)框圖中相位累加器實(shí)質(zhì)上是一個帶反饋的29位加法器,它把輸出數(shù)據(jù)作為反饋數(shù)據(jù)和由微處理器送來的頻率控制字連續(xù)相加,從而產(chǎn)生有規(guī)律的29位相位地址碼。設(shè)計中采用流水線技術(shù)實(shí)現(xiàn)29位加法。當(dāng)輸入所需頻率時,轉(zhuǎn)換成頻率控制字來驅(qū)動FPGA工作,從而產(chǎn)生所需波形頻率。整個模塊設(shè)計過程使用FPGA的開發(fā)軟件實(shí)現(xiàn)并進(jìn)行仿真。

          2.4 D/A轉(zhuǎn)換模塊
          D/A轉(zhuǎn)換器是DDS系統(tǒng)的核心器件,其速度和特性直接影響整個系統(tǒng)的性能。從建立時間、尖峰脈沖能量、位數(shù)和積分線性等四個方面選擇D/A轉(zhuǎn)換器。因?yàn)镈DS系統(tǒng)的工作頻率一般都很高,因此首先應(yīng)選用高速D/A轉(zhuǎn)換器。其次是考慮信噪比問題,增大D/A轉(zhuǎn)換器的位數(shù),可減小電壓幅值量化誤差,增大信噪比,因此,采用了12位的D/A轉(zhuǎn)換器。
          2.5 濾波器模塊
          濾波器分為兩組:一組是橢圓函數(shù)濾波器,用于正弦波的濾波;另一組是線性濾波器,用于其他標(biāo)準(zhǔn)波形的濾波。


          3 結(jié)語
          本系統(tǒng)設(shè)計的DDS電路采用FPGA實(shí)現(xiàn),單片機(jī)控制整個系統(tǒng),產(chǎn)生任意波形。因此,基于DDS技術(shù)的波形發(fā)生器結(jié)構(gòu)簡單,成本低,而且提高了信號源輸出信號的分辨率。使用FPGA設(shè)計的DDS電路要比采用專用DDS器件更靈活,性價比更高。但在設(shè)計時應(yīng)注意線路板的布線,以減少外界干擾,降低輸出信號的雜散性。



          關(guān)鍵詞: 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); })();