一種高效的復(fù)信號處理芯片設(shè)計
摘 要:本文提出了一種高效的復(fù)信號處理芯片的設(shè)計方法。本芯片是某雷達(dá)信號處理機的一部分,接收3組ADC的輸出復(fù)數(shù)據(jù),依次完成去直流、加窗、512點FFT、求功率譜和累加3組信號的功率譜等功能。在這5種功能中,加窗、512點FFT和求功率譜復(fù)用一個蝶形單元。本芯片由單片FPGA實現(xiàn),計算精度高、速度較快,滿足雷達(dá)系統(tǒng)的實時處理要求。
關(guān)鍵詞: FFT;蝶形單元;塊浮點;功率譜; FPGA
引言
復(fù)信號處理芯片是某雷達(dá)系統(tǒng)的一部分。雷達(dá)系統(tǒng)的實時處理特點要求芯片運算速度快、精度高,能夠在500 內(nèi)對三幀各512點復(fù)信號完成去直流、加窗、FFT、求功率譜和求3幀信號的功率譜之和這5種功能。在設(shè)計中,為了保證運算的精度和速度滿足要求,采用塊浮點算法,使運算精度和速度之間有很好的折衷。為了在滿足運算精度要求的前提下進一步提高速度,采用流水線結(jié)構(gòu)。為了節(jié)約能源,單片實現(xiàn)雷達(dá)系統(tǒng)的要求,采用復(fù)用技術(shù),使加窗、512點FFT和求功率譜這三種功能復(fù)用一個單元。快速傅立葉變換(FFT)是本信號處理芯片的核心算法,在本芯片中采用基二的蝶形算法和遞歸結(jié)構(gòu)來實現(xiàn)512點FFT。
FPGA以其高速、高集成度和高性能等特點,更適合現(xiàn)代數(shù)字信號處理系統(tǒng)的要求,在可編程單芯片上實現(xiàn)數(shù)字信號處理算法的應(yīng)用越來越廣泛。復(fù)信號處理芯片便是基于FPGA實現(xiàn)的。
復(fù)信號處理芯片的設(shè)計
復(fù)信號處理芯片結(jié)構(gòu)
圖1是復(fù)信號處理芯片的整體功能框圖,信號處理芯片由四部分組成:運算部分、塊浮點部分、地址部分和存儲器部分,各部分又由相應(yīng)的數(shù)個功能單元組成。運算部分完成數(shù)據(jù)的基數(shù)計算;塊浮點單元完成指數(shù)檢測與指數(shù)運算;地址部分生成地址線與各種控制信號;存儲器存儲全部原始數(shù)據(jù)、運算結(jié)果和系數(shù)。各部分相互作用,使系統(tǒng)穩(wěn)定地工作。
輸入數(shù)據(jù)地址單元接收到使能信號start后,向片外存儲器發(fā)出地址與使能信號,并行讀入一幀512點復(fù)信號的實部數(shù)據(jù)與虛部數(shù)據(jù),存入片內(nèi)原始實部數(shù)據(jù)存儲器與原始虛部數(shù)據(jù)存儲器。同時,分別將實部數(shù)據(jù)與虛部數(shù)據(jù)在累加器中累加,得到512點數(shù)據(jù)的和及其平均數(shù)。一幀數(shù)據(jù)被讀入片內(nèi)后,輸入數(shù)據(jù)地址單元激活加窗地址單元。加窗地址單元控制原始實部數(shù)據(jù)存儲器與原始虛部數(shù)據(jù)存儲器,讀出原始實部數(shù)據(jù)與虛部數(shù)據(jù),分別減去其平均數(shù),便完成去直流功能,將結(jié)果送入蝶形單元。
接下來要完成加窗功能與512點FFT,本芯片采用基二的蝶形算法和遞歸結(jié)構(gòu)實現(xiàn)FFT。MUX1選擇加窗地址單元與FFT地址單元產(chǎn)生的地址,送入系數(shù)存儲器的地址,分別讀出窗系數(shù)與蝶形運算系數(shù)。系數(shù)進入蝶形單元,與數(shù)據(jù)進行運算,得到加窗結(jié)果與FFT結(jié)果。加窗結(jié)果與前八級蝶形運算的結(jié)果存儲到中間結(jié)果存儲器,最后一級的蝶形運算結(jié)果存儲到FFT結(jié)果存儲器。指數(shù)檢測單元完成指數(shù)運算功能,構(gòu)成塊浮點算法的一部分。
模平方地址單元將FFT運算結(jié)果讀入蝶形單元,得到模平方結(jié)果。三幀數(shù)據(jù)的模平方結(jié)果在模平方累加單元中累加,將結(jié)果在輸出地址單元的控制下存入模平方累加結(jié)果存儲器,等待外部讀取。
運算部分
運算部分完成數(shù)據(jù)的基數(shù)運算,包括去直流功能單元、蝶形運算單元和模平方累加單元。
蝶形運算單元
蝶形運算單元完成加窗、512點FFT和求模平方三個功能,是本芯片的核心部分。圖2是它的整體框圖。
* 窗系數(shù)是實數(shù),窗系數(shù)和去直流后的數(shù)據(jù)的實部與虛部按原始順序并行進入蝶形運算單元。在控制信號S1的作用下直接到達(dá)乘法器。這樣數(shù)據(jù)可以通過兩個乘法器在兩個時鐘周期內(nèi)完成加窗操作。結(jié)果通過控制信號S3的作用輸出蝶形單元,存儲到中間結(jié)果存儲器。
* 時分基二蝶形算法公式如下:
Am(i)=Am-1(i)+Am-1(j)W (1)
Am(j)=Am-1(i)-Am-1(j)W (2)
復(fù)乘公式為:
(Am-1(j)W)R= Am-1(j)RW-Am-1 (j)IW (3)
(Am-1(j)W)I= Am-1(j)IW+Am-1 (j)RW (4)
在上面的公式中,i和j是數(shù)據(jù)的順序號,R和I分別表示實數(shù)與虛數(shù),W表示旋轉(zhuǎn)因子,m表示FFT的運算級數(shù)。旋轉(zhuǎn)因子的實部首先進入蝶形單元,一個時鐘周期后,虛部再進入。加窗后的復(fù)數(shù)據(jù)以Am-1 (i), Am-1(j)的順序進入蝶形單元,其實部與虛部并行進入。因為Am-1(i)不進行復(fù)乘運算,它在控制信號C2的控制下延遲,與復(fù)乘結(jié)果進行加法或減法操作。將Am-1(j)同W相乘得到Am-1(j)RW和Am-1(j)IW,將Am-1(j)延遲1個時鐘周期后和W 相乘得到Am-1(j)IW和Am-1(j)RW,在C3的控制下,Am-1(j)RW和Am-1 (j)IW相減,Am-1(j)RW和 Am-1 (j)IW相加。這樣便完成了復(fù)乘運算。復(fù)乘結(jié)果同Am-1(i)相加減變得到一階蝶形運算的結(jié)果。控制信號C3控制結(jié)果輸出蝶形單元,存入中間結(jié)果存儲器或FFT結(jié)果存儲器。
*求模平方的公式定義為I2+R2=M2。FFT結(jié)果的實部定義為I,虛部定義為R。I和R并行進入蝶形單元,與此同時,I和R依次由進入蝶形單元的系數(shù)通路進入,相乘得到I2、IR與R2、IR,在控制信號C3的控制下,將IR與IR相減,I2與R2相加得到M2。在控制信號S2與S3的控制下,直接輸出蝶形單元。為了保證計算的精確性,模平方結(jié)果保持32位。
模平方累加單元
由于采用塊浮點算法,所以模平方結(jié)果由兩部分組成,一是蝶形單元輸出的基數(shù)部分,二是數(shù)據(jù)在蝶形單元中運算時產(chǎn)生的指數(shù)部分。在模平方結(jié)果累加之前,必須將較小的指數(shù)同較大的指數(shù)對齊,且相應(yīng)的基數(shù)部分右移,右移量為指數(shù)差的兩倍。在模平方累加單元中完成三幀模平方結(jié)果的累加,溢出檢測單元檢測累加溢出。累加結(jié)果的指數(shù)部分由此溢出,同2倍的蝶形單元形成的指數(shù)之和組成。
塊浮點部分
塊浮點算法的速度比浮點算法的速度高,其精度比定點算法的精度高,所以采用塊浮點算法可以很好地在速度與精度之間取得平衡。塊浮點部分由兩個功能單元組成:指數(shù)檢測單元和指數(shù)累加單元。假設(shè)蝶形單元的輸入數(shù)據(jù)為n位,且每進行一次加減法就擴展一位,則蝶形單元的輸出數(shù)據(jù)應(yīng)為n+2位。溢出檢測單元檢測這n+2位數(shù)據(jù)。如果它的高三位為000或111,則溢出為零;如果為001或110,則溢出為1;如果為01x或10x(x表示無關(guān)),則溢出為2。指數(shù)累加單元將每級蝶形運算的溢出相加,構(gòu)成指數(shù)部分。
地址部分
地址部分由輸入數(shù)據(jù)地址單元、加窗地址單元、FFT地址單元、模平方地址單元和輸出地址單元5部分組成。地址單元產(chǎn)生地址與控制信號,使整個芯片穩(wěn)定工作。這里要介紹一下FFT地址單元的地址生成。
9級蝶形運算的輸入數(shù)據(jù)地址與輸入系數(shù)地址是FFT地址單元中計數(shù)器輸出的變換。圖3為其變換關(guān)系。由于蝶形運算采用同址運算,所以輸出數(shù)據(jù)的地址是輸入數(shù)據(jù)地址的延遲,延遲量為一組數(shù)據(jù)一次蝶形運算經(jīng)歷的時鐘周期數(shù)。
存儲器部分
本芯片采用FPGA內(nèi)部嵌入的雙口RAM保存所有數(shù)據(jù)與系數(shù),所有存儲器都采用同步形式,有自己的時鐘端口、使能和片選端口,可以同時對同一存儲器進行讀和寫操作,這樣提高了整個系統(tǒng)的速度。
處理器的單芯片實現(xiàn)
本復(fù)信號處理器在一塊FPGA上實現(xiàn),采用自頂向下的設(shè)計方法學(xué)。首先將整個處理器分成幾個模塊,用寄存器級的VHDL語言描述,然后形成整個處理器代碼,最后將代碼由Xilinx公司的ISE軟件進行綜合與布局布線,形成優(yōu)化的FPGA門級網(wǎng)表。
Xilinx公司的Virtex系列FPGA內(nèi)部含有大量的塊RAM,還嵌入了高速的乘法器,很適合本設(shè)計的需要。另外,芯片內(nèi)部的時鐘管理單元為整個處理器提供了穩(wěn)定的時鐘。
復(fù)信號處理芯片的主要性能特征如表1所示。
讓復(fù)信號處理芯片對一組有代表性的數(shù)據(jù)進行處理,并分析其處理精度和速度。輸入數(shù)據(jù)為:
第一組數(shù)據(jù)的數(shù)學(xué)表達(dá)式:
10*cos(2*pi/512*30*t)-5+randn(1,512)+
j*(10*sin(2*pi/512*30*t)-5+randn(1,512)),
第二組數(shù)據(jù)的數(shù)學(xué)表達(dá)式:
-10*cos(2*pi/512*30*t)
+5+j*(-10*sin(2*pi/512*30*t)+5),
第三組數(shù)據(jù)的數(shù)學(xué)表達(dá)式:
-15*cos(2*pi/512*30*t)
+5+j*(-15*sin(2*pi/512*30*t)-5),
芯片處理結(jié)果的信噪比同Matlab仿真結(jié)果的信噪比對比如圖4所示,由圖可看出本芯片有很高的精度。
將芯片應(yīng)用到雷達(dá)系統(tǒng)中,芯片工作的起始時間為211.16ms。當(dāng)時鐘為50MHz時,讀入第一幀數(shù)據(jù)的完成時間為211.37ms,讀入第二幀數(shù)據(jù)的完成時間為263.41ms,讀入第三幀數(shù)據(jù)的完成時間為392.29ms,計算出三幀數(shù)據(jù)功率譜之和的結(jié)束時間為659.72ms。本芯片可以在500ms內(nèi)計算三幀數(shù)據(jù)的功率譜之和,適合雷達(dá)系統(tǒng)的實時要求。
結(jié)語
復(fù)信號處理芯片在一個FPGA芯片上實現(xiàn),可以在500ms內(nèi)對三幀各512點復(fù)信號完成5種功能:去直流、加窗、FFT、求功率譜和求3幀信號的功率譜之和。蝶形單元的復(fù)用大大節(jié)省了資源,采用塊浮點算法使處理的速度和精度都比較高。自頂向下的設(shè)計方法方便了功能擴展?!?/P>
參考文獻(xiàn)
1 C.D.Thompson, Fourier transforms in VLSI, IEEE transactions on computers, vol.C-32, pp.1047-1057, November 1983
2 S.He and M.Torkelson, A new approach to pipeline FFT processor, in Proc.IEEE International Parallel Processing Symposium, pp.760-770,IPPS?6,IEEE,April 1996
評論