精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文了解FPGA浮點(diǎn)小數(shù)與定點(diǎn)小數(shù)的換算及應(yīng)用

Hx ? 作者:工程師陳翠 ? 2018-06-28 15:49 ? 次閱讀

定點(diǎn)小數(shù)運(yùn)算

有些FPGA中是不能直接對(duì)浮點(diǎn)數(shù)進(jìn)行操作的,只能采用定點(diǎn)數(shù)進(jìn)行數(shù)值運(yùn)算。

所謂定點(diǎn)小數(shù)就是把小數(shù)點(diǎn)的位置固定,我們要用整數(shù)來表示小數(shù)。

先以10進(jìn)制為例。如果我們能夠計(jì)算12+34=46的話,當(dāng)然也就能夠計(jì)算1.2+3.4 或者 0.12+0.34了。所以定點(diǎn)小數(shù)的加減法和整數(shù)的相同,并且和小數(shù)點(diǎn)的位置無關(guān)。乘法就不同了。 12*34=408,而1.2*3.4=4.08。這里1.2的小數(shù)點(diǎn)在第1位之前,而4.08的小數(shù)點(diǎn)在第2位之前,小數(shù)點(diǎn)發(fā)生了移動(dòng)。所以在做乘法的時(shí)候,需要對(duì)小數(shù)點(diǎn)的位置進(jìn)行調(diào)整?!可是既然我們是做定點(diǎn)小數(shù)運(yùn)算,那就說小數(shù)點(diǎn)的位置不能動(dòng)!!怎么解決這個(gè)矛盾呢,那就是舍棄最低位。

也就說1.2*3.4=4.1,這樣我們就得到正確的定點(diǎn)運(yùn)算的結(jié)果了。所以在做定點(diǎn)小數(shù)運(yùn)算的時(shí)候不僅需要牢記小數(shù)點(diǎn)的位置,還需要記住表達(dá)定點(diǎn)小數(shù)的有效位數(shù)。上面這個(gè)例子中,有效位數(shù)為2,小數(shù)點(diǎn)之后有一位。

現(xiàn)在進(jìn)入二進(jìn)制。我們的定點(diǎn)小數(shù)用16位二進(jìn)制表達(dá),最高位是符號(hào)位,那么有效位就是15位。小數(shù)點(diǎn)之后可以有0 - 15位。我們把小數(shù)點(diǎn)之后有n位叫做Qn,例如小數(shù)點(diǎn)之后有12位叫做Q12格式的定點(diǎn)小數(shù),而Q0就是我們所說的整數(shù)。

Q12的正數(shù)的最大值是 0 111 。 111111111111,第一個(gè)0是符號(hào)位,后面的數(shù)都是1,那么這個(gè)數(shù)是十進(jìn)制的多少呢,很好運(yùn)算,就是 0x7fff / 2^12 = 7.999755859375。對(duì)于Qn格式的定點(diǎn)小數(shù)的表達(dá)的數(shù)值就它的整數(shù)值除以2^n。在計(jì)算機(jī)中還是以整數(shù)來運(yùn)算,我們把它想象成實(shí)際所表達(dá)的值的時(shí)候,進(jìn)行這個(gè)運(yùn)算。

反過來把一個(gè)實(shí)際所要表達(dá)的值x轉(zhuǎn)換Qn型的定點(diǎn)小數(shù)的時(shí)候,就是x*2^n了。例如 0.2的Q12型定點(diǎn)小數(shù)為:0.2*2^12 = 819.2,由于這個(gè)數(shù)要用整數(shù)儲(chǔ)存, 所以是819 即 0x0333。因?yàn)樯釛壛诵?shù)部分,所以0x0333不是精確的0.2,實(shí)際上它是819/2^12 =0.199951171875。

我們用數(shù)學(xué)表達(dá)式做一下總結(jié):

x表示實(shí)際的數(shù)(*一個(gè)浮點(diǎn)數(shù)), q表示它的Qn型定點(diǎn)小數(shù)(一個(gè)整數(shù))。

q = (int) (x * 2^n)

x = (float)q/2^n

驗(yàn)證:

由于/ 2^n和* 2^n可以簡(jiǎn)單的用移位來計(jì)算,所以定點(diǎn)小數(shù)的運(yùn)算比浮點(diǎn)小數(shù)要快得多。下面我們用一個(gè)例子來驗(yàn)證一下上面的公式:

用Q12來計(jì)算2.1 * 2.2,先把2.1 2.2轉(zhuǎn)換為Q12定點(diǎn)小數(shù):

2.1 * 2^12 = 8601.6 = 8602

2.2 * 2^12 = 9011.2 = 9011

(8602 * 9011) 》》 12 = 18923

