《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 浮點反正切函數的FPGA實現
浮點反正切函數的FPGA實現
來源:電子技術應用2010年第8期
李 全
桂林電子科技大學 信息與通信學院,廣西 桂林541004
摘要: 設計了一種基于CORDIC算法計算浮點反正切函數的的硬件結構,并在Altera公司的FPGA芯片上進行了驗證,最后在Nios II處理器系統中以用戶自定義指令的形式實現,通過C語言程序驗證了浮點反正切模塊的正確性。
中圖分類號: TP301
文獻標識碼: A
The implementation of floating arc tangent function based on FPGA
LI Quan
Information and Communication Institute,Guilin University of Electronic Technology,Guilin 541004,China
Abstract: This paper presents a architecture of arc tangent calculate circuit based on CORDIC algorithm. Software simulation and hardware experiment has been done for this module on Altera FPGA. Finally, we accomplish the hardware module by adding custom instruction on the Nios II processor system of Altera corporation. The floating-point arc tangent module′s correctness is proved by C program running in the Nios II processor.
Key words : CORDIC;arc tangent;floating-point;Nios II

    在數字信號處理、導航通訊等許多領域會大量使用反正切函數進行必要的計算,當FPGA系統應用于上述領域時常常會遇到如何使用硬件來完成反正切函數計算的問題。本文設計了基于CORDIC算法的反正切函數計算模塊,并且根據IEEE-754單精度浮點數據格式對輸入輸出數據進行處理,實現了高精度的浮點反正切函數的計算。
1 反正切函數實現原理
    CORDIC算法有旋轉模式和向量模式兩種計算模式。旋轉模式可以用來計算一個輸入角的正弦、余弦,向量模式可以計算給定向量的角度和長度。
    CORDIC算法的基本迭代公式為:
 
    從上式可以看出,CORDIC算法在向量模式可以計算出給定向量(X,Y)的長度和角度,即從平面坐標到極坐標的變換。
2 數據格式轉換接口模塊
    本文設計的反正切函數硬件模塊輸入為IEEE-754單精度浮點數據,而模塊內部迭代使用的是定點整型數據,因此需要進行轉換。
    在圖1的輸入數據轉換接口示意圖中,X、Y為輸入的IEEE-754浮點數據格式,輸入范圍是(-∞,+∞),經過接口模塊轉換為整型定點數據Xn、Yn,其表示范圍是[-1 +1]。

    矢量(X,Y)在平面坐標系中的角度為arctan(Y/X),它只與Y和X的比值有關,與Y和X的實際長度無關。用這個性質可以以X和Y中絕對值最大的值作為歸一化數值,將X和Y的范圍重新映射在[-1 +1]之間,實現(X,Y)到(Xn,Yn)的轉換。
    計算結束后輸出結果Z。Z是32位定點整型數據,且232被定義為2π,將其規格化為IEEE-754格式的過程如圖2所示。在對Z進行規格化之前,需要進行前導零檢測,以確定規格化時尾數左移的位數和指數位的大小,前導零的檢測硬件上可以用casex語句實現。

3 整體設計以及仿真綜合
    浮點反正切函數的硬件結構包括了三個主要部分,即浮點數據格式轉換接口模塊、CORDIC內核計算模塊和浮點輸出數據轉換接口模塊,如圖3所示。

    采用Quartus II對設計進行FPGA綜合,FPGA芯片選擇EP2C70F896C6,硬件環境為Altera公司的DE2-70平臺,總共需要1 522個邏輯單元,占用芯片資源的2%,最高工作頻率為100 MHz。
4 Nios II中反正切函數的自定義指令實現
    反正切函數與Nios II CPU的接口采用multi-cycle custom instruction,dataa和datab為輸入數據,result為結果輸出,要從C語言中直接調用自定義指令,需要一個宏定義接口。可以在system.h文件中找到自定義指令的宏定義,如:
#define ALT_CI_CORDIC_ATAN2_N 0x00000000
#define ALT_CI_CORDIC_ATAN2(A,B) __builtin_custom_inii
(ALT_CI_CORDIC_ATAN2_N,(A),(B))
    為了正確調用自定義指令,在主程序中重新做以下宏定義:
