如何實(shí)現FPGA基于CORDIC算法的求平方?
1. CORDIC功能及原理
本文引用地址:http://dyxdggzs.com/article/201808/385310.htmCORDIC是在沒(méi)有專(zhuān)用乘法器(最小化門(mén)數量)情況下,一組完成特定功能的算法,包括平方、超越、Log、sin/cos/artan。原理為連續的旋轉一個(gè)較小的角度,以一定精度逼近想要的角度。具體原理如下圖所示:


2. Xilinx實(shí)現CORDIC IP核及性能測試
例1:無(wú)符號整數的平方操作:
X_in[18:0],待平方的無(wú)符號整數,在nd(new data)為輸入有效信號,輸出x_out[9:0]及對應的使能信號rdy,其對應的波形圖見(jiàn)下圖。

(1)流水延遲
最下方為輸入數據,最上方為輸出求平方結果。從上圖可以看到,從nd到rdy,間隔了5個(gè)時(shí)鐘周期。
(2)時(shí)鐘頻率
在FX130-1芯片上綜合時(shí)鐘頻率結果為2.8ns,。
例2:無(wú)符號整數的平方根操作:
在定制平方根IP核時(shí),選取Unsigned FracTIon,將X_IN與X_OUT設置為相同bit位,19bit。以某項目為例,待平方數據需要19bit來(lái)表示。在項目中,因為待開(kāi)放的數據表示圖像坐標,因此為整數,數據格式為UFIX19_0,即用19bit表示數據,且小數位為零位。而CORDIX的輸入要求為UFIX19_18,即19bit數據,其中18bit表示小數位,1bit整數。
在數據格式與CORDIC核的輸入不一致情況下,需要對輸出結果的bit位進(jìn)行正確解釋。
輸入x_in=180: 000 0000 0000 1011 0100
輸出x_dout=6869:000 0001 1010 1101 0101
解釋?zhuān)阂驗镃ORDIC期待的輸入x_in為18bit小數,因此CORDIC的輸出x_dout應為9bit小數,即13+0.25+0.125+0.03125+0.0078125+0.001953125 = 13.416??梢钥闯鲎钚〉木瓤梢员3值叫迭c(diǎn)第3位。在具體實(shí)現時(shí),可以根據精度要求進(jìn)行調整。
注:事實(shí)上,對于x_in代表的19個(gè)bit,18bit小數位,1bit小數位這樣的數據格式下,x_dout不需要考慮移位便可得到正確解釋;而其他格式下,則需要對x_dout進(jìn)行相應的移位解釋?zhuān)热缟侠?,就是對x_dout進(jìn)行了9bit的右移才得到了正確的估值。
評論