亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA 的浮點與整型數(shù)據(jù)混合運算實現(xiàn)*

        2013-12-23 05:46:48唐小琦
        組合機床與自動化加工技術 2013年12期
        關鍵詞:浮點數(shù)浮點尾數(shù)

        陳 坤,唐小琦,宋 寶

        (華中科技大學 機械科學與工程學院,武漢 430074)

        0 引言

        隨著FPGA 向高速,大容量,高集成度和低功耗方向的快速發(fā)展,相應的EDA 軟件工具也日趨完善,提供了更多的數(shù)字信號處理IP 核,使得FPGA 在高速數(shù)字信號處理領域得到越來越廣泛的應用[2]。

        在FPGA 中對不同格式的數(shù)據(jù)進行運算時消耗的資源是不一樣的,合理轉(zhuǎn)換數(shù)據(jù)的格式可以有效地降低資源的消耗,提高運算速度[3]。對于浮點數(shù)和整型數(shù)據(jù),如果能在不同的地方運用不同的格式,可以用最少的資源和最快的速度實現(xiàn)相同的功能[4]。目前有很多基于FPGA 的浮點數(shù)轉(zhuǎn)換成整型數(shù)據(jù)的研究和設計,但浮點和整型數(shù)據(jù)的混合運算卻未見報道。本文在研究浮點數(shù)和整型數(shù)據(jù)存儲結(jié)構(gòu)的基礎上提出了一種浮點數(shù)和整型數(shù)據(jù)相互轉(zhuǎn)換的方法,改進了一般浮點數(shù)運算中消耗資源較多和運算速度較慢的問題。

        1 IEEE 754 浮點數(shù)標準

        目前大多數(shù)高級語言(包括C)都是按照IEEE 754 的標準來規(guī)定浮點數(shù)的存儲格式[5]。IEEE 754用科學計數(shù)法以底數(shù)為2 的小數(shù)來表示浮點數(shù),存儲格式分為三個部分:符號位(S)、指數(shù)位(E)和尾數(shù)位(M)。雙精度浮點數(shù)為8 字節(jié),包含1 位符號位,11 位指數(shù)位和52 位尾數(shù)位;單精度浮點數(shù)為4字節(jié),包含1 位符號位,8 位指數(shù)位和23 位尾數(shù)位,如圖1 所示。本文將重點分析單精度浮點數(shù)和32 位整型數(shù)據(jù)的混合運算[6]。

        圖1 IEEE 754 單精度浮點數(shù)格式

        單精度的指數(shù)使用正偏正值形式表示,偏移值為127,指數(shù)值減去偏正值即為實際的指數(shù)大小。指數(shù)值范圍為0 ~255,實際指數(shù)值范圍為-127 ~128。當指數(shù)為0 時且尾數(shù)不為0 時,則浮點數(shù)A = (-1)S×21-127×0. M,稱為非規(guī)格化數(shù);若指數(shù)和尾數(shù)都為0時,則表示的浮點數(shù)為0。若指數(shù)為255,尾數(shù)部分不為0 時,則表示的為非數(shù)值;若尾數(shù)部分也為0,則表示無窮大。尾數(shù)部分為23 位,為了尾數(shù)部分能表示更多一位的有效值,IEEE754 采用隱含尾數(shù)最高數(shù)位1(即這一位1 不表示出來)的方法,因此尾數(shù)實際上是24 位,但應注意隱含的1 是一位整數(shù)(即位權(quán)位20),在浮點格式中表示出來的23 位尾數(shù)是純小數(shù)并用原碼表示,尾數(shù)真值為:1 +尾數(shù)。即浮點數(shù)A =(-1)S×2E-127×1.M。

        如01001110111100000111001111111110,符號位為0,即 為 正 數(shù),指 數(shù) 為“10011101”,底 數(shù) 為“11100000111001111111110”。表示成二進制數(shù)即為1.11100000111001111111110 ×2157-127。

        2 算法原理及推導過程

        32 位有符號整數(shù)表示范圍為- 2147483647 ~2147483647,32 位單精度浮點數(shù)表示范圍為3.4 ×10-38~3.4 ×1038,所以整數(shù)轉(zhuǎn)浮點數(shù)時不用擔心會溢出,但當單精度浮點數(shù)表示范圍超過整形數(shù)據(jù)表示范圍時,則會溢出,本算法設置了溢出標志位,用以表示是否溢出。

        2.1 整型轉(zhuǎn)換成浮點數(shù)

        整型數(shù)據(jù)轉(zhuǎn)換成浮點數(shù)只需求出浮點數(shù)的符號位S、指數(shù)位E、尾數(shù)位M。所求浮點數(shù)符號位與整形數(shù)據(jù)符號位相同。根據(jù)單精度浮點數(shù)的表示方法,隱含尾數(shù)最高位為1,且為整數(shù),所以從第31 位開始檢測,檢測到1 時停止,并計其位于第幾位,其后的位數(shù)即為指數(shù)實際值,偏置后即可得指數(shù)位;其后的數(shù)值即為所求的尾數(shù)位。

        例如,整型數(shù)據(jù)為00011000101010111101000010111001,為1 的最高位位于第29 位,將整型數(shù)據(jù)規(guī)整為1.1000101010111101000010111001 ×228,可計算出浮點數(shù)的指數(shù)部分E =28 +127 =155(10011011);由于尾數(shù)部分只有23 位,這里尾數(shù)位剩下28 位,故需對剩下5 位做舍入處理。在IEEE 754 標準中,舍入處理提供了4 中可選方法:就進舍入、朝0 舍入、朝+∞舍入和朝-∞舍入。這里采用就近舍入的方法,就近舍入的實質(zhì)就是通常所說的“四舍五入”。例如:尾數(shù)超過規(guī)定的23 位的多余數(shù)字是10100,多余位的值超過規(guī)定的最低有效值的一半,故最低有效位應增1,若多余的5 位是01111,則簡單的截尾即可,對多余的5 位10000這種特殊情況:若最低有效位為0,則截尾;若最低有效位現(xiàn)為1,則向上進一位使其變?yōu)?。所以此例中要將最低有效位加1,使其變?yōu)?,得到尾數(shù)位M =10001010101111010000110。若剩下位數(shù)小于23 位,則低位補0[7]。

        2.2 浮點數(shù)轉(zhuǎn)換成整型

        浮點數(shù)的符號位直接賦值給整數(shù)的符號位。取出浮點數(shù)中的指數(shù)值,根據(jù)浮點數(shù)的表示方法,減去偏置值后得到實際指數(shù)值n。然后從浮點數(shù)的尾數(shù)最高位開始,依次取出n 位,注意浮點表示法中隱含的尾數(shù)的最高位1,即實際整數(shù)為(n +1)位。若n≤23,則浮點數(shù)尾數(shù)部分中還有小數(shù)部分,這里采取四舍五入的方法舍去小數(shù)部分,若尾數(shù)部分取出高n 位后的最高位為1,則整數(shù)需加1;若為0,則保持不變。若n >23,則低位補0[8]。

        例如浮點數(shù)為11001101110001010101111010000101,符號位S =1,指數(shù)位E =10011011(155),尾數(shù)位M =10001010101111010000101。所求整型數(shù)據(jù)的符號位也為1,數(shù) 據(jù) 位 為N = 1. 10001010101111010000101 ×2155-127=11000101010111101000010100000。

        3 FPGA 中算法的實現(xiàn)及仿真分析

        考慮到實際應用中,數(shù)值在很多情況下都是從串口獲得,并表現(xiàn)為ASCⅡ,故首先應將ASCⅡ形式的數(shù)據(jù)轉(zhuǎn)換成相應進制的形式。轉(zhuǎn)換過程中采用標志位來判斷是整型轉(zhuǎn)浮點還是浮點轉(zhuǎn)整型。實現(xiàn)流程圖如圖2 所示。

        圖2 轉(zhuǎn)換流程圖

        首先判斷運算標志位,裁定進行何種運算。為0則進行整型轉(zhuǎn)浮點運算,為1 則進行浮點轉(zhuǎn)整型運算。整型轉(zhuǎn)浮點運算中,主要運用for 循環(huán)和左移操作來計算出浮點數(shù)的指數(shù)位和尾數(shù)位[1]。由于不用考慮溢出問題,故32 位整數(shù)都可轉(zhuǎn)換成相應的浮點數(shù)。反之,在浮點轉(zhuǎn)整型運算過程中,就需要考慮到溢出問題,故設置溢出標志位,若溢出則置1,無溢出置0[9]。整數(shù)數(shù)據(jù)部分的計算同樣主要是運用VHDL 語言中的for循環(huán)和移位操作,最后也需進行四舍五入處理[10]。

        4 仿真分析及實驗驗證

        4.1 仿真分析

        采用altera 公司的EP2C8Q208C8 作為測試平臺,開發(fā)工具為quartus ⅡVersion9.0。工程編譯完成后,耗費資源如圖3 所示。工作頻率為50MHz。

        圖3 算法消耗的資源

        圖4 整型轉(zhuǎn)換浮點數(shù)時序圖

        圖5 浮點數(shù)轉(zhuǎn)換整型時序圖

        圖6 三次樣條插補算法計算流程

        圖7 理論曲線與實際插補軌跡對比

        首先利用quartus 內(nèi)置的在線調(diào)試工具signaltap捕獲和顯示實時信號。整型數(shù)據(jù)轉(zhuǎn)換成浮點數(shù)的時序圖如圖4 所示。

        如圖4 所示,當標志位dir 為0 時,進行整型轉(zhuǎn)浮點的運算。如輸入數(shù)據(jù)為X”7839FF6B”時,實際轉(zhuǎn)換結(jié)果應為X”4EF073FF”,從仿真軟件可驗證結(jié)果的正確性。另外從仿真軟件可以看出,轉(zhuǎn)換過程可在一個時鐘周期(即20ns)內(nèi)完成,具有很高的實時性。

        浮點數(shù)轉(zhuǎn)換成整型的時序圖如圖5 所示。當標志位為1 時,進行浮點轉(zhuǎn)整型的運算。如輸入數(shù)據(jù)為X”4C2A2AD5”時,實際轉(zhuǎn)換理論結(jié)果應為 X”02A8AB54”,從仿真軟件可以看出實際結(jié)果與理論結(jié)果一致,并且 OV 為0,表示未溢出;當輸入”E38FD6AA”時,超出轉(zhuǎn)換范圍,故輸出X”80000000”,溢出標志位OV 置1。另外轉(zhuǎn)換過程也是在一個始終周期內(nèi)完成。

        4.2 實驗驗證

        通過將該算法運用到一種三次B 樣條曲線插補中來驗證。插補過程如圖6 所示。

        通常,三次B 樣條曲線的方程為f(t)=R0t3+R1t2+R2t+R3,式中t∈[0,1]為無綱量參數(shù)。為了計算曲線參數(shù)R0、R1、R2該算法將插補過程分為精插補和粗插補兩部分。在FPGA 中整型的乘加運算可以在一個周期內(nèi)完成,將計算分成整型和浮點兩個部分可以有效的提高計算速度,消除在浮點計算過程中的精度丟失。

        將該算法下載到FPGA 中,插補完成的數(shù)據(jù)和擬合曲線如圖7 所示。

        下面給出三次B 樣條插補在ARM 和FPGA 中實現(xiàn)的速度比較。測試環(huán)境為:ARM 為920T ARM 處理器,頻率為300MHz;FPGA 為EP2C8Q208C8,頻率為50MHz。實驗結(jié)果表明FPGA 中數(shù)據(jù)處理的效率遠高于在ARM 中,結(jié)果如表1 所示。

        表1 三次樣條插補算法在ARM 和FPGA 中實現(xiàn)的速度比較

        5 結(jié)束語

        本文采用Quartus 軟件平臺,選用Altera 公司的EP2C8Q208C8 芯片,采用VHDL 硬件描述語言,對算法進行了功能仿真驗證和實驗驗證。從實驗結(jié)果看,能實現(xiàn)32 位整數(shù)與單精度浮點數(shù)之間的相互轉(zhuǎn)換;在系統(tǒng)時鐘為50MHz 的情況下,轉(zhuǎn)換所用時間約為0.02μs,完全可以滿足非特殊情況下的高速數(shù)字信號處理。本文算法可以很容易的根據(jù)實際整數(shù)的范圍和精度進行調(diào)整,并且可以推廣到其他浮點格式,可通過合理的轉(zhuǎn)換數(shù)據(jù)格式有效地提高數(shù)據(jù)處理速度和減少所占資源。

        [1]姜雪松,劉東升. 硬件描述語言VHDL 教程[M]. 西安:西安交通大學出版社,2004.

        [2]王紅,彭亮,于宗光. FPGA 現(xiàn)狀與發(fā)展趨勢[J]. 電子與封裝,2007(7):32-37.

        [3]李宏鈞,胡小龍. 流水線的FPGA 低功耗設計[J]. 計算機系統(tǒng)應用,2010,19(8):234-237.

        [4]張小新,魏厚龍. FPGA 技術及開發(fā)方式概述[J]. 山西電子技術,2008(5):86-87.

        [5]周磊,成開友,孫宏國. 單精度浮點數(shù)到十進制數(shù)轉(zhuǎn)換的IP 核設計[J]. 鹽城工學院學報,2011(1):56-60.

        [6]WAHAN W. IEEE Standard 754 for binary floating-point arithmetic. Lecture Notes on the status of IEEE 754[P].1997-10-01.

        [7]唐小明,張濤,王貞杰. 一種新的基于FPGA 的數(shù)據(jù)格式轉(zhuǎn)換方法[J]. 現(xiàn)代電子技術,2011(8):110-112.

        [8]王元良,李允俊. 基于ARM 的浮點數(shù)轉(zhuǎn)換成整數(shù)的改進算法[J]. 信息技術,2007(12):18-19.

        [9]韓進,程勇,齊現(xiàn)英. VHDL 在數(shù)字集成電路中的應用[J]. 山東科技大學學報,2003,22(4):74-77.

        [10]張小妍,邵杰. 高速浮點單元的FPGA 實現(xiàn)[J]. 信息化研究,2009,35(11):24-27.

        猜你喜歡
        浮點數(shù)浮點尾數(shù)
        “改寫”與“省略”三不同
        LEO星座增強GNSS PPP模糊度浮點解與固定解性能評估
        四種Python均勻浮點數(shù)生成方法
        電腦報(2021年11期)2021-07-01 08:26:31
        連續(xù)自然數(shù)及乘積的尾數(shù)和奇偶性的分析
        基于浮點DSP的鐵路FSK信號檢測
        2019年度下半年《啟迪與智慧》上下半月刊、《幽默與笑話》上下半月刊、《拳擊與格斗》上半月刊抽大獎中獎結(jié)果
        在C語言中雙精度浮點數(shù)線性化相等比較的研究
        船電技術(2017年1期)2017-10-13 04:23:24
        非精確浮點數(shù)乘法器設計
        基于FPGA的浮點FIR濾波器設計
        改進的Goldschmidt雙精度浮點除法器
        中文字幕av人妻一区二区| 亚洲国产激情一区二区三区| 国产亚洲日韩欧美一区二区三区| 最新永久无码AV网址亚洲| 国产日产亚洲系列首页| 亚洲爆乳精品无码一区二区三区| av片在线观看免费| 无码国产日韩精品一区二区| 青青草在线免费观看视频| 国产麻豆剧果冻传媒一区| 内射中出无码护士在线| 色综合999| 精品少妇人妻av一区二区蜜桃| 国产综合精品| 人妻在卧室被老板疯狂进入国产| 久草视频在线这里只有精品| 国产高清精品一区二区| 国产成人精品久久综合| 日韩h网站| 久久最黄性生活又爽又黄特级片| 男人天堂网2017| 97久久精品午夜一区二区| 91精品国产91久久久无码色戒| 国产一区二区三区口爆在线| 国产精品一卡二卡三卡| 国产区精品| 久久精品一区二区三区不卡牛牛| 国产精品18久久久白浆| 午夜亚洲www湿好爽| 99国产精品无码专区| 亚洲国产人成综合网站| 国产成人精品久久综合| 亚洲AV永久青草无码性色av| 熟女不卡精品久久av| 美国少妇性xxxx另类| 成 人 色综合 综合网站| 国产毛片三区二区一区| 人妻少妇精品中文字幕专区| 国产激情精品一区二区三区| 国产在线天堂av| 亚洲av高清天堂网站在线观看|