• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 新型數(shù)據(jù)格式轉(zhuǎn)換的FPGA實現(xiàn)

    新型數(shù)據(jù)格式轉(zhuǎn)換的FPGA實現(xiàn)

    作者: 時間:2011-11-19 來源:網(wǎng)絡(luò) 收藏

    引言

    本文引用地址:http://www.czjhyjcfj.com/article/150044.htm

      浮點運(yùn)算作為數(shù)字信號處理中最常見的運(yùn)算之一,各大EDA軟件都帶有免費(fèi)的浮點運(yùn)算IP核。通過對IP核的生成和例化來浮點運(yùn)算,把設(shè)計者從繁重的代碼編寫中解脫了出來,同時可以對IP核進(jìn)行功能剪裁以避免對邏輯資源的浪費(fèi),最優(yōu)設(shè)計。但對浮點數(shù)的獲取卻關(guān)注很少。在浮點運(yùn)算中,單精度浮點以其極強(qiáng)的通用性得到了最廣泛的應(yīng)用。本文將目光集中在單精度浮點數(shù)的獲取上,為浮點IP核提供源。在的傳輸上,ASCII碼是經(jīng)常采用的一種形式,本文以串口接收到的ASCII碼所表示的實數(shù)為例,采用流水處理方式高速地將實數(shù)為單精度浮點數(shù)。

      1 實數(shù)為單精度浮點數(shù)的原理

      1.1 單精度浮點數(shù)

      浮點數(shù)的表示遵循IEEE 754標(biāo)準(zhǔn),它由3部分組成:符號位(sign)、階碼(exponent)和尾數(shù)(fraction)。IEEE 754標(biāo)準(zhǔn)規(guī)定的單精度浮點數(shù)占用32位,包含:1位符號位s、8位帶偏移量的指數(shù)e[30:23]和23位尾數(shù)f[22:0],如圖1。單精度的指數(shù)使用正偏值形式表示,指數(shù)值的大小從1~254(0和255是特殊值)。采用該種形式表示是為了有利于比較大小,浮點小數(shù)在計算時,指數(shù)值減去偏正值即是實際的指數(shù)大小。其中偏移值(bias)為127,尾數(shù)有1位隱藏位。

      

      單精度浮點數(shù)包含以下幾種情況:

      (1)規(guī)格化數(shù):0

      (2)(+0,-0):如果e=0且f=0,則V=(-1)s×0;

      (3)非規(guī)格化數(shù):e=0但f≠0則V為非規(guī)格化數(shù);

      (4)(+∞,-∞):e=255,且f=0,則V=(-1)s×∞;

      (5)NaN(不是一個數(shù)):e=255,且f≠0,則V=NaN。

      1.2 原理

      例如有一個實數(shù)為6.91,首先將其轉(zhuǎn)換為二進(jìn)制形式表示:110.1110100011110101110000101000。再將其規(guī)范化為如下:

      6.91=1.101110100011110101110000101000×22則可以得到基本原型:

      s:0;

      e:2+127(十進(jìn)制)=129(十進(jìn)制)=10000001(二進(jìn)制);

      f:101110100011110101110000101000(注:小數(shù)部分取28位,且小數(shù)點前面的1不要)。

      小數(shù)部分取28位的目的在于更為準(zhǔn)確地表示實數(shù),后五位用于舍入處理。在IEEE 754標(biāo)準(zhǔn)中,舍入處理提供了4種可選方法:就近舍入、朝0舍入、朝+∞舍入和朝-∞舍入,本文采用就近舍入原則。就近舍入的實質(zhì)就是通常所說的“四舍五入”。例如:尾數(shù)超過規(guī)定的23位的多余數(shù)字是10010,多余位的值超過規(guī)定的最低有效值的一半。故最低有效位應(yīng)增1,若多余的5位是01111則簡單地截尾即可,對多余的5位100 00這種特殊情況:若最低有效位現(xiàn)為0,則截尾;若最低有效位現(xiàn)1,則向上進(jìn)一位使其變?yōu)?。所以,此例中要將最后5位作舍棄處理。得到的結(jié)果為:0 100000011011101000111101011100001。組合后等于0100 0000 1101 1101 0001 1110 1011 1000等于40DDIEB8。至此在原理上完成一個實數(shù)到單精度浮點數(shù)的轉(zhuǎn)換。

      2 在實數(shù)到單精度浮點數(shù)轉(zhuǎn)換的流程

      2.1 轉(zhuǎn)換流程

      在實際工程應(yīng)用中,所處理的都有一個或大或小的范圍,在這個范圍內(nèi)將實數(shù)轉(zhuǎn)換為單精度浮點數(shù)會節(jié)約芯片資源和降低功耗。故選擇在-9 999.999 9~9 999.999 9的范圍內(nèi)完成實數(shù)到單精度浮點數(shù)的轉(zhuǎn)換,如圖2所示。考慮到實際,數(shù)值在很多情況下是通過串口獲取的,并表現(xiàn)為ASCII形式。故本文中所提到的實數(shù)皆為ASCII表示。

      

      轉(zhuǎn)換過程采用流水線操作,用計數(shù)器控制轉(zhuǎn)換進(jìn)程。ASCII碼轉(zhuǎn)換為單精度浮點的方法如下:

      (1)將8位ASCII碼所代表的數(shù)字字符轉(zhuǎn)為十進(jìn)制數(shù)字(由于硬件電路對數(shù)字的表示只有0和1的組合,所以將實數(shù)的整數(shù)和小數(shù)分開表示);

      (2)利用程序包里的數(shù)據(jù)類型轉(zhuǎn)換函數(shù)將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),但小數(shù)部分的轉(zhuǎn)換需要單獨實現(xiàn);

      (3)對二進(jìn)制表示的實數(shù)進(jìn)行規(guī)格化;

      (4)根據(jù)符號位ASCII碼值確定符號位s,根據(jù)規(guī)格化移動的位數(shù)確定階碼e,將規(guī)格化中的小數(shù)部分f保留28位;

      (5)根據(jù)就近舍入原則對保留的28位小數(shù)部分的后5位進(jìn)行判斷和舍入。


    上一頁 1 2 下一頁

    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 聂荣县| 垫江县| 五原县| 嘉鱼县| 泾阳县| 嘉黎县| 方城县| 铜陵市| 崇信县| 孟津县| 区。| 北海市| 浦城县| 雅安市| 牟定县| 沧源| 东宁县| 界首市| 浦北县| 上杭县| 库车县| 深圳市| 临朐县| 兰西县| 景宁| 上蔡县| 唐山市| 简阳市| 辛集市| 嘉黎县| 方山县| 新乡市| 阿巴嘎旗| 松原市| 诸暨市| 上蔡县| 罗山县| 闻喜县| 太原市| 道孚县| 德化县|