《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于MATLAB的DSP實(shí)時(shí)控制軟件自動(dòng)生成
基于MATLAB的DSP實(shí)時(shí)控制軟件自動(dòng)生成
2015年微型機(jī)與應(yīng)用第8期
王順?shù)h,孫培德
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620)
摘要: 隨著數(shù)字芯片速度的提高和數(shù)字信號(hào)技術(shù)的發(fā)展,DSP被廣泛應(yīng)用于工業(yè)控制等領(lǐng)域,系統(tǒng)開(kāi)發(fā)的效率得到普遍的關(guān)注,傳統(tǒng)的MATLAB仿真與產(chǎn)品硬件實(shí)現(xiàn)相分隔的方式已經(jīng)無(wú)法滿(mǎn)足設(shè)計(jì)的需求。提出一種基于MATLAB的DSP實(shí)時(shí)控制軟件自動(dòng)生成方案,并通過(guò)Simulink模型自動(dòng)生成TI C2812 DSP的目標(biāo)代碼的應(yīng)用實(shí)例,驗(yàn)證了代碼自動(dòng)生成的可執(zhí)行性。
Abstract:
Key words :

  摘  要: 隨著數(shù)字芯片速度的提高和數(shù)字信號(hào)技術(shù)的發(fā)展,DSP被廣泛應(yīng)用于工業(yè)控制等領(lǐng)域,系統(tǒng)開(kāi)發(fā)的效率得到普遍的關(guān)注,傳統(tǒng)的MATLAB仿真與產(chǎn)品硬件實(shí)現(xiàn)相分隔的方式已經(jīng)無(wú)法滿(mǎn)足設(shè)計(jì)的需求。提出一種基于MATLAB的DSP實(shí)時(shí)控制軟件自動(dòng)生成方案,并通過(guò)Simulink模型自動(dòng)生成TI C2812 DSP的目標(biāo)代碼的應(yīng)用實(shí)例,驗(yàn)證了代碼自動(dòng)生成的可執(zhí)行性。
  關(guān)鍵詞: CCSLinkETTIC2000;自動(dòng)生成代碼
0 引言
  傳統(tǒng)的DSP軟件設(shè)計(jì)開(kāi)發(fā)一般分為兩個(gè)階段:設(shè)計(jì)仿真和源代碼開(kāi)發(fā)實(shí)現(xiàn)[1]。設(shè)計(jì)仿真階段根據(jù)系統(tǒng)開(kāi)發(fā)的需要,以DSP算法研究與仿真驗(yàn)證為主,這階段可以利用MATLAB的Simulink模塊仿真來(lái)實(shí)現(xiàn);源代碼開(kāi)發(fā)通常采用匯編指令或C語(yǔ)言編寫(xiě)源代碼,由匯編器和連接器進(jìn)行鏈接后生成目標(biāo)可執(zhí)行代碼。源代碼開(kāi)發(fā)完成后,功能的實(shí)現(xiàn)主要在硬件電路板上來(lái)驗(yàn)證設(shè)計(jì)方案的正確性,對(duì)于軟件開(kāi)發(fā)者關(guān)于DSP數(shù)字芯片與硬件電路的原理有一定程度的要求,特別是各個(gè)寄存器的作用和存儲(chǔ)空間的特性和擴(kuò)展。這兩個(gè)部分通常是在不同階段相互獨(dú)立地完成,因此大大增加了系統(tǒng)開(kāi)發(fā)的時(shí)間,系統(tǒng)設(shè)計(jì)的實(shí)時(shí)性也不能得到保證。本文介紹了MATLAB中的MATLAB與CCS的接口和Embeded Target for TIC2000 DSP,提出了一種基于TI C2812的軟件設(shè)計(jì)思路,實(shí)現(xiàn)將設(shè)計(jì)仿真和源代碼開(kāi)發(fā)在同一平臺(tái)下開(kāi)展,從而有效地將開(kāi)發(fā)過(guò)程中的兩大階段有機(jī)地結(jié)合在一起,大大縮短了開(kāi)發(fā)周期,并通過(guò)應(yīng)用實(shí)例進(jìn)行驗(yàn)證。
