基于FPGA實現(xiàn)的自定義浮點數(shù)_第1頁
基于FPGA實現(xiàn)的自定義浮點數(shù)_第2頁
基于FPGA實現(xiàn)的自定義浮點數(shù)_第3頁
基于FPGA實現(xiàn)的自定義浮點數(shù)_第4頁
基于FPGA實現(xiàn)的自定義浮點數(shù)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于FPGA實現(xiàn)的自定義浮點數(shù)1.概述基于FPGA實現(xiàn)各種設(shè)計的首要前提是理解并掌握數(shù)字的表示方法,計算機中的數(shù)字表示方法有兩種:定點數(shù)表示法和浮點數(shù)表示方法。其中,對于浮點數(shù)盡管當前應(yīng)用最為廣泛的是基于IEEE754所設(shè)計的浮點數(shù)表示方法,Xilinx(忘記Altera中是否有對應(yīng)的IP核)的IP核中也提供了相應(yīng)的設(shè)計方法,但其表示方法缺乏FPGA設(shè)計應(yīng)有的靈活性,而且資源消耗相對嚴重,因此可以根據(jù)應(yīng)用的需要,設(shè)計好基于FPGA實現(xiàn)的自定義浮點數(shù)。2.定點數(shù)表示定點數(shù)大類上可分為有符號數(shù)和無符號數(shù),需要清楚的是,無論是計算機還是FPGA,其底層并沒有無符號數(shù)、有符號數(shù)的概念,底層只是一大串二進制數(shù)據(jù)在進行運算(在底層就是一大堆寄存器處于開關(guān)的工作狀態(tài)中)。定點數(shù)的第一印象容易給人產(chǎn)生是用來表示整數(shù)的印象,然而無論是整數(shù)還是小數(shù)都可以采用定點數(shù)來表示,同理整數(shù)和小數(shù)的概念也是人為規(guī)定上去的,F(xiàn)PGA本身不會理解那一大串二進制數(shù)是表示整數(shù)還是小數(shù),具體的運算法則由編程人員規(guī)定好。1.1Qm.n的表示方法本文采用最廣泛使用的補碼表示形式(默認都懂其他的原碼表示和反碼表示形式),對應(yīng)的用來表示有符號數(shù)。人為定義小數(shù)點的位置。采用Qm.n量化表示定點數(shù),其中m用來表示小數(shù)點前的位寬,包括一位符號位和m-1位整數(shù)位,n表示小數(shù)位寬。如16位有符號整數(shù)可以表示成Q16.0,用來表示小于1的小數(shù)則可以表示成Q1.15。對于Qm.n的表示格式,其范圍表示如下:例如,1110整數(shù)則表示為Q4.0:(-2^4+2^3+2^2+0)/2^0=-2,1110有兩位小數(shù)則表示為Q2.2:(-2^4+2^3+2^1+0)/2^2=-0.5。下表對應(yīng)表示16位二進制補碼表示的數(shù)的范圍。1.1浮點數(shù)的定點化浮點數(shù)的定點化涉及到量化方法。量化的過程可以表示為:量化方法主要有兩種:尾部截斷舍棄法和尾部四舍五入法。對于尾部截斷舍棄法,顧名思義則是丟棄掉尾部不能表示的部分。假設(shè)將浮點數(shù)表示成8位Q3.5的定點數(shù),則表示過程如下(對3.2和-3.2進行定點化):[3.2]=floor(3.2*2^5)=floor(102.4)=102=01100110[-3.2]=floor(-3.2*2^5)=floor(-102.4)=-103=10011001采用MATLAB可以做如下實現(xiàn):dec2bin(floor(3.2*2^5),8)=01100110dec2bin(2^8+floor(-3.2*2^5),8)=10011001對于四舍五入法,則對應(yīng)的過程表示如下:[3.2]=round(3.2*2^5)=round(102.4)=102=01100110[-3.2]=round(-3.2*2^5)=round(-102.4)=-102=10011010采用MATLAB可以做如下實現(xiàn):dec2bin(round(3.2*2^5),8)=01100110dec2bin(2^8+round(-3.2*2^5),8)=10011010由于采用四舍五入方法還需要進行尾部數(shù)據(jù)的判斷,因此通常使用中,如無特別需求,多采用尾部截斷舍棄法。3.浮點數(shù)表示在FPGA運算中,浮點數(shù)無論是表示方法、資源占用還是運算法則都比定點數(shù)復(fù)雜得多。但另一方面,基于FGPA的實現(xiàn)的算法性能嚴重依賴于算法的數(shù)值精度表示,很多時候在信號處理中,數(shù)值的動態(tài)范圍過大,采用一般的定點算法往往無法滿足這樣大的動態(tài)范圍,而且定點算法經(jīng)過精打細算之后,算法的小數(shù)位和整數(shù)位是固定的,表示的范圍同樣是固定的,無法在作調(diào)節(jié),后續(xù)一旦有所修改,整個算法實現(xiàn)過程需要重新進行計算仿真設(shè)計,這樣的后期維護成本太高,簡直是牽一發(fā)而動全身。對于cpu處理器來說,浮點格式基本上會采用IEEE754制定的標準單精度或雙精度格式。而對于FPGA來說,由于其強大的靈活性,雖然也是按照IEEE754標準實現(xiàn)浮點數(shù)表示,但是卻可以對尾數(shù)和指數(shù)的位寬作修改。IEEE754定制的浮點格式在存儲方面有著很完美的形式,可以最大限度表示數(shù)的動態(tài)范圍的同時,減少存儲資源,但是實際參與運算時并沒那么直接,需要經(jīng)過相應(yīng)的換算。因此可利用FPGA的靈活性,自定義浮點數(shù)格式。3.1自定義浮點格式表示不像根據(jù)IEEE754[45]標準所設(shè)計的32-bit和64-bit標準浮點格式,本論文的自定義浮點由位寬可配置的指數(shù)(Exponent)和尾數(shù)(Mantissa)兩部分組成。指數(shù)和尾數(shù)部分都是有符號定點數(shù)。作為一個例子,我們采用標準雙精度浮點格式和自定義浮點格式之間進行對比。標準雙精度浮點數(shù)可以表示如下等式:其中1.f表示52-bit尾數(shù);Exp

