新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種CORDIC協(xié)處理器核的設(shè)計(jì)與實(shí)現(xiàn)

一種CORDIC協(xié)處理器核的設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

此模塊首先通過(guò)控制命令字、yz分量計(jì)算出旋轉(zhuǎn)的方向,然后對(duì)向量作旋轉(zhuǎn)。由于圓坐標(biāo)和雙曲坐標(biāo)模式下旋轉(zhuǎn)的角度不同,所以需要根據(jù)控制命令字進(jìn)行選擇。由于使用了流水線(xiàn)結(jié)構(gòu),移位操作實(shí)際上通過(guò)布線(xiàn)而靜態(tài)確定,不需要專(zhuān)門(mén)的移位器。模塊使用3個(gè)可進(jìn)行加減運(yùn)算的ALU單元分別對(duì)xyz分量進(jìn)行修正。Rom存儲(chǔ)了圓坐標(biāo)和雙曲坐標(biāo)模式下的旋轉(zhuǎn)角度,其精度根據(jù)的配置而定,可以簡(jiǎn)單地通過(guò)在實(shí)例化Verilog模塊時(shí)指定參數(shù)來(lái)進(jìn)行配置。

本文引用地址:http://2s4d.com/article/201609/303786.htm

2.4 后處理單元

由圖2可知,旋轉(zhuǎn)單元的輸出結(jié)果并不直接對(duì)應(yīng)所提供的函數(shù)。后處理單元對(duì)旋轉(zhuǎn)單元的輸出結(jié)果進(jìn)行處理,實(shí)現(xiàn)所需要的函數(shù)。具體的處理如表2所示。

一種CORDIC協(xié)處理器核的設(shè)計(jì)與實(shí)現(xiàn)

此外,由于前處理單元對(duì)圓坐標(biāo)輸入進(jìn)行了象限折疊,后處理單元需要進(jìn)行相應(yīng)的修正。例如對(duì)于圓坐標(biāo)旋轉(zhuǎn)模式,如果輸入的z∈[π/4,π/2],則前處理單元會(huì)將z變?yōu)?pi;/2-z,于是相應(yīng)的后處理單元需要將x和y的值相交換。

2.5 補(bǔ)償單元

由(4)可知,每次旋轉(zhuǎn)都會(huì)改變向量的模,故需要對(duì)最終的xy分量進(jìn)行補(bǔ)償。由于向量模變化只與坐標(biāo)系模式有關(guān),故補(bǔ)償單元可以用一個(gè)常數(shù)乘法器實(shí)現(xiàn)。常數(shù)乘法器可以通過(guò)用華萊士樹(shù)把移位后幾個(gè)向量相加來(lái)實(shí)現(xiàn)。本文在線(xiàn)下通過(guò)程序窮舉找出了一組加減操作數(shù)最少乘數(shù)編碼方式,對(duì)于18位的配置,可以使用一個(gè)9輸入的華萊士樹(shù)和一個(gè)加法器實(shí)現(xiàn),這使得該核在缺乏硬件乘法器的基于flash的Actel 上也可以輕松使用。華萊士樹(shù)中一位的結(jié)構(gòu)如圖4所示。

一種CORDIC協(xié)處理器核的設(shè)計(jì)與實(shí)現(xiàn)

3 性能分析

為了證明所提出的的實(shí)用性,本文選取了迭代次數(shù)16—20、擴(kuò)展位數(shù)為5位的幾種配置進(jìn)行了綜合。綜合平臺(tái)使用了航天電子系統(tǒng)常用的2種:A3P3000E和xc4vf40 綜合結(jié)果如表3所示。

一種CORDIC協(xié)處理器核的設(shè)計(jì)與實(shí)現(xiàn)

可見(jiàn)本具有較高的性能和較低的資源占用率,可以較容易地被集成,且隨著迭代次數(shù)和精度的提高,資源的增長(zhǎng)趨勢(shì)穩(wěn)定,速度的下降并不明顯。

一直以來(lái)有很多為加速CORDIC運(yùn)算而提出的方法,其中很多使用了冗余數(shù),試圖通過(guò)冗余數(shù)進(jìn)位傳播有限的特點(diǎn)來(lái)降低加法器的延遲。但本文通過(guò)對(duì)比發(fā)現(xiàn),基于冗余數(shù)的算法僅在A3P3000E的實(shí)現(xiàn)上有一定速度優(yōu)勢(shì),而在virtex4上沒(méi)有速度優(yōu)勢(shì),還在資源利用率上有很大劣勢(shì)。原因是當(dāng)前的大多數(shù)針對(duì)常見(jiàn)運(yùn)算邏輯,如加法器的實(shí)現(xiàn)作出了特殊優(yōu)化,使用了快速進(jìn)位鏈降低加法器的進(jìn)位延遲。相對(duì)的,由于FPGA缺乏對(duì)冗余數(shù)邏輯的支持,冗余數(shù)加法器需要由基本單元綜合生成,具有較大的布線(xiàn)延遲,且需要消耗大量的LUT或邏輯門(mén)資源。此外,由于冗余數(shù)使用2倍于補(bǔ)碼長(zhǎng)度的編碼方式來(lái)表示數(shù)值,冗余數(shù)需要使用更多的寄存器寄存每級(jí)流水線(xiàn)的中間結(jié)果。綜上,對(duì)于有效位數(shù)較少的配置,本文提出的CORDIC具有更好的性能與資源利用更具優(yōu)勢(shì)。