1 ETTIC2000概述
  Embedded Target for the TI TMS320C2000TM為T(mén)I C2000 DSP實(shí)時(shí)控制軟件的自動(dòng)生成的模型仿真、源代碼開(kāi)發(fā)、目標(biāo)代碼自動(dòng)生成、實(shí)時(shí)調(diào)試等各個(gè)環(huán)節(jié)都提供了技術(shù)方面的支持[2]。
  1.1 ETTIC2000的功能和特點(diǎn)
  ETTIC2000首先利用Real-Time Workshop從Simulink模型生成標(biāo)準(zhǔn)C語(yǔ)言程序代碼,然后通過(guò)MATLAB Link for CCS Development Tools調(diào)用CCS開(kāi)發(fā)工具,編譯鏈接Simulink所生成的程序,自動(dòng)生成目標(biāo)板(C2812 Simulator)的可執(zhí)行代碼(.out文件),最后把生成的可執(zhí)行代碼加載到目標(biāo)板中,并利用嵌入式對(duì)象對(duì)程序運(yùn)行進(jìn)行實(shí)時(shí)監(jiān)控和調(diào)試。
  Embedded Target for the TI C2000 DSP、Simulink、Real-Time Workshop、CCS和TI目標(biāo)之間的關(guān)系如圖1所示。

Image 001.png

  1.2 C281×DSP模塊庫(kù)
  ETTIC2000提供了多個(gè)Simulink模塊,以支持不同型號(hào)的DSP,在MATLAB窗口中執(zhí)行命令C2000lib,就會(huì)顯示對(duì)應(yīng)型號(hào)的DSP芯片模塊。其中,本文使用的C281×的各模塊如圖2所示。

Image 002.png

2 MATLAB與TI CCS的接口
  2.1 CCSLink的功能及特點(diǎn)
  MATLAB Link for CCS Development Tools作為MATLAB的一個(gè)工具箱被集成在MATLAB中,可以支持CCS能夠識(shí)別的任何目標(biāo)板。利用此工具箱,將調(diào)用函數(shù)、讀寫(xiě)存儲(chǔ)器或寄存器中的數(shù)據(jù)、實(shí)時(shí)測(cè)試等工作統(tǒng)一在MATLAB平臺(tái)下進(jìn)行,把MATLAB和TI CCS及目標(biāo)DSP連接起來(lái)。其功能圖如圖3所示。

Image 003.png

  2.2 CCSLink的連接方式
  利用CCSLink提供的MATLAB函數(shù)可以完成MATLAB與TI CCS、目標(biāo)板的存儲(chǔ)器或寄存器的數(shù)據(jù)及信息的交換。
  CCS IDE的連接對(duì)象用于創(chuàng)建CCS與MATLAB的連接。從MATLAB的命令窗中可以運(yùn)行CCS IDE中的程序,向目標(biāo)板的存儲(chǔ)器或寄存器讀取數(shù)據(jù),檢查DSP的運(yùn)行狀態(tài),而且可以控制DSP上運(yùn)行程序的起止。
  在MATLAB環(huán)境中可以創(chuàng)建一個(gè)嵌入式對(duì)象訪(fǎng)問(wèn)目標(biāo)板的存儲(chǔ)器或寄存器中的變量,即把C語(yǔ)言代碼中的變量作為MATLAB的一個(gè)變量處理。轉(zhuǎn)變數(shù)據(jù)類(lèi)型,創(chuàng)建函數(shù)聲明,改變變量值,讀取DSP中的數(shù)據(jù)與信息,所有這些操作都在MATLAB平臺(tái)下進(jìn)行。
  在MATLAB中,對(duì)所有對(duì)象的操作方式是一樣的,只是對(duì)應(yīng)的屬性及屬性值不同而已。
  3 應(yīng)用實(shí)例
  32位的TMS320C281×系列芯片融合了DSP和微控制器的最佳特性,能夠完成64位的數(shù)據(jù)處理,專(zhuān)門(mén)的分支硬件減少了條件指令執(zhí)行的反應(yīng)時(shí)間,使該處理器能夠?qū)崿F(xiàn)更高精度的處理任務(wù)[3]。
  在TMS320F281×DSP中,ADC模塊是一個(gè)12位帶流水線(xiàn)的模/數(shù)轉(zhuǎn)換器,由16個(gè)結(jié)果寄存器ADCResult存放ADC的轉(zhuǎn)換結(jié)果,轉(zhuǎn)換的計(jì)算過(guò)程為:
