數(shù)字頻率信號校正的FPGA實現(xiàn)
一般情況下,當旋轉(zhuǎn)的次數(shù)足夠大時,Ki一般為常數(shù)。由于在實現(xiàn)時,可在最終的計算結(jié)果中再乘以這一常數(shù),所以,可以去掉式(3)中的Ki,這樣,迭代方程就僅含移位和加法運算,從而大大的簡化了FPGA的實現(xiàn)復雜性。由于還需要一個方程決定di的符號,引入變量zi表示每次旋轉(zhuǎn)預定角度的累加值:
這樣,CORDIC算法的迭代方程可表示為:
其最終結(jié)果為:
在頻偏校正電路中,通常需要根據(jù)給定相位θ產(chǎn)生余弦信號cosθ和正弦信號sinθ。為了產(chǎn)生標準且無放大的正弦和余弦信號,可令輸入向量的y分量(即yo)為0,x分量(即xo)為1/An,這樣,式(6)就可簡化為:
可見,經(jīng)過上述處理就可將輸入相位zo轉(zhuǎn)換為標準的正弦和余弦信號。
用FPGA實現(xiàn)CORDIC算法,最常用的方法有迭代算法和基于流水線的算法。CORDIC迭代算法只有一級迭代單元,在系統(tǒng)時鐘的驅(qū)動下,可將迭代單元的輸出作為本級的輸入,并通過同一級迭代完成計算。迭代算法的硬件開銷很小,但完成一次CORDIC運算需要多個時鐘周期,其運算速度相對較慢。
在CORDIC流水線結(jié)構(gòu)算法中,每一級CORDIC迭代運算都使用單獨的運算單元,當流水線填滿之后,每個時鐘周期都馬上會計算出一組結(jié)果,所以計算速度很快。
雖然流水線結(jié)構(gòu)算法的計算速度很快,但其精度會受到流水線級數(shù)的限制。而要提高精度,就必須增加流水線級數(shù),從而增大硬件開銷,因此,流水線級數(shù)的選擇要兼顧速度和精度的要求。
評論