基于DSP Builder的Chirp信號源
DSP Builder是Altera公司提供的一個系統(tǒng)級(或算法級)設(shè)計工具。它架構(gòu)在多個軟件工具之上,并把系統(tǒng)級(算法仿真建模)和RTL級(硬件實現(xiàn))兩個設(shè)計領(lǐng)域的設(shè)計工具連接起來,最大程度地發(fā)揮了兩種工具的優(yōu)勢。DSP Builder可以幫助設(shè)計者完成基于FP-GA的DSP設(shè)計。除了圖形化的系統(tǒng)建模外,DSPBuilder還可以自動完成大部分的設(shè)計過程和仿真,直到把設(shè)計文件下載至DSP開發(fā)板上。該設(shè)計采用DSPBuilder開發(fā)工具,首先實現(xiàn)輸出頻率變化可控的直接數(shù)字合成(DDS)模塊;然后根據(jù)Chirp函數(shù)的變化規(guī)律,控制DDS的輸出頻率變化規(guī)律。
1 Chirp函數(shù)的一般特性
電磁波在傳輸過程中,經(jīng)過色散介質(zhì),如不均勻的波導(dǎo),在高空電離層時會發(fā)生色散現(xiàn)象。Chirp函數(shù)在射電天文信號的消色散處理中發(fā)揮著重要的作用,研究在FPGA中實現(xiàn)Chirp函數(shù)是基于FPGA的射電宇宙信號處理的重要組成部分,如圖1所示。
根據(jù)輸出頻率與當(dāng)前采樣時刻對應(yīng)遞變規(guī)律,Chirp函數(shù)一般分線性(Linear)Chirp函數(shù)和非線性(Nonlinear)chirp函數(shù)兩種。圖2,圖3是兩種Chirp函數(shù)在頻域上的表現(xiàn)圖。
從圖2,圖3可以看出,Chirp函數(shù)的頻率輸出與時間關(guān)系f-t關(guān)系可以總結(jié)為:對于線性Chirp函數(shù),在連續(xù)域時間域內(nèi)有關(guān)系式:
式中:k為常數(shù);f0為初始輸出頻率;t為連續(xù)時間。
在離散時間域有關(guān)系式:
式中:k為常數(shù);f0為初始輸出頻率;n為采樣點。
對于非線性Chirp函數(shù),在連續(xù)域時間域內(nèi)有關(guān)系式:
式中:f(t)為非線性函數(shù);f0為初始輸出頻率;t為連續(xù)時間。
在離散時間域有關(guān)系式:
式中:f(n)為非線性函數(shù);f0為初始輸出頻率;n為采樣點。
2 DDS模塊的設(shè)計
數(shù)字式頻率合成器(DDS)模塊的工作原理是:將0~2π的正弦函數(shù)值分為N份,將各點的幅度值存入ROM中,再用一個相位累加器每次累加相位值ωT,得到當(dāng)前的相位值,通過查找ROM得到當(dāng)前的幅度值,其系統(tǒng)框圖如圖4所示。
DDS的主要參數(shù)包括:系統(tǒng)時鐘頻率、頻率控制字長、頻率分辨率、ROM單元數(shù)、ROM字長。該設(shè)計的DDS是10位的,時鐘頻率為轉(zhuǎn)化為VHDL文件后的輸入時鐘頻率。這是一個很靈活的輸入頻率。在此,假設(shè)輸入頻率為fin,頻率控制字長為16位,ROM單元數(shù)為210,ROM字長為9位,而且頻率分辨率為:
式中:fc為系統(tǒng)時鐘頻率。
頻率控制字為:
式中:f為要合成的頻率;T為系統(tǒng)時鐘??梢?,當(dāng)輸入頻率控制字發(fā)生變化時,輸出頻率fout也發(fā)生相應(yīng)的變化,從DDS到Chirp信號源的設(shè)計就是基于這一思想,如圖5所示。
其中,輸入端口1為初始相位控制字輸入端,它的輸入值決定了信號源的初始輸出相位。輸入口2為頻率控制字FTW輸入端,若在該輸入端寫入不同的頻率控制字值,則可以在輸出端口得到不同的輸出頻率。輸入端口3為初始頻率控制字輸入端,它的輸入值決定了信號源的初始偏置頻率。
LUT為正弦數(shù)據(jù)查找表模塊(Look Up Table)。根據(jù)DSP Builder的算法將一個完整的正弦波周期進(jìn)行1 024次采樣,并存儲于LUT中。在Matlab中設(shè)置Matlab array:511*sin([0:2*pi/(2^10):2*pi]),左邊的輸入端為查找數(shù)據(jù)的地址輸入端,右邊的輸出端為離散正弦波信號輸出端。
第一個并行累加器模塊(Parallel Adder Subtrac-tor)作為相位累加器,采用Altera提供的總線結(jié)構(gòu)(AltBus)模塊決定了該累加器的長度為16位,即該累加器最大可輸出范圍為216,由此決定了公式(5)。
第二個并行累加器模塊(Parallel Adder Subtractor1)作為初相位偏置累加器,將初相位控制字與頻率控制字累加,為輸出頻率提供一個初始偏置相位。
第三個并行累加器模塊(Parallel Addersubtractor 2)作為初始頻率偏置累加器,給輸入的頻率控制字提供一個偏置,是輸出頻率從一個用戶自己可定義的初始頻率開始變換運行。
利用總線位寬轉(zhuǎn)換模塊(Bus Conversion)只取出總線信號的高10位,用作驅(qū)動數(shù)據(jù)查找表模塊的地址驅(qū)動信號。為了方便下一步設(shè)計,將圖5封裝成子系統(tǒng)模塊(Subsystem Block),并命名為:DDS_Subsystem,如圖6所示。
圖6中in1為初始相位輸入端,in2為輸入頻率控制字端,in3為初始頻率輸入端。
3 變頻控制模塊的設(shè)計
根據(jù)Chirp函數(shù)在頻域上的性質(zhì),可以得出輸入控制字與輸出頻率之間的對應(yīng)關(guān)系有線性和非線性兩種:
首先采用DSP Builder庫中的單步增/減子模塊(Increment/Decrement Block)建立采樣點控制字產(chǎn)生單元。該模塊能按照階梯式規(guī)律步進(jìn)逐一產(chǎn)生控制字信號,并保持一段時間在模塊設(shè)置項(Clock Phase Se-lection)中設(shè)置,當(dāng)增減方向(Direction)設(shè)置為Incre-ment時得時域輸出,其表現(xiàn)如圖7所示。
其次根據(jù)需要建立控制字變換模塊,即對Incre-ment/Decrement模塊輸出的采樣點控制字進(jìn)行換算,轉(zhuǎn)化為DDS的頻率控制字。這需要根據(jù)不同Chirp函數(shù)的變化規(guī)律,例如:如果是線性頻率的輸出,則采樣點應(yīng)該與輸出頻率有線性的函數(shù)對應(yīng)關(guān)系;如果是非線性頻率的輸出,則采樣點應(yīng)該與輸出頻率有非線性的函數(shù)對應(yīng)關(guān)系。根據(jù)不同的傳輸函數(shù)建立該子模塊:
例如:fout=kn+f0。當(dāng)k=3時,建立子模塊如圖8所示。
將上述模塊向上生成子模塊后,連接的整體仿真如圖9所示。
并在DDS的輸出端建立FFT觀測窗口。
4 驗證與仿真
假設(shè)現(xiàn)在的初始相位為0,初始頻率也為0,采樣點步進(jìn)控制字設(shè)置為輸出12為步進(jìn)循環(huán)增加模式。在時域輸出觀測窗口(Scope)中觀察到圖形如圖10所示。
從圖11中可見,輸出信號的頻率發(fā)生了周期性并且有規(guī)律的變化,證明了該設(shè)計能很好地實現(xiàn)Chirp信號源的功能。并且通過Altera DSP Builder提供的SignalComplier工具,能很輕松地生成HDL(VHDL或者Verilog HDL)代碼下載到FPGA中運行,大大簡化了FPGA設(shè)計。
5 結(jié) 語
根據(jù)Chirp函數(shù)特定的輸入/輸出(線性和非線性)關(guān)系,計算得出當(dāng)前輸入字與輸出頻率的對應(yīng)關(guān)系,然后設(shè)計控制字子模塊產(chǎn)生DDS模塊的頻率控制字,驅(qū)動DDS產(chǎn)生不同的輸出頻率,通過在Matlab的Simu-link環(huán)境下的仿真驗證,得出不同時刻輸出的頻譜圖,驗證了該設(shè)計能很好地實現(xiàn)Chirp信號源。