4 精度與誤差

根據(jù)參考文獻(xiàn)可知,CORDIC計(jì)算的誤差主要來(lái)自2部分:由于每次迭代時(shí)用來(lái)修正z分量的角度有限而產(chǎn)生的近似誤差和由于計(jì)算位數(shù)有限而產(chǎn)生的xy分量截?cái)嗾`差。為了盡量降低誤差,首先應(yīng)該保證旋轉(zhuǎn)過(guò)程中用來(lái)修正z的數(shù)值是經(jīng)過(guò)舍入得到的,而不是簡(jiǎn)單通過(guò)截?cái)嗟玫降?,這樣可以減小由于使用近似的旋轉(zhuǎn)角度而產(chǎn)生的舍入誤差。其次可以考慮在最終階段運(yùn)算結(jié)果前進(jìn)行舍入。運(yùn)算結(jié)果的舍入可以在補(bǔ)償單元通過(guò)增加華萊士樹(shù)的輸入實(shí)現(xiàn)。即增加一個(gè)輸入變量,其大小為最低有效位的一半,符號(hào)與補(bǔ)償單元的輸入相同。除此之外,需要根據(jù)所需的精度合理選擇CORDIC的數(shù)據(jù)位數(shù),增加擴(kuò)展位,即對(duì)于n位的CORDIC運(yùn)算,在迭代運(yùn)算時(shí)使用n+m位,在迭代結(jié)束后舍棄m位,這樣做可以保證前面的n位不受到截?cái)嗾`差的影響。本文選取了18位CORDIC來(lái)說(shuō)明擴(kuò)展位和迭代次數(shù)對(duì)精度的影響。對(duì)于圓坐標(biāo)旋轉(zhuǎn)模式,輸入向量為x=2.0,y=0.0,z∈[-π,π]的所有可能輸入向量;對(duì)于圓坐標(biāo)向量模式,輸入為模為2.0,夾角屬于[-π,π]的所有可能輸入向量;對(duì)于雙曲旋轉(zhuǎn)模式,輸入為x=2.0,y=0.0,z∈[-1.0,1.0]的所有可能輸入向量;對(duì)于雙曲向量模式,輸入為x=a+1,y=a-1,α∈[0.25,1.0]的所有可能輸入。各個(gè)函數(shù)的誤差與所選取的迭代次數(shù)和擴(kuò)展位的關(guān)系如表4所示。

一種CORDIC協(xié)處理器核的設(shè)計(jì)與實(shí)現(xiàn)

其中ulp為最低位單位。對(duì)于20位定點(diǎn)數(shù)有1ulp=2-18。配置為擴(kuò)展位數(shù)和迭代次數(shù)。通過(guò)實(shí)驗(yàn)可以發(fā)現(xiàn),對(duì)擴(kuò)展后的向量進(jìn)行截?cái)鄷?huì)帶來(lái)顯著的誤差增長(zhǎng)。并且只會(huì)在使用較長(zhǎng)擴(kuò)展位時(shí)對(duì)結(jié)果進(jìn)行舍入才有明顯的效果,因?yàn)閿U(kuò)展位較少的情況下舍入反而可能會(huì)讓結(jié)果向錯(cuò)誤的方向舍入。最后值得注意的是雙曲模式下的函數(shù)誤差高于圓坐標(biāo)模式,由(8)可知這是由于雙曲模式向量角度收斂性更差而導(dǎo)致的。

5 結(jié)束語(yǔ)

本文提出的CORDIC協(xié)處理器可以容易地集成進(jìn)目前常見(jiàn)的航天級(jí)FPGA中,為CPU提供更強(qiáng)的三角函數(shù)和超越函數(shù)運(yùn)算能力。在中端的V4系列FPGA中實(shí)現(xiàn)萬(wàn)分之1精度的三角函數(shù)和超越函數(shù)只需要不到10%的資源,并可運(yùn)行于較高的系統(tǒng)時(shí)鐘下。CORDIC協(xié)處理器提供了并行運(yùn)算幾種常用三角和超遠(yuǎn)函數(shù)的功能,不僅適用于導(dǎo)航計(jì)算機(jī),也可以被用于其他有大量實(shí)時(shí)性計(jì)算需求的嵌入式系統(tǒng)中。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: FPGA IP核 CORDIC 協(xié)處理器

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