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