#define ATAN2(A,B) __builtin_custom_fnff(ALT_CI_CORDIC_ATAN2_N,(A),(B))
    與system.h文件中系統自動生成的宏定義不同之處在于將宏定義的接口說明由“__builtin_custom_inii”改為了“__builtin_custom_fnff”。系統自動生成的宏定義默認輸入輸出皆為整型數據,改為“__builtin_custom_fnff”就是通知系統這是一條輸入輸出都是單精度浮點數據類型的用戶自定義指令。這樣由CPU調用時就不會出現數據類型不匹配的錯誤。
    通過在Nios II CPU中加入的JTAG_UART模塊,可以從調試終端窗口中獲得運行結果。硬件IP核平均計算用時73個周期,而軟件計算平均用時21 000個周期,計算速度提升300倍以上。此時CPU工作頻率為100 MHz,且配置為最高性能,浮點反正切函數硬件模塊僅工作在50 MHz。浮點反正切函數硬件模塊的計算精度完全可以滿足單精度浮點數據的要求,計算誤差小于10e-6,因此可以用于對精度和速度都要求很高的各種信號處理領域。
    反正切函數是應用范圍最廣的一個反三角函數,而用硬件實現浮點反正切函數對相應算法的速度會起到一個很大的提升作用,硬件浮點反正切函數可以很方便地作為一個IP核被系統調用,實現高速并行的超越函數計算。目前,已經設計完成并用Nios II處理器驗證過浮點超越函數計算IP,包括浮點正弦函數、浮點余弦函數、浮點反正切函數和浮點反正弦函數。Nios II處理器通過加入這些IP核模塊就能實現大部分浮點超越函數計算,使用硬件IP核計算比用軟件計算在速度上至少可以提升300~1 000倍,這樣就可以將Nios II處理器用于原先只有用DSP才能處理的一些場合,可以充分發揮FPGA系統的靈活性以及并行數據處理的能力。

