DSP數字信號處理器分為定點(diǎn)和浮點(diǎn)兩種基本類(lèi)型,它們之間最大差異在于浮點(diǎn)DSP比定點(diǎn)DSP具有更強大的計算能力和更大范圍的動(dòng)態(tài)精度。浮點(diǎn)DSP內部設有專(zhuān)門(mén)支持浮點(diǎn)運算的硬件單元,對浮點(diǎn)格式的數據可以直接通過(guò)代碼加入硬件運算中,因此運算速度很高。而定點(diǎn)DSP沒(méi)有定點(diǎn)運算單元,它對浮點(diǎn)格式的實(shí)數必須通過(guò)軟件才能實(shí)現,這樣就增加了指令代碼,間接地使得定點(diǎn)DSP運算速度低于浮點(diǎn)DSP,典型的浮點(diǎn)處理器,如TI公司的C6000系列,幾乎所有的嵌入式微控制器都為定點(diǎn)處理器,如TI公司的C2000系列。因為浮點(diǎn)DSP的價(jià)格更加昂貴,因此定點(diǎn)DSP仍然有其巨大的優(yōu)勢。但是任何算法都需要進(jìn)行浮點(diǎn)運算,因此如何提高在定點(diǎn)DSP上進(jìn)行的浮點(diǎn)運算的速度和精度,就成為了用戶(hù)開(kāi)發(fā)時(shí)必須要考慮的關(guān)鍵問(wèn)題。TI公司專(zhuān)門(mén)為定點(diǎn)處理器TMS320C2000系列提供的IQmath庫為解決上述問(wèn)題提供了良好的實(shí)現方法。 1 數的定標:Q格式 定點(diǎn)DSP不能直接處理小數,編程時(shí)處理小數有3種方法: ①把變量定義成float類(lèi)型。該方法編程量最小,但編譯出來(lái)的代碼最大。 ②把整數變量放大來(lái)表示小數。這是許多開(kāi)發(fā)定點(diǎn)DSP的程序員經(jīng)常使用的方法,但程序不具有可移植性。 ③采用整數定標的方法來(lái)確定小數,即采用Q格式來(lái)表示小數。對于定點(diǎn)處理器而言,不管定義哪種類(lèi)型的數據最終都采用整型數據進(jìn)行具體的運算。 整數定標的實(shí)質(zhì)就是通過(guò)確定小數點(diǎn)位于哪一位,從而確定小數的精度,通常用Q格式表示。一個(gè)32位有符號定點(diǎn)數的Q格式如下: 其中,S是符號位,I是整數部分,f是小數部分。定點(diǎn)數的大小按下式計算: 比如Q15定點(diǎn)數的小數點(diǎn)位于第15位的右側,小數0.25用Q15表示則為2000H。這樣很簡(jiǎn)單地用一個(gè)整數格式表示了一個(gè)小數,對于定點(diǎn)DSP來(lái)說(shuō)處理小數就與處理整數完全相同了。需要注意的是,采用Q格式數據進(jìn)行算法設計的時(shí)候必須考慮溢出,各種Q格式數據表示的范圍和精度參考文獻。 2 TMS320F2812定點(diǎn)DSP處理器 作為T(mén)I公司C2000系列DSP典型產(chǎn)品,定點(diǎn)處理器TMS320F2812具有很高的性?xún)r(jià)比,廣泛應用于工業(yè)控制,特別是應用于處理速度、處理精度方面要求較高的領(lǐng)域。TMS320F2812整合了Flash存儲器、A/D轉換器、事件管理器、QEP以及多種通信模塊,具有強大的控制和信號處理能力,便于用戶(hù)開(kāi)發(fā)高性能的數字控制系統。特別是TI公司為C28xx內核專(zhuān)門(mén)設計的IQmath庫能夠實(shí)現在定點(diǎn)DSP處理器上進(jìn)行精確的浮點(diǎn)運算和復雜的控制算法。 3 IQmath庫及其應用 IQmath庫是高度優(yōu)化和具有高精度的數學(xué)函數庫集合。IQmath庫里面包含的函數都是采用Q格式定點(diǎn)數作為輸入/輸出,允許程序設計人員在定點(diǎn)TMS320F281xx處理器上進(jìn)行浮點(diǎn)算法設計,從而提高運算速度。 3.1 IQmath庫組成 IQmath庫可以在c/C++程序設計中使用,它包含4個(gè)部分: ◆IQmath頭文件IQmathLib.h ◆包含所有函數和數值表的目標文件IQmath.lib ◆命令連接文件IQmath.cmd ◆調試用的GEL文件IQmath.gel 3.2 IQmath庫函數 IQmath庫中主要包括以下函數(用戶(hù)在程序設計開(kāi)發(fā)時(shí)可以直接調用): ◆格式轉換函數IQ()、IQN()、IQtoF()、IQtoIQN()等 ◆算術(shù)運算函數IQmpy()、IQdiv()等 ◆三角運算函數IQsin()、IQcos()、IQatan2()等 IQmath庫中的各個(gè)函數及其含義參考文獻。 3.3 IQmath庫函數應用 下面說(shuō)明如何在一個(gè)C程序中使用IQmath庫。首先要安裝IQmath庫,可以從TI公司的網(wǎng)站http://WWW.dspvillage.ti.com免費下載得到。然后新建一個(gè)工程,將IQmath.lib,IQmath.cmd添加到工程。同時(shí),還要把IQmath.gel添加到工程中,因為IQ變量的變換和調整都是通過(guò)GEL函數來(lái)實(shí)現的。按以上步驟設置完以后,就可以在C語(yǔ)言程序中利用IQmath庫里面的函數了。需要注意的是,IQmath.cmd必須包含以下內容: 4 PARK變換浮點(diǎn)算法的定點(diǎn)數實(shí)現 在現代交流電機控制領(lǐng)域,空間矢量控制法(SVPWM)使得交流電機的控制策略能像直流電機的控制策略一樣,可以實(shí)現轉矩電流和磁通的單獨控制,因此成為主流的交流伺服驅動(dòng)控制策略。利用DSP強大的計算能力和信號處理能力,SVPWM的電流和磁通控制均可以采用軟件實(shí)現。TMS320F2812處理器專(zhuān)門(mén)為電機控制設有兩個(gè)事件管理器(EVA/EVB)和編碼器電路(QEP),因此成為運動(dòng)控制的最佳選擇之一。圖1是采用 TMS320F2812實(shí)現SVPWM控制算法的系統結構框圖。 從圖1可以看出,PARK變換是SVPWM控制算法中最為復雜的變換之一,是一個(gè)旋轉矢量is從靜止二相坐標系(α-β)變換到同步旋轉的二相坐標系(d-q)。PARK變換坐標映射如圖2所示。 由圖2可以得到PARK變換的方程式: 因為PARK變換是一個(gè)浮點(diǎn)算法,如果在定點(diǎn)處理器TMS320F2812上采用浮點(diǎn)運算來(lái)實(shí)現,代價(jià)很高。采用浮點(diǎn)類(lèi)型進(jìn)行編程將產(chǎn)生十分龐大的代碼,而且在循環(huán)計算中勢必影響系統的效率和性能。采用IQmath庫可以將浮點(diǎn)算法轉換為定點(diǎn)數算法,這樣運算速度可以明顯提高,這對實(shí)時(shí)性要求很好的運動(dòng)控制系統的設計十分有效。利用IQmath庫實(shí)現PARK變換的程序段如下: 圖3是利用Embedded Target for TI C2000 DSP集成開(kāi)發(fā)工具對IQmath庫編寫(xiě)的SVPWM程序計算PWM占空比的波形圖。 5 結論 利用IQmath庫可以在32位定點(diǎn)處理器TMS320F2812上實(shí)現浮點(diǎn)算法與定點(diǎn)算法之間的無(wú)縫連接,能夠極大地增強定點(diǎn)DSP的運算能力;在不犧牲時(shí)間周期的情況下可以實(shí)現高精度計算,能夠快速地完成對浮點(diǎn)算法的轉換、植入和執行;還可以根據應用系統不同要求相應地調整運算精度,與直接采用ANSI C語(yǔ)言相比效率更高。 |