国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

定點(diǎn)DSP中高精度小數(shù)乘法運(yùn)算研究

2013-03-19 02:02周澤湘歐陽(yáng)明星
關(guān)鍵詞:小數(shù)定點(diǎn)乘法

周澤湘,歐陽(yáng)明星

(廣東松山職業(yè)技術(shù)學(xué)院,廣東韶關(guān)512126)

0 引言

DSP(Digital Signer Processor)是一種用于數(shù)字信號(hào)處理運(yùn)算的專用處理器,內(nèi)部采用了改進(jìn)型哈佛結(jié)構(gòu)和多總線的并行結(jié)構(gòu),以及一些專用的硬件處理單元,使得DSP 數(shù)字信號(hào)處理器能在單周期內(nèi)完成復(fù)雜的數(shù)字信號(hào)處理的數(shù)學(xué)運(yùn)算。DSP 內(nèi)部還集成有專用并行硬件單元,其結(jié)合匯編語(yǔ)言編程實(shí)現(xiàn)數(shù)字信號(hào)處理的核心算法可以提高程序效率[1]。DSP所處理的數(shù)據(jù)類型有定點(diǎn)DSP 和浮點(diǎn)DSP,其中以定點(diǎn)DSP 在市場(chǎng)上較為常見,而如何在定點(diǎn)DSP 中實(shí)現(xiàn)小數(shù)運(yùn)算是一個(gè)關(guān)鍵問(wèn)題。本文論述了在定點(diǎn)DSP 中實(shí)現(xiàn)小數(shù)乘法運(yùn)算的方法,研究了不同Qm.n 規(guī)格數(shù)精度問(wèn)題,并詳細(xì)討論和分析了在定點(diǎn)DSP 中進(jìn)行小數(shù)運(yùn)算的操作方法。

1 定點(diǎn)數(shù)的Qm.n 表示方法

1.1 Qm.n 格式

字長(zhǎng)是計(jì)算機(jī)CPU 在一次操作中能處理單位字的長(zhǎng)度。字長(zhǎng)決定了數(shù)的范圍和精度,根據(jù)DSP 型號(hào)不同,有16、24 及32 位等不同字長(zhǎng)。定點(diǎn)DSP 處理的都是定點(diǎn)數(shù),以一個(gè)16 位字長(zhǎng)DSP 為例,規(guī)定最高位為符號(hào)位S,S 為0 表示正數(shù),S 為1 表示負(fù)數(shù),余下15 位按其二進(jìn)制權(quán)值以補(bǔ)碼形式表示數(shù)的大小。當(dāng)表示小數(shù)時(shí),先確定小數(shù)點(diǎn)在16 位數(shù)中的位置即定標(biāo),小數(shù)點(diǎn)右邊的二進(jìn)制權(quán)值為負(fù),小數(shù)點(diǎn)左邊的二進(jìn)制權(quán)值為正。正權(quán)值表示數(shù)的整數(shù)部分,負(fù)權(quán)值表示數(shù)的小數(shù)部分,這樣人為地?cái)U(kuò)大了數(shù)的表示范圍,使得在定點(diǎn)DSP 中可以表示小數(shù)。這種在定點(diǎn)DSP 中表示小數(shù)的方法稱為Qm.n 表示方法,其中m 表示整數(shù)二進(jìn)制位數(shù),n 表示小數(shù)二進(jìn)制位數(shù),Qm.n 又可用Qn 來(lái)表示,如Q0.15 在實(shí)際中通常使用Q15 表示。在定點(diǎn)DSP 中,相同字長(zhǎng)的CPU 不同Qm.n 格式表示數(shù)的精度和范圍均不同,Qm.n 的數(shù)的表示方法如圖1所示[2]。以Q3.12 為例,即在16 位數(shù)中,除1位表示數(shù)的符號(hào)外,用3 位二進(jìn)制表示整數(shù),用12 位二進(jìn)制表示小數(shù),m 決定數(shù)的范圍,n決定數(shù)的精度,二者互斥,顯然m 越大表示數(shù)的范圍越大,但表示數(shù)的精度越低;n 越大表示數(shù)的范圍越小,但表示數(shù)的精度越高,故Q3.12 表示數(shù)的范圍為-8~8,表示數(shù)的精度為1/212,即Q 值越大,表示數(shù)的精度越高。

