




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于FPGA實現的自定義浮點數1.概述基于FPGA實現各種設計的首要前提是理解并掌握數字的表示方法,計算機中的數字表示方法有兩種:定點數表示法和浮點數表示方法。其中,對于浮點數盡管當前應用最為廣泛的是基于IEEE754所設計的浮點數表示方法,Xilinx(忘記Altera中是否有對應的IP核)的IP核中也提供了相應的設計方法,但其表示方法缺乏FPGA設計應有的靈活性,而且資源消耗相對嚴重,因此可以根據應用的需要,設計好基于FPGA實現的自定義浮點數。2.定點數表示定點數大類上可分為有符號數和無符號數,需要清楚的是,無論是計算機還是FPGA,其底層并沒有無符號數、有符號數的概念,底層只是一大串二進制數據在進行運算(在底層就是一大堆寄存器處于開關的工作狀態(tài)中)。定點數的第一印象容易給人產生是用來表示整數的印象,然而無論是整數還是小數都可以采用定點數來表示,同理整數和小數的概念也是人為規(guī)定上去的,FPGA本身不會理解那一大串二進制數是表示整數還是小數,具體的運算法則由編程人員規(guī)定好。1.1Qm.n的表示方法本文采用最廣泛使用的補碼表示形式(默認都懂其他的原碼表示和反碼表示形式),對應的用來表示有符號數。人為定義小數點的位置。采用Qm.n量化表示定點數,其中m用來表示小數點前的位寬,包括一位符號位和m-1位整數位,n表示小數位寬。如16位有符號整數可以表示成Q16.0,用來表示小于1的小數則可以表示成Q1.15。對于Qm.n的表示格式,其范圍表示如下:例如,1110整數則表示為Q4.0:(-2^4+2^3+2^2+0)/2^0=-2,1110有兩位小數則表示為Q2.2:(-2^4+2^3+2^1+0)/2^2=-0.5。下表對應表示16位二進制補碼表示的數的范圍。1.1浮點數的定點化浮點數的定點化涉及到量化方法。量化的過程可以表示為:量化方法主要有兩種:尾部截斷舍棄法和尾部四舍五入法。對于尾部截斷舍棄法,顧名思義則是丟棄掉尾部不能表示的部分。假設將浮點數表示成8位Q3.5的定點數,則表示過程如下(對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可以做如下實現:dec2bin(floor(3.2*2^5),8)=01100110dec2bin(2^8+floor(-3.2*2^5),8)=10011001對于四舍五入法,則對應的過程表示如下:[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可以做如下實現:dec2bin(round(3.2*2^5),8)=01100110dec2bin(2^8+round(-3.2*2^5),8)=10011010由于采用四舍五入方法還需要進行尾部數據的判斷,因此通常使用中,如無特別需求,多采用尾部截斷舍棄法。3.浮點數表示在FPGA運算中,浮點數無論是表示方法、資源占用還是運算法則都比定點數復雜得多。但另一方面,基于FGPA的實現的算法性能嚴重依賴于算法的數值精度表示,很多時候在信號處理中,數值的動態(tài)范圍過大,采用一般的定點算法往往無法滿足這樣大的動態(tài)范圍,而且定點算法經過精打細算之后,算法的小數位和整數位是固定的,表示的范圍同樣是固定的,無法在作調節(jié),后續(xù)一旦有所修改,整個算法實現過程需要重新進行計算仿真設計,這樣的后期維護成本太高,簡直是牽一發(fā)而動全身。對于cpu處理器來說,浮點格式基本上會采用IEEE754制定的標準單精度或雙精度格式。而對于FPGA來說,由于其強大的靈活性,雖然也是按照IEEE754標準實現浮點數表示,但是卻可以對尾數和指數的位寬作修改。IEEE754定制的浮點格式在存儲方面有著很完美的形式,可以最大限度表示數的動態(tài)范圍的同時,減少存儲資源,但是實際參與運算時并沒那么直接,需要經過相應的換算。因此可利用FPGA的靈活性,自定義浮點數格式。3.1自定義浮點格式表示不像根據IEEE754[45]標準所設計的32-bit和64-bit標準浮點格式,本論文的自定義浮點由位寬可配置的指數(Exponent)和尾數(Mantissa)兩部分組成。指數和尾數部分都是有符號定點數。作為一個例子,我們采用標準雙精度浮點格式和自定義浮點格式之間進行對比。標準雙精度浮點數可以表示如下等式:其中1.f表示52-bit尾數;Exp
表示存儲起來的指數值;bias
表示偏置,對于標準雙精度浮點,改值為1023;Exp-bias
表示實際的指數值。標準格式表示如圖(a)所示。然而,對于自定義浮點格式表示的數的實際值如下:其中,Man
表示的尾數是52-bit有符號定點數,表示的實際值為0.1b49b48...b2b1b0或者1.0b49b48...b2b1b0。而Exp
表示實際指數值。具體格式表示如圖(b)所示。自定義浮點算法的其中一個優(yōu)點是指數部分和尾數部分的位寬都是可配置的,設計者可以在算法精度要求和資源消耗方面進行權衡。而現存的由XILINX提供的浮點運算IP核是基于IEEE754標準的,在每一次四則運算之后(如加法或乘法之后)都會進行一個格式化運算。而格式化運算占比的硬件資源消耗很大。無疑,如果存在多次連續(xù)加法運算或者乘加運算,這樣的運算方式是資源消耗嚴重的。而本文所提出的自定義浮點算法則是整合的乘加運算和連續(xù)加法運算,盡量減少格式化操作,從而減少資源消耗。1.1定點數轉自定義浮點格式相比較于標準浮點格式的轉換,定點數轉成上文描述的自定義浮點格式相對來說簡單許多,只需要經過簡單的規(guī)格化,假設定點數為Qm.n,將其轉換為指數位寬為E,尾數位寬為M,其過程可以描述如下:輸入:定點數Qm.n,則初始指數值為m,尾數Q1.(m+n-1);規(guī)格化:計算符號位個數,假設計算得符號位個數為k;輸出:指數輸出值為m-k,尾數從m+n-k作為最高位開始截位,截取M位,如果不夠長,則從最低位開始補零,補足到M位長度輸出。這里唯一需要再次說明的是,如何計算符號位的個數,最簡單的方法就是采用一個for循環(huán),for循環(huán)里邊使用一個計數器(初始值為1)和比較判斷器,從次高位開始與最高位做比較,如果相同(同為1或者同為0),則計數器加1,以此類推下去。這里使用MATLAB,按照比特級別仿真,打包成一個函數,如下:
functionk=dupSign_cal(u)%
u:定點數輸入%k:計算符號位個數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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025銀行從業(yè)資格證考試網絡直播學習課程及試題答案
- 兒童課題申報書范文
- 2022屆高考統(tǒng)考化學人教版一輪復習教師用書:第1部分 第8章 第4節(jié) 難溶電解質的溶解平衡教案
- 2025年銀行從業(yè)資格證考試應對策略試題及答案
- 項目管理考試交流平臺試題及答案
- 微生物檢驗與疾病防控試題及答案
- 勇往直前學期新氣象計劃
- 項目管理專業(yè)人士考核方法試題及答案
- 資格認證考試技能提升試題及答案
- 獨特復習方式的證券從業(yè)試題及答案
- 2025年上海市虹口區(qū)高三語文二模作文題目解析及5篇范文:機器成為思想的引擎必將給蘆葦帶來深刻的變化
- 2025年甘肅西北永新集團招聘11人筆試參考題庫附帶答案詳解
- 檢測站登錄員試題及答案
- 委托選礦加工合同協(xié)議
- 食堂應急預案管理制度
- CISP-PTE培訓課件教學課件
- 2025年新高考歷史預測模擬試卷黑吉遼蒙卷(含答案解析)
- 2025年醫(yī)院文化節(jié)活動策劃
- 部隊防雷電暴雨安全知識
- 2025年消防文員類面試題及答案
- 重慶市名校聯盟2024-2025學年高二上學期第一次聯合考試物理試題(解析版)
評論
0/150
提交評論