《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 浮點反正切函數的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亚洲国产精品_日韩亚洲一区二区
欧美日韩国产精品| 国产精品色网| 亚洲欧美欧美一区二区三区| 亚洲精品久久久久久下一站 | 国外成人免费视频| 国产农村妇女毛片精品久久莱园子| 欧美日韩亚洲在线| 欧美日韩精品欧美日韩精品一 | 欧美一区二区视频97| 午夜精品亚洲| 欧美一区二区私人影院日本| 午夜激情综合网| 亚洲综合欧美日韩| 亚洲欧美三级在线| 校园激情久久| 久久国产精品久久久久久电车| 欧美一区二区三区免费观看| 亚洲日本中文字幕区| 久久国产日韩欧美| 久久国产精品高清| 亚洲电影中文字幕| 91久久中文字幕| 亚洲精品中文字| 久久av资源网站| 久久精彩免费视频| 亚洲国产成人不卡| 亚洲精品久久久久久久久| 日韩午夜视频在线观看| 亚洲小视频在线观看| 亚洲欧美99| 久久gogo国模裸体人体| 久久久午夜电影| 亚洲制服少妇| 最新精品在线| 一区二区免费在线播放| 亚洲制服av| 久久久久国色av免费看影院| 免播放器亚洲| 欧美日韩精品免费观看视一区二区| 国产精品护士白丝一区av| 国产视频欧美视频| 亚洲电影免费观看高清完整版在线| 亚洲激情在线观看视频免费| 中文精品一区二区三区| 欧美一区在线看| 日韩一区二区电影网| 午夜性色一区二区三区免费视频| 久久久久9999亚洲精品| 欧美美女视频| 国产三级欧美三级| 亚洲国内欧美| 亚洲字幕在线观看| 91久久综合| 亚洲在线电影| 久久资源av| 欧美视频不卡| 狠狠爱成人网| 在线视频一区观看| 久久激情中文| 亚洲愉拍自拍另类高清精品| 久久中文在线| 国产精品久久久久久久午夜| 在线精品视频一区二区| 99精品国产99久久久久久福利| 香蕉国产精品偷在线观看不卡| 亚洲全黄一级网站| 亚洲欧美日韩中文在线制服| 免费成人高清视频| 国产精品呻吟| 亚洲国产婷婷香蕉久久久久久99| 亚洲自拍三区| 一二三四社区欧美黄| 久久精品午夜| 欧美私人啪啪vps| 在线成人亚洲| 午夜精品在线| 亚洲一区欧美二区| 久久综合国产精品| 国产精品福利网站| 亚洲韩国精品一区| 欧美在线你懂的| 亚洲影院污污.| 欧美精品导航| 国内外成人免费激情在线视频网站| 夜夜爽www精品| 亚洲精品日韩欧美| 久久久噜噜噜久久人人看| 国产精品高潮呻吟视频| 亚洲片在线观看| 亚洲高清在线观看| 久久激五月天综合精品| 国产精品高精视频免费| 亚洲国产综合在线| 亚洲国产成人av在线| 久久gogo国模裸体人体| 国产精品成人免费| 亚洲美女91| 亚洲片区在线| 免费精品视频| 极品少妇一区二区三区| 欧美在线视频观看| 欧美在线视频a| 国产精品日韩久久久久| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲片区在线| 免费成人激情视频| 国内精品久久久久久久97牛牛| 亚洲欧美日韩在线| 亚洲欧美国产高清va在线播| 欧美色网一区二区| 中文欧美在线视频| 亚洲一区www| 欧美视频三区在线播放| 亚洲毛片av在线| 一区二区三区国产盗摄| 欧美久久久久久久久久| 亚洲激情小视频| 亚洲精品裸体| 欧美不卡视频| 亚洲国产精品免费| 亚洲精品网站在线播放gif| 免费观看亚洲视频大全| 在线观看视频日韩| 亚洲国产免费| 亚洲精品中文字幕女同| 国产精品爽爽爽| 亚洲影视中文字幕| 午夜一区在线| 国产精品美女主播在线观看纯欲| 在线亚洲精品福利网址导航| 亚洲欧美电影在线观看| 国产精品久久久一区麻豆最新章节| 在线亚洲激情| 午夜欧美精品久久久久久久| 国产精品欧美日韩| 亚洲欧美日韩国产成人| 欧美一区视频| 国产一区久久| 亚洲激情二区| 欧美巨乳在线| 夜夜精品视频一区二区| 亚洲欧美久久久| 国产麻豆日韩欧美久久| 久久精品免费看| 欧美成年人网| 一本大道久久a久久精二百| 亚洲一区二区精品视频| 国产精品一页| 久久电影一区| 欧美成年视频| 一区二区欧美视频| 欧美一区二区精品| 红桃视频欧美| 亚洲美洲欧洲综合国产一区| 欧美日韩一区国产| 亚洲欧美一区二区三区在线| 久久亚洲二区| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲天天影视| 国产亚洲福利| 亚洲第一精品久久忘忧草社区| 免费观看一区| 亚洲视频导航| 久久精品女人| 亚洲精品乱码久久久久久日本蜜臀 | 国产亚洲欧美日韩日本| 亚洲国产免费| 欧美亚州一区二区三区| 校园春色综合网| 欧美精品免费观看二区| 亚洲欧美日韩在线综合| 蜜乳av另类精品一区二区| 一区二区三区四区精品| 狂野欧美一区| 亚洲视频成人| 欧美sm视频| 亚洲欧美第一页| 欧美高清在线一区二区| 亚洲午夜精品视频| 欧美电影在线观看完整版| 日韩一级精品| 99国产一区二区三精品乱码| 国产精品人人做人人爽人人添| 亚洲激情精品| 国产精品一二| 99在线|亚洲一区二区| 国产日韩免费| 在线亚洲精品福利网址导航| 国产亚洲视频在线观看| 在线亚洲电影| 亚洲电影欧美电影有声小说| 欧美一区影院| 在线播放豆国产99亚洲| 欧美一区二区精品久久911| 亚洲精选在线观看| 蜜臀a∨国产成人精品| 亚洲综合清纯丝袜自拍| 欧美激情在线免费观看| 久久精品国产2020观看福利| 国产精品久久久久秋霞鲁丝 |