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