新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于IQmath庫的定點(diǎn)DSP算法設(shè)計(jì)

基于IQmath庫的定點(diǎn)DSP算法設(shè)計(jì)

作者: 時(shí)間:2010-11-16 來源:網(wǎng)絡(luò) 收藏

摘要:基于TI公司提供的IQmath庫實(shí)現(xiàn)在定點(diǎn)芯片TMS320F28xx上進(jìn)行精確的浮點(diǎn)運(yùn)算,方便開發(fā)人員采用C/C++編寫浮點(diǎn)運(yùn)算程序,可以節(jié)省設(shè)計(jì)和調(diào)試時(shí)間。IQmath庫主要應(yīng)用于高速度和高精度的實(shí)時(shí)計(jì)算,與直接采用ANSI C語言相比效率更高,這對(duì)設(shè)計(jì)實(shí)時(shí)性要求很高的控制系統(tǒng)尤其重要。
關(guān)鍵詞:IQmath庫;TMS320F28xx;浮點(diǎn)運(yùn)算;實(shí)時(shí)性

引言
數(shù)字信號(hào)處理器分為定點(diǎn)和浮點(diǎn)兩種基本類型,它們之間最大差異在于浮點(diǎn)比定點(diǎn)DSP具有更強(qiáng)大的計(jì)算能力和更大范圍的動(dòng)態(tài)精度。浮點(diǎn)DSP內(nèi)部設(shè)有專門支持浮點(diǎn)運(yùn)算的硬件單元,對(duì)浮點(diǎn)格式的數(shù)據(jù)可以直接通過代碼加入硬件運(yùn)算中,因此運(yùn)算速度很高。而定點(diǎn)DSP沒有定點(diǎn)運(yùn)算單元,它對(duì)浮點(diǎn)格式的實(shí)數(shù)必須通過軟件才能實(shí)現(xiàn),這樣就增加了指令代碼,間接地使得定點(diǎn)DSP運(yùn)算速度低于浮點(diǎn)DSP,典型的浮點(diǎn)處理器,如TI公司的C6000系列,幾乎所有的嵌入式微控制器都為定點(diǎn)處理器,如TI公司的C2000系列。因?yàn)楦↑c(diǎn)DSP的價(jià)格更加昂貴,因此定點(diǎn)DSP仍然有其巨大的優(yōu)勢。但是任何算法都需要進(jìn)行浮點(diǎn)運(yùn)算,因此如何提高在定點(diǎn)DSP上進(jìn)行的浮點(diǎn)運(yùn)算的速度和精度,就成為了用戶開發(fā)時(shí)必須要考慮的關(guān)鍵問題。TI公司專門為定點(diǎn)處理器TMS320C2000系列提供的IQmath庫為解決上述問題提供了良好的實(shí)現(xiàn)方法。

1 數(shù)的定標(biāo):Q格式
定點(diǎn)DSP不能直接處理小數(shù),編程時(shí)處理小數(shù)有3種方法:
①把變量定義成float類型。該方法編程量最小,但編譯出來的代碼最大。
②把整數(shù)變量放大來表示小數(shù)。這是許多開發(fā)定點(diǎn)DSP的程序員經(jīng)常使用的方法,但程序不具有可移植性。
③采用整數(shù)定標(biāo)的方法來確定小數(shù),即采用Q格式來表示小數(shù)。對(duì)于定點(diǎn)處理器而言,不管定義哪種類型的數(shù)據(jù)最終都采用整型數(shù)據(jù)進(jìn)行具體的運(yùn)算。
整數(shù)定標(biāo)的實(shí)質(zhì)就是通過確定小數(shù)點(diǎn)位于哪一位,從而確定小數(shù)的精度,通常用Q格式表示。一個(gè)32位有符號(hào)定點(diǎn)數(shù)的Q格式如下:
a.JPG
其中,S是符號(hào)位,I是整數(shù)部分,f是小數(shù)部分。定點(diǎn)數(shù)的大小按下式計(jì)算:
b.JPG
比如Q15定點(diǎn)數(shù)的小數(shù)點(diǎn)位于第15位的右側(cè),小數(shù)0.25用Q15表示則為2000H。這樣很簡單地用一個(gè)整數(shù)格式表示了一個(gè)小數(shù),對(duì)于定點(diǎn)DSP來說處理小數(shù)就與處理整數(shù)完全相同了。需要注意的是,采用Q格式數(shù)據(jù)進(jìn)行算法設(shè)計(jì)的時(shí)候必須考慮溢出,各種Q格式數(shù)據(jù)表示的范圍和精度參考文獻(xiàn)。

2 TMS320F2812定點(diǎn)DSP處理器
作為TI公司C2000系列DSP典型產(chǎn)品,定點(diǎn)處理器TMS320F2812具有很高的性價(jià)比,廣泛應(yīng)用于工業(yè)控制,特別是應(yīng)用于處理速度、處理精度方面要求較高的領(lǐng)域。TMS320F2812整合了Flash存儲(chǔ)器、A/D轉(zhuǎn)換器、事件管理器、QEP以及多種通信模塊,具有強(qiáng)大的控制和信號(hào)處理能力,便于用戶開發(fā)高性能的數(shù)字控制系統(tǒng)。特別是TI公司為C28xx內(nèi)核專門設(shè)計(jì)的IQmath庫能夠?qū)崿F(xiàn)在定點(diǎn)DSP處理器上進(jìn)行精確的浮點(diǎn)運(yùn)算和復(fù)雜的控制算法。

3 IQmath庫及其應(yīng)用
IQmath庫是高度優(yōu)化和具有高精度的數(shù)學(xué)函數(shù)庫集合。IQmath庫里面包含的函數(shù)都是采用Q格式定點(diǎn)數(shù)作為輸入/輸出,允許程序設(shè)計(jì)人員在定點(diǎn)TMS320F281xx處理器上進(jìn)行浮點(diǎn)算法設(shè)計(jì),從而提高運(yùn)算速度。
3.1 IQmath庫組成
IQmath庫可以在c/C++程序設(shè)計(jì)中使用,它包含4個(gè)部分:
◆IQmath頭文件IQmathLib.h
◆包含所有函數(shù)和數(shù)值表的目標(biāo)文件IQmath.lib
◆命令連接文件IQmath.cmd
◆調(diào)試用的GEL文件IQmath.gel
3.2 IQmath庫函數(shù)
IQmath庫中主要包括以下函數(shù)(用戶在程序設(shè)計(jì)開發(fā)時(shí)可以直接調(diào)用):
◆格式轉(zhuǎn)換函數(shù)IQ()、IQN()、IQtoF()、IQtoIQN()等
◆算術(shù)運(yùn)算函數(shù)IQmpy()、IQdiv()等
◆三角運(yùn)算函數(shù)IQsin()、IQcos()、IQatan2()等
IQmath庫中的各個(gè)函數(shù)及其含義參考文獻(xiàn)。


上一頁 1 2 3 下一頁

關(guān)鍵詞: DSP

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