摘 "要: TMS320F2812DSP是控制系統(tǒng)開發(fā)中很好的硬件設(shè)計(jì)平臺(tái),但傳統(tǒng)的TI DSP代碼開發(fā)方法周期較長(zhǎng),效率不高。為了在實(shí)際控制系統(tǒng)開發(fā)中縮短控制算法的設(shè)計(jì)周期,提高控制器的可靠性,并簡(jiǎn)化在調(diào)試過程中對(duì)控制算法的修改,設(shè)計(jì)與開發(fā)了基于DSP 的快速原型控制系統(tǒng)。該系統(tǒng)包括基于TI F2812DSP 的硬件控制器和基于Matlab/ Simulink 的軟件開發(fā)環(huán)境。用戶可以在Simulink 環(huán)境中利用RTW 功能直接從Simulink 模型自動(dòng)生成可執(zhí)行代碼并下載到目標(biāo)板,直接運(yùn)行程序,從而簡(jiǎn)化DSP系統(tǒng)開發(fā)過程,提高開發(fā)效率。通過閃爍燈實(shí)驗(yàn)實(shí)時(shí)控制實(shí)驗(yàn),驗(yàn)證了系統(tǒng)的有效性。
關(guān)鍵詞: TMS320F2812; TI DSP; Matlab/Simulink; 自動(dòng)代碼生成
中圖分類號(hào): TN710?34; TP311 " " " " " " "文獻(xiàn)標(biāo)識(shí)碼: A " " " " " " " " " " " 文章編號(hào): 1004?373X(2015)06?0142?03
Fast code generation based on DSP model
DENG Pan, HOU Zhi?min
(Chengdu University of Information Technology, Chengdu 610225, China)
Abstract: TMS320F2812DSP is a very good hardware design platform in control system development, but the traditional method of TI DSP code development has long cycle, and its efficiency is not high. In order to shorten the control algorithm design cycle in actual control system development, improve the reliability of the controller and simplify the control algorithm modifications during commissioning, a control system of rapid prototype based on DSP was designed and developed. The system includes TI F2812DSP?based hardware controllers and Matlab/Simulink?based software development environment. Users can take advantage of RTW functions in the Simulink environment to automatically generate executable code directly from Simulink models and download it to the target board for running the program directly. Therefore, the development process of DSP system was simplified, and the development efficiency was improved. The effectiveness of the system was verified by real?time control experiments of flashing lights.
Keywords: TMS320F2812; TI DSP; Matlab/Simulink; automatic code generation
0 "引 "言
隨著現(xiàn)代電力電子技術(shù)的迅猛發(fā)展,兼有高運(yùn)算速度和強(qiáng)控制能力的DSP(Digital Signal Processor)在逆變器、電機(jī)等電力電子設(shè)備的控制領(lǐng)域得到了廣泛應(yīng)用[1]。傳統(tǒng)的通用DSP源代碼開發(fā)一般可采用兩個(gè)方法:一種是直接利用其提供的匯編指令編寫源代碼,然后經(jīng)匯編器和鏈接器進(jìn)行匯編鏈接后生成目標(biāo)可執(zhí)行代碼;另一種方法是利用標(biāo)準(zhǔn)C++語言編寫源代碼,經(jīng)C/C++編譯器、匯編器和鏈接器進(jìn)行編譯鏈接,最后生成目標(biāo)可執(zhí)行代碼[2]。這兩種代碼開發(fā)方法都使得開發(fā)人員不得不花費(fèi)大量的時(shí)間用于代碼的編寫,從而增大開發(fā)產(chǎn)品難度,延長(zhǎng)產(chǎn)品開發(fā)周期,影響開發(fā)效率??梢灾苯佑蒑atlab的Simulink模型生成DSP的可執(zhí)行代碼,即在集成的、統(tǒng)一的Matlab環(huán)境下可完成DSP開發(fā)的整個(gè)過程[3]。
DSP芯片,也稱數(shù)字信號(hào)處理器,是一種具有特殊結(jié)構(gòu)的微處理器,主要由中央處理器、存儲(chǔ)器和片內(nèi)外設(shè)三部分組成,具有強(qiáng)大的數(shù)據(jù)處理能力和高運(yùn)行速度,加上具有可編程性,所以被廣泛應(yīng)用于控制系統(tǒng)[4]。但是隨著DSP的不斷更新?lián)Q代,硬件結(jié)構(gòu)和代碼的編寫也越來越復(fù)雜,利用DSP的不斷更新?lián)Q代,硬件結(jié)構(gòu)和代碼的編寫也越來越復(fù)雜,利用DSP進(jìn)行開發(fā)時(shí)要求對(duì)DSP硬件性能和各種端口有足夠的了解,開發(fā)門檻高,這樣很不利于系統(tǒng)的快速開發(fā)[5]。用戶可以在Matlab中調(diào)用這些圖形化的功能模塊及Simulink中的其他模塊建立數(shù)字信號(hào)處理的模型,并可以對(duì)模型進(jìn)行仿真驗(yàn)證,然后生成TMS320C2000的C語言代碼及CCS的工程項(xiàng)目文件,在CCS中經(jīng)修改、編譯后就可以下載到DSP目標(biāo)板中運(yùn)行[6]。
1 "搭建閃爍燈功能模型
可以利用模型輸出一個(gè)高/低交替變換的電平來實(shí)現(xiàn)閃爍。在Matlab菜單欄中選擇FILE NEW Model,建立一個(gè)新模型,命名為led_28207,并保存,在模塊瀏覽器中找到Simulink Sources Constant 模塊、Simulink Logic and Bit Operations Logical Operator 模塊、Simulink Discrete Unit Delay模塊,并添加到模型中,雙擊打開Logical Operator 模塊,將Operator 項(xiàng)選擇為XOR,選中Unit Delay 模塊并按下“Ctrl+I”鍵翻轉(zhuǎn)該模塊,在模塊瀏覽器中找到Simulink Sinks Scope模塊,然后按圖所示連接這些模塊,按下仿真按鈕后,添加On Off Gauges模塊,可以更清晰直觀地看到仿真結(jié)果,現(xiàn)將模型做如下修改。在模塊瀏覽器中找到Simulink Port Subsystems For Iterator Subsystem,添加到模型中,雙擊打開For Iterator Subsystem模塊,雙擊打開For Iterator 模塊的設(shè)置對(duì)話框,將Iteration variable data type 項(xiàng)設(shè)置為int32型,在Iteration limit項(xiàng)中寫入3000000,作為循環(huán)次數(shù),用以延長(zhǎng)每個(gè)狀態(tài)的持續(xù)時(shí)間。在模塊瀏覽器中找到Simulink Sinks Terminator,添加到子系統(tǒng)中,并與For Iterator連接,刪除In1、Out1模塊,可以看到,子系統(tǒng)的輸入/輸出端口已經(jīng)刪去,將其命名為delay,刪去原模型中的Scope模塊,在模塊瀏覽器中找到Gauges Blockset Global Majic Active X Library On Off Gauges On Off Readout 模塊,并將輸出數(shù)據(jù)類型設(shè)置為double,修改完畢后單擊“仿真”按鈕,可見On "Off "Readout模塊不停地閃爍(見圖1)。
lt;E:\王芳\現(xiàn)代電子技術(shù)201506\現(xiàn)代電子技術(shù)15年38卷第6期\Image\47T1.tifgt;
圖1 功能模型仿真
2 "代碼模型
驗(yàn)證模型的功能后,將進(jìn)一步把功能模型轉(zhuǎn)化為代碼模型,以便后期的自動(dòng)代碼生成工作。打開led_28027模型,在模型庫中找到Embedded "IDE Link "Common "Target Preferences模塊和Target Support Package "Supported Processors Texas InstrumentsC2000 C281x Digital Output 模塊并添加到模型中,刪除Add、Scope、delay子系統(tǒng)和SIL模塊,雙擊打開Target Preferences 模塊,在IDE/Tool Chain 項(xiàng)中選擇Texas Instruments Code Composer Studio ,在Board項(xiàng)中選擇TI C281x,雙擊打開Digital Output模塊,在GPIO Group 項(xiàng)中選擇GPIOA~ GPIOC,然后選中GPIOB復(fù)選框,如圖2所示。 " " " " " " lt;E:\王芳\現(xiàn)代電子技術(shù)201506\現(xiàn)代電子技術(shù)15年38卷第6期\Image\47T2.tifgt;
圖2 配置Digital Output模塊
3 "自動(dòng)代碼生成
按上述步驟設(shè)置完畢后將目標(biāo)板連接到主機(jī)上,然后單擊模型工具欄的編譯按鈕,生成代碼的報(bào)告如圖3所示。
lt;E:\王芳\現(xiàn)代電子技術(shù)201506\現(xiàn)代電子技術(shù)15年38卷第6期\Image\47T3.tifgt;
圖3 代碼生成報(bào)告
代碼生成完畢后將自動(dòng)啟動(dòng)CCS軟件,建立工程并對(duì)代碼進(jìn)行編譯,如圖4所示。
4 "硬件測(cè)試
編譯完成后會(huì)自動(dòng)下載.out文件并執(zhí)行,led燈不停閃爍(見圖5),與功能模型中的仿真結(jié)果一致,這說明自動(dòng)生成的代碼完全實(shí)現(xiàn)了在模型中設(shè)計(jì)的各項(xiàng)功能。
5 "結(jié) "語
用Matlab快速建立DSP模型及直接生成C語言程序的方法,簡(jiǎn)化了DSP軟件的開發(fā)。本文所提出的快速控制原型系統(tǒng)由于其控制性能優(yōu)越且成本低,在控制實(shí)驗(yàn)系統(tǒng)中有著非常廣泛的應(yīng)用前景。
lt;E:\王芳\現(xiàn)代電子技術(shù)201506\現(xiàn)代電子技術(shù)15年38卷第6期\Image\47T4.tifgt;
圖4 編譯信息
lt;E:\王芳\現(xiàn)代電子技術(shù)201506\現(xiàn)代電子技術(shù)15年38卷第6期\Image\47T5.tifgt;
圖5 硬件仿真結(jié)果
采用這種開發(fā)方法,開發(fā)人員不需寫一行代碼就可實(shí)現(xiàn)DSP系統(tǒng)的代碼開發(fā),極大地減輕了開發(fā)人員的工作負(fù)擔(dān),提高工作效率。學(xué)習(xí)使用該開發(fā)方法對(duì)廣大DSP應(yīng)用開發(fā)人員具有較大的實(shí)用意義。
參考文獻(xiàn)
[1] 張祥,楊志剛.Matlab/Simulink模型到C/C++代碼的自動(dòng)實(shí)現(xiàn)[J].重慶工學(xué)院學(xué)報(bào):自然科學(xué)版,2006(11):111?113.
[2] 冷斌,李學(xué)勇,劉建華.一種基于Matlab的DSP調(diào)試及直接代碼生成方法[J].現(xiàn)代電子技術(shù),2008,31(20):68?70.
[3] 方正,張淇淳,齊玉成.基于DSP 的快速控制原型系統(tǒng)[J].東北大學(xué)學(xué)報(bào):自然科學(xué)版,2009(8):1069?1073.
[4] 王子劍,孔峰.一種基于DSP的數(shù)字電子負(fù)載設(shè)計(jì)方法[J].廣西工學(xué)院學(xué)報(bào):自然科學(xué)版,2009(6):241?244.
[5] 盧小錦,曾岳南.基于Matlab/Simulink的TMS320F2812代碼開發(fā)[J].廣東工業(yè)大學(xué)學(xué)報(bào),2009(6):79?81.
[6] 杜磊,薛重德,任志國.基于DSP的自動(dòng)代碼生成及應(yīng)用[J].南京航空航天大學(xué)學(xué)報(bào):自然科學(xué)版,2010(4):93?96.
[7] 趙秀玲,張利,武玉強(qiáng).Matlab輔助DSP實(shí)現(xiàn)FIR數(shù)字濾波器[J].現(xiàn)代電子技術(shù),2007,30(9):38?40.
[8] 王康佳,劉詩偉,孫番典.基于Matlab/DSP Builder任意波形信號(hào)發(fā)生器的兩種設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2011,34(3):179?181.