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

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

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

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

SwM2_ChinaAET ? 來(lái)源:未知 ? 作者:李倩 ? 2018-03-27 08:54 ? 次閱讀

下面我們來(lái)簡(jiǎn)單地聊一聊定點(diǎn)小數(shù)的常規(guī)格式、相對(duì)于浮點(diǎn)小數(shù)的優(yōu)勢(shì)與劣勢(shì),以及如何使用Lattice ECP3/ECP5的sysDSP乘法器來(lái)實(shí)現(xiàn)基本的定點(diǎn)小數(shù)運(yùn)算(加法和乘法)。并會(huì)在后續(xù)的文章中介紹定點(diǎn)小數(shù)的除法、平方根、平方根倒數(shù)和CORDIC算法的基本理論和HDL的實(shí)現(xiàn)等。

1.定點(diǎn)小數(shù)的常規(guī)格式

常規(guī)的定點(diǎn)小數(shù)格式如下圖:

其中,有符號(hào)定點(diǎn)小數(shù)的值可以表示為:

無(wú)符號(hào)定點(diǎn)小數(shù)的值可以表示為:

定點(diǎn)數(shù)的位寬w和小數(shù)部分的位寬wf可以看做是定點(diǎn)數(shù)的兩個(gè)要素。其中,w決定了定點(diǎn)數(shù)的動(dòng)態(tài)范圍,wf決定了定點(diǎn)數(shù)的精度。需要注意的是,在進(jìn)行定點(diǎn)數(shù)運(yùn)算的時(shí)候,需要注意數(shù)值溢出的問(wèn)題(包括向上溢出和向下溢出)。所謂向上溢出是指運(yùn)算結(jié)果超出了定點(diǎn)數(shù)整數(shù)部分所能表示的范圍,向下溢出表示運(yùn)算結(jié)果超出了定點(diǎn)數(shù)小數(shù)部分所能表示的范圍。顯然,一旦溢出將會(huì)造成計(jì)算精度的丟失,甚至是計(jì)算結(jié)果的錯(cuò)誤。因此,合理地選擇w和wf至關(guān)重要,w和wf的值過(guò)大會(huì)浪費(fèi)資源,過(guò)小又會(huì)造成精度丟失。

2.定點(diǎn)數(shù)與浮點(diǎn)數(shù)的比較

與浮點(diǎn)數(shù)相比,定點(diǎn)數(shù)具有如下的一些優(yōu)勢(shì):

(1)更少的資源

通常在FPGA中進(jìn)行浮點(diǎn)運(yùn)算時(shí),會(huì)消耗更多的LUT、寄存器和乘法器。定點(diǎn)數(shù)由于不需要存儲(chǔ)小數(shù)點(diǎn)的位置,所以定點(diǎn)數(shù)的運(yùn)算消耗的資源基本上和同樣位寬的整數(shù)運(yùn)算相當(dāng),遠(yuǎn)遠(yuǎn)低于浮點(diǎn)運(yùn)算的開(kāi)銷。

(2)更高的性能

浮點(diǎn)運(yùn)算在消耗更多資源的同時(shí),也會(huì)給MAP和PAR帶來(lái)壓力,從而導(dǎo)致整個(gè)設(shè)計(jì)的Fmax降低。在同樣規(guī)模的運(yùn)算量下,采用定點(diǎn)數(shù)的設(shè)計(jì)則可以獲得更高的Fmax。

與此同時(shí),相對(duì)于浮點(diǎn)數(shù),定點(diǎn)數(shù)也有很多的缺陷和不足:

(1)能夠表示數(shù)值的動(dòng)態(tài)范圍較小

(2)數(shù)值溢出的問(wèn)題

浮點(diǎn)數(shù)由于采用了統(tǒng)一的格式(IEEE-754),且動(dòng)態(tài)范圍很大,因此基本不存在數(shù)值溢出的問(wèn)題。但是定點(diǎn)數(shù)則需要程序設(shè)計(jì)中合理地選取w和wf的值,并且沒(méi)有統(tǒng)一的格式規(guī)范也為復(fù)雜程序的協(xié)同設(shè)計(jì)帶來(lái)麻煩。

從應(yīng)用的需求來(lái)看,很多場(chǎng)合下,采用定點(diǎn)數(shù)即可滿足系統(tǒng)的性能需求,但是也有一些場(chǎng)合對(duì)精度的要求很高,如雷達(dá)成像,醫(yī)學(xué)成像,高精度數(shù)據(jù)采集與分析等則需要采用浮點(diǎn)數(shù)進(jìn)行運(yùn)算。

3.ECP3/ECP5 中的sysDSP乘法器

Lattice的ECP3/ECP5系列FPGA內(nèi)部集成了多個(gè)sysDSP架構(gòu)的乘法器模塊,基于sysDSP,用戶可以便捷地設(shè)計(jì)出低功耗高性能的數(shù)字信號(hào)處理應(yīng)用。相比于用LUT實(shí)現(xiàn)的乘法器,基于sysDSP的乘法器具有顯著的性能優(yōu)勢(shì)。此外,Lattice還提供了多種基于sysDSP的IP,如FFT、FIR和CIC等。

ECP5中sysDSP的Slice結(jié)構(gòu)圖如下圖所示:

4.定點(diǎn)小數(shù)的加法與乘法