表示存儲起來的指數(shù)值;bias

表示偏置,對于標準雙精度浮點,改值為1023;Exp-bias

表示實際的指數(shù)值。標準格式表示如圖(a)所示。然而,對于自定義浮點格式表示的數(shù)的實際值如下:其中,Man

表示的尾數(shù)是52-bit有符號定點數(shù),表示的實際值為0.1b49b48...b2b1b0或者1.0b49b48...b2b1b0。而Exp

表示實際指數(shù)值。具體格式表示如圖(b)所示。自定義浮點算法的其中一個優(yōu)點是指數(shù)部分和尾數(shù)部分的位寬都是可配置的,設(shè)計者可以在算法精度要求和資源消耗方面進行權(quán)衡。而現(xiàn)存的由XILINX提供的浮點運算IP核是基于IEEE754標準的,在每一次四則運算之后(如加法或乘法之后)都會進行一個格式化運算。而格式化運算占比的硬件資源消耗很大。無疑,如果存在多次連續(xù)加法運算或者乘加運算,這樣的運算方式是資源消耗嚴重的。而本文所提出的自定義浮點算法則是整合的乘加運算和連續(xù)加法運算,盡量減少格式化操作,從而減少資源消耗。1.1定點數(shù)轉(zhuǎn)自定義浮點格式相比較于標準浮點格式的轉(zhuǎn)換,定點數(shù)轉(zhuǎn)成上文描述的自定義浮點格式相對來說簡單許多,只需要經(jīng)過簡單的規(guī)格化,假設(shè)定點數(shù)為Qm.n,將其轉(zhuǎn)換為指數(shù)位寬為E,尾數(shù)位寬為M,其過程可以描述如下:輸入:定點數(shù)Qm.n,則初始指數(shù)值為m,尾數(shù)Q1.(m+n-1);規(guī)格化:計算符號位個數(shù),假設(shè)計算得符號位個數(shù)為k;輸出:指數(shù)輸出值為m-k,尾數(shù)從m+n-k作為最高位開始截位,截取M位,如果不夠長,則從最低位開始補零,補足到M位長度輸出。這里唯一需要再次說明的是,如何計算符號位的個數(shù),最簡單的方法就是采用一個for循環(huán),for循環(huán)里邊使用一個計數(shù)器(初始值為1)和比較判斷器,從次高位開始與最高位做比較,如果相同(同為1或者同為0),則計數(shù)器加1,以此類推下去。這里使用MATLAB,按照比特級別仿真,打包成一個函數(shù),如下:

functionk=dupSign_cal(u)%

u:定點數(shù)輸入%k:計算符號位個數(shù)bit_len=get(u,'WordLenght');SignBit=bitget(u,bit_len);count=1;fori=bit_len-1:-1:1ifbitget(u,i)==SignBit

count=count+1;else

break;endend

當然,無論是verilog里邊的for循環(huán)還是vhdl里邊的for循環(huán),并非軟件中for的概念意義,實際上FPGA綜合時會將fo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論