A~F@{$V0S)ELQW_L9_)C`ZT.jpg

  本系統(tǒng)搭建的是一個(gè)由AD模塊采集來(lái)的數(shù)字信號(hào)量來(lái)控制PWM輸出的占空比的模型。通過(guò)讀取AD轉(zhuǎn)換的數(shù)據(jù)與信息,同時(shí),利用示波器顯示的PWM輸出波形,分析由CCS實(shí)時(shí)控制的DSP代碼自動(dòng)生成的效果。
  具體步驟如下:
 ?。?)在MATLAB中的Simulink環(huán)境搭建模型如圖4所示,選用ADC模塊中A0通道,由PWM1通道輸出結(jié)果,設(shè)置參數(shù)并進(jìn)行仿真。

Image 004.png

 ?。?)配置CCSLink。
  驗(yàn)證CCS是否在PC上安裝并配置好,在MATLAB命令窗中輸入命令:ccsboardinfo,則MATLAB命令窗中會(huì)返回圖5所示的板卡信息。

Image 005.png

  圖5證明CCS已經(jīng)安裝并配置好。CCSLink工作時(shí)CCS將自動(dòng)啟動(dòng)。
 ?。?)在Real-Time Workshop中設(shè)置編譯鏈接(Build)選項(xiàng)。
  指定ti_c2000.tlc作為系統(tǒng)目標(biāo)文件(system target file)。設(shè)置好Build選項(xiàng)后,通過(guò)編譯鏈接選項(xiàng),Real-Time Workshop會(huì)自動(dòng)產(chǎn)生實(shí)時(shí)可執(zhí)行代碼,同時(shí),可通過(guò)設(shè)置將可執(zhí)行代碼自動(dòng)加載到指定的目標(biāo)板上并且開(kāi)始運(yùn)行。圖6為MATLAB命令窗口顯示。

Image 006.png

  (4)實(shí)時(shí)代碼調(diào)試。
  在MATLAB環(huán)境下編輯m文件,并運(yùn)行以下代碼:
  cc=ccsdsp(′boardnum′,0,′procnum′,0)
  //創(chuàng)建一個(gè)連接對(duì)象
  visible(cc,1)//CCS IDE窗口在桌面上可見(jiàn)
  linkinfo=info(cc)//測(cè)試DSP目標(biāo)板的狀態(tài)信息
  projfile=fullfile(matlabroot,′work′,...);
  projpath=fileparts(projfile);
  open(cc,projfile)//加載工程文件
  build(cc)//編譯文件
  load(cc,′.out′)//可執(zhí)行文件加載到DSP中
  run(cc)//運(yùn)行
  halt(cc)//停止
  ddatv=read(cc,address(cc,′ddat′),′double′,2)
  //訪(fǎng)問(wèn)嵌入在目標(biāo)DSP存儲(chǔ)器中的值
  在MATLAB環(huán)境下完成了對(duì)工程文件的調(diào)入、編譯,生成可執(zhí)行文件并將其加載到DSP目標(biāo)板。切換到已經(jīng)打開(kāi)的CCS界面,可以看到在MATLAB環(huán)境下已經(jīng)完成了對(duì)CCS的各種操作。
 ?。?)運(yùn)行結(jié)果。
  當(dāng)由變位器給定模擬電壓輸入為1 V時(shí),加載自動(dòng)生成代碼到DSP后,讀取DSP寄存器的值如圖7所示。

Image 007.png

  自動(dòng)生成代碼F2812.ADC=(AdcRegs.ADCRESULT0)>>4;之所以右移4位,是因?yàn)樵诩?jí)聯(lián)序列發(fā)生器模式中,讀取時(shí),ADCRESULTn寄存器為左對(duì)齊,應(yīng)向右平移4位后讀取[4]。
  結(jié)果寄存器存放的數(shù)字量與計(jì)算得出的理論值   1 355非常接近,如圖8所示,驗(yàn)證目標(biāo)板AD轉(zhuǎn)換有效。

Image 008.png

  程序的目標(biāo)板輸出波形比較如圖9所示。

Image 009.png

  圖9證明了由MATLAB模型生成的代碼是有效的,運(yùn)行結(jié)果也與理論輸出占空比近似,進(jìn)而證明這種設(shè)計(jì)方法快捷、高效。
4 結(jié)論
  應(yīng)用MATLAB自動(dòng)生成DSP代碼的方案,有效地克服了傳統(tǒng)DSP代碼設(shè)計(jì)方法效率低、難度大等缺點(diǎn),快速生成了標(biāo)準(zhǔn)化的C語(yǔ)言代碼和DSP可執(zhí)行文件,極大地縮短了代碼的開(kāi)發(fā)時(shí)間。實(shí)驗(yàn)結(jié)果表明,自動(dòng)生成的代碼運(yùn)行效果良好,可以應(yīng)用于項(xiàng)目的設(shè)計(jì)與實(shí)現(xiàn),體現(xiàn)了方案的實(shí)用性與可行性。
  參考文獻(xiàn)
  [1] 李利.DSP原理及應(yīng)用[M].北京:中國(guó)水利水電出版社,2004.
  [2] 李真芳,蘇濤,黃小宇.DSP程序開(kāi)發(fā):MATLAB調(diào)試及直接目標(biāo)代碼生成[M].西安:西安電子科技大學(xué)出版社,2003.
  [3] 蘇奎峰,呂強(qiáng),常天慶,等.TMS320281×DSP原理及C程序開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2008.
  [4] 張雄偉,陳亮,徐光輝.DSP芯片的原理與開(kāi)發(fā)應(yīng)用[M].北京:電子工業(yè)出版社,2003.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。