1 引言
DSP芯片以其低成本、低功耗、高運算速度等優勢得到了飛速發展與廣泛運用。但目前各DSP廠商提供的開發環境(如TI的CCS)大多采用G/C++或匯編語言作為開發語言,與編寫Matlab程序相比,前者要復雜得多。
Matlab是一個強大的分析、計算和可視化工具,且編程非常方便。Simulink是Matlab產品中用來建模、分析和仿真各種動態系統的圖形化工具。通過豐富的功能模塊,可以迅速地創建動態系統模型。同時Simulink也是Real-Time Workshop(以下簡稱RTW)的支持平臺。通過RTW可以自動生成面向不同目標的代碼。
Matlab輔助DSP進行混合編程,很多學者作了許多研究和嘗試。文獻[1]提出了由Matlab向DSP傳送原始數據以及DSP反饋處理后數據的方法,充分利用了Matlab優秀的可視化功能。但仍然要在DSP開發環境中編寫復雜的代碼。文獻[2,3]利用工具包——Matlab Link for CCS Development Tools(以下簡稱CCSLink),實現了在Matlab、TI開發環境和DSP硬件間的雙向連接,極大地降低了開發人員調試DSP代碼的難度和工作量。但CCSLink只用于DSP程序的調試、數據傳遞和驗證等過程,同樣需要編寫復雜的DSP代碼。而另一工具包——ETTIC6000,利用RTW直接從Simulink模型生成面向TI C6000 DSP的高效代碼,不再需要傳統的DSP編程過程。本文在此基礎上進行研究,設計并自動生成FIR低通濾波器的DSP代碼。
2 ETTIC6000的功能、特點及開發DSP代碼過程
ETTIC6000是Math Works公司和TI公司聯合開發的工具包。利用RTW直接從Simulink模型生成面向TI的C6701 EVM和C6711 DSK目標板的可執行文件或CCS工程。在DSP代碼自動生成過程中,ETTIC6000必須與Simulink,RTW,CCS和TI目標板等軟硬件相結合才能充分顯現其功能。它們之間的關系如圖1所示。
應用ETTIC6000開發DSP代碼的過程一般經過如下幾步:
(1)概念構思和DSP處理算法設計。
(2)在Simulink環境下,利用Matlab基本模塊,Simulink基本模塊,數字信號處理工具箱,以及專門面向TI C6000的模塊組等模塊,構建算法模型并運行仿真。并非所有模塊都可以轉化為DSP代碼并順利編譯。例如一些面向Win32的程序模塊在轉化為DSP代碼或在CCS中進行編譯時就會出現無法兼容或找不到相關頭文件等錯誤提示。
(3)對仿真結果進行評價,若仿真結果滿意,即可在模型中加入C6701 EVM或C6711 DSK目標板的輸入輸出模塊。否則,重新進行算法設計、建模、仿真。
(4)在設計好的面向具體目標板的模型中,設置Simulation選項,包括RTW中的編譯連接等選項。
(5)執行代碼自動生成、編譯、調試并裝載到目標板上運行。
從整個設計過程來看,DSP開發人員只需在Matlab中進行Simulink模型設計、構建與仿真。省去了編寫、調試復雜DSP代碼的過程。下面以實現FIR低通濾波器為例,詳細闡述應用ETTIC6000開發DSP代碼的全部過程。
3 FIR低通濾波器實現過程
此系統要求對頻率分別為200 Hz,600 Hz和1 000 Hz,幅度為1的混合正弦信號進行低通濾波,保留200 Hz的正弦信號。采用Simulink環境下的FDATool工具設計FIR低通濾波器。在以下軟硬件環境中設計并通過測試,以下軟件均采用默認安裝路徑,若軟硬件環境不同,相應的參數設置將有很大差別。
硬件環境:TMS320C6711 DSK開發板、PC聲卡、雙頭音頻線等。
軟件環境:Matlab 7.4(R2007a),CCStudio 3.1,Simulink 6.6,Real-Time Workshop 6.6,Target forTI C6000(tm)3.2,Link for Code ComposerStudio 3.0。
Matlab附帶軟件可以在命令窗口通過ver命令查看,附帶軟件的使用可以充分利用help命令。
3.1 Simulink環境下構建算法模型并仿真
依據設計思想,在Simulink環境下,通過Simulink基本模塊庫和數字信號處理工具箱構建如圖2所示系統模型。三個輸入信號模塊關鍵參數設置:頻率分別設置為200 Hz,600 Hz和1 000 Hz;幅度為1;采樣頻率為1 600 Hz。FDA Tool關鍵參數設置:濾波類型選擇低通;階數為80;采樣頻率為1 600 Hz;起始頻率為100 Hz;截至頻率為500 Hz。
對圖2所示模型運行仿真,仿真結果如圖3所示。從濾波后的波形看,此濾波器的參數設置比較合理。
3.2 構建面向C6711 DSK目標模型
(1)依據仿真模型利用ETTIC6000中C6711 DSK輸入輸出模塊構建如圖4所示面向C6711 DSK目標模型。C6711 DSK ADC與C6711 DSK DAC參數采用默認設置。FDA Tool參數與仿真模型中參數保持一致,設置完成后將模型保存在Matlab默認目錄下,命名為myfilter.mdl。
(2)依據圖4構建如圖5所示的硬件平臺。TMS320C6711 DSK與PC通過并口線連接;信號源由PC聲卡輸出,經C6711 DSK A/D轉換后進行FIR低通濾波,由Line OUT將濾波后信號輸出至PC聲卡,最后采集聲卡信號,顯示濾波后波形。
3.3 DSP代碼自動生成
進行DSP代碼自動生成前,首先要安裝、配置相應的軟硬件環境。正確安裝、配置是此系統能夠成功運行的關鍵。具體配置有如下幾個方面:
(1)依據圖5實現硬件連接。在BIOS中將并口傳輸模式改為EPP模式;在DOS模式下,運行C:\CCS-tudio v3.1\C6000\DSK6X11\conftest\dsk6xtst.exe文件,可以檢測目標板是否連接正常;最后檢查PC聲卡輸入輸出是否正常。
(2)正確配置CCS。點擊Setup CCStudio V3.1,選擇C6711 DSK Port 378 EPP Mode模塊,點擊Add,設置并口地址為0x378;保存設置后退出。
(3)打開myfilter.mdl模型,展開simulation>Configuration Paraineters面板,面板中相應選項設置如下:
其他選項設置為默認模式。
(4)點擊RTW面板Generate code按鈕,執行代碼自動生成過程,此時Matlab命令窗口將顯示如下信息:
(5)CCStudio 3.1將自動運行,窗口中自動生成myfilter.pit的工程文件。
3.4 FIR低通濾渡器實現
(1)對myfiher.pit的工程文件在CCS中進行編譯、連接、裝載、運行。
(2)利用Matlab中的daqfcengen函數,可以實現向PC聲卡輸出端輸出波形。在Matlab命令窗口輸入daqfcengen命令,將顯示波形發生器窗口,將頻率設置為200 Hz,幅度設置為1,如圖6所示。點擊Start按鈕。在Matlab命令窗口繼續輸入daqfcengen命令,相繼實現頻率為600 Hz,1 000 Hz的波形輸出。這樣PC聲卡就輸出了三個不同頻率波形的疊加。
(3)利用Matlab中的daqscope函數,可以實現顯示PC聲卡輸入端的波形。在Matlab命令窗口輸入daqscope命令,將顯示波形顯示器窗口,如圖7所示,即為濾波后的輸出波形。
4 結 語
從整個FIR低通濾波器實現過程看,沒有編寫一行DSP代碼,全部采用圖形化的編程模式,生成的CCS工程文件既可供初學者學習、借鑒。又可供具有一定編程經驗的程序開發者對代碼進一步修改或優化,提高代碼執行效率。
從實驗結果看,設計的FIR低通濾波器濾波效果明顯。充分說明利用DSP代碼自動生成技術實現FIR低通濾波器的方法是可行的、高效的。Matlab輔助DSP在語音處理、圖像處理、通信、雷達等領域還有許多值得研究的地方。采用多語言工具進行程序開發也是今后發展的趨勢.