18923的實(shí)際值是18923/2^12 = 4.619873046875 和實(shí)際的結(jié)果 4.62相差0.000126953125,對(duì)于一般的計(jì)算已經(jīng)足夠精確了。

小數(shù)的定標(biāo)精度、范圍

采用定點(diǎn)數(shù)進(jìn)行數(shù)值運(yùn)算,其操作數(shù)一般采用整型數(shù)來表示。一個(gè)整型數(shù)的最大表示范圍取決于DSP芯片所給定的字長(zhǎng),一般為16位或24位。顯然,字長(zhǎng)越長(zhǎng),所能表示的數(shù)的范圍越大,精度也越高。

對(duì)于FPGA而言,F(xiàn)PGA對(duì)小數(shù)是無能為力的,一種解決方法是采用定標(biāo),就是將運(yùn)算的浮點(diǎn)數(shù)擴(kuò)大很多倍,然后取整,再用這個(gè)數(shù)進(jìn)行運(yùn)算,運(yùn)算結(jié)束后再縮小相應(yīng)的倍數(shù)。

通過設(shè)定小數(shù)點(diǎn)在16位數(shù)中的不同位置,就可以表示不同大小和不同精度的小數(shù)了。數(shù)的定標(biāo)有Q表示法和S表示法兩種。表1.1列出了一個(gè)16位數(shù)的16種Q表示、S表示及它們所能表示的十進(jìn)制數(shù)值范圍。

同樣一個(gè)16位數(shù),若小數(shù)點(diǎn)設(shè)定的位置不同,它所表示的數(shù)也就不同。例如:

16進(jìn)制數(shù)2000H=8192,用Q0表示

16進(jìn)制數(shù)2000H=0.25,用Q15表示

不同的Q所表示的數(shù)不僅范圍不同,而且精度也不相同。Q越大,數(shù)值范圍越小,但精度越高;相反,Q越小,數(shù)值范圍越大,但精度就越低。

例如,Q0 的數(shù)值范圍是一32768到+32767,其精度為1,而Q15的數(shù)值范圍為-1到0.9999695,精度為1/32768=0.00003051。因此,對(duì)定點(diǎn)數(shù)而言,數(shù)值范圍與精度是一對(duì)矛盾,一個(gè)變量要想能夠表示比較大的數(shù)值范圍,必須以犧牲精度為代價(jià);而想精度提高,則數(shù)的表示范圍就相應(yīng)地減小。在實(shí)際的定點(diǎn)算法中,為了達(dá)到最佳的性能,必須充分考慮到這一點(diǎn)。

浮點(diǎn)數(shù)與定點(diǎn)數(shù)的轉(zhuǎn)換關(guān)系可表示為:

浮點(diǎn)數(shù)(x)轉(zhuǎn)換為定點(diǎn)數(shù)(xq):xq=(int)x* 2^Q

定點(diǎn)數(shù)(xq)轉(zhuǎn)換為浮點(diǎn)數(shù)(x):x=(float)xq*2^(-Q)

例如,浮點(diǎn)數(shù)x=0.5,定標(biāo)Q=15,則定點(diǎn)數(shù)xq=L0.5*32768J=16384,式中LJ表示下取整。反之,一個(gè)用Q=15表示的定點(diǎn)數(shù)16384,其浮點(diǎn)數(shù)為16384*2-15=16384/32768=0.5。浮點(diǎn)數(shù)轉(zhuǎn)換為定點(diǎn)數(shù)時(shí),為了降低截尾誤差,在取整前可以先加上0.5。

Q和S表示方法,如下表所示。

Q表示 S表示 十進(jìn)制表示范圍

Q15 S0.15 -1≤x≤0.9999695

Q14 S1.14 -2≤x≤1.9999390

Q13 S2.13 -4≤x≤3.9998779

Q12 S3.12 -8≤x≤7.9997559

Q11 S4.11 -16≤x≤15.9995117

Q10 S5.10 -32≤x≤31.9990234

Q9 S6.9 -64≤x≤63.9980469

Q8 S7.8 -128≤x≤127.9960938

Q7 S8.7 -256≤x≤255.9921875

Q6 S9.6 -512≤x≤511.9804375

Q5 S10.5 -1024≤x≤1023.96875

Q4 S11.4 -2048≤x≤2047.9375

Q3 S12.3 -4096≤x≤4095.875

Q2 S13.2 -8192≤x≤8191.75

Q1 S14.1 -16384≤x≤16383.5

Q0 S15.0 -32768≤x≤32767

一般在FPGA中處理小數(shù)定點(diǎn)數(shù),需要自己去定點(diǎn),比如用16位,就可以分成8位整數(shù)和8位小數(shù),即(8,8),即“定點(diǎn)”在第8位。那么:

