基于FPGA的幅值可調(diào)信號(hào)發(fā)生器設(shè)計(jì)
摘要:針對(duì)信號(hào)發(fā)生器時(shí)輸出頻率精度高和幅值可調(diào)的要求,采用直接數(shù)字頻率合成(DDS)技術(shù),提出一種基于FPGA的幅值、頻率均可調(diào)的、高分辨率、高穩(wěn)定度的信號(hào)發(fā)生器設(shè)計(jì)方案。采用AT89S52單片機(jī)為控制器,控制FPGA產(chǎn)生波形的數(shù)字信號(hào),結(jié)合雙數(shù)模(D/A)轉(zhuǎn)換器及低通濾波器,最終實(shí)現(xiàn)輸出信號(hào)幅值0~5 V可調(diào),分辨率為10 bits;頻率范圍1 Hz~10 MHz可調(diào),最小分辨率為1 Hz;頻率穩(wěn)定度優(yōu)于10-4。信號(hào)參數(shù)可通過(guò)鍵盤進(jìn)行設(shè)置,并在LCD上輸出。由于FPGA的可編程性,易于對(duì)系統(tǒng)進(jìn)行升級(jí)和優(yōu)化。
關(guān)鍵詞:FPGA;信號(hào)發(fā)生器;DDS;單片機(jī);VHDL
直接數(shù)字頻率合成(DDS)技術(shù)具有相對(duì)頻帶寬、頻率轉(zhuǎn)換時(shí)間短、頻率分辨率高、輸出信號(hào)相位連續(xù)、能夠?qū)崿F(xiàn)全數(shù)字自動(dòng)化控制等優(yōu)點(diǎn),已經(jīng)逐步成為高性能信號(hào)發(fā)生器的核心技術(shù)?,F(xiàn)場(chǎng)可編程門陣列(FPGA)器件具有工作速度快、集成度高、可靠性好和現(xiàn)場(chǎng)可編程等優(yōu)點(diǎn),在現(xiàn)代電子設(shè)備中的應(yīng)用越來(lái)越廣。
本文采用DDS技術(shù)和FPGA芯片設(shè)計(jì)了一種頻率可調(diào)的信號(hào)發(fā)生器,可輸出正弦波、方波、三角波和鋸齒波等數(shù)字信號(hào),其頻率范圍廣,穩(wěn)定性好,精度高,系統(tǒng)靈活,易于升級(jí)。
1 系統(tǒng)總體設(shè)計(jì)
系統(tǒng)框圖如圖1所示,它由單片機(jī)控制模塊、FPGA波形產(chǎn)生模塊、幅度控制模塊、數(shù)模轉(zhuǎn)換(DAC)模塊、低通濾波模塊、鍵盤輸入和液晶顯示模塊組成。FPGA模塊采用DDS技術(shù),可產(chǎn)生正弦波、方波、三角波或鋸齒波的數(shù)字信號(hào),經(jīng)D/A轉(zhuǎn)換、低通濾波后輸出。其波形類型及頻率大小通過(guò)單片機(jī)直接控制,輸出信號(hào)幅度的控制由單片機(jī)通過(guò)幅度控制模塊改變數(shù)模轉(zhuǎn)換模塊的參考電壓來(lái)間接實(shí)現(xiàn)。
2 功能模塊設(shè)計(jì)
2.1 FPGA模塊
該模塊根據(jù)MCU提供的頻率控制字K及波形選擇字,利用DDS技術(shù)產(chǎn)生波形數(shù)字信號(hào),通過(guò)數(shù)模轉(zhuǎn)換器DAC變成階梯波,再經(jīng)過(guò)低通濾波器平滑后就可以得到合成的信號(hào)波形。此模塊主要由相位累加器、相位寄存器和波形查找表構(gòu)成,其原理框圖如圖2所示。其中,fc為輸入基準(zhǔn)時(shí)鐘頻率,fo為輸出信號(hào)頻率,K、N、L分別為頻率控制字、相位累加/寄存器、波形查找表和D/A轉(zhuǎn)換器的字長(zhǎng)。
圖中相位累加器是核心,它主要由1個(gè)N位二進(jìn)制累加器和1個(gè)由固定時(shí)鐘控制的N位相位寄存器構(gòu)成。相位寄存器的輸出與累加器的一個(gè)輸入端相連,MCU送來(lái)的頻率控制字K加到累加器的另一個(gè)輸入端。在每個(gè)時(shí)鐘脈沖到達(dá)時(shí),相位寄存器將其上一個(gè)時(shí)鐘周期內(nèi)的值送入累加器并與頻率控制字K相加,其結(jié)果作為當(dāng)前時(shí)鐘周期的輸出序列,此輸出序列作為波形查找表的地址。波形查找表實(shí)質(zhì)上是一個(gè)相位/幅度轉(zhuǎn)換ROM電路,ROM內(nèi)部存儲(chǔ)了一個(gè)完整周期波形的相位/幅度值。相位寄存器每尋址一次波形查找表,就輸出一個(gè)與相位對(duì)應(yīng)的信號(hào)幅度值。頻率控制字K決定了相應(yīng)的相位增量,相位累加器則不斷的對(duì)該相位增量進(jìn)行線性累加,當(dāng)累加器產(chǎn)生一次溢出時(shí),就生成一個(gè)周期的DDS合成信號(hào)。
理想情況下,相位寄存器的N位全部用來(lái)尋址,這時(shí)DDS的合成頻率為:
而DDS的最大輸出頻率由乃奎斯特采樣定理決定,即fmax=fc/2。實(shí)際中DDS的最高輸出頻率由允許輸出的雜散水平?jīng)Q定,一般取值為fo≤40%fc。因此,要改變DDS的輸出頻率,只要改變頻率控制字K即可。
這里采用Altra公司的FPGA器件EP1C3T144C8,適合中規(guī)模應(yīng)用,該模塊設(shè)計(jì)由VHDL實(shí)現(xiàn),后級(jí)采用10位D/A輸出。為便于頻率調(diào)節(jié),根據(jù)式(1)和式(2),我們將輸出頻率分為兩檔(1Hz~1 MHz和1~10 MHz),并由FPGA根據(jù)鍵入的頻率控制字自動(dòng)選擇。而兩檔輸出的基準(zhǔn)時(shí)鐘fc由50 MHz晶振通過(guò)FPGA內(nèi)部鎖相環(huán)3分頻得到(fc≈16.666 67 MHz),或者再經(jīng)10倍頻得到(fc≈166.666 7 MHz)。若相位累加器字長(zhǎng)N為24位,頻率控制字K為20位二進(jìn)制數(shù),則兩檔輸出的最高頻率分別為:
可見(jiàn),即使在輸出最高頻率時(shí),也能保證每周期波形有16個(gè)點(diǎn),從而有效保證了輸出信號(hào)波形的逼真度。
將波形數(shù)據(jù)存儲(chǔ)在波形ROM中的方案有2種:一種是在一個(gè)完整周期內(nèi)進(jìn)行采樣,然后將采樣值依次存于ROM單元中,這個(gè)方案的優(yōu)點(diǎn)是思路清晰,實(shí)現(xiàn)簡(jiǎn)單;另一種方案是根據(jù)周期信號(hào)波形的對(duì)稱性,只對(duì)其在1/2或1/4周期上采樣并存儲(chǔ),因此可以節(jié)省存儲(chǔ)空間,但實(shí)現(xiàn)上要復(fù)雜些。為簡(jiǎn)化設(shè)計(jì),本文采用了第一種方案。
2.2 幅度控制模塊
輸出信號(hào)的幅度控制是通過(guò)2片DAC芯片實(shí)現(xiàn)的,其電路圖如圖3所示。其中,第1片DAC用來(lái)將FPGA輸出的波形的數(shù)字信號(hào)轉(zhuǎn)換為模擬階梯信號(hào),幅值的調(diào)節(jié)是通過(guò)第2片DAC的輸出改變第1片DAC的參考電壓來(lái)實(shí)現(xiàn)。
DAC是本模塊的核心器件,其轉(zhuǎn)換速度等特性直接影響整個(gè)系統(tǒng)的性能。DAC器件的選擇應(yīng)從分辨率、轉(zhuǎn)換速度、量化誤差和線性度等幾個(gè)方面考慮。因?yàn)楸鞠到y(tǒng)的工作頻率較高,所以首先應(yīng)選用高速DAC。其次是考慮分辨率和量化誤差問(wèn)題,增大DAC的位數(shù)可減小量化誤差,提高分辨率。因此,本文采用的DAC器件是德州儀器公司生產(chǎn)的高速低功耗、10位分辨率的DAC芯片THS5651。
DAC的參考電壓可通過(guò)EXTL0端來(lái)選擇內(nèi)部或外部。當(dāng)該端口為低電平時(shí)(即:EXTL0=AGND),選擇內(nèi)部參考電壓;當(dāng)該端口為高電平時(shí)(即:EXTL0=AVDD),選擇外部參考電壓。只要改變參考電壓的大小,就可以改變輸出波形的幅值。THS5651外部參考電壓范圍為0~5V,因此,采用10位DAC(最小分辨率為4.88x10-2V)。圖中第2片THS5651的輸出接到第1片THS5651的參考電壓輸入端EXT10,通過(guò)單片機(jī)控制第2片THS5651輸出,進(jìn)而控制第1片THS5651的參考電壓。
2.3 低通濾波模塊
經(jīng)過(guò)D/A轉(zhuǎn)換后輸出的階梯波信號(hào)通常含有較多的時(shí)鐘成分及較為陡峭的躍變邊緣,為了減少輸出波形的抖動(dòng)、抑制高次諧波、取出主頻fo,必須在D/A轉(zhuǎn)換器的輸出端接入截止頻率為fc/2的低通濾波器。
2.4 鍵盤與顯示模塊
本系統(tǒng)需要設(shè)置并顯示輸出波形的類型、頻率和幅值等參數(shù)。為使系統(tǒng)擁有一個(gè)友好、便捷、美觀的用戶界面,設(shè)計(jì)中采用鍵盤和液晶顯示器作為系統(tǒng)的輸入輸出模塊。鍵盤輸入模塊選用8279控制4x4陣列鍵盤,采用掃描方式由8279得到鍵盤碼并由中斷服務(wù)程序把數(shù)據(jù)送給單片機(jī)。此方案不用單片機(jī)掃描,占用資源少。輸出模塊采用HZ128-64D20漢顯液晶模塊,該模塊自帶一、二級(jí)漢字字庫(kù)點(diǎn)陣,通過(guò)串行接口與單片機(jī)相連。用液晶顯示器可以實(shí)現(xiàn)多級(jí)菜單,用戶界面友好,操作方便。
3 系統(tǒng)軟件設(shè)計(jì)
FPGA系統(tǒng)采用硬件描述語(yǔ)言VHDL按模塊化方式進(jìn)行設(shè)計(jì),并將各模塊集成于FPGA芯片中,然后通過(guò)QuartusⅡ軟件開(kāi)發(fā)平臺(tái)對(duì)設(shè)計(jì)文件進(jìn)行編譯、優(yōu)化、綜合、布局布線和邏輯仿真,最后對(duì)FPGA芯片進(jìn)行編程,實(shí)現(xiàn)系統(tǒng)的設(shè)計(jì)要求。單片機(jī)控制程序采用C語(yǔ)言進(jìn)行設(shè)計(jì),設(shè)計(jì)中采用了結(jié)構(gòu)化和層次化的設(shè)計(jì)方法,通過(guò)按鍵判斷程序選擇進(jìn)入不同的模式:波形選擇、頻率設(shè)置、幅度設(shè)置、波形參數(shù)顯示4種模式和1個(gè)復(fù)位模式(圖中省略)。在不同的模式下分別執(zhí)行相應(yīng)的子程序,最后分別向FPGA寫入相應(yīng)的控制字。該系統(tǒng)程序流程如圖4所示。
4 系統(tǒng)測(cè)試
由鍵盤設(shè)置輸出信號(hào)波形的類型、頻率和幅度等參數(shù),在50Ω負(fù)載下,用示波器測(cè)試輸出波形的頻率和幅值,并與設(shè)置值進(jìn)行比較。由于在FPGA中經(jīng)分/倍頻后的結(jié)果與計(jì)算時(shí)鐘存在一定誤差,因此,需通過(guò)軟件進(jìn)行補(bǔ)償修正,以便使頻率誤差降到最低。對(duì)于信號(hào)幅度的控制,在程序中也采用軟件進(jìn)行補(bǔ)償修正。經(jīng)過(guò)多次測(cè)試和反復(fù)改進(jìn),最終實(shí)現(xiàn)了如下技術(shù)指標(biāo):
1)輸出波形正弦波、方波、三角波、鋸齒波。通過(guò)對(duì)波形查找表ROM的修改,可實(shí)現(xiàn)其它波形,易于系統(tǒng)升級(jí)。
2)輸出頻率1 Hz~10MHz。
3)頻率分辨率 1Hz~1MHz時(shí)為1Hz。1~10MHz時(shí)為10Hz。
4)頻率穩(wěn)定度優(yōu)于10-4。
5)輸出電壓0~5V。
6)幅度分辨率10bits。
5 結(jié)束語(yǔ)
本文給出了一種基于FPGA和DDS技術(shù)的信號(hào)發(fā)生器設(shè)計(jì)方案,解決了輸出信號(hào)幅值可調(diào)的問(wèn)題,能產(chǎn)生較為理想的正弦波、方波、三角波和鋸齒波等信號(hào)波形,波形平滑,無(wú)明顯毛刺,響應(yīng)速度快,頻率范圍廣,穩(wěn)定性好,幅值調(diào)節(jié)精度高。系統(tǒng)實(shí)現(xiàn)簡(jiǎn)單、靈活,易于升級(jí),實(shí)用性較強(qiáng),具有較好的應(yīng)用前景。