基于FPGA的實驗室可重構(gòu)信號源的設(shè)計
摘要 介紹了以直接頻率合成技術(shù)DDS為基礎(chǔ)的信號發(fā)生器基本工作原理及設(shè)計過程,并以單片機和FPGA為核心實現(xiàn)了波形、頻率、幅值均可調(diào)節(jié)的信號發(fā)生器設(shè)計。經(jīng)測試驗證,該信號發(fā)生器取得了理想的結(jié)果,達到了設(shè)計要求。
關(guān)鍵詞 單片機;FPGA;DDS;信號發(fā)生器
1 直接數(shù)字頻率合成技術(shù)
直接數(shù)字頻率合成技術(shù)(DDS)是近年來迅速發(fā)展的一種新型頻率合成方法,它將先進的數(shù)字處理理論與方法引入信號合成領(lǐng)域,通過控制相位變化的速度來直接產(chǎn)生各種不同頻率的信號。DDS的基本原理如圖1所示,把一個單位振幅的正弦函數(shù)的相位在2π弧度內(nèi)分成2N個點,求出相應(yīng)各點的正弦函數(shù)值,并用D位二進制數(shù)表示,寫入ROM中構(gòu)成一個所謂的正弦表。在高速穩(wěn)定的參考時鐘控制下依次讀出每個相位對應(yīng)的正弦函數(shù)值,即得到采樣的正弦離散信號,經(jīng)D/A轉(zhuǎn)換得到需要的模擬信號,改變輸入時鐘頻率即可控制輸出信號的頻率。
根據(jù)DDS的原理分析可知,DDS輸出波形頻率為fo=Kfc/2N。最低輸出頻率(K=1)fmin=fc/2N,最高輸出頻率為fmax=fc/4,其中,fc為累加時鐘頻率;K為頻率控制字;N為累加器位數(shù)。
2 系統(tǒng)整體方案設(shè)計
系統(tǒng)設(shè)計主要由主控制器模塊、FPGA模塊、D/A轉(zhuǎn)換模塊、濾波模塊、調(diào)幅模塊、按鍵輸入模塊、功率放大模塊及液晶顯示模塊構(gòu)成。系統(tǒng)框圖如圖2所示。采用STC89C51單片機作為系統(tǒng)的主控制器;FPGA模塊實現(xiàn)波形數(shù)據(jù)的存儲與輸出;D/A轉(zhuǎn)換模塊將波形數(shù)據(jù)轉(zhuǎn)換為模擬量。液晶顯示器用于顯示波形、幅度、頻率等。
3 系統(tǒng)主要硬件電路設(shè)計
3.1 主控制器電路設(shè)計
主控制器采用AT89C51單片機,系統(tǒng)采用總線技術(shù),這樣僅占用了單片機的少量接口和IO資源就可以組建起整個系統(tǒng),使得硬件和軟件設(shè)計更方便,也利于擴展,具體電路如圖3所示。
3.2 DDS的FPGA實現(xiàn)電路設(shè)計
DDS系統(tǒng)包括相位增量寄存器、相位累加器、地址寄存器、波形存儲器、時鐘倍頻器及地址發(fā)生部分等模塊,內(nèi)部所有模塊用Verilog語言編寫或調(diào)用QuartusⅡ中的已有l(wèi)pm庫文件。系統(tǒng)頂層設(shè)計用原理圖的方式進行模塊間的連接,具體電路如圖4所示。當(dāng)改變波形存儲器中波形數(shù)據(jù)時,也就改變了輸出波形,可以通過波形選擇按鈕分別輸出正弦波、方波、三角波3種波形。
3.3 D/A轉(zhuǎn)換及調(diào)幅電路
如圖5所示,將波形存儲ROM的輸出通過D/A轉(zhuǎn)換電路轉(zhuǎn)換為模擬信號,通過算法實現(xiàn)幅度控制并設(shè)置獨立按鍵執(zhí)行微調(diào),再通過濾波電路濾波,即可得到所需的波形。
3.4 功率放大模塊
由于輸出信號的功率較小,輸出有負載時,會有較大失真,帶負載能力差,要考慮到功率放大,對輸出的信號進行放大。設(shè)計中功率放大采用功率放大芯片TDA2030A實現(xiàn),TDA2030A是意法半導(dǎo)體公司生產(chǎn)的單聲道功放IC,該IC體積小巧、輸出功率大、靜態(tài)電流小、動態(tài)電流大、負載能力強,既可帶動4~16 Ω的負載,某些場合又可帶動2 Ω甚至1.6 Ω的低阻負載,且性價比高,具體電路如圖6所示。
3.2 DDS的FPGA實現(xiàn)電路設(shè)計
DDS系統(tǒng)包括相位增量寄存器、相位累加器、地址寄存器、波形存儲器、時鐘倍頻器及地址發(fā)生部分等模塊,內(nèi)部所有模塊用Verilog語言編寫或調(diào)用QuartusⅡ中的已有l(wèi)pm庫文件。系統(tǒng)頂層設(shè)計用原理圖的方式進行模塊間的連接,具體電路如圖4所示。當(dāng)改變波形存儲器中波形數(shù)據(jù)時,也就改變了輸出波形,可以通過波形選擇按鈕分別輸出正弦波、方波、三角波3種波形。
3.3 D/A轉(zhuǎn)換及調(diào)幅電路
如圖5所示,將波形存儲ROM的輸出通過D/A轉(zhuǎn)換電路轉(zhuǎn)換為模擬信號,通過算法實現(xiàn)幅度控制并設(shè)置獨立按鍵執(zhí)行微調(diào),再通過濾波電路濾波,即可得到所需的波形。
3.4 功率放大模塊
由于輸出信號的功率較小,輸出有負載時,會有較大失真,帶負載能力差,要考慮到功率放大,對輸出的信號進行放大。設(shè)計中功率放大采用功率放大芯片TDA2030A實現(xiàn),TDA2030A是意法半導(dǎo)體公司生產(chǎn)的單聲道功放IC,該IC體積小巧、輸出功率大、靜態(tài)電流小、動態(tài)電流大、負載能力強,既可帶動4~16 Ω的負載,某些場合又可帶動2 Ω甚至1.6 Ω的低阻負載,且性價比高,具體電路如圖6所示。
4 軟件設(shè)計
軟件設(shè)計采用C語言編寫。軟件主要由主程序、液晶子程序和按鍵子程序等組成。軟件主流程如圖7所示。系統(tǒng)加電后,主程序的功能主要是完成系統(tǒng)初始化,包括液晶、頻率幅度等參數(shù)的初始化,更新顯示數(shù)字,循環(huán)掃描按鍵,根據(jù)按鍵輸入分別進行頻率幅度的設(shè)定,通過幅度控制字的設(shè)定向DAC輸出幅度控制字,通過頻率控制字的輸入向FPGA寫頻率控制字,從而達到改變輸出波形頻率和幅值的目的,并在液晶顯示器上顯示出來。顯示效果如圖8所示。
5 結(jié)束語
系統(tǒng)采用FPGA實現(xiàn)DDS電路,以AT89C51為主控制器,實現(xiàn)了輸出頻率范圍為1 Hz~10 MHz的正弦波、方波、三角波的信號發(fā)生器,并且幅值和頻率均可調(diào)節(jié),其最小步進頻率可達1 Hz。測試結(jié)果表明,該設(shè)計具有頻帶寬、精度高、性能穩(wěn)定、成本低和操作界面友好等特點。用這種方法設(shè)計的波形發(fā)生器只要改變FPGA中ROM的數(shù)據(jù),DDS就可以產(chǎn)生任意波形,提高了設(shè)計的靈活性,降低了電路的復(fù)雜度,減少了電路設(shè)計時間和可能發(fā)生的錯誤,具有較高的性價比。