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