下面我們來簡單地聊一聊定點(diǎn)小數(shù)的常規(guī)格式、相對于浮點(diǎn)小數(shù)的優(yōu)勢與劣勢,以及如何使用Lattice ECP3/ECP5的sysDSP乘法器來實(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ù)的值可以表示為:

無符號(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ù)值溢出的問題(包括向上溢出和向下溢出)。所謂向上溢出是指運(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的值過大會(huì)浪費(fèi)資源,過小又會(huì)造成精度丟失。
2.定點(diǎn)數(shù)與浮點(diǎn)數(shù)的比較
與浮點(diǎn)數(shù)相比,定點(diǎn)數(shù)具有如下的一些優(yōu)勢:
(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)算的開銷。
(2)更高的性能
浮點(diǎn)運(yùn)算在消耗更多資源的同時(shí),也會(huì)給MAP和PAR帶來壓力,從而導(dǎo)致整個(gè)設(shè)計(jì)的Fmax降低。在同樣規(guī)模的運(yùn)算量下,采用定點(diǎn)數(shù)的設(shè)計(jì)則可以獲得更高的Fmax。
與此同時(shí),相對于浮點(diǎn)數(shù),定點(diǎn)數(shù)也有很多的缺陷和不足:
(1)能夠表示數(shù)值的動(dòng)態(tài)范圍較小
(2)數(shù)值溢出的問題
浮點(diǎn)數(shù)由于采用了統(tǒng)一的格式(IEEE-754),且動(dòng)態(tài)范圍很大,因此基本不存在數(shù)值溢出的問題。但是定點(diǎn)數(shù)則需要程序設(shè)計(jì)中合理地選取w和wf的值,并且沒有統(tǒng)一的格式規(guī)范也為復(fù)雜程序的協(xié)同設(shè)計(jì)帶來麻煩。
從應(yīng)用的需求來看,很多場合下,采用定點(diǎn)數(shù)即可滿足系統(tǒng)的性能需求,但是也有一些場合對精度的要求很高,如雷達(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)勢。此外,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之間的對應(yīng)關(guān)系。
下面來舉一個(gè)簡單的例子:兩個(gè)32位的有符號(hào)定點(diǎn)小數(shù)相乘,其中w=32,wf=23。即

此時(shí),

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

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

上面的例子,是將有符號(hào)數(shù)轉(zhuǎn)換為無符號(hào)數(shù),再進(jìn)行運(yùn)算的(即采用原碼直接運(yùn)算的)。實(shí)際上,我們還可以直接將MULT的Module中的Data Type配置為Signed,此時(shí)操作數(shù)將以補(bǔ)碼的形式進(jìn)行運(yùn)算。
-
FPGA
+關(guān)注
關(guān)注
1659文章
22369瀏覽量
633244 -
乘法器
+關(guān)注
關(guān)注
9文章
221瀏覽量
38667
原文標(biāo)題:【精選博文】FPGA定點(diǎn)小數(shù)計(jì)算(一)
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
浮點(diǎn)處理器相對于定點(diǎn)處理器有何不同
Q格式的表示方式以及相應(yīng)的運(yùn)算
定點(diǎn)小數(shù)運(yùn)算
定點(diǎn)數(shù)表示實(shí)數(shù)的方法以及定點(diǎn)數(shù)在硬件上的運(yùn)算驗(yàn)證
第7章 DSP定點(diǎn)數(shù)和浮點(diǎn)數(shù)
基于牛頓迭代法的FPGA定點(diǎn)小數(shù)計(jì)算
定點(diǎn)小數(shù)的表示方法
定點(diǎn)小數(shù)的編碼方法
IEEE754浮點(diǎn)數(shù)格式
一文了解FPGA浮點(diǎn)小數(shù)與定點(diǎn)小數(shù)的換算及應(yīng)用
LM4F定點(diǎn)格式于浮點(diǎn)格式的對比和浮點(diǎn)運(yùn)算的應(yīng)用詳細(xì)中文資料
FPGA定點(diǎn)小數(shù)的常規(guī)格式、相對于浮點(diǎn)小數(shù)的優(yōu)勢與劣勢和計(jì)算的概述
FOC之定點(diǎn)小數(shù)運(yùn)算
FPGA定點(diǎn)小數(shù)的常規(guī)格式、相對于浮點(diǎn)小數(shù)的優(yōu)勢與劣勢
評論