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

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > CPLD DDS正交信號源濾波器

          CPLD DDS正交信號源濾波器

          作者: 時間:2016-10-18 來源:網(wǎng)絡 收藏

          桂林電子科技大學 韓劍 李德明 馮雪

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

          1 引言

          由于傳統(tǒng)的多波形函數(shù)信號發(fā)生器需采用大量分離元件才能實現(xiàn),且設計復雜,這里提出一種基于的多波形函數(shù)信號發(fā)生器。它采用作為函數(shù)信號發(fā)生器的處理器,以為核心,輔以必要的模擬和數(shù)字電路,構(gòu)成的基于(直接數(shù)字頻率合成)技術(shù)、波形穩(wěn)定、精度較高的多功能函數(shù)信號發(fā)生器。

          2 系統(tǒng)設計

          圖1給出系統(tǒng)設計框圖,該系統(tǒng)設計主要由CPLD電路、電路、鍵盤輸入液晶顯示輸出電路以及D/A轉(zhuǎn)換電路和低通濾波器等電路組成。

          1.jpg

          2.1 頻率合成器

          該系統(tǒng)設計采用直接數(shù)字式頻率合成(Direct Digital Frequency Synthesis)技術(shù),采用ROM存儲所需的量化數(shù)據(jù),按照不同頻率求出頻率控制字。以K為步進對相位累加器進行累加,每累加一次,取出累加器的高8 位數(shù)據(jù)送至ROM,ROM根據(jù)不同的地址取出不同的數(shù)據(jù)送TLC7524進行轉(zhuǎn)換。再經(jīng)過濾波即可得到所需要波形。由于具有相對帶寬很寬,頻率轉(zhuǎn)換時間極短,頻率分辨率高等優(yōu)點。此外,全數(shù)字化結(jié)構(gòu)便于集成,輸出相位連續(xù),頻率,相位和幅度均可實現(xiàn)程控。

          2.2 幅度控制模塊

          幅度控制模塊由DAC0832控制,利用其內(nèi)部電阻分壓網(wǎng)絡,將其作為數(shù)控電位器。將 TLC7524的輸出波形作為DAC0832的基準電壓源輸入,其輸出波形為V=(N/256)×Vin,其中N為輸入的幅度控制字。通過一簡單的電阻分壓網(wǎng)絡調(diào)整運放輸出峰一峰值為0~5 V,再送至DAC0832由單片機控制其幅度實現(xiàn)幅度的步進,如圖2所示。

          2.jpg

          2.3 后級處理模塊

          采用二階巴特沃茲低通濾波器。巴特沃茲低通濾波器的幅度函數(shù)是單調(diào)下降的,由于n階低通巴特沃茲低通濾波器的前(2n-1)階導數(shù)在ω=0處為零,所以巴特沃茲低通濾波器也稱最大平坦幅度濾波器。由于該設計要求濾除的頻率分量主要為由D/A轉(zhuǎn)換器產(chǎn)生的高頻分量,與系統(tǒng)所要求保留的頻率相差很遠,所以濾波器在通頻帶內(nèi)的平坦程度比其衰減陡度更為重要,而且巴特沃茲低通濾波器所要的元件值合乎實際情況,不像其他濾波器要求元件值那么苛刻。

          3 硬件電路系統(tǒng)設計

          3.1 總體設計思路

          整個系統(tǒng)以CPLD(EPM7128)、AT89S51、AT28C64(EEP-ROM)為核心。CPLD通過相位累加產(chǎn)生讀取ROM的地址。以單片機為系統(tǒng)控制的核心,主要功能:給CPLD送頻率控制字,即相位累加器的累加值,以此控制頻率;給D/A轉(zhuǎn)換器送幅度控制字D,控制波形幅度;處理紅外遙控鍵盤;送數(shù)據(jù)給液晶LCD。EEPROM存儲已固化好波形的數(shù)據(jù)。

          3.2 CPLD模塊

          該模塊通過一個4引腳的工業(yè)標準 JTAG接口在系統(tǒng)編程(ISP),并且在編程過程中僅需5.0 V單電壓供電。編程過程中,I/O引腳處于三態(tài)并被上拉,以消除板上沖突。上拉阻值為1 kΩ。因為該器件是在線編程的,為了便于調(diào)試,所以把下載口直接做在電路板上??紤]到電源為自制的穩(wěn)壓電源,CPLD受電源紋波干擾影響較大,所以在每個器件旁都加有去耦電容。

          3.3 D/A轉(zhuǎn)換及幅度控制

          D/A轉(zhuǎn)換采用TI公司的TLC7524,該器件轉(zhuǎn)換速度可達10 M,幅度控制D/A轉(zhuǎn)換采用MAX518,該器件是I2C總線的雙D/A轉(zhuǎn)換器,只需很少的端口線就可實現(xiàn)兩路幅度的控制,大大節(jié)省單片機的端口。圖3給出D/A轉(zhuǎn)換電路。

          3.jpg

          3.4 后級處理模塊

          低通濾波器對階梯正弦波進行傅里葉分析。其中若一周期采樣點數(shù)為N,則其高次諧波能量主要集中在輸出頻率的(N±1)倍頻上,其幅值為基頻的 1/(N±1)。低通濾波可以平滑其臺階。另外還需濾除由DAC0832和TCL7524產(chǎn)生的1MHz和10 MHz的高頻分量。因此根據(jù)設計的要求(輸出最大頻率為250 kHz,為了保證250 kHz頻帶內(nèi)輸出幅度平坦,又要盡可能抑制諧波和高頻分量,綜合考慮選用寬帶運放LF351,用EWB仿真表明:截止頻率為1 MHz~250 kHz以內(nèi)幅度平坦。為了保證穩(wěn)幅輸出,選用AD817。該器件是一種低功耗、高速、寬帶運算放大器,具有很強的大電流驅(qū)動能力。實際電路測量表明:當負載為100 Ω,輸出峰-峰值為10 V時,其帶寬大于500 kHz,幅度變化小于±1%。

          4 軟件設計

          4.1 波形發(fā)生

          在 CPLD內(nèi)設置25位相位累加器,高9位為ROM地址,低16 位為產(chǎn)生精確的讀ROM的點與點之間的時間間隔而設置的累加寄存器,即:單片機送一頻率控制字,由低16位寄存器每個時鐘都累加這個值,累加到低16位溢出,然后ROM的地址加1。ROM內(nèi)的每個地址的數(shù)據(jù)表示當前波形的幅度,然后連續(xù)讀出數(shù)據(jù)并被平滑濾波后得出平滑、穩(wěn)定的波形。波形產(chǎn)生流程如圖4所示。

          4.jpg

          4.2 幅度控制

          系統(tǒng)的幅度控制由MAX518完成,利用其內(nèi)部電阻網(wǎng)絡實現(xiàn)數(shù)字電位器功能,輸出電壓作為TLC7524的基準電壓。圖5為幅度控制流程。

          5.jpg

          5 電路系統(tǒng)調(diào)試與參數(shù)測試

          調(diào)試與測試所用儀器PC機、雙蹤模擬示波器YUAN-LONG、SS7200通用智能計數(shù)器、DT9205三位半數(shù)字萬用表。在戶1 kHz步進為20 mV下,測試電壓幅度。表1為電壓幅度測試,表2為輸出頻率測試。


          51.jpg

          6.jpg

          6 結(jié)論

          基于單片機和CPLD的DDS正交信號源,其頻率幅度可精密控制,擴展輸出頻率達300 kHz,增加掃頻輸出功能。采用紅外鍵盤控制頻率和幅度,采用液晶同步顯示信號的頻率和幅度;輸出端產(chǎn)生正弦波、方波、三角波、鋸齒波,梯形波、短形波、頻率突變的方波、尖脈沖數(shù)字信號等,且具有掃頻輸出的功能。測試結(jié)果表明,系統(tǒng)穩(wěn)定可靠,人機交互界面友好,操作簡單方便。



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