MATLAB輔助DSP設計的研究與實(shí)現
關(guān)鍵字:MATLAB;數字信號處理器;CCSLink;CCS
1 引言
數字信號處理器(Digital Signal Processor,DSP)是指一類(lèi)具有專(zhuān)門(mén)為完成數字信號處理任務(wù)而優(yōu)化設計的系統體系結構、硬件和軟件資源的單片可編程處理器件。數字信號處理器是實(shí)現數字信號處理任務(wù)的一個(gè)重要而有效的手段,隨著(zhù)通信和信息技術(shù)的飛速發(fā)展,數字信號處理器件在最近20年得到了空前的發(fā)展和應用。
MATLAB是美國MathWorks公司開(kāi)發(fā)的一種科學(xué)計算軟件,專(zhuān)門(mén)以矩陣的形式處理數據,在科學(xué)計算、控制系統、信息處理等多種領(lǐng)域有著(zhù)廣泛的應用。MATLAB具有強大的計算、分析和可視化功能,但MATLAB語(yǔ)言是解釋執行的,執行速度較慢;而DSP是為了完成實(shí)時(shí)數字信號處理任務(wù)而設計的,算法的高效實(shí)現是DSP器件的顯著(zhù)特點(diǎn),但是其開(kāi)發(fā)門(mén)檻高。如果能把MATLAB和DSP開(kāi)發(fā)工具結合在一起,取長(cháng)補短,相輔相成,將是DSP設計人員夢(mèng)寐以求的一種新的開(kāi)發(fā)思想。MathWorks公司和TI公司聯(lián)合開(kāi)發(fā)的MATLAB Link for Code Composer Studio(簡(jiǎn)稱(chēng)CCSLink)和Embedded Target for TI TMS320C6000 DSP工具正是這一思想的完美實(shí)現。
本文所作研究是以自行研制的DSP教學(xué)實(shí)驗箱為平臺進(jìn)行的,其DSP采用TMS320VC5416芯片實(shí)現。本文內容安排如下:第1部分在介紹相關(guān)背景知識的基礎上,引入使用MATLAB輔助DSP設計的思想;第2部分介紹了MATALB中實(shí)現這一思想的兩種工具;第3部分介紹了工具之一CCSLink的實(shí)現方式及工作原理;第4部分結合實(shí)驗平臺給出了CCSLink的應用實(shí)例。第五部分對本文作了總結。
2 MATLAB輔助DSP設計的方法概述
實(shí)現MATLAB輔助DSP設計的方法有兩種,即CCSLink和Embedded Target for TI TMS320C6000 DSP。前者可實(shí)現MATLAB與C2000/C5000/C6000 DSP之間的數據交互和程序控制;后者可實(shí)現從Simulink模型自動(dòng)生成DSP目標代碼,但僅支持C6000系列的部分DSP器件。
考慮到實(shí)驗平臺是以C5000 DSP為基礎的,并且第二種工具較容易操作等因素,下面主要研究利用CCSLink輔助DSP設計的方法。
2.1 Embedded Target for TI TMS320C6000 DSP
Code Composer Studio(CCS)是TI提供的DSP的集成開(kāi)發(fā)環(huán)境。
對于C6000系列而言,利用工具Embedded Target for TI TMS320C6000 DSP,用戶(hù)可以從Simulink模型直接生成針對DSP目標板的可執行文件或者CCS工程文件,實(shí)現了MATLAB/Simulink與CCS集成開(kāi)發(fā)環(huán)境(IDE)的無(wú)縫連接,從而把設計人員從繁雜的DSP編程中解脫出來(lái),將主要的精力放在設計而不是DSP編程上,所以極大地縮短了系統的測試和開(kāi)發(fā)周期,進(jìn)而保證了所設計系統的高性能。
2.2 MATLAB Link for Code Composer Studio
集成在MATLAB6.5或更高版本中的CCSLink工具把MATLAB、TI DSP及其集成開(kāi)發(fā)環(huán)境CCS連接在一起,使得我們可以在MATLAB環(huán)境下就可以完成對CCS和DSP目標板的操作,包括與目標內存之間的數據交互,檢測處理器的狀態(tài),控制DSP程序的運行等。它提供了MATLAB、CCS和目標DSP板的雙向連接,開(kāi)發(fā)者可以利用MATLAB中強大的可視化、數據處理和分析工具對DSP中的數據進(jìn)行分析和再處理,以輔助DSP系統設計,這樣就極大地降低了開(kāi)發(fā)人員編寫(xiě)DSP代碼的難度和工作量,提高了整個(gè)DSP系統的性能和可行性。
我們利用CCSLink提供的相關(guān)函數能夠實(shí)現MATLAB與目標DSP的存儲器及寄存器間的信息交互,如同操作MATLAB變量一樣來(lái)讀、寫(xiě)TI DSP中的存儲器或寄存器,即整個(gè)目標DSP對于MATLAB而言是透明的。CCSLink支持TI的C2000/C5000/C6000等多系列DSP,應用廣泛。
3 CCSLink的實(shí)現方式及工作原理
3.1 CCSLink的實(shí)現方式
利用CCSLink即可實(shí)現MATLAB、CCS和目標DSP之間的信息交互。CCSLink共提供了3種實(shí)現方式:
1)使用與CCS IDE的連接對象。利用此對象來(lái)創(chuàng )建CCS IDE和MATLAB的連接,從MATLAB命令窗中即可運行CCS IDE中的應用程序,查詢(xún)目標DSP的狀態(tài)信息,修改或讀取目標DSP的存儲器或寄存器中的數據,甚至可以調試DSP程序。其工作原理見(jiàn)3.2節。
2)使用與RTDX(Real-Time Data Exchange)的連接對象。提供MATLAB和硬件DSP 之間的實(shí)時(shí)通信通道。利用此連接對象,可以打開(kāi)、使能、關(guān)閉或禁止DSP的RTDX通道,利用此通道可以實(shí)時(shí)地向硬件目標DSP發(fā)送和取出數據而不必停止DSP上運行的程序。例如把原始數據發(fā)送給程序進(jìn)行處理,并把處理結果取回到MATLAB空間中進(jìn)行分析。
RTDX連接對象實(shí)際上是CCS連接對象的一個(gè)子類(lèi),在創(chuàng )建CCS連接對象的同時(shí)創(chuàng )建RTDX連接對象,它們不能分別創(chuàng )建。
3)使用嵌入式對象。在MATLAB環(huán)境中創(chuàng )建一個(gè)可以代表嵌入在目標C程序中的變量的對象。利用嵌入式對象可直接訪(fǎng)問(wèn)嵌入在目標DSP中的存儲器和寄存器中的變量,即把目標C程序中的變量作為MATLAB的一個(gè)變量對待。
3.2 CCSLink的工作原理
上面的三種方式在具體實(shí)現時(shí)略有不同,但是其原理相似,不失一般性,我們通過(guò)第一種方式――與CCS IDE的連接對象,來(lái)介紹CCSLink的工作機理。
1)選擇目標DSP并創(chuàng )建CCS IDE連接對象
在MATLAB環(huán)境下使用函數ccsdsp并配置相應的屬性名和屬性值即可創(chuàng )建一個(gè)CCS IDE連接對象cc:
cc=ccsdsp(‘boardnum’, x, ‘procnum’, y, ‘timeout’, z);
其中,boardnum、procnum、timeout都是屬性名。分別表示創(chuàng )建連接對象時(shí)所使用的目標板編號、DSP處理器編號及全局超時(shí)值。
2)在MATLAB環(huán)境下加載CCS工程文件
projfile=fullfile(matlabroot, ‘toolbox’, ‘tiddk’, …, ‘ccsproject.pjt’); %取得工程文件
projpath = fileparts(projfile); %取得工程文件路徑
open(cc, projfile); %加載工程文件,該函數實(shí)現把文件filename加載在CCS IDE中
cd(cc, projpath); %改變CCS的工作路徑
3)在MATLAB環(huán)境下編譯、連接并下載可執行文件
創(chuàng )建了CCS IDE連接對象并加載工程文件后,即可通過(guò)函數build()編譯和鏈接工程文件,以生成針對目標DSP的可執行文件(.out文件);通過(guò)函數load()下載可執行文件到目標DSP中。具體方法如下:
build(cc); %編譯、鏈接工程文件,生成目標DSP可執行文件
load(cc, ‘ccsproject.out’); %下載可執行文件到目標DSP,可執行文件名與工程名相同
4)在MATLAB環(huán)境下控制程序運行
CCSLink提供了3個(gè)函數用于控制目標DSP的運行狀態(tài)。通過(guò)這些函數,在MATLAB下對DSP的控制操作就像在CCS IDE中一樣方便,實(shí)際上也確實(shí)是這樣進(jìn)行的。
halt(cc); %中斷處理器的運行
restart(cc); %復位程序計數器PC,重新執行程序
run(cc, ‘runtohalt’, 30); %執行程序到斷點(diǎn)處,最后一個(gè)參數表示超時(shí)時(shí)間,此處為30s
5)在MATLAB環(huán)境下對CCS IDE連接對象進(jìn)行操作
在MATLAB中可以方便的操作DSP存儲器和寄存器中的數據,包括讀操作和寫(xiě)操作。下面以讀寫(xiě)目標DSP存儲器和寄存器中的數據來(lái)說(shuō)明。
date=read(cc, [256,0], ‘double’, 100); %從目標存儲器目的地址100H(即十進(jìn)制數256)處開(kāi)始,讀取100個(gè)雙精度數并賦給MATLAB對象date
reg=regread(cc, ‘A0’, ‘2scomp’); %讀取DSP寄存器A0中的數據,并轉化成雙精度數分配給MATLAB對象reg
write(cc, [256,0], double([1.0 2.0 3.0]));%向目標存儲器100H開(kāi)始的地址處,寫(xiě)入三個(gè)雙精度數據
6)關(guān)閉CCS IDE連接對象
當一切操作執行完成后,需要刪除ccsdsp對象,以收回系統資源。
clear cc; %關(guān)閉CCS IDE連接對象
4 CCSLink應用實(shí)例
通過(guò)CCSLink工具,可以使用MATLAB來(lái)進(jìn)行DSP的輔助設計。在此以FIR濾波器為例,介紹CCSLink在DSP設計中的應用。在該實(shí)例中,FIR濾波的核心內容由DSP實(shí)現,而算法仿真、系數產(chǎn)生、用戶(hù)界面、結果驗證等部分由MATLAB輔助完成。
4.1 FIR濾波器設計
設輸入信號為x(n),輸出信號為y(n),則FIR濾波器對應的差分方程可表示為:
其中,h(k)(k=0,1,2,…,N-1)表示濾波器系數序列,是濾波器設計的關(guān)鍵。h(k)可以通過(guò)MATLAB工具箱提供的濾波器函數fir1()和fir2()來(lái)獲?。菏紫韧ㄟ^(guò)建立MATLAB/Simulink模型,根據所需設計低通濾波器的性能要求來(lái)確定濾波器的階數和截止頻率等參數。本例所設計的FIR低通濾波器參數為:截止頻率(Fc)2kHz,采樣頻率(Fs)8kHz,階數(N)40。然后借助函數fir1(N, WN)即可返回對應濾波器的系數矩陣,其中N為階數,WN為濾波器的歸一化截止頻率,即WN= 2Fc/Fs,且0≤WN≤1。
4.2 DSP濾波算法實(shí)現
結合MATLAB產(chǎn)生的濾波器系數,就可以編寫(xiě)DSP濾波主程序了,關(guān)鍵代碼如下:
FIR_TASK:
STM #K_FIR_BFFR, BK ; 設置FIR循環(huán)緩沖區的大小
LD *INBUF_P+, -1, A ; 數據輸入
FIR_FILTER:
STL A, *FIR_DATA_P+% ; 最新數據替代最舊數據
RPTZ A, (K_FIR_BFFR-1)
MAC *FIR_DATA_P+0%, *FIR_COFF_P+0%, A ; 乘累加
STH A,*OUTBUF_P ; 數據輸出
4.3 MATLAB輔助設計
本設計中,算法仿真、系數產(chǎn)生、用戶(hù)界面等部分由MATLAB輔助完成。算法仿真、系數產(chǎn)生方法在4.1中已詳細介紹,本節重點(diǎn)介紹用戶(hù)界面部分。本圖形用戶(hù)界面可以實(shí)現如下功能:修改參數,如濾波參數n和Wn,這種參數選取方法避免了反復修改DSP程序的弊端,可以滿(mǎn)足不同層次使用者的使用;控制操作過(guò)程,如加載工程文件、下載可執行文件、運行程序等;繪制DSP輸入數據的時(shí)域及頻域信號;繪制濾波后DSP輸出數據的時(shí)域及頻域信號;使用MATLAB提供的濾波函數對輸入數據進(jìn)行濾波計算,并把所得結果與DSP輸出信號進(jìn)行比較,以驗證或改良DSP算法。
用戶(hù)界面的流程圖如圖1所示,主要由圖形界面和回調函數兩大部分組成。其中,圖形界面由文件FIR_BPF.m實(shí)現;回調函數總共由6個(gè)文件實(shí)現,分別是input.m,input2.m,output.m,output2.m,lvbopin.m和lvbohou.m。
當輸入帶有干擾的方波信號后,分別查看輸入波形、MATLAB濾波輸出信號、DSP濾波輸出信號,結果如圖2所示。比較MATLAB濾波輸出信號和DSP濾波輸出信號,據此可以采用修改濾波器系數或DSP程序等措施來(lái)改進(jìn)DSP濾波算法。
圖1 用戶(hù)圖形界面流程圖
圖2 實(shí)驗結果
5 結束語(yǔ)
本文探索并實(shí)現了利用CCSLink輔助DSP設計的完整過(guò)程。同時(shí)以FIR濾波器為例,利用CCSLink輔助設計了基于DSP TMS320VC5416的應用系統,該系統具有靈活的參數設置和快速的處理效率,很好地達到了輔助DSP設計的目的;再者,利用MATLAB的GUI工具設計了相應的圖形用戶(hù)界面,便于不同技術(shù)層次的用戶(hù)操作,增強了DSP系統的適用性。
本文作者創(chuàng )新點(diǎn):1.發(fā)展了利用MATLAB輔助DSP設計的思想,把DSP系統設計中的算法仿真、系數產(chǎn)生、結果驗證、用戶(hù)界面等環(huán)節交由MATLAB完成,實(shí)現了二者的無(wú)縫連接。2.通過(guò)MATLAB設計的人機界面,增強了DSP系統的適用性,便于不同技術(shù)層次的用戶(hù)操作。
參考文獻:
[1] 陳永春. 從Matlab/Simulink模型到代碼實(shí)現[M]. 北京:清華大學(xué)出版社, 2002.
[2] MATLAB Link for Code Composer Studio Development Tools User’s Guide. MathWorks, 2002.
[3] 劉劍科,王艷芬,王勝利. MATLAB Link for CCS Development Tools在DSP系統設計中的應用[J]. 信息技術(shù)與信息化, 2005, (4).
[4] 鄒彥,唐東,寧志剛等. DSP原理及應用[M]. 北京:電子工業(yè)出版社, 2005.
[5] 謝良喜,孔建益,王興東等. MATLAB讀入數據的幾種方式探討[J]. 微計算機信息, 2005,(5):135~136.
評論