1 -》 16‘h0100

1.5 -》 16’h0180

-1.5 -》 -1.5*256 + 65536(補(bǔ)碼) -》 16‘hFE80

1.164 -》 1.164*256 = 298 = 16’h012A

如果兩個(gè)小數(shù)相乘,即表示定點(diǎn)數(shù)相乘,比如,Q15表示的4000H(浮點(diǎn)數(shù)0.5)乘以Q15表示的4000H,4000H×4000H=1000 0000H,那么乘完之后的Q值為15+15=30.即浮點(diǎn)數(shù)表示0.25.

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1626

    文章

    21678

    瀏覽量

    602031
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    小數(shù)在內(nèi)存中是如何存儲(chǔ)的?為什么C語言中的浮點(diǎn)數(shù)不支持位移操作?

    小數(shù)在內(nèi)存中是如何存儲(chǔ)的?為什么C語言中的浮點(diǎn)數(shù)不支持位移操作?
    發(fā)表于 08-16 09:24 ?1013次閱讀
    <b class='flag-5'>小數(shù)</b>在內(nèi)存中是如何存儲(chǔ)的?為什么C語言中的<b class='flag-5'>浮點(diǎn)</b>數(shù)不支持位移操作?

    第7章 DSP定點(diǎn)數(shù)和浮點(diǎn)數(shù)

    轉(zhuǎn)dsp系列教程本期教程主要跟大家講解一下定點(diǎn)數(shù)和浮點(diǎn)數(shù)的基礎(chǔ)知識(shí),了解這些基礎(chǔ)知識(shí)對(duì)于后面學(xué)習(xí)ARM官方的DSP庫(kù)大有裨益。特別是初學(xué)的定要理解這些基礎(chǔ)知識(shí)。 7.1
    發(fā)表于 09-22 13:02

    基于牛頓迭代法的FPGA定點(diǎn)小數(shù)計(jì)算

    倒數(shù)算法的HDL實(shí)現(xiàn),只需要進(jìn)行次到兩次迭代便可獲得相對(duì)精確的結(jié)果。在些實(shí)時(shí)圖像處理場(chǎng)合中,對(duì)算法的運(yùn)算速度和Latency要求較高,因此可以采用定點(diǎn)小數(shù)適當(dāng)?shù)亟档途纫垣@得更高的
    發(fā)表于 07-18 07:33

    LABVIEW 保留小數(shù)精度與進(jìn)制換算

    LABVIEW 保留小數(shù)精度與進(jìn)制換算
    發(fā)表于 05-14 18:55

    定點(diǎn)小數(shù)的表示方法

    定點(diǎn)小數(shù)的表示方法   定點(diǎn)小數(shù),是指小數(shù)點(diǎn)準(zhǔn)確固定在數(shù)據(jù)某個(gè)位置上的小數(shù),從實(shí)用角度看,都把
    發(fā)表于 10-13 17:12 ?8204次閱讀

    定點(diǎn)小數(shù)的編碼方法

    定點(diǎn)小數(shù)的編碼方法  用定點(diǎn)小數(shù)引出數(shù)值的三種編碼(原碼、補(bǔ)碼和反碼)方法是最方便的。   (1) 原碼表示法,是用機(jī)器數(shù)的最高位代表
    發(fā)表于 10-13 17:19 ?3320次閱讀
    <b class='flag-5'>定點(diǎn)</b><b class='flag-5'>小數(shù)</b>的編碼方法

    LM4F定點(diǎn)格式于浮點(diǎn)格式的對(duì)比和浮點(diǎn)運(yùn)算的應(yīng)用詳細(xì)中文資料

    定點(diǎn)數(shù)指小數(shù)點(diǎn)在數(shù)中的位置是固定不變的,通常有定點(diǎn)整數(shù)和定點(diǎn)小數(shù)。在對(duì)小數(shù)點(diǎn)位置作出選擇之后,運(yùn)
    發(fā)表于 05-09 11:40 ?11次下載
    LM4F<b class='flag-5'>定點(diǎn)</b>格式于<b class='flag-5'>浮點(diǎn)</b>格式的對(duì)比和<b class='flag-5'>浮點(diǎn)</b>運(yùn)算的應(yīng)用詳細(xì)中文資料

    FPGA定點(diǎn)小數(shù)的常規(guī)格式、相對(duì)于浮點(diǎn)小數(shù)的優(yōu)勢(shì)與劣勢(shì)和計(jì)算的概述

    所謂定點(diǎn)小數(shù),就是小數(shù)點(diǎn)固定地隱含在某位置上的數(shù)據(jù)。由于小數(shù)點(diǎn)的位置是固定的,所以就沒有必要儲(chǔ)存它(如果儲(chǔ)存了
    的頭像 發(fā)表于 06-12 19:34 ?9477次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>定點(diǎn)</b><b class='flag-5'>小數(shù)</b>的常規(guī)格式、相對(duì)于<b class='flag-5'>浮點(diǎn)</b><b class='flag-5'>小數(shù)</b>的優(yōu)勢(shì)與劣勢(shì)和計(jì)算的概述

    FOC之定點(diǎn)小數(shù)運(yùn)算

    許多MCU 芯片只支持整數(shù)運(yùn)算,如果要在這些芯片上進(jìn)行小數(shù)運(yùn)算,定點(diǎn)運(yùn)算應(yīng)該是最佳選擇了;此外即使芯片支持浮點(diǎn)數(shù),定點(diǎn)小數(shù)運(yùn)算也是最佳的速度
    的頭像 發(fā)表于 07-11 15:10 ?6355次閱讀
    FOC之<b class='flag-5'>定點(diǎn)</b><b class='flag-5'>小數(shù)</b>運(yùn)算

    FPGA浮點(diǎn)數(shù)轉(zhuǎn)化為定點(diǎn)數(shù)方法

    FPGA在常規(guī)運(yùn)算時(shí)不能進(jìn)行浮點(diǎn)運(yùn)算,只能進(jìn)行定點(diǎn)整型運(yùn)算,在處理數(shù)據(jù)的小數(shù)乘加運(yùn)算和除法運(yùn)算時(shí)FPGA
    的頭像 發(fā)表于 10-13 16:23 ?4702次閱讀

    浮點(diǎn)定點(diǎn)運(yùn)算以及數(shù)據(jù)定標(biāo)和精度問題

    計(jì)算機(jī)體系結(jié)構(gòu)中浮點(diǎn)定點(diǎn)數(shù)據(jù)的表示 1、定點(diǎn)數(shù): 定點(diǎn)數(shù)指小數(shù)點(diǎn)在數(shù)中的位置是固定不變的,通常有定點(diǎn)
    的頭像 發(fā)表于 12-06 10:00 ?4702次閱讀

    python小數(shù)數(shù)字對(duì)象Decimal

    python的小數(shù)數(shù)字對(duì)象,類似于浮點(diǎn)數(shù),只不過小數(shù)數(shù)字有固定的位數(shù)和小數(shù)點(diǎn)。 python小數(shù)數(shù)字是有固定精度的
    的頭像 發(fā)表于 03-10 10:04 ?674次閱讀

    FPGA定點(diǎn)數(shù)截位的基本準(zhǔn)則

    FPGA內(nèi)部表示正負(fù)數(shù),小數(shù)的規(guī)則。兩者相比之下,定點(diǎn)數(shù)實(shí)現(xiàn)簡(jiǎn)單,表達(dá)更為直觀,所以在很多時(shí)候FPGA通常使用定點(diǎn)數(shù)表示
    發(fā)表于 06-19 10:44 ?1442次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>定點(diǎn)</b>數(shù)截位的基本準(zhǔn)則

    定點(diǎn)數(shù)和浮點(diǎn)數(shù)的概念 浮點(diǎn)數(shù)二進(jìn)制序列與指數(shù)表達(dá)式之間的轉(zhuǎn)化

    數(shù)的缺點(diǎn):由于小數(shù)點(diǎn)位置固定不變,定點(diǎn)數(shù)所表示的數(shù)的范圍非常有限,不能同時(shí)表達(dá)特別大或特別小的數(shù),所以才出現(xiàn)了浮點(diǎn)數(shù),以此來擴(kuò)充數(shù)的范圍,同時(shí)浮點(diǎn)數(shù)也廣泛應(yīng)用于精度要求高的場(chǎng)合。簡(jiǎn)單的
    的頭像 發(fā)表于 08-22 16:06 ?7859次閱讀
    <b class='flag-5'>定點(diǎn)</b>數(shù)和<b class='flag-5'>浮點(diǎn)</b>數(shù)的概念 <b class='flag-5'>浮點(diǎn)</b>數(shù)二進(jìn)制序列與指數(shù)表達(dá)式之間的轉(zhuǎn)化

    python如何保留小數(shù)

    對(duì)Python中的小數(shù)處理有更深入的理解。 引言: 在計(jì)算機(jī)編程中,浮點(diǎn)數(shù)是種最常用的數(shù)據(jù)類型,用于表示實(shí)數(shù)。然而,由于計(jì)算機(jī)的內(nèi)部存儲(chǔ)方式以及浮點(diǎn)數(shù)的特性,導(dǎo)致
    的頭像 發(fā)表于 11-23 16:37 ?1916次閱讀