比如執(zhí)教賈平凹的《月跡》時(shí),首先讓學(xué)生充分感知課文,反復(fù)練讀達(dá)到“文通字順”;然后讓學(xué)生選擇自己喜歡的描寫月光的句子,讀一讀,并引導(dǎo)學(xué)生交流喜歡的原因,從而幫助學(xué)生再現(xiàn)畫面,體會(huì)意境;最后讓學(xué)生配上柔柔的樂(lè)曲,圖文結(jié)合,美美地賞讀,在賞讀中進(jìn)一步感悟語(yǔ)言,形成語(yǔ)感,在美讀中那皎潔的月光也仿佛灑向了孩子那稚嫩的心靈。

我走進(jìn)家門時(shí),劉鐵頭已經(jīng)等我好一陣了。兒子正往煤球爐上坐鍋添水準(zhǔn)備熬湯。劉鐵頭看著兒子忙活了一陣,對(duì)我豎了豎大拇指。窮人的孩子早當(dāng)家啊,你看才多大個(gè)孩子就中用了,說(shuō)到底,還是你有福啊四眼兒張。說(shuō)著,就從塑料袋里掏出把炒花生米往兒子兜里放。

圖1 Qm.n 的數(shù)的表示方法

不同字長(zhǎng)的CPU,Q 值越大,表示數(shù)的精度越高,能分辨的小數(shù)越小,常見的Qm.n 格式數(shù)的范圍和精度如表1所示。

表1 常見的Qm.n 格式數(shù)的范圍和精度

1.2 Qm.n 數(shù)的規(guī)格化與反規(guī)格化

TI 公司生產(chǎn)的定點(diǎn)DSP 有C2000、C5000和C6000 等多種型號(hào),C2000 系列DSP 主要用于控制領(lǐng)域;C5000系列DSP主要用于數(shù)字語(yǔ)音等領(lǐng)域;C6000 系列DSP 主要用于高端圖像處理等[4]。TMS320F2812 是C2000 系列中的代表型號(hào),字長(zhǎng)為32 bit,TMS320C5402 為C5000 系列的典型型號(hào),字長(zhǎng)為16 bit,TMS3206402 為C6000 系列的典型型號(hào),字長(zhǎng)為32 bit。在定點(diǎn)DSP 中進(jìn)行數(shù)字信號(hào)處理的小數(shù)乘法運(yùn)算時(shí),有幾個(gè)關(guān)鍵問(wèn)題值得研究:①參與運(yùn)算的小數(shù)應(yīng)表示成與DSP 的CPU 字長(zhǎng)相適應(yīng)的Qm.n 格式,如在TMS320C54x DSP 中輸入數(shù)據(jù)使用Q15 格式規(guī)格化,而在TMS320F2812 DSP 中則需使用Q31 規(guī)格化。②在編譯器中不能直接表示小數(shù),以CCS2.0 編譯器為例,在進(jìn)行匯編語(yǔ)言編程時(shí),在定點(diǎn)DSP 中無(wú)法編輯小數(shù),在對(duì)小數(shù)進(jìn)行規(guī)格化處理時(shí),應(yīng)寫成定點(diǎn)數(shù)的形式,如0.3 按Q15 進(jìn)行規(guī)格化,可以寫成3* 32 768/10,其結(jié)果與0.3* 32 768 等價(jià),這樣避免了編譯器出現(xiàn)小數(shù),但需注意應(yīng)先乘再除,否則無(wú)效。③在進(jìn)行小數(shù)乘法運(yùn)算時(shí)會(huì)產(chǎn)生冗余符號(hào)位,如0.5×(-0.375),按Q3 進(jìn)行規(guī)格化處理,正確結(jié)果為1110100(-0.187 5=-12/26),當(dāng)將其送入累加器時(shí),為了保持乘積符號(hào)擴(kuò)展為8 位結(jié)果11110100(-0.093 75=-12/27),擴(kuò)展了一個(gè)多余的符號(hào)位之后導(dǎo)致結(jié)果錯(cuò)誤,必須消除該冗余的符號(hào)位。DSP 乘法器有冗余符號(hào)位自動(dòng)消除功能,在進(jìn)行小數(shù)乘法運(yùn)算時(shí),將FRCT 位置為1后會(huì)自動(dòng)將結(jié)果左移1 位,以確保結(jié)果正確。本例中11110100 左移1 位后結(jié)果為11101000(-24/27=-0.187 5)。④應(yīng)避免乘法溢出,在DSP中,乘、加運(yùn)算結(jié)果一般放在累加器中,累加器字長(zhǎng)是CPU 字長(zhǎng)的數(shù)倍,如TMS320C54x 的累加器字長(zhǎng)為40 位,以保證多個(gè)16 位數(shù)運(yùn)算時(shí)不會(huì)溢出。

