基于流水線結(jié)構(gòu)的DDS多功能信號發(fā)生器設(shè)計
第一級流水線經(jīng)過全加器之后得出運算結(jié)果sum[0..7]和進(jìn)位信號,sum[0..7]作為本級的輸出,它是整個累加結(jié)果的最低8位,而進(jìn)位信號經(jīng)過一個reg1之后作為下一級全加器的輸入。
第二級流水線的輸入信號是a[8..15],因為上一級共由兩級數(shù)據(jù)鎖存器構(gòu)成,所以在做全加運算之前先分別將輸入信號和本級的反饋信號經(jīng)過2次數(shù)據(jù)鎖存,然后再與來自上一級的進(jìn)位信號進(jìn)行全加運算,運算之后的結(jié)果作為本級的輸出sum[8..15],同時產(chǎn)生進(jìn)位信號參與下一級的運算。第三級與第四級的工作原理同上,系統(tǒng)每增加一級流水線結(jié)構(gòu),鎖存器也會隨之增加一級。
圖3為在QuartusⅡ環(huán)境下得到的四級流水線仿真波形,時鐘信號的頻率是200 MHz,占空比為50 %,偏移量為0。為觀察方便,輸入控制字a和累加結(jié)果sum均用無符號十進(jìn)制數(shù)來表示,且輸入控制字設(shè)定為32,由波形圖可見,該系統(tǒng)可以實現(xiàn)32位的相位累加。
3 任意波形發(fā)生器的設(shè)計及實現(xiàn)
DDS可以根據(jù)ROM中存儲數(shù)據(jù)的不同產(chǎn)生多種波形。在QuartusⅡ開發(fā)環(huán)境下搭建DDS系統(tǒng)模型需要訂制波形存儲器ROM,根據(jù)所需精度的不同,ROM中存儲的采樣點數(shù)也不同。當(dāng)所需波形數(shù)據(jù)非常簡單時,可以在QuartusⅡ中定制ROM時直接將數(shù)據(jù)寫入新建的mif文件,然后保存即可,當(dāng)所需波形數(shù)據(jù)較為復(fù)雜時,可以通過Matlab來自動生成所需波形的幅度數(shù)據(jù),然后再通過調(diào)用mif文件來達(dá)到預(yù)期目標(biāo)。以256個點的正弦波為例加以分析說明。
產(chǎn)生正弦波的Matlab程序如下:
width定義的是位寬,depth是深度,也就是將來生成的mif文件含有多少個存儲單元,在此處,設(shè)定了數(shù)據(jù)寬度為8位,存儲單元數(shù)為256,將來在QuartusⅡ中定制ROM時也要相應(yīng)地將存儲單元數(shù)設(shè)定為256,根據(jù)DDS的基本原理,隨著設(shè)計點數(shù)的增加,所得的波形數(shù)據(jù)會更加準(zhǔn)確,通過D/A轉(zhuǎn)化后在示波器上觀測的波形也越精準(zhǔn),但所需ROM的存儲空間將會呈指數(shù)增長,所以要根據(jù)實際的需要來綜合考慮存儲單元的個數(shù)。將上述指令在Matlab環(huán)境中運行之后就能夠得到所需mif文件。
在mif文件生成之后需要將此文件添加進(jìn)入DDS系統(tǒng)的ROM中,然后進(jìn)行全局的編譯,編譯通過后就可以進(jìn)行工程的下載。具體的波形可以通過示波器來分析,或者使用Quartus Ⅱ自帶的嵌入式邏輯分析儀來分析。在使用嵌入式邏輯分析儀分析和觀察時,采樣信號要根據(jù)DDS的時鐘信號來確定,待測信號設(shè)定為DDS的輸出信號,當(dāng)工程下載到FPGA芯片后,待測信號通過USB-BLASTER反饋至嵌入式邏輯分析儀中,選擇不同的數(shù)據(jù)類型,可以觀察到以十進(jìn)制數(shù)據(jù)表示的數(shù)字信號或者以實際波形表示的模擬信號。
評論