基于單片機(jī)與FPGA的直接頻率數(shù)字合成器的設(shè)計方案
1.引言
本文引用地址:http://m.butianyuan.cn/article/201710/367204.htm隨著電子技術(shù)的發(fā)展,在現(xiàn)代電子產(chǎn)品的故障檢測中,往往需要頻率和幅度都能自動調(diào)節(jié)的正弦信號源,并且要求該信號源產(chǎn)生的信號頻率穩(wěn)定性好,轉(zhuǎn)換速度快,具有調(diào)頻、調(diào)幅和調(diào)相的功能。本文結(jié)合實際需要,提出一種基于單片機(jī)和FPGA的直接頻率數(shù)字合成器的設(shè)計方案,能夠產(chǎn)生兩路頻率和相位均可調(diào)的正弦波信號,達(dá)到了預(yù)定的要求。
2.系統(tǒng)方案設(shè)計
2.1 系統(tǒng)的性能分析
系統(tǒng)主要由單片機(jī)最小系統(tǒng)、存儲器電路、FPGA模塊、鍵盤與顯示接口電路、D/A轉(zhuǎn)換電路、低通濾波電路組成,其硬件框圖如圖1所示。通過鍵盤輸入頻率控制字、相位控制字和幅值控制字,單片機(jī)最小系統(tǒng)控制FPGA模塊產(chǎn)生用戶需要的正弦波信號,再經(jīng)過DA轉(zhuǎn)換,最后通過低通濾波器生成平滑的正弦波信號。
系統(tǒng)的性能要求:頻率范圍20Hz~20KHZ,步進(jìn)20Hz;差0o~359o,步進(jìn)1o;兩路輸出正弦波信號,峰峰值分別在0.3V~5V變化;數(shù)字顯示頻率、相位差。
2.2 系統(tǒng)實現(xiàn)的原理
2.2.1 DDS的基本原理
直接數(shù)字頻率合成器(DDFS)的基本原理:
DDS是利用采樣定理,根據(jù)相位間隔對正弦信號進(jìn)行取樣、量化、編碼,然后儲存在EPROM中構(gòu)成一個正弦查詢表,通過查表法產(chǎn)生波形。
它是由參考時鐘、相位累加器、正弦查詢表和D/A轉(zhuǎn)換器組成,如圖2所示。
相位累加器由N位加法器與N位累加寄存器級聯(lián)構(gòu)成,其原理框圖如圖3所示。每來一個時鐘脈沖Fc,N位加法器將頻率控制數(shù)據(jù)K與累加寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果Y送至累加寄存器的輸入端。累加寄存器一方面將在上一時鐘周期作用后所產(chǎn)生的新的相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一時鐘的作用下繼續(xù)與頻率控制數(shù)據(jù)K相加;另一方面以相加后的結(jié)果形成正弦查詢表的地址,取出表中與該相位對應(yīng)的單元中的幅度量化正弦函數(shù)值,作為取樣地址值送入幅度/相位轉(zhuǎn)換電路。這樣就可把存儲在波形存儲器內(nèi)的波形抽樣值(二進(jìn)制編碼)經(jīng)查找表查出,完成相位到幅值轉(zhuǎn)換。波形存儲器的輸出送到D/A轉(zhuǎn)換器,D/A轉(zhuǎn)換器將數(shù)字量形式的波形幅值轉(zhuǎn)換成所要求合成頻率的模擬量形式信號。
相位累加器的最大計數(shù)長度與正弦查詢表中所存儲的相位分隔點(diǎn)數(shù)相同,在取樣頻率(由參考時鐘頻率決定)不變的情況下,由于相位累加器的相位增量不同,將導(dǎo)致一周期內(nèi)的取樣點(diǎn)數(shù)不同,輸出信號的頻率也相應(yīng)變化。
如果設(shè)定累加器的初始相位,則可以對輸出信號進(jìn)行相位控制。由采樣原理可知,如果使用兩個相同的頻率合成器,并使其參考時鐘相同,同時設(shè)定相同的頻率控制字、不同的初始相位,那么在原理上就可以實現(xiàn)輸出兩路具有一定相位差的同頻信號。
2.2.2 FPGA實現(xiàn)的直接數(shù)字頻率合成器
基于DDS的基本原理,利用Altera公司的FPGA芯片F(xiàn)LEX10系列器件設(shè)法將波形采樣點(diǎn)的值依次通過數(shù)模轉(zhuǎn)換器(MDAC)轉(zhuǎn)換成模擬量輸出,可達(dá)到預(yù)期的目的,具有較高的性價比。其基本環(huán)節(jié)由計數(shù)器(Counter)、只讀存儲器(EPROM)、數(shù)模轉(zhuǎn)換器(MDAC)和濾波器等組成。
具體方案如下:累加器由加法器和D觸發(fā)器級聯(lián)組成,在時鐘脈沖fc的控制下,對輸入頻率控制字K進(jìn)行累加,累加滿量時產(chǎn)生溢出。相位累加器的輸出對應(yīng)于該合成周期信號的相位,并且這個相位是周期性的,在0~2π 范圍內(nèi)起變化。相位累加器位數(shù)為N,最大輸出為2N-1,對應(yīng)于2π的相位,累加一次就輸出一個相應(yīng)的相位碼,通過查表得到正弦信號的幅度,然后經(jīng)D/A轉(zhuǎn)換及低通濾波器濾除不需要的取樣分量,以便輸出頻譜純凈的正弦波信號。整個DDS電路的電路結(jié)構(gòu)如圖4所示。
3.系統(tǒng)硬件電路設(shè)計
在功能上,單片機(jī)與FPGA有很強(qiáng)的互補(bǔ)性。
單片機(jī)具有性價比高、功能靈活、易于人機(jī)對話、良好的數(shù)據(jù)處理能力等特點(diǎn);FPGA則具有高速、高可靠性以及開發(fā)便捷、規(guī)范等優(yōu)點(diǎn)。用這兩類器件相結(jié)合的電路結(jié)構(gòu)在許多高性能儀器儀表和電子產(chǎn)品中仍將被廣泛應(yīng)用。
單片機(jī)的功能主要是傳送頻率控制字K1和相位控制字K2給FPGA處理;生成波形表存儲于EEPROM中;控制鍵盤的寫入和LED的顯示;控制DAC0832進(jìn)行幅值轉(zhuǎn)換。在每次加電前都要通過單片機(jī)初始化,將寫好的程序加載在信號產(chǎn)生系統(tǒng)上,然后把從鍵盤上輸入的數(shù)據(jù)送到中央處理芯片上,信號通過低通濾波器輸出的同時,LED數(shù)碼管顯示信號的頻率和相位差。
FPGA與單片機(jī)的總線接口如圖5所示。
4.系統(tǒng)的實現(xiàn)
4.1 系統(tǒng)的計算與仿真
用MAX+plusⅡ設(shè)計DDS系統(tǒng)數(shù)字部分最簡單的方法是采用原理圖輸入。相位累加器調(diào)用lmp_add_sub加減法器模塊,相位累加器設(shè)計的好壞將直接影響到整個系統(tǒng)的速度,采用流水線技術(shù)能大幅度地提升速度。波形存儲器(ROM)通過調(diào)用lpm_rom元件實現(xiàn),其LPM_FILE的值。mif是一個存放波形幅值的文件。波形存儲器設(shè)計主要考慮的問題是其容量的大小,利用波形幅值的奇、偶對稱特性,可以節(jié)省3/4的資源,這是非??捎^的。為了進(jìn)一步優(yōu)化速度的設(shè)計,可以選擇菜單Assignal GlobalProject Logic Synthesis的選項Optimize10(速度),并設(shè)定Global Project LogicSynthesis Style為FAST,經(jīng)寄存器性能分析最高頻率達(dá)到100MHZ以上。DDFS中的分頻、累加器及正弦波的仿真如圖6、7、8所示。
4.2 單片機(jī)的編程實現(xiàn)
由于使用了8051單片機(jī)及FPGA構(gòu)成的DDS系統(tǒng),外圍電路變得異常簡單,而FPGA的使用使單片機(jī)的程序大大簡化。DDS系統(tǒng)及其與單片機(jī)的接口部分用VHDL語言寫。在設(shè)計過程中波形頻率隨CPU的頻率而變化,單片機(jī)的實時時鐘經(jīng)過PLL倍頻電路產(chǎn)生系統(tǒng)時鐘頻率fc,fc再經(jīng)過分頻得到CPU時鐘頻率(CPUCLK)可通過對P_SystemClock(寫)(7013H)單元編程來控制。在設(shè)計過程中,波形編輯的第一步就是進(jìn)行CPU頻率選擇,選擇最高頻和最低頻作為粗調(diào),在用鍵盤和中斷進(jìn)行微調(diào),以便達(dá)到所需的頻率、相位及其幅值。單片機(jī)編程的總體流程圖如圖9所示。
5.結(jié)束語
本文結(jié)合實際需要,提出一種基于單片機(jī)和FPGA的直接頻率數(shù)字合成器的設(shè)計方案。方案以FPGA為核心模塊,以單片機(jī)為控制模塊,采用直接數(shù)字頻率合成技術(shù)設(shè)計了雙通道相位關(guān)系可調(diào)的信號發(fā)生器,輸出信號頻率范圍為0~20KHz,頻率分辨率高于20Hz,相位調(diào)節(jié)步進(jìn)1o.兩個通道不僅可以輸出相同頻率的信號,還可以輸出不同相位、不同幅值的正弦信號。經(jīng)系統(tǒng)仿真表明,本方案可達(dá)到預(yù)定要求,應(yīng)用方便靈活。
評論