表2 Q12 格式規(guī)格化與反規(guī)格化的數(shù)對(duì)比

表3 Q15 格式規(guī)格化與反規(guī)格化的數(shù)對(duì)比

表4 Q31 格式規(guī)格化與反規(guī)格化的數(shù)對(duì)比

在TMS320C54x 定點(diǎn)DSP 中,進(jìn)行小數(shù)乘法運(yùn)算之前,先將ST1 寄存器中的FRCT 位置1,每次進(jìn)行乘法運(yùn)算之后DSP 自動(dòng)將結(jié)果左移1 位,消除冗余符號(hào)位。在數(shù)字信號(hào)處理中,乘-累加運(yùn)算是最常見的運(yùn)算,如實(shí)現(xiàn)IIR和FIR 數(shù)字濾波,或FFT 快速傅里葉變換[5]。在DSP 中計(jì)算乘-累加運(yùn)算如下式[4]:

由GC- MS分析得到的質(zhì)譜數(shù)于NIST08.LIB和NIST14.LIB標(biāo)準(zhǔn)譜庫(kù)的檢索,查對(duì)相關(guān)質(zhì)譜資料,分別對(duì)各峰加以確認(rèn),鑒定樣品中的揮發(fā)性香氣成分,用峰面積歸一法分析各組成分相對(duì)含量。

2 DSP 中小數(shù)乘法關(guān)鍵問(wèn)題

Qm.n 表示數(shù)的方法是人為設(shè)定的為了在定點(diǎn)DSP 中拓寬數(shù)的表示范圍的一種表示方法,這種方法已被TI 公司所接受,并成為其定點(diǎn)DSP的LIB 庫(kù)接口標(biāo)準(zhǔn)數(shù)據(jù)類型[2]。以TMS329C54x的定點(diǎn)DSP 為例,TI 公司提供的各種適用于定點(diǎn)DSP 使用的lib 庫(kù),進(jìn)行小數(shù)運(yùn)算時(shí),輸入、輸出數(shù)據(jù)均采用Q15 格式[2-3]。DSP 無(wú)法自動(dòng)識(shí)別這種數(shù),在DSP 進(jìn)行數(shù)學(xué)運(yùn)算之前,應(yīng)先將數(shù)按約定的格式進(jìn)行規(guī)格化處理才能進(jìn)行運(yùn)算。DSP運(yùn)算完成的結(jié)果依舊是一個(gè)定點(diǎn)數(shù),需要將其按相反的規(guī)則進(jìn)行反規(guī)格化處理。使用Qm.n 表示數(shù)時(shí),規(guī)格化數(shù)的方法為將該小數(shù)乘以2n 并取整,反規(guī)格化時(shí)將運(yùn)算得到的整數(shù)結(jié)果除以2n 還原成小數(shù)。若小數(shù)是負(fù)數(shù),則應(yīng)將結(jié)果進(jìn)行補(bǔ)碼操作。以小數(shù)0.768 93 為例,按Q15 規(guī)格化乘以32 768 得到結(jié)果為626CH,將626CH除以32 768 之后得到的結(jié)果為0.768 920。顯然,數(shù)規(guī)格化之后與規(guī)格化之前有誤差,這是由定點(diǎn)DSP 運(yùn)算過(guò)程的四舍五入所造成。而這個(gè)誤差與Qm.n 數(shù)精度有關(guān),取0.567 1、0.234 21、-0.456 781、0.679 202 3、-0.232 345 624 439這5 個(gè)數(shù),分別使用Q12、Q15、Q31 進(jìn)行規(guī)格化和反規(guī)格化處理,其結(jié)果如表2~4所示。

