<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 新型數據格式轉換的FPGA實(shí)現

新型數據格式轉換的FPGA實(shí)現

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

引言

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

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

  1 實(shí)數為單精度浮點(diǎn)數的原理

  1.1 單精度浮點(diǎn)數

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

  

  單精度浮點(diǎn)數包含以下幾種情況:

  (1)規格化數:0

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

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

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

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

  1.2 原理

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

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

  s:0;

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

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

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

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

  2.1 轉換流程

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

  

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

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

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

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

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

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


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

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>