摘 要:隨著電子設計和通信測試的飛速發展,一些具有特定頻率、特殊規律的信號在設計和測試過程中不可或缺,而市場上出售的信號發生器往往由于各種因素不能滿足設計要求,使用FPGA器件設計的信號發生器可以勝任不同要求的任意信號發生器。
Altera DSP_builder是一款基于Matlab的系統級設計工具,依賴于Matlab/Simulink進行圖形化系統設計和功能仿真,其最大特點在于可以通過signalCompiler直接將設計生成的模型文件(.mdl)轉換成硬件描述語言VHDL,進而在QuartusII等軟件上做更復雜精確地仿真,并生成.sof文件下載到芯片上使用。開發過程不涉及任何編程,圖形化設計界面一目了然,是一種方便快捷的設計方式。
關鍵詞:FPGA;DSP_builder;DDS;SignalCompile
1 DDS設計
1.1 基本原理
直接數字頻率合成(Direct Digital Frequency Synthesis ,簡稱DDS)是以采樣定理為基本原理,根據相位間隔對正弦信號進行取樣、量化、編碼,然后儲存在EEPROM中構成一個正弦查詢表,通過查表法產生波形。本設計基于DDS的基本原理,在時鐘脈沖fc的控制下,對輸入頻率控制字K進行累加,當累加滿量時產生溢出。相位累加器的輸出對應于該合成周期信號的相位,并且這個相位是在0~2π范圍內周期性的變化。相位累加器位數為N,對應于2π的相位, 最大輸出為2N-1,累加一次就輸出一個相應的相位碼,將這個相位碼作為查找表地址,通過查表得到正弦信號的幅度輸出,然后經高速D/A轉換成模擬量并通過低通濾波器濾除不需要的取樣分量,輸出頻譜純凈的正弦波信號。
1.2 系統設計
1.2.1系統總體設計
下圖為在Matlab/DSP_builder11.0平臺建立DDS的Simulink模型:
系統模型圖
系統的三個輸入分別任頻率控制字輸入Freqword、相位控制字Phaseword、信號輸入控制模塊input。Input通過乘法器product模塊控制信號輸出,相位累加器模塊由deiay模塊、Parallel Adder Subtractor模塊和Phaseword1模塊組成,相位調制模塊由Parallel Adder Subtractor1模塊和Bus Conversion組成,其中加法器使用Pipeline,內部包含寄存器,最后由DDSout輸出波形。
把輸出的8位數字信號接入高速DA轉換模塊,就可以用示波器觀察輸出波形。
1.2.2正弦查找表模塊設計
正弦查找表有多種設計方式,本設計采用調用Altera DSP_builder元件庫中的LUT模塊實現,取相位調制高6位作為查找表地址。正弦查找表部分還可以調用ROM模塊實現,在使用ROM模塊時,需要先編寫查找表.mif或.hex文件,然后在ROM設置中指定文件位置即可。
以下是Matlab生成正弦查找表的代碼:
width=8; %數據寬度8位;
depth=2^width;
N=0:1:depth-1;
s=sin(pi*N/depth); %計算0~pi/2的Sin值;
fidc=fopen('dds1.mif','wt'); %以"wt"的形式打開,\n為換行
% 寫入 dds.mif %
fprintf(fidc,'width=%d;\n',width);
fprintf(fidc,'depth=%d;\n',depth);
fprintf(fidc,'address_radix=uns;\n');
fprintf(fidc,'data_radix = uns;\n');
fprintf(fidc,'content begin\n');
for(x=1:depth);
fprintf(fidc,'%d:%d;\n',x-1, round( (depth/2-1)*sin(pi*(x-1)/(depth/2)) + depth/2) );
end
fprintf(fidc,'end;');
fclose(fidc);
2 系統仿真
設置相位控制字0,頻率控制字9000000,信號輸入控制125,用Matlab Sinulink對電路進行系統級功能仿真,觀察到系統輸出波形如下:
3 硬件實現
雙擊原理圖中的SignalCompiler工具,在彈出對話框中設置參數,點擊Compile,DSP_builder將自動調用QuartusII進行編譯。過程中會自動創建QuartusII工程并綜合適配,生成QuartusII能識別的VHDL源程序。在QuartusII中打開工程,編譯通過,分配管腳。生成的.sof文件可下載到FPGA芯片,將輸出的數字信號接入高速DA轉換模塊就可以觀察到輸出波形。
4 結束語
在本設計中,由于設計信號發生器的全部基本組件模塊都已經存在,我們僅僅需要逐一連接并設置好參數即可,簡單直觀的實現了一個較為復雜的電子系統。在更為復雜的設計中,還可以通過SubsystemBuilder調用編寫好的VHDL源程序。SignalCompile工具直接把設計的.mdl文件轉換為VHDL語言,從而使設計過程不涉及編程,操作更簡單,過程更直觀,更容易查找修正設計中的錯誤。使用DSP_builder的設計極大簡化開發過程,縮短設計周期,提高開發效率,值得我們在開發過程中加以利用。
作者簡介
王志強(1991-),男,湖北省宜昌市,職稱:學生,學歷:本科,研究方向:電子信息工程。