資源描述:
《用定點(diǎn)DSP處理器實(shí)現(xiàn)浮點(diǎn)DSP仿真.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、用定點(diǎn)DSP處理器實(shí)現(xiàn)浮點(diǎn)DSP仿真作者:61IC????文章來(lái)源:本站原創(chuàng)????點(diǎn)擊數(shù):1454????更新時(shí)間:2005-8-30?DSP處理器可以分為兩大類(lèi):定點(diǎn)和浮點(diǎn)。一般說(shuō)來(lái),先進(jìn)的定點(diǎn)DSP家族速度快,功耗低,價(jià)格也便宜;而浮點(diǎn)DSP則計(jì)算精確,動(dòng)態(tài)范圍大。設(shè)計(jì)師在設(shè)計(jì)DSP時(shí),如果對(duì)于設(shè)計(jì)的應(yīng)用僅僅要求它具備很少的浮點(diǎn)功能時(shí),則往往陷入了十分尷尬的困境,通常的解決辦法是勉強(qiáng)采用價(jià)格高的浮點(diǎn)DSP設(shè)計(jì)。然而現(xiàn)在,由于定點(diǎn)處理器可以運(yùn)行在相當(dāng)高的時(shí)鐘速度,因此可以仿真浮點(diǎn)的運(yùn)算。這時(shí)設(shè)計(jì)師可
2、以犧牲浮點(diǎn)的計(jì)算效率來(lái)?yè)Q取較低的成本和較小的功耗。這樣的設(shè)計(jì),雖然并不能適應(yīng)真正的浮點(diǎn)應(yīng)用;但是卻給設(shè)計(jì)師提供了一個(gè)難得的機(jī)會(huì),使他們能夠從尷尬的困境中解脫出來(lái)。在表達(dá)固定小數(shù)點(diǎn)數(shù)字時(shí),小數(shù)點(diǎn)位置的確定決定于究竟是準(zhǔn)備采用分?jǐn)?shù)運(yùn)算,還是整數(shù)運(yùn)算。如何選擇小數(shù)點(diǎn)的位置,將直接影響數(shù)值運(yùn)算是否簡(jiǎn)單,存儲(chǔ)器需求的多寡;也表現(xiàn)為是在數(shù)值的動(dòng)態(tài)范圍與數(shù)值精度之間的一種折衷選擇。如果所表達(dá)的數(shù)值既要求動(dòng)態(tài)范圍寬廣,又要求數(shù)值的精度十分精確,最好選擇小數(shù)點(diǎn)的位置可以根據(jù)數(shù)值的大小進(jìn)行移動(dòng)的表達(dá)方式。浮點(diǎn)數(shù)由指數(shù)部分和
3、尾數(shù)部分組成,既可以表達(dá)很大的數(shù)值,也可以表達(dá)數(shù)值很小的數(shù)。而浮點(diǎn)數(shù)的指數(shù)與尾數(shù)部分,則可以分別用定點(diǎn)數(shù)格式來(lái)表示。規(guī)格化了的浮點(diǎn)數(shù)不包含額外的符號(hào)位,也就是說(shuō)所有的字符位都是有效位。規(guī)格化后的數(shù)字,對(duì)于一定的位數(shù),可以實(shí)現(xiàn)最充分的利用。規(guī)格化以后還可以簡(jiǎn)化兩個(gè)數(shù)值的比較運(yùn)算。對(duì)于指數(shù)不同的數(shù)值,指數(shù)大的數(shù),數(shù)值大;對(duì)于指數(shù)相同的數(shù),才需要比較尾數(shù)的大小。絕大多數(shù)的運(yùn)算程序都假定輸入和輸出都是規(guī)格化的數(shù)。在應(yīng)用定點(diǎn)DSP進(jìn)行仿真浮點(diǎn)計(jì)算時(shí),究竟是采用完整的IEEE-754格式,還是采用非IEEE兼容的格
4、式,需要根據(jù)在計(jì)算時(shí)首先考慮數(shù)值的動(dòng)態(tài)范圍,還是首先考慮數(shù)值的精度來(lái)決定。有時(shí)還需要采用雙精度浮點(diǎn)模式才能滿足要求。IEEE單精度浮點(diǎn)格式愫??庫(kù)??梢酝ㄟ^(guò)C/C++語(yǔ)言或者匯編語(yǔ)言來(lái)調(diào)用。這些程序庫(kù)應(yīng)用定點(diǎn)邏輯進(jìn)行浮點(diǎn)的仿真運(yùn)算。為了簡(jiǎn)化計(jì)算,有時(shí)使用修改后的IEEE-754更方便。這樣可能降低運(yùn)算周期達(dá)10倍之多。應(yīng)用定點(diǎn)DSP進(jìn)行浮點(diǎn)計(jì)算的算法BlackfinDSP的寄存器堆包(file)含有16個(gè)16-bit寄存器,也可以把它當(dāng)作8個(gè)32-bit寄存器來(lái)使用。有兩個(gè)計(jì)算單元,數(shù)據(jù)寄存器堆可以存放
5、32-bit數(shù)據(jù)。整套的算術(shù)計(jì)算和邏輯運(yùn)算指令集都支持仿真浮點(diǎn)計(jì)算,非IEEE格式;也支持可以顯著簡(jiǎn)化計(jì)算要求的多重精度的定點(diǎn)表示方法。為了能夠充分利用DSP的寄存器堆包資源,仿真浮點(diǎn)計(jì)算程序可以使用雙字格式,即用一個(gè)16-bit字表示指數(shù),另一個(gè)16-bit字表示尾數(shù)。兩個(gè)字都使用帶符號(hào)位的2的補(bǔ)碼表示法。DSP的體系結(jié)構(gòu),除了可以將16-bit與32-bit寄存器結(jié)合使用以外,還包括有可以簡(jiǎn)化浮點(diǎn)運(yùn)算算法的特殊指令:SIGNBITS指令,是將數(shù)的符號(hào)位返還給該數(shù)值。實(shí)際是直接傳給ASHIFT,而AS
6、HIFT則可以移動(dòng)小數(shù)點(diǎn)的位置,將尾數(shù)格式化??梢詫⒁粋€(gè)定點(diǎn)數(shù)變化為一個(gè)浮點(diǎn)數(shù)。變化的方法是:首先通過(guò)確定符號(hào)位數(shù),再將小數(shù)點(diǎn)按照符號(hào)位數(shù)移動(dòng),然后再將尾數(shù)格式化。反之,一個(gè)浮點(diǎn)數(shù)也可以通過(guò)移動(dòng)尾數(shù)的小數(shù)點(diǎn)位置,來(lái)變換成為定點(diǎn)數(shù)。小數(shù)點(diǎn)移動(dòng)的位數(shù)就是符號(hào)位的位數(shù)??梢圆捎孟率龇椒ǎ瑢?shí)現(xiàn)浮點(diǎn)數(shù)的加法:以?xún)蓚€(gè)數(shù)中具有較大指數(shù)的指數(shù)作為和數(shù)的指數(shù);向右移動(dòng)比較小的數(shù)的尾數(shù),移動(dòng)的位數(shù)等于兩個(gè)數(shù)的指數(shù)的差;將尾數(shù)相加,得到和數(shù)的分?jǐn)?shù)部分;將和數(shù)格式化。兩個(gè)用浮點(diǎn)格式表示的數(shù),進(jìn)行乘法運(yùn)算時(shí),比進(jìn)行加法運(yùn)算更簡(jiǎn)單
7、。因?yàn)椴恍枰獙蓚€(gè)數(shù)的小數(shù)點(diǎn)位對(duì)齊。乘法的運(yùn)算算法如下所述:將兩個(gè)數(shù)的指數(shù)相加;將兩個(gè)數(shù)的尾數(shù)相乘,即為乘積數(shù)的分?jǐn)?shù)部分;將乘積數(shù)格式化。浮點(diǎn)的乘/累加過(guò)程則是先依次求兩個(gè)操作數(shù)的積,累計(jì)求N次,再計(jì)算其總和。可以首先重復(fù)調(diào)用浮點(diǎn)乘法程序,再調(diào)用加法程序。但是如果使用乘/累加程序函數(shù),則由于省去了內(nèi)務(wù)開(kāi)銷(xiāo)而更有效率。乘/累加算法可以按以下的方式實(shí)現(xiàn):先求第一組兩個(gè)操作數(shù)的乘積,并對(duì)此積進(jìn)行規(guī)格化;取第二組操作數(shù),求乘積,再對(duì)其進(jìn)行規(guī)格化;將求得的積,和累加的和進(jìn)行比較,對(duì)其中的積,或累加的和進(jìn)行移位,使
8、小數(shù)點(diǎn)對(duì)齊;將這個(gè)乘積,和累加的和相加,并對(duì)求得的結(jié)果進(jìn)行規(guī)格化;重復(fù)進(jìn)行第2到第4過(guò)程,一直到將全部操作數(shù)都進(jìn)行完畢為止。雙倍精度,定點(diǎn)表示方法對(duì)于許多應(yīng)用場(chǎng)合,16-bit定點(diǎn)數(shù)據(jù)的精度顯得有些不夠;而因此就采用浮點(diǎn)仿真運(yùn)算則又感覺(jué)到計(jì)算量太大。在這種情況下,如果采用擴(kuò)展精度的定點(diǎn)仿真運(yùn)算則能滿足系統(tǒng)的要求。使用高速定點(diǎn)DSP可以保證顯著地節(jié)省所需要進(jìn)行的處理過(guò)程。擴(kuò)展精度的數(shù)值,可以使用31-bit或者32-bit定點(diǎn)格式表示。對(duì)于1