參考文獻
[1] Volder.The CORDIC trigonometric computing technique[J]. IRE Trans,1959:334-334.
[2] WALTHER.J.S.A unified algorithm for elementary functions[J].Spring Joint Computer Conf,1971:379-385.
[3] 李全,李曉歡,陳石平.基于CORDIC算法高精度浮點超越函數的FPGA實現.電子技術應用,2009,35(5):166-168.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美日韩中文字幕在线视频| 国产主播一区| 久久亚洲影院| 久久国产精品久久w女人spa| 午夜精品视频| 欧美亚洲一区二区在线| 亚洲色图自拍| 亚洲一区二区三区在线| 亚洲视频你懂的| 亚洲视频成人| 亚洲欧美成人一区二区在线电影 | 在线午夜精品自拍| av成人激情| 一区二区三区av| 亚洲一区二区动漫| 亚洲欧美国产三级| 欧美一区二区视频97| 欧美一区二区大片| 久久九九国产| 另类成人小视频在线| 欧美mv日韩mv国产网站app| 欧美多人爱爱视频网站| 欧美日韩成人一区二区三区| 欧美日韩裸体免费视频| 国产精品久久久久av| 国产欧美大片| 精品88久久久久88久久久| 亚洲国产成人精品久久久国产成人一区 | 亚洲国产一区二区在线| 亚洲九九精品| 亚洲一区在线播放| 久久爱另类一区二区小说| 老司机精品福利视频| 欧美jizz19hd性欧美| 欧美日韩成人一区二区| 国产精品嫩草影院av蜜臀| 国产亚洲二区| 亚洲人成网站精品片在线观看| 在线亚洲一区二区| 午夜宅男欧美| 亚洲国产一区二区三区青草影视| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久久久久夜精品精品免费| 欧美成人精品福利| 欧美日韩蜜桃| 国产女人aaa级久久久级| 伊人久久亚洲热| 一区二区三区高清| 欧美主播一区二区三区| 亚洲美女网站| 欧美亚洲一级片| 欧美激情第五页| 国产精品伦理| 亚洲电影免费在线| 亚洲午夜电影| 亚洲激精日韩激精欧美精品| 中文一区字幕| 久久资源av| 国产精品成av人在线视午夜片| 国产一区二区毛片| 日韩西西人体444www| 欧美在线视频免费播放| 在线视频亚洲一区| 久久综合导航| 国产精品私房写真福利视频| 亚洲国产精品va| 亚欧成人精品| 亚洲午夜激情网站| 免费看亚洲片| 国产日韩亚洲欧美| 99精品视频一区| 91久久一区二区| 欧美在线精品免播放器视频| 欧美另类99xxxxx| 伊人精品久久久久7777| 亚洲欧美不卡| 在线看日韩欧美| 久久av一区二区| 午夜激情综合网| 欧美日韩一区二区高清| 亚洲第一级黄色片| 欧美伊人久久久久久久久影院| 亚洲性视频网址| 欧美肥婆在线| 伊人久久久大香线蕉综合直播| 亚洲字幕一区二区| 一区二区三区产品免费精品久久75 | 亚洲成人在线观看视频| 午夜激情综合网| 亚洲影院色无极综合| 欧美精品免费看| 精品福利电影| 欧美与黑人午夜性猛交久久久| 亚洲欧美欧美一区二区三区| 欧美精品麻豆| 亚洲国产精品久久久久婷婷884| 欧美一区二区三区精品| 欧美亚洲一区二区在线观看| 欧美日韩中文字幕精品| 最新成人av网站| 亚洲经典三级| 久久综合久久综合久久综合| 国产日韩亚洲欧美| 午夜精品福利一区二区三区av| 亚洲永久免费精品| 欧美日韩在线观看一区二区三区 | 麻豆av福利av久久av| 国产日韩欧美综合在线| 亚洲欧美电影在线观看| 香蕉久久a毛片| 国产精品久久久久毛片大屁完整版 | 中文一区二区在线观看| 一区二区成人精品| 欧美日韩国产综合视频在线观看中文| 在线高清一区| 亚洲黄网站在线观看| 暖暖成人免费视频| 亚洲电影免费观看高清完整版在线观看 | 欧美久久一级| 亚洲精品在线视频| 日韩小视频在线观看专区| 欧美精品免费在线观看| 亚洲日本在线观看| 99视频精品| 欧美天天视频| 亚洲综合国产| 久久久不卡网国产精品一区| 国产一区二区三区在线观看网站 | 亚洲线精品一区二区三区八戒| 欧美日本不卡高清| 亚洲精品美女| 国产精品99久久99久久久二8| 欧美视频一区二区三区在线观看 | 红桃视频国产精品| 最新成人在线| 欧美日韩99| 亚洲色诱最新| 欧美在线播放高清精品| 国内精品久久久久伊人av| 亚洲激情视频网| 欧美精品激情在线观看| 一本大道av伊人久久综合| 亚洲欧美三级在线| 国产亚洲一区二区三区在线观看 | 久久一区亚洲| 亚洲区中文字幕| 亚洲一区二区av电影| 国产欧美日韩综合| 亚洲激情欧美激情| 欧美日韩在线精品一区二区三区| 亚洲影院免费| 欧美69wwwcom| 一区二区三区精品国产| 欧美中文字幕精品| 极品中文字幕一区| 一区二区三区四区国产精品| 国产精品免费视频观看| 久久精品一区二区三区不卡牛牛 | 一本色道久久综合亚洲精品小说 | 欧美顶级少妇做爰| 中国成人在线视频| 久久亚洲欧美| 99精品国产在热久久婷婷| 欧美资源在线观看| 亚洲区中文字幕| 欧美在线www| 91久久中文| 欧美一区二区日韩一区二区| 亚洲国产老妈| 欧美在线观看一二区| 亚洲国产精品悠悠久久琪琪| 午夜精品在线| 亚洲国产欧美日韩精品| 午夜精品理论片| 亚洲电影免费在线观看| 午夜精品久久久久久久久久久| 一区免费观看视频| 亚洲欧美国产高清| 亚洲国产精品传媒在线观看| 欧美一区二区成人6969| 最新精品在线| 久久久噜噜噜久久狠狠50岁| 99国产一区| 免费亚洲电影在线| 亚洲欧美另类国产| 欧美另类专区| 亚洲第一黄色网| 国产精品日韩一区二区| 亚洲欧洲一区二区三区久久| 国产精品综合| 亚洲图片在线观看| 亚洲大片精品永久免费| 久久国产黑丝| 亚洲私人影院| 欧美精品一区二区三区很污很色的| 欧美一区二区精品| 国产精品视频内| 中文在线资源观看网站视频免费不卡 | 性色av一区二区三区在线观看| 欧美日韩在线不卡|