定點(diǎn)小數(shù)的加法與乘法運(yùn)算基本上和普通整數(shù)的加法與乘法一致,但是需要注意運(yùn)算結(jié)果的w和wf的與原值的w和wf之間的對(duì)應(yīng)關(guān)系。

下面來(lái)舉一個(gè)簡(jiǎn)單的例子:兩個(gè)32位的有符號(hào)定點(diǎn)小數(shù)相乘,其中w=32,wf=23。即

此時(shí),

我們可以直接使用Clarity來(lái)生成整除乘法器的Module,如下圖所示。其中符號(hào)位可以提取出來(lái)進(jìn)行異或操作,剩余的31位進(jìn)行乘法運(yùn)算。

如果需將運(yùn)算結(jié)果也轉(zhuǎn)換為和輸入相同的格式,則可以進(jìn)行如下的操作:

上面的例子,是將有符號(hào)數(shù)轉(zhuǎn)換為無(wú)符號(hào)數(shù),再進(jìn)行運(yùn)算的(即采用原碼直接運(yùn)算的)。實(shí)際上,我們還可以直接將MULT的Module中的Data Type配置為Signed,此時(shí)操作數(shù)將以補(bǔ)碼的形式進(jìn)行運(yùn)算。

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

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598904
  • 乘法器
    +關(guān)注

    關(guān)注

    8

    文章

    204

    瀏覽量

    36850

原文標(biāo)題:【精選博文】FPGA定點(diǎn)小數(shù)計(jì)算(一)

文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    浮點(diǎn)處理器相對(duì)于定點(diǎn)處理器有何不同

    對(duì)程序做出改動(dòng)。浮點(diǎn)處理器相對(duì)于定點(diǎn)處理器有如下好處: 編程更簡(jiǎn)單 性能更優(yōu),比如除法,開(kāi)方,F(xiàn)FT和IIR濾波等算法運(yùn)算效率更高。 程序魯棒性更強(qiáng)。 一、IEEE754格式
    的頭像 發(fā)表于 03-07 08:57 ?1.1w次閱讀
    <b class='flag-5'>浮點(diǎn)</b>處理器<b class='flag-5'>相對(duì)于</b><b class='flag-5'>定點(diǎn)</b>處理器有何不同

    Q格式的表示方式以及相應(yīng)的運(yùn)算

    Q格式是二進(jìn)制的定點(diǎn)數(shù)格式,相對(duì)于浮點(diǎn)數(shù),Q格式指定了相應(yīng)的
    的頭像 發(fā)表于 09-23 15:20 ?4043次閱讀

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

    。7.1.2 浮點(diǎn)數(shù) 在計(jì)算機(jī)系統(tǒng)的發(fā)展過(guò)程中,曾經(jīng)提出過(guò)多種方法表達(dá)實(shí)數(shù)。典型的比如相對(duì)于浮點(diǎn)數(shù)的定點(diǎn)數(shù)(Fixed Point Number)。在這種表達(dá)方式中,
    發(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

    IEEE 754標(biāo)準(zhǔn)浮點(diǎn)格式可分為哪幾種

    IEEE 754標(biāo)準(zhǔn)浮點(diǎn)格式可分為符號(hào)位s,指數(shù)位e以及尾數(shù)位f三部分。其中真實(shí)的指數(shù)E相對(duì)于實(shí)際的指數(shù)有一個(gè)偏移量,所以E的值應(yīng)該為e-Bias,Bias即為指數(shù)偏移量。這樣做的好處是便于使用無(wú)
    發(fā)表于 07-15 09:12

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

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

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

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

    IEEE754浮點(diǎn)數(shù)格式

    在計(jì)算機(jī)中,需要對(duì)小數(shù)進(jìn)行計(jì)算,因此需要相應(yīng)的電路支持。支持小數(shù)計(jì)算的電路有兩種:定點(diǎn)部件和浮點(diǎn)部件。定點(diǎn)部件與整數(shù)部件沒(méi)有本質(zhì)區(qū)別,只是要
    發(fā)表于 11-17 11:09 ?1.5w次閱讀

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

    定點(diǎn)小數(shù)運(yùn)算 有些FPGA中是不能直接對(duì)浮點(diǎn)數(shù)進(jìn)行操作的,只能采用定點(diǎn)數(shù)進(jìn)行數(shù)值運(yùn)算。 所謂定點(diǎn)
    的頭像 發(fā)表于 06-28 15:49 ?6872次閱讀

    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'>格式</b>于<b class='flag-5'>浮點(diǎn)</b><b class='flag-5'>格式</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)的位置是固定的,所以就沒(méi)有必要儲(chǔ)存它(如果儲(chǔ)存了小數(shù)點(diǎn)的位置,那就是
    的頭像 發(fā)表于 06-12 19:34 ?9329次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>定點(diǎn)</b><b class='flag-5'>小數(shù)</b>的<b class='flag-5'>常規(guī)格式</b>、<b class='flag-5'>相對(duì)于</b><b class='flag-5'>浮點(diǎn)</b><b class='flag-5'>小數(shù)</b>的<b class='flag-5'>優(yōu)勢(shì)</b>與<b class='flag-5'>劣勢(shì)</b>和計(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 ?6234次閱讀
    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 ?4421次閱讀

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

    計(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 ?4099次閱讀

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

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