《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 新型數據格式轉換的FPGA實現
新型數據格式轉換的FPGA實現
唐小明,張濤,王貞
摘要: 本文的實現向單精度浮點的轉換占用1 161個slice資源,在FPGA發展到今天,FPGA的容量和資源都有了很大提高的情況下,這樣的資源占用量在大多數應用中是可以承受的。本文的設計可以很容易地根據實際實數的范圍進行調整,并且可以推廣到其他浮點格式,可有效地為浮點IP核提供快速且具有高精度的數據源。
Abstract:
Key words :

引言

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

  1 實數轉換為單精度浮點數的原理
 

  1.1 單精度浮點數格式

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

  

 

  單精度浮點數包含以下幾種情況:

  (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(不是一個數):e=255,且f≠0,則V=NaN。

  1.2 轉換原理

  例如有一個實數為6.91,首先將其轉換為二進制形式表示:110.1110100011110101110000101000。再將其規范化為如下:

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

  s:0;

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

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

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

  2 在FPGA中實現實數到單精度浮點數轉換的流程

  2.1 轉換流程

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

  

 

  轉換過程采用流水線操作,用計數器控制轉換進程。ASCII碼轉換為單精度浮點的方法如下:

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

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

  (3)對二進制表示的實數進行規格化;

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

  (5)根據就近舍入原則對保留的28位小數部分的后5位進行判斷和舍入。2.2 關鍵代碼解析

 

  在FPGA的硬件描述語言中將整數的十進制轉換為二進制比較簡單,可以調用ISE軟件自帶的程序包中的轉換函數來實現,但如何將小數部分轉換為二進制是能否順利完成從實數到單精度浮點數轉換的關鍵。考慮到要對小數部分進行舍入運算,所以將小數部分轉換28位的二進制。要用28位二進制表示小數部分,需利用VHDL語言中變量(variable)被賦值時立即生效的特性,結合FOR循環來實現。部分關鍵代碼如下:

  

 

  代碼中frac_part是小數部分的十進制表示(因為integer類型只能表示整數,所以將小數部分擴大了10 000倍,但不影響結果的正確性),frac_28是小數部分的二進制表示。信號frac_28(27)的權值是2-1,依次以1/2倍率遞減,frac_28(0)的權值是2-28。此進程由frac_part發生變化來啟動,完成轉換的時間是瞬時,也可以認為是一個時鐘周期。

  3 仿真結果及分析

  首先用ModelSim進行功能仿真,其結果如圖3所示。輸入的實數為125.763,輸出結果經Matlab逆向求值同輸入值進行比較,驗證了轉換結果的正確性。一個數的正確轉換并不能說明問題,下面將驗證此轉換方法的可行性。

  

 

  選取具有代表性的實數對轉換方法的性能進行驗證。主要驗證兩個方面:

  (1)是否在預定域內具有全覆蓋性;

  (2)是否能對此域中的最小值進行有效表示。

  結果如表1所示。

  

 

  根據轉換原理,最小值所轉換的誤差最大,但最大值的轉換誤差不一定最小(因為存在舍入)。這個最大的轉換誤差在10-5量級,當待轉換實數的絕對值大于整數1時,轉換的誤差將小于10-5量級,可達10-9量級。這樣的轉換誤差可以滿足大多數浮點運算環境下的精度需要。實驗驗證了此轉換方法的有效性和“全覆蓋性”。

  在完成仿真測試后,將程序進行綜合,布局布線,最后生成位流文件下載到FPGA芯片中進行驗證。在實際的芯片中將轉換結果和已仿真得到的結果進行比較,并輸出指示信號。從實際的電路輸出結果看,和仿真結果完全一致,證明了此方法在實際芯片中可行性。因為采用的是流水線操作,所以仿真所用的周期數和實際周期數是一致的。該實驗在50 MHz的時鐘下用時6個周期(即0.12μs)完成轉換操作。而在最常用的串口傳輸波特率9 600 b/s下,傳送1個碼元的時間為10-1ms量級。從而可以得出:完成從ASCII碼所表示的實數(-9 999.999 9~+9 999.999 9)到單精度浮點的轉換所用的時間將在10-1μs量級以下,具有較高的實時性。

  4 結語

  本文的實現向單精度浮點的轉換占用1 161個slice資源,在FPGA發展到今天,FPGA的容量和資源都有了很大提高的情況下,這樣的資源占用量在大多數應用中是可以承受的。本文的設計可以很容易地根據實際實數的范圍進行調整,并且可以推廣到其他浮點格式,可有效地為浮點IP核提供快速且具有高精度的數據源。

 

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一区二区不卡在线视频 午夜欧美不卡在| 中文日韩在线| 欧美三级日韩三级国产三级| 美女网站久久| 久久久久久一区二区| 欧美一区二区三区在线视频| 亚洲摸下面视频| 亚洲午夜视频| 一区二区国产日产| 亚洲精品乱码| 亚洲精品综合久久中文字幕| 最新日韩精品| 91久久嫩草影院一区二区| 亚洲国产精品www| 亚洲二区在线| 最新成人av在线| 日韩视频三区| 日韩一级黄色av| 日韩一区二区精品视频| 99视频精品在线| 在线综合亚洲欧美在线视频| 亚洲午夜小视频| 香蕉视频成人在线观看| 欧美亚洲一级| 久久久久国产精品一区二区| 久久精品盗摄| 亚洲综合视频1区| 欧美中文字幕精品| 久久精品国产久精国产爱| 亚洲国内自拍| 99re66热这里只有精品3直播| 日韩小视频在线观看专区| 9色porny自拍视频一区二区| 亚洲午夜免费视频| 欧美影院午夜播放| 久久午夜激情| 欧美国产视频在线观看| 欧美三级电影精品| 国产精品影片在线观看| 国内精品免费在线观看| 亚洲国产高清一区二区三区| 亚洲日本中文字幕| 99这里只有久久精品视频| 宅男在线国产精品| 亚洲欧洲av一区二区| 亚洲国产成人精品女人久久久| 亚洲精品久久久蜜桃| 在线一区日本视频| 久久成人免费视频| 欧美成人精品| 国产精品第一区| 国产一区二区三区四区三区四| 亚洲成色777777在线观看影院| 99re8这里有精品热视频免费| 亚洲午夜激情免费视频| 欧美一级久久久久久久大片| 亚洲黄色尤物视频| 国产精品99久久99久久久二8| 欧美伊人久久久久久久久影院| 久久综合影音| 欧美性大战久久久久久久| 国产亚洲精品高潮| 亚洲伦理中文字幕| 午夜电影亚洲| 99精品久久| 久久精品国产精品亚洲精品| 欧美激情1区2区| 国产精品一区二区在线观看| 亚洲成色777777女色窝| 亚洲网站在线看| 亚洲人在线视频| 久久精品国产一区二区电影| 欧美欧美天天天天操| 国产亚洲成精品久久| 亚洲精品综合精品自拍| 欧美一区二区三区免费在线看| 一区二区三区久久网| 久久视频一区二区| 国产精品老牛| 亚洲精品麻豆| 久久精品二区亚洲w码| 一区二区欧美日韩视频| 久久色在线观看| 国产精品视频自拍| 亚洲免费高清| 亚洲激情精品| 久久精品国产一区二区电影| 欧美午夜女人视频在线| 亚洲黄色在线观看| 欧美在线观看一二区| 亚洲在线播放电影| 欧美国产日韩一区二区在线观看 | 欧美人在线观看| 激情欧美日韩| 亚洲女性喷水在线观看一区| 亚洲剧情一区二区| 美女视频黄a大片欧美| 国产美女精品一区二区三区| 亚洲精品综合久久中文字幕| 亚洲国产精品一区| 久久久噜噜噜久久久| 国产精品一区免费视频| 一本大道久久精品懂色aⅴ | 欧美一区二视频| 欧美日韩中文字幕综合视频 | 亚洲最新视频在线| 99视频国产精品免费观看| 欧美mv日韩mv国产网站app| 狠狠色丁香婷婷综合影院| 亚洲欧美一区二区在线观看| 亚洲午夜一级| 欧美视频中文在线看| 日韩午夜中文字幕| 亚洲视频福利| 欧美日韩专区在线| 一区二区高清视频在线观看| 亚洲手机在线| 欧美日韩国产高清| 亚洲精品国产精品国产自| 亚洲精品综合精品自拍| 欧美激情在线免费观看| 亚洲激情网址| 日韩视频中文字幕| 欧美噜噜久久久xxx| 日韩视频三区| 亚洲午夜伦理| 国产精品国产三级国产普通话蜜臀| 中文成人激情娱乐网| 亚洲婷婷免费| 国产精品久久一级| 亚洲欧美综合一区| 久久另类ts人妖一区二区| 国产一区二区精品久久99| 久久精品国产一区二区三区免费看| 久久性色av| 亚洲国产一区二区a毛片| 日韩视频不卡中文| 欧美日韩中文在线观看| 一区电影在线观看| 欧美一级一区| 国精品一区二区| 亚洲精品久久久一区二区三区| 欧美精品亚洲精品| 一区二区三区波多野结衣在线观看| 亚洲午夜视频在线| 国产欧美成人| 亚洲国产成人精品久久久国产成人一区| 欧美暴力喷水在线| 日韩一级免费观看| 性做久久久久久| 国内免费精品永久在线视频| 亚洲精品小视频在线观看| 欧美日韩中文字幕在线视频| 亚洲欧美日本国产专区一区| 久久久欧美一区二区| 亚洲电影免费观看高清完整版在线观看 | 亚洲精品在线视频观看| 亚洲无人区一区| 国产区亚洲区欧美区| 亚洲高清不卡一区| 欧美精品一区二区三区一线天视频| 一本久久知道综合久久| 欧美资源在线观看| 亚洲成人在线观看视频| 亚洲一区二区三区久久| 国产日韩精品一区| 91久久精品日日躁夜夜躁国产| 欧美日韩在线三级| 欧美在线视频观看| 欧美精品免费在线观看| 亚洲欧美国产精品桃花| 欧美不卡在线| 亚洲视频一区在线观看| 久久久久9999亚洲精品| 亚洲精品影院在线观看| 性色一区二区| 亚洲精品久久久久久一区二区 | 亚洲少妇一区| 久久人体大胆视频| 99亚洲一区二区| 久久视频这里只有精品| 夜夜嗨av一区二区三区中文字幕 | 亚洲高清不卡| 欧美性淫爽ww久久久久无| 亚洲二区在线| 国产乱码精品一区二区三区忘忧草 | 久久国产精品网站| 亚洲精品一区二区三区婷婷月| 久久国产主播精品| 99国产精品私拍| 久久天堂精品| 亚洲一区黄色| 欧美日韩福利视频| 久久超碰97人人做人人爱| 国产精品www网站| 亚洲开发第一视频在线播放| 国产亚洲精品7777| 亚洲欧美国产一区二区三区| 亚洲国产精品国自产拍av秋霞 | 久久午夜色播影院免费高清|