基于Matlab/DSP Builder任意波形信號發(fā)生器的兩種設(shè)計
0 引言
在當(dāng)今的科技信息社會中,尤其是在電子設(shè)計和信號測試系統(tǒng)中,通常需要一些復(fù)雜、特定頻率的信號,通常的信號發(fā)生器難以滿足要求,市場上出售的一些任意信號發(fā)生器的價格昂貴,體積較大,不能滿足實際的需要。
Altera DSP Builder是一款系統(tǒng)級的設(shè)計工具,依賴于Mathworks公司的數(shù)學(xué)分析工具M(jìn)atlab/Simulink,可以在Sireulink中進(jìn)行圖形化設(shè)計和仿真,同時又可以通過signalCompiler把Matlab/Simulink的模型文件(.mdl)轉(zhuǎn)換成相應(yīng)的硬件描述語言VHDL,本文用兩種方法,即傳統(tǒng)型的任意信號發(fā)生器和基于直接數(shù)字頻率合成(DDS)的任意信號發(fā)生器,在DSPBuilder的開發(fā)工具下實現(xiàn)任意信號發(fā)生器的設(shè)計,不涉及到編程,操作簡單。
1 傳統(tǒng)型任意信號發(fā)生器的設(shè)計
1.1 設(shè)計原理
傳統(tǒng)型任意信號發(fā)生器原理比較簡單,將時鐘源作為地址發(fā)生器(計數(shù)器)的輸入時鐘,通過改變時鐘源的頻率,可以實現(xiàn)調(diào)整地址發(fā)生器(計數(shù)器)產(chǎn)生地址的變化速率,從而達(dá)到改變輸出波形與輸出頻率的目的。當(dāng)?shù)刂钒l(fā)生器輸出值等于待生成波形數(shù)據(jù)存儲器中波形數(shù)據(jù)的地址時,待生成波形數(shù)據(jù)存儲器將輸出此數(shù)據(jù)到高速D/A轉(zhuǎn)換,將其變?yōu)槟M信號,經(jīng)低通濾波器后輸出所需波形。D/A的輸出頻率fuot與待生成波形數(shù)據(jù)存儲器的波形數(shù)據(jù)點(diǎn)數(shù)N以及時鐘源的頻率fclk關(guān)系為:
由式(1)可知,只要改變數(shù)據(jù)波形點(diǎn)數(shù)N就能控制輸出信號的頻率。
1.2 系統(tǒng)設(shè)計
根據(jù)圖1所示的原理框圖,在Matlab/DSP Builder平臺上,建立傳統(tǒng)型任意信號發(fā)生器的Simulink模型,如圖2所示。
在圖2中,Increment Decrement模塊起到一個地址發(fā)生器的作用,隨著時鐘的輸入不斷累加輸出,ROM模塊存放待生成信號的波形數(shù)據(jù),輸入模塊input通過produt模塊控制信號的輸出。
利用Matlab強(qiáng)大的仿真功能,方便、快捷地生成給定頻率、周期、脈寬的任意波形數(shù)據(jù),但生成的數(shù)據(jù)通常是浮點(diǎn)型的,要將其轉(zhuǎn)換為十六進(jìn)制的Hexadecimal(Itel-Form)File(.hex)格式的文件,然后將*.hex文件添加到ROM存儲器中,設(shè)置系統(tǒng)模型的參數(shù),就可以得到任意信號波形。
2 基于DDS的任意信號發(fā)生器的設(shè)計
2.1 設(shè)計原理
基于DDS的任意信號發(fā)生器結(jié)構(gòu)框圖如圖3所示。由圖3可以看出,相位累加器在系統(tǒng)時鐘的控制下以頻率控制字長的步長進(jìn)行累加,輸出的線性相位序列和相位控制字相加后對待生成波形數(shù)據(jù)ROM查表尋址,待生成波形數(shù)據(jù)ROM查找表輸出相應(yīng)波形的離散序列,再由DAC將其轉(zhuǎn)換為模擬量,把存入的數(shù)據(jù)重新整合起來。此過程實際完成了相位到幅度的轉(zhuǎn)換。
設(shè)系統(tǒng)時鐘為fclk,頻率輸入字為Freword,相位輸入字為Phaseword,N是相位累加器的數(shù)據(jù)位寬(頻率輸入字的數(shù)據(jù)位寬),相位調(diào)制器的位寬為M,則DDS的輸出信號頻率為:
輸出信號的相移為:
由式(2)和式(3)可知,改變頻率輸入字和相位輸入字就可以分別控制輸出信號的頻率和相位。[!--empirenews.page--]
2.2 系統(tǒng)設(shè)計
根據(jù)圖3所示的框圖,在Matlab/DSP Builder平臺上,建立基于DDS的任意信號發(fā)生器的Simulink模型,如圖4所示。
該系統(tǒng)中,共有三個輸入:Freword為頻率字輸入、Phaseword為相位字輸入、input為信號輸入控制模塊。ROM模塊中裝載要輸出信號的波形數(shù)據(jù)。input模塊通過product模塊控制信號的輸,Delay模塊,Parallel Adder Subtractor模塊和Phasewordl模塊構(gòu)成相位累加器,相位調(diào)制部分由Parallel Adder Subtractorl模塊和Bus Conversion構(gòu)成,加法器使用了Pipeline,內(nèi)部已含寄存器,因而加法器出來后就無需再加延時模塊。選擇頻率字為8 000 000,相位字輸入為100。
同樣,利用Matlab將待生成波形的.hex文件添加到ROM存儲器中,設(shè)置各模塊的參數(shù),即可得到所需的信號波形。
3 系統(tǒng)仿真
只要將待生成信號的波形數(shù)據(jù)添加到圖2或圖4的ROM模塊中,設(shè)置各模塊的參數(shù),就可得到任意所需波形,本文只給出傳統(tǒng)方法下生成的正弦波信號和基于DDS生成的三角波信號的系統(tǒng)仿真。
3.1 傳統(tǒng)型正弦波信號的系統(tǒng)仿真
由QuartusⅡ生成的正弦波信號的.hex文件如表1所示。
將正弦波的數(shù)據(jù).hex文件添加到圖2的ROM模塊中,設(shè)置系統(tǒng)模型的參數(shù),系統(tǒng)仿真結(jié)果如圖5所示。
3.2 基于DDS的三角波信號的系統(tǒng)仿真
由QuartusⅡ生成的三角波信號的.hex文件如表2所示。
[!--empirenews.page--]
將三角波的數(shù)據(jù).hex文件添加到圖4的ROM模塊中,設(shè)置系統(tǒng)模型的參數(shù),系統(tǒng)仿真結(jié)果如圖6所示。
4 系統(tǒng)的硬件實現(xiàn)與測試
雙擊圖2或圖4中SignalCompiler,在彈出的對話框中點(diǎn)擊“Compile”,DSP Builder將會調(diào)用QuartusⅡ進(jìn)行全程編譯,這個過程包括創(chuàng)建QuartusⅡ工程、綜合和適配。會自動將mdl文件轉(zhuǎn)換為QuartusⅡ能夠識別的VHDL源程序。
打開QuartusⅡ9.O環(huán)境,打開DSP Builder自己建立好的工程,最后選擇cycloneⅡ系列的FPGA芯片EP2C8Q208C,鎖定好相關(guān)引腳,再將.sof文件下載到EP2C8Q208C芯片中。
完成下載后,傳統(tǒng)的方法是用邏輯分析儀接到FPGA的管腳上進(jìn)行硬件測試,該方法繁瑣且復(fù)雜,為解決此問題,可使用QuartusⅡ自帶的嵌入式邏輯分析儀SignalTapⅡ進(jìn)行硬件測試。
打開SignalTapⅡ,設(shè)置好所要觀測信號的觸發(fā)狀態(tài)、采樣時鐘和數(shù)據(jù)深度,之后將文件保存為.stp文件,并添加到系統(tǒng)工程里,然后啟動完整編譯。
對傳統(tǒng)方法下生成的正弦波信號和基于DDS生成的三角波信號進(jìn)行SignalTapⅡ硬件測試,結(jié)果如圖7所示。對比圖7,圖5和圖6,表明兩種設(shè)計方法的正確性。
將硬件電路接入高速D/A轉(zhuǎn)換電路,用示波器檢測D/A輸出,會看到相應(yīng)波形。
5 結(jié)語
基于Matlab/DSP Builder的系統(tǒng)實現(xiàn)方案形象直觀,本文采用兩種方法在DSP Builder下實現(xiàn)了任意信號發(fā)生器的設(shè)計,通過Simulink的系統(tǒng)仿真和SignalTapⅡ的硬件測試,證實了設(shè)計方法的正確性,取得了預(yù)期的效果。
DSP Builder作為Matlab/Simulink中的一個工具箱,使得用FPGA設(shè)計DSP系統(tǒng)完全可以通過Simulink的圖形化界面進(jìn)行,使用DSPBuil-der設(shè)計任意波形信號發(fā)生器的所有基本組件都已經(jīng)存在,只需要對每個組件設(shè)置參數(shù)后逐一連接就可以,從而使得一個復(fù)雜電子系統(tǒng)設(shè)計變得相當(dāng)容易而且直觀,利用SignalCompiler很容易將模型轉(zhuǎn)換為VHDL語言,不涉及到編程,操作更簡單,開發(fā)速度大大加快。