“哦,我半個(gè)月前去外地出差,在那邊遇到一個(gè)自稱老賈的人,他賣給我的。看來(lái)我遇到的老賈八成就是你說(shuō)的那個(gè)人了?!敝心耆苏f(shuō)著抱緊了箱子,生怕孟導(dǎo)急了來(lái)?yè)尅?/p>

3 小數(shù)乘法在DSP 中實(shí)現(xiàn)

由表2~4 可知,相同的數(shù),使用不同的Qm.n 格式進(jìn)行規(guī)格化處理,其誤差相差50~200×104倍,當(dāng)然,小數(shù)有效位數(shù)也影響規(guī)格化和反規(guī)格化結(jié)果。

其中,x = {0.35,-0.23,-0.4,0.1},a={0.6,0.5,-0.1,-0.2},輸入數(shù)據(jù)為小數(shù),計(jì)算結(jié)果y 也是小數(shù)。完成公式(1)中小數(shù)運(yùn)算的步驟為:①建立.bbs 段,為x、a 分別保留4 個(gè)存儲(chǔ)單元,為y 分配2 個(gè)存儲(chǔ)單元,建立.data 段,存放8 個(gè)Q15 規(guī)格化的小數(shù);②將.data 段數(shù)據(jù)搬移到.bss,分別賦值給x、a;③置位FRCT,以消除冗余符號(hào)位;④執(zhí)行4 次MAC 指令,完成計(jì)算ai×xi運(yùn)算;⑤保存結(jié)果到y(tǒng)。按該思路編程如下:

鏈接器的CMD 配置文件如下

在CCS2.0 中編輯編譯程序并執(zhí)行,RAM執(zhí)行結(jié)果如圖2所示。

圖2 執(zhí)行結(jié)果

進(jìn)一步分析上述程序,每一步乘-累加運(yùn)算結(jié)果分解如表5所示,將程序中MAC 指令改成MPY 單乘法指令,并分別將FRCT 置0 和置1 之后執(zhí)行程序結(jié)果如表5 第4、第5 行所示。與原數(shù)相對(duì)照,第4 行受冗余符號(hào)位影響,所有結(jié)果均不正確,第5 行為FRCT 位置1后每次進(jìn)行乘法運(yùn)算后結(jié)果自動(dòng)左移1 位,消除冗余符號(hào)位,與原數(shù)對(duì)照,結(jié)果正確,第7 行為MAC 運(yùn)算結(jié)果。程序最后只將累加器高階AH 保存于y 中,AL 值直接舍去,這是由于在TMS320C54x DSP 中,2 個(gè)16 位整數(shù)相乘,乘積總是“向左增長(zhǎng)”,這意味著多次相乘后乘積將會(huì)很快超出器件數(shù)據(jù)位寬甚至溢出。要將32 位乘積保存在數(shù)據(jù)存儲(chǔ)器中,需要開銷2 個(gè)機(jī)器周期以及2 個(gè)字的存儲(chǔ)單元,此外由于乘法器為16 位,后續(xù)的遞推運(yùn)算無(wú)法輸入32 位乘積數(shù),而小數(shù)乘積總是向右增長(zhǎng),這就使得超出定點(diǎn)器件數(shù)據(jù)范圍所引起的誤差可以忽略不計(jì),在條件允許的前提下既可以存儲(chǔ)32 位結(jié)果,也可以存儲(chǔ)高16 位結(jié)果,以節(jié)約資源,也便于遞推運(yùn)算[4]。若只取高階則應(yīng)按Q15 進(jìn)行反規(guī)格化處理,將結(jié)果除以215,2C27H/215=0.344 94;若取32 位則應(yīng)按Q31 進(jìn)行反規(guī)格化處理,將結(jié)果除以231,2C27C290H/231=0.344 96。將表5 中第6 行4 個(gè)AH 值相加有:1AE0+0EB8+051E+FD70=2C26H,直接舍去AL 位可簡(jiǎn)化計(jì)算,但與結(jié)果2C27H 有1個(gè)數(shù)字的誤差。

