基于FPGA的流水線(xiàn)結構DDS多功能信號發(fā)生器的設計與實(shí)現
隨著(zhù)現代電子技術(shù)的不斷發(fā)展,在通信系統中往往需要在一定頻率范圍內提供一系列穩定和準確的頻率信號,一般的振蕩器已不能滿(mǎn)足要求,這就需要頻率合成技術(shù)。DDS是第3代頻率合成器,它采用全數字技術(shù),具有頻率切換時(shí)間短、頻率精度和分辨率高、輸出相位連續、易于控制等優(yōu)點(diǎn)。
現場(chǎng)可編程門(mén)陣列(FPGA)器件具有工作速度快、集成度高、可靠性高和現場(chǎng)可編程等優(yōu)點(diǎn),并且FPGA支持系統現場(chǎng)修改和調試,采用FP GA設計的DDS具有電路簡(jiǎn)單,性能穩定等特點(diǎn),也能滿(mǎn)足絕大多數通信系統的使用要求。而在DDS相位累加器的設計當中,傳統的累加器采用多位全加器直接相加的方式來(lái)實(shí)現,但隨著(zhù)頻率控制字位數的增加,系統的實(shí)時(shí)性會(huì )大幅降低。針對這一問(wèn)題,本文提出了一種流水線(xiàn)結構的相位累加器,該結構能夠縮短運算時(shí)間,提高整個(gè)系統的實(shí)時(shí)性。
本文介紹了DDS的基本原理,闡述了基于流水線(xiàn)結構的累加器的設計方案及具體的設計方法,采用嵌入式邏輯分析儀分析了正弦波、方波、鋸齒波和三角波等波形,并給出了計算機仿真和實(shí)驗結果,最后總結了該系統的特點(diǎn)。
1 DDS基本原理
如圖1所示,基本的DDS結構一般由4個(gè)模塊構成,分別是相位累加器、波形存儲器ROM,D/A轉換器和低通濾波器LPF。
系統時(shí)鐘fc為基準頻率源,K為頻率控制字,通過(guò)改變K的數值可以改變DDS的輸出頻率,在fc上升沿到來(lái)時(shí),相位累加器會(huì )對頻率控制字K進(jìn)行相位累加,累加結果即是波形存儲器ROM中幅值的地址數據,經(jīng)過(guò)尋址,幅值由ROM輸出到D/A轉換器中,D/A轉換器將由二進(jìn)制編碼的數字信號轉換為模擬信號輸出,該模擬信號再經(jīng)過(guò)低通濾波器的濾波就可以得到平滑的波形曲線(xiàn)。
DDS的輸出頻率為:
fo=(K/2N)fc (1)
式中:N為相位累加器的位數;fc作為基準頻率源一般是給定的數值,因此,決定DDS輸出頻率的因素分別是頻率控制字K和相位累加器的位數N。當K取最小值1時(shí),DDS的輸出頻率即是它的最小分辨率:
fo=fc/2N (2)
2 流水線(xiàn)相位累加器的設計
相位累加器是DDS的重要組成部分,在基準時(shí)鐘控制下,它用來(lái)實(shí)現線(xiàn)性數字信號的逐級累加,信號范圍從0加到累加器的滿(mǎn)偏值,由此得到相應的相位數據,而相位累加器的頻率就是DDS輸出信號的頻率。在通常的電路優(yōu)化設計中,累加器模塊采用超前進(jìn)位加法器,這種結構克服了串行進(jìn)位引起的時(shí)間滯后,很大程度上提高了加法器的運算速度,但仍有不足。為了提高DDS頻率轉換速度和實(shí)時(shí)性,本文提出了一種流水線(xiàn)結構來(lái)優(yōu)化DDS的相位累加器。
FPGA的結構特點(diǎn)很適合采用流水線(xiàn)設計,以Altera低成本系列CycloneⅡ為例,不僅有最多達68 416個(gè)邏輯單元(LE),每個(gè)LE均含有1個(gè)四輸入查找表LUT、1個(gè)可編程觸發(fā)器等。設計中可將1個(gè)算術(shù)操作分解成一些小規模的基本操作配置到LUT中,將進(jìn)位和中間值存儲在寄存器中,在下一個(gè)時(shí)鐘內繼續運算,整個(gè)系統只需要極少或不需要額外的資源成本。
流水線(xiàn)結構的基本原理是將整個(gè)電路劃分為若干個(gè)流水線(xiàn)級,每級之間設置寄存器鎖存上一級輸出的數據;每一級只完成數據處理的一部分,一個(gè)時(shí)鐘周期完成一級數據處理,然后在下一個(gè)時(shí)鐘到來(lái)時(shí)將處理后的數據傳遞給下一級。第一組數據進(jìn)入流水線(xiàn)后,經(jīng)過(guò)1個(gè)時(shí)鐘周期傳到第二級,同時(shí)第二組數據進(jìn)入第一級,數據隊列依次前進(jìn)。每組數據都要經(jīng)過(guò)所有的流水線(xiàn)級后才能得到最后的計算結果,但對整個(gè)流水線(xiàn)而言,每個(gè)時(shí)鐘都能計算出一組結果,所以平均計算一組數據只需要一個(gè)時(shí)鐘周期的時(shí)間,這樣就大大提高了數據處理速度。圖2為在QuartusⅡ開(kāi)發(fā)環(huán)境下用原理圖輸入法搭建的流水線(xiàn)相位累加器結構圖。該結構由四級流水線(xiàn)構成,每一級流水線(xiàn)的輸入字節為8位,分別由8位數據鎖存器,8位數據全加器,1位數據鎖存器構成,整個(gè)系統可實(shí)現32位輸入控制字的相位累加功能。根據流水線(xiàn)相位累加器的工作原理,首先將32位輸入控制字a由低位到高位平均分為4段,每一段為8位,分別以a[0..7]到a[24..32]來(lái)命名。將a[0..7]作為第一級的輸入控制字輸入到8位數據鎖存器reg8中,在時(shí)鐘信號clk上升沿到來(lái)之時(shí),reg8暫存的控制字會(huì )送入到8位數據全加器adder8中與另一個(gè)加法數和進(jìn)位信號進(jìn)行全加運算。另一個(gè)加法數是來(lái)自本級運算結果的反饋,為保持時(shí)鐘節拍的一致性,該反饋先輸入到另一個(gè)reg8中暫存,然后在時(shí)鐘上升沿到來(lái)之時(shí)輸入到全加器進(jìn)行運算;進(jìn)位信號來(lái)自第四級,該信號也是先暫存在一個(gè)1位數據鎖存器reg1中再輸入到全加器中進(jìn)行運算。
第一級流水線(xiàn)經(jīng)過(guò)全加器之后得出運算結果sum[0..7]和進(jìn)位信號,sum[0..7]作為本級的輸出,它是整個(gè)累加結果的最低8位,而進(jìn)位信號經(jīng)過(guò)一個(gè)reg1之后作為下一級全加器的輸入。
第二級流水線(xiàn)的輸入信號是a[8..15],因為上一級共由兩級數據鎖存器構成,所以在做全加運算之前先分別將輸入信號和本級的反饋信號經(jīng)過(guò)2次數據鎖存,然后再與來(lái)自上一級的進(jìn)位信號進(jìn)行全加運算,運算之后的結果作為本級的輸出sum[8..15],同時(shí)產(chǎn)生進(jìn)位信號參與下一級的運算。第三級與第四級的工作原理同上,系統每增加一級流水線(xiàn)結構,鎖存器也會(huì )隨之增加一級。
圖3為在QuartusⅡ環(huán)境下得到的四級流水線(xiàn)仿真波形,時(shí)鐘信號的頻率是200 MHz,占空比為50 %,偏移量為0。為觀(guān)察方便,輸入控制字a和累加結果sum均用無(wú)符號十進(jìn)制數來(lái)表示,且輸入控制字設定為32,由波形圖可見(jiàn),該系統可以實(shí)現32位的相位累加。
3 任意波形發(fā)生器的設計及實(shí)現
DDS可以根據ROM中存儲數據的不同產(chǎn)生多種波形。在QuartusⅡ開(kāi)發(fā)環(huán)境下搭建DDS系統模型需要訂制波形存儲器ROM,根據所需精度的不同,ROM中存儲的采樣點(diǎn)數也不同。當所需波形數據非常簡(jiǎn)單時(shí),可以在QuartusⅡ中定制ROM時(shí)直接將數據寫(xiě)入新建的mif文件,然后保存即可,當所需波形數據較為復雜時(shí),可以通過(guò)Matlab來(lái)自動(dòng)生成所需波形的幅度數據,然后再通過(guò)調用mif文件來(lái)達到預期目標。以256個(gè)點(diǎn)的正弦波為例加以分析說(shuō)明。
產(chǎn)生正弦波的Matlab程序如下:
width定義的是位寬,depth是深度,也就是將來(lái)生成的mif文件含有多少個(gè)存儲單元,在此處,設定了數據寬度為8位,存儲單元數為256,將來(lái)在QuartusⅡ中定制ROM時(shí)也要相應地將存儲單元數設定為256,根據DDS的基本原理,隨著(zhù)設計點(diǎn)數的增加,所得的波形數據會(huì )更加準確,通過(guò)D/A轉化后在示波器上觀(guān)測的波形也越精準,但所需ROM的存儲空間將會(huì )呈指數增長(cháng),所以要根據實(shí)際的需要來(lái)綜合考慮存儲單元的個(gè)數。將上述指令在Matlab環(huán)境中運行之后就能夠得到所需mif文件。
在mif文件生成之后需要將此文件添加進(jìn)入DDS系統的ROM中,然后進(jìn)行全局的編譯,編譯通過(guò)后就可以進(jìn)行工程的下載。具體的波形可以通過(guò)示波器來(lái)分析,或者使用Quartus Ⅱ自帶的嵌入式邏輯分析儀來(lái)分析。在使用嵌入式邏輯分析儀分析和觀(guān)察時(shí),采樣信號要根據DDS的時(shí)鐘信號來(lái)確定,待測信號設定為DDS的輸出信號,當工程下載到FPGA芯片后,待測信號通過(guò)USB-BLASTER反饋至嵌入式邏輯分析儀中,選擇不同的數據類(lèi)型,可以觀(guān)察到以十進(jìn)制數據表示的數字信號或者以實(shí)際波形表示的模擬信號。
圖4為在在嵌入式邏輯分析儀中觀(guān)察到的正弦曲線(xiàn)。由波形圖可以看出,該設計方案可以實(shí)現正弦信號發(fā)生器的功能。按照相同的方法,修改產(chǎn)生mif文件的Matlb運算指令可以獲得方波,鋸齒波,三角波等波形。
圖5~圖7為能產(chǎn)生方波,鋸齒波和三角波波形的工程文件下載到FPGA芯片后通過(guò)嵌入式邏輯分析儀得到的波形圖。由波形圖可以看出,該系統能夠實(shí)現任意波形發(fā)生器的功能。
4 結語(yǔ)
本文將流水線(xiàn)相位累加器引進(jìn)到DDS的設計中,利用電子設計自動(dòng)化技術(shù)進(jìn)行系統設計,并從嵌入式邏輯分析儀分析和觀(guān)察了相應的波形,仿真和硬件實(shí)驗驗證了設計方案的正確性。該系統具有結構簡(jiǎn)單、運行速度快和占用芯片資源少等特點(diǎn)。隨著(zhù)ROM查找表的擴大以及越來(lái)越多的直接計算波形數據的方法不斷被提出,對DDS整體實(shí)時(shí)性的要求也越來(lái)越高,尤其像目前較為流行的cordic算法及改進(jìn)的其它插值算法,由于算法本身隨著(zhù)級數的增多,整個(gè)系統的頻率轉換效率就會(huì )降低,而流水線(xiàn)相位累加器結構可以很好地解決這一問(wèn)題。
評論