基于DSP Builder的正弦信號(hào)源優(yōu)化設(shè)計(jì)及其FPGA實(shí)現(xiàn)
實(shí)現(xiàn)信號(hào)源常用的方法是頻率合成法,其中直接數(shù)字頻率合成法是繼直接頻率合成法和間接頻率合成法之后,隨著電子技術(shù)迅速發(fā)展的第三代頻率合成技術(shù)。DDS是一種全數(shù)字技術(shù),它從相位概念出發(fā)直接合成所需頻率,它具有頻率轉(zhuǎn)換時(shí)間短,頻率分辨率高,相位變化連續(xù),低相位噪聲和低漂移,易于集成、調(diào)整、實(shí)現(xiàn)正交輸出等優(yōu)點(diǎn)。近年來(lái),DDS技術(shù)在頻率合成、通信、雷達(dá)、電子對(duì)抗、儀器測(cè)試等領(lǐng)域均有廣泛的應(yīng)用。目前專(zhuān)用的DDS芯片產(chǎn)生的信號(hào)波形、功能和控制方式固定,常不能滿(mǎn)足具體需要?,F(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)器件具有規(guī)模大、工作速度快及可編程的硬件特點(diǎn),并且開(kāi)發(fā)周期短,易于升級(jí),因此非常適用于實(shí)現(xiàn)DDS。
l DDS的基本原理
DDS的結(jié)構(gòu)由相位累加器,相位調(diào)制器,波形存儲(chǔ)ROM和D/A轉(zhuǎn)換器組成,是Tierney,Rader和Gold于1971年提出。一個(gè)正弦信號(hào)發(fā)成器結(jié)構(gòu)圖如圖1所示。相位累加器是整個(gè)DDS的核心,完成相位累加運(yùn)算,它輸入的是相位增量B△θ。相位累加器每溢出一次,就代表輸出ROM內(nèi)的一個(gè)完整波形。相位調(diào)制器接收相位累加器的相位輸出。加上一個(gè)相位偏移量,用于信號(hào)的相位調(diào)制。正弦ROM查找表完成相位到幅度的轉(zhuǎn)換,它的輸入是相位調(diào)制器的輸出,也就是ROM的地址。
fo為輸出頻率,fo的值由fclk和B△θ共同決定:fo=fclk×B△θ/2N。根據(jù)Nyquist采樣定律,最高的輸出頻率是時(shí)鐘頻率的一半,即fo=fclk/2。實(shí)際應(yīng)用中,一般取fo≤40%fclk。DDS的頻率分辨率△f用頻率輸入值步進(jìn)一個(gè)最小間隔對(duì)應(yīng)的頻率輸出變化量來(lái)衡量,即△f=fclk/2N(默認(rèn)情況下,ROM存儲(chǔ)整個(gè)周期信號(hào)波形)??梢?jiàn),△f越小,DDS輸出精度越高。
2 DDS精度改進(jìn)方案
ROM查找表實(shí)際上是一個(gè)存儲(chǔ)了正弦信號(hào)抽樣點(diǎn)幅度編碼的只讀存儲(chǔ)器,將輸入的序列轉(zhuǎn)換為正弦信號(hào)的幅度編碼。ROM查找表地址位數(shù)M越靠近相位累加器的位數(shù)N,相位尋址時(shí)舍去的位數(shù)就越小,相位舍位誤差也就越小,但ROM表的大小會(huì)隨地址位數(shù)M的增加成指數(shù)遞增關(guān)系。因此,為了使用較小的ROM而滿(mǎn)足信號(hào)性能,必須采用優(yōu)化方法壓縮ROM。
2.1 正弦波特點(diǎn)
已知正弦波存在下面的關(guān)系:
可見(jiàn),[π,2π]區(qū)間的波形可以通過(guò)[0,π]區(qū)間波形轉(zhuǎn)化得到。進(jìn)一步,由于[O,π/2]和[π/2,π]區(qū)間波形關(guān)于α=π/2對(duì)稱(chēng),則[π/2,π],[π,3π/2],[3π/2,2π]三個(gè)區(qū)間波形都可以通過(guò)[0,π/2]區(qū)間的波形轉(zhuǎn)化得到。
2.2 基于DSP Builder的ROM優(yōu)化方案
從上面對(duì)正弦波特點(diǎn)的分析可得出,查找表ROM中只存儲(chǔ)[O,π]或[0,π/2]區(qū)間的波形就可得完整周期的正弦信號(hào)。這樣就有效地利用了ROM存儲(chǔ)完間,提高了存儲(chǔ)效率。對(duì)于ROM中存儲(chǔ)[O,π]區(qū)間波形的情況,可以利用相位調(diào)制器輸出的最高位作為符號(hào)位,將正弦波合成到[0,2π]區(qū)間。而對(duì)于ROM中存儲(chǔ)[0,π/2]區(qū)間波形的情形,利用相位調(diào)制器輸出的次高位判斷象限,將正弦波合成到[O,π]區(qū)間;最高位作為符號(hào)位,將正弦波合成到[0,2π]區(qū)間。圖2給出了ROM中存儲(chǔ)[O,2π],[0,π],[O,π/2]區(qū)間波形時(shí),用DSP Builder實(shí)現(xiàn)正弦信號(hào)發(fā)生器的系統(tǒng)模型。
其中,PWORD為相位字輸入,其值設(shè)置為O;FWORD為頻率字輸入,其值設(shè)置為9000000;AWORD為幅度控制輸入,其值設(shè)置為50;adder為相位累加器;adderl為相位調(diào)制器。LUTl,LUT2,LUT3分別為存儲(chǔ)[O,2 π],[O,π],[0,π/2]區(qū)間正弦信號(hào)的具有相同存儲(chǔ)空間的ROM,它們模塊參數(shù)“MATLAB Array”分別設(shè)置為:
另外,需注意的是,子系統(tǒng)controller的作用是,判斷象限,將LUT3中正弦波合成到[0,π]范圍。
2.3 仿真分析
圖3給出了圖2系統(tǒng)模型中3個(gè)輸出OUTl,OUT2,OUT3的波形。由圖3可見(jiàn),OUT2的頻率是OUTl的1/2,而OUT3的頻率是OUT2的1/2。這表明,OUT3的頻率分辨率最高,0UT2次之,OUTl最低。由此可得出,有著相同地址輸入的ROM,在存儲(chǔ)空間大小相同情況下,存儲(chǔ)正弦波區(qū)間越小,輸出正弦信號(hào)的頻率分辨率越高,即輸出精度越高。所以,用相同的ROM,當(dāng)存儲(chǔ)1/4周期正弦信號(hào)時(shí),合成的正弦信號(hào)有著較高的精度。[!--empirenews.page--]
3 信號(hào)源的FPGA實(shí)現(xiàn)
Matlab/Simulink對(duì)設(shè)計(jì)好的DDS系統(tǒng)進(jìn)行編譯,通過(guò)調(diào)用DSP Builder的SignalCompiler工具可直接生成QuartusⅡ的工程文件,再調(diào)用QuartusⅡ完成綜合、網(wǎng)表生成和適配,直至完成FPGA的配置下載過(guò)程。
本設(shè)計(jì)方案采用的FPGA芯片是APEX20K系列器件EP20K200FC484。所得結(jié)果中的數(shù)字輸出可以輸出到SRAM芯片中,然后上載到計(jì)算機(jī)進(jìn)行數(shù)字信號(hào)分析,模擬輸出則通過(guò)HP示波器測(cè)試。圖4給出了用QuartusII的仿真結(jié)果。圖中,clock為系統(tǒng)時(shí)鐘,sclrp為高電平復(fù)位信號(hào),PWORD,F(xiàn)WORD,AWORD的值分別設(shè)為十進(jìn)制數(shù)0,9000000和50。仿真得到的3個(gè)輸出OUTl,OUT2和OUT3與Matlab/Simulink中的仿真結(jié)果在相位、頻率和幅度上基本一致。實(shí)驗(yàn)表明,利用FPGA所計(jì)設(shè)的DDS在滿(mǎn)足性能的條件下,節(jié)約了芯片資源,提高了輸出的精度。
4 結(jié)語(yǔ)
本文介紹了一種改進(jìn)了的基于DSP Builder的正弦信號(hào)發(fā)生器設(shè)計(jì)方法,應(yīng)用APEX20K系列FPGA芯片實(shí)現(xiàn)。繼承了傳統(tǒng)DDS設(shè)計(jì)中調(diào)頻、調(diào)相迅速的優(yōu)點(diǎn),同時(shí),采用了查找表壓縮方案,使芯片在節(jié)約資源的基礎(chǔ)上達(dá)到了較高的輸出精度。