表5 MAC 運(yùn)算過(guò)程分解表

4 結(jié)束語(yǔ)

DSP 數(shù)字信號(hào)處理器的應(yīng)用日趨廣泛,使用定點(diǎn)DSP 實(shí)現(xiàn)小數(shù)數(shù)字信號(hào)處理算法可保證結(jié)果精確。本文詳細(xì)介紹了使用定點(diǎn)數(shù)表示小數(shù)的方法,討論了小數(shù)乘法運(yùn)算中的幾個(gè)關(guān)鍵問(wèn)題,研究了在不同Qm.n 格式下數(shù)對(duì)數(shù)精度的影響,通過(guò)在TMS320C54x DSP 中進(jìn)行小數(shù)的乘-累加運(yùn)算應(yīng)用實(shí)例,更深入地討論了小數(shù)乘法的高精度運(yùn)算問(wèn)題。本文所介紹的方法適用于DSP、單片機(jī)、FPGA 等場(chǎng)合,但需要注意的是DSP 乘法器有冗余位自動(dòng)消除功能,對(duì)于沒(méi)有該功能的處理器在進(jìn)行小數(shù)乘法操作時(shí)可通過(guò)手動(dòng)方式實(shí)現(xiàn),通過(guò)程序?qū)⒔Y(jié)果向左移1 位即可。

[1]張小鳴,王正洪,朱正偉.高精度定點(diǎn)數(shù)平方根匯編子程序的實(shí)現(xiàn)原理[J].江蘇石油化工學(xué)院學(xué)報(bào),2002,14(4):59-60.

[2]余云霞,曾以成.一種有符號(hào)定點(diǎn)數(shù)乘法運(yùn)算的快速算法[J].湘潭大學(xué)自然科學(xué)學(xué)報(bào),2007,29(1):37-40.

[3]姚斌,陳玉濤,李靜正.微機(jī)保護(hù)測(cè)控裝置定點(diǎn)數(shù)的開方計(jì)算方法[J].電力自動(dòng)化設(shè)備,2007,27(11):42-45.

[4]陳金鷹.DSP 技術(shù)及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2004:129-180.

[5]鄒春杰.基于軟硬件協(xié)同設(shè)計(jì)平臺(tái)ECNUX 的并行FFT 設(shè)計(jì)[D].上海:華東師范大學(xué),2005.

猜你喜歡
小數(shù)定點(diǎn)乘法
算乘法
小數(shù)加減“四不忘”
例談圓錐曲線中的定點(diǎn)定值問(wèn)題
定點(diǎn)幫扶讓村民過(guò)上美好生活
解析幾何中定點(diǎn)問(wèn)題的處理策略
我們一起來(lái)學(xué)習(xí)“乘法的初步認(rèn)識(shí)”
我國(guó)古代的小數(shù)
小數(shù)的認(rèn)識(shí)
直線過(guò)定點(diǎn)的5種特優(yōu)解法
小數(shù)的認(rèn)識(shí)
仙居县| 南投县| 北海市| 桦甸市| 瓦房店市| 团风县| 阳高县| 蒙自县| 邓州市| 兰坪| 西华县| 施甸县| 教育| 上高县| 大渡口区| 犍为县| 水富县| 呼和浩特市| 天柱县| 河西区| 射洪县| 怀化市| 仁化县| 福建省| 容城县| 麟游县| 南宁市| 明溪县| 苗栗县| 榕江县| 宜春市| 高碑店市| 澄江县| 乌海市| 天峨县| 孟连| 昆山市| 夏津县| 万年县| 江油市| 祁连县|