基于改進的CORDIC算法的FFT復(fù)乘及其FPGA實現(xiàn)
3.3 模校正因子的實現(xiàn)
基本CORDIC算法中在n級迭代執(zhí)行之后,被旋轉(zhuǎn)向量的模已經(jīng)被改變了,算法的完全實現(xiàn)應(yīng)該附加一個模校正環(huán)節(jié),即Xn、Yn乘以模校正因子。對于迭代次數(shù)N大于10的CORDIC算法,其模校正因子可認為已趨近常數(shù)K=0.607 25。而直接在流水結(jié)構(gòu)后附加乘法器的直接實現(xiàn)方法,使原本由移位器和加法器組成的整體結(jié)構(gòu)變得不規(guī)則,同時乘法器一級速度的變慢會降低整個流水的吞吐率[3,4]。
這樣分解后,被旋轉(zhuǎn)向量與K的乘轉(zhuǎn)化為簡單的移位加減運算,從而可以解決乘法器一級速度變慢而降低整個流水線吞吐率的問題。其硬件實現(xiàn)結(jié)構(gòu)如圖2所示。這種結(jié)構(gòu)進一步降低了硬件復(fù)雜度,與前面的流水線CORDIC結(jié)構(gòu)相似,使整體結(jié)構(gòu)更加規(guī)則統(tǒng)一,有利于VLSI實現(xiàn)。
4 FFT復(fù)乘的FPGA實現(xiàn)
由于軟件和DSP實現(xiàn)的速度較慢,而FPGA資源豐富,組織結(jié)構(gòu)便于采用流水線結(jié)構(gòu)和并行運算,其速度快、擴展能力強,所以CORDIC算法的移位、加減法運算和流水線結(jié)構(gòu)更容易在FPGA上實現(xiàn)。本文在Altera公司的QuartusⅡ7.2軟件環(huán)境下使用VHDL,利用上述各種算法設(shè)計了16 bit寬的FFT復(fù)乘模塊并在CycloneⅡ EP2C35F672C6芯片上進行驗證。
圖3為改進的16級流水線結(jié)構(gòu)的CORDIC算法實現(xiàn)復(fù)乘模塊的頂層結(jié)構(gòu)圖,address為ROM的地址,Xi_re、Xi_im為輸入序列的實部和虛部,Xo_re、Xo_im為旋轉(zhuǎn)后的實部和虛部。輸入數(shù)據(jù)為16 bit寬,為提高精度,對所有內(nèi)部信號及輸出信號都用20 bit的補碼。整個復(fù)乘主要由系數(shù)ROM、預(yù)旋轉(zhuǎn)、16級流水線CORDIC迭代、系數(shù)寄存器和模校正因子K 5個模塊組成。
小,但不能完全消除。
圖5為改進的CORDIC算法實現(xiàn)FFT復(fù)乘資源消耗與最高工作速度情況。傳統(tǒng)的復(fù)乘要4個乘法器,所以傳統(tǒng)的復(fù)乘要實現(xiàn)16 bit位寬復(fù)乘需用此芯片中的8個9 bit乘法單元,而從資源消耗情況來看,改進的CORDIC算法實現(xiàn)此復(fù)乘沒有用乘法器,整個邏輯單元消耗也只有4%;另外基于改進的CORDIC算法的復(fù)乘最高工作頻率達到了190 MHz,與傳統(tǒng)CORDIC算法的復(fù)乘速度(約130 MHz)相比有較大提高,在節(jié)約資源的同時提高了工作速度。
本文利用定點FFT復(fù)乘運算中旋轉(zhuǎn)因子的旋轉(zhuǎn)系數(shù)可預(yù)先求出的特點,采用改進流水線結(jié)構(gòu)的CORDIC算法,與傳統(tǒng)的CORDIC算法的復(fù)乘相比,不僅不需要乘法器實現(xiàn)了FFT運算中序列與旋轉(zhuǎn)因子的復(fù)數(shù)乘運算,并且在節(jié)約資源的同時提升了工作速度。這種基于改進的CORDIC算法的復(fù)乘運算對提高FFT處理器的速度和減少資源消耗有較大意義。同時,利用VHDL語言,采用模塊化設(shè)計思想,使得本設(shè)計可移植性強、通用性好,只需作少量改動(如增加位寬,增加迭代次數(shù)),便可滿足精度上的更高要求,具有一定的工程實際意義和應(yīng)用前景。
參考文獻
[1] 李成詩,初建朋.基于CORDIC的一種高速實時定點FFT的FPGA實現(xiàn)[J].微電子學(xué)與計算機,2004,21(4).
[2] 吳偉,唐斌.現(xiàn)代雷達中的高速FFT設(shè)計[J].空軍工程大學(xué)學(xué)報(自然科學(xué)版),2005(10).
[3] KHARRAT M W,LOULOU M,MASMOUDI N,et al.A new method to implement CORDIC algorithm[C].IEEE International Conference on Electronic,Circuit and Systems,2001(2):715-718.
[4] 楊宇,毛志剛,來逢昌.一種改進的流水線CORDIC算法結(jié)構(gòu)[J].微處理機,2006(8).
[5] 李滔.流水線CORDIC算法及其應(yīng)用研究[D].北京理工大學(xué),1999.
評論