摘 "要: TMS320F2812DSP是控制系統(tǒng)開發(fā)中很好的硬件設計平臺,但傳統(tǒng)的TI DSP代碼開發(fā)方法周期較長,效率不高。為了在實際控制系統(tǒng)開發(fā)中縮短控制算法的設計周期,提高控制器的可靠性,并簡化在調(diào)試過程中對控制算法的修改,設計與開發(fā)了基于DSP 的快速原型控制系統(tǒng)。該系統(tǒng)包括基于TI F2812DSP 的硬件控制器和基于Matlab/ Simulink 的軟件開發(fā)環(huán)境。用戶可以在Simulink 環(huán)境中利用RTW 功能直接從Simulink 模型自動生成可執(zhí)行代碼并下載到目標板,直接運行程序,從而簡化DSP系統(tǒng)開發(fā)過程,提高開發(fā)效率。通過閃爍燈實驗實時控制實驗,驗證了系統(tǒng)的有效性。
關鍵詞: TMS320F2812; TI DSP; Matlab/Simulink; 自動代碼生成
中圖分類號: TN710?34; TP311 " " " " " " "文獻標識碼: A " " " " " " " " " " " 文章編號: 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)代電力電子技術的迅猛發(fā)展,兼有高運算速度和強控制能力的DSP(Digital Signal Processor)在逆變器、電機等電力電子設備的控制領域得到了廣泛應用[1]。傳統(tǒng)的通用DSP源代碼開發(fā)一般可采用兩個方法:一種是直接利用其提供的匯編指令編寫源代碼,然后經(jīng)匯編器和鏈接器進行匯編鏈接后生成目標可執(zhí)行代碼;另一種方法是利用標準C++語言編寫源代碼,經(jīng)C/C++編譯器、匯編器和鏈接器進行編譯鏈接,最后生成目標可執(zhí)行代碼[2]。這兩種代碼開發(fā)方法都使得開發(fā)人員不得不花費大量的時間用于代碼的編寫,從而增大開發(fā)產(chǎn)品難度,延長產(chǎn)品開發(fā)周期,影響開發(fā)效率??梢灾苯佑蒑atlab的Simulink模型生成DSP的可執(zhí)行代碼,即在集成的、統(tǒng)一的Matlab環(huán)境下可完成DSP開發(fā)的整個過程[3]。
DSP芯片,也稱數(shù)字信號處理器,是一種具有特殊結(jié)構(gòu)的微處理器,主要由中央處理器、存儲器和片內(nèi)外設三部分組成,具有強大的數(shù)據(jù)處理能力和高運行速度,加上具有可編程性,所以被廣泛應用于控制系統(tǒng)[4]。但是隨著DSP的不斷更新?lián)Q代,硬件結(jié)構(gòu)和代碼的編寫也越來越復雜,利用DSP的不斷更新?lián)Q代,硬件結(jié)構(gòu)和代碼的編寫也越來越復雜,利用DSP進行開發(fā)時要求對DSP硬件性能和各種端口有足夠的了解,開發(fā)門檻高,這樣很不利于系統(tǒng)的快速開發(fā)[5]。用戶可以在Matlab中調(diào)用這些圖形化的功能模塊及Simulink中的其他模塊建立數(shù)字信號處理的模型,并可以對模型進行仿真驗證,然后生成TMS320C2000的C語言代碼及CCS的工程項目文件,在CCS中經(jīng)修改、編譯后就可以下載到DSP目標板中運行[6]。
1 "搭建閃爍燈功能模型
可以利用模型輸出一個高/低交替變換的電平來實現(xiàn)閃爍。在Matlab菜單欄中選擇FILE NEW Model,建立一個新模型,命名為led_28207,并保存,在模塊瀏覽器中找到Simulink Sources Constant 模塊、Simulink Logic and Bit Operations Logical Operator 模塊、Simulink Discrete Unit Delay模塊,并添加到模型中,雙擊打開Logical Operator 模塊,將Operator 項選擇為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 模塊的設置對話框,將Iteration variable data type 項設置為int32型,在Iteration limit項中寫入3000000,作為循環(huán)次數(shù),用以延長每個狀態(tài)的持續(xù)時間。在模塊瀏覽器中找到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ù)類型設置為double,修改完畢后單擊“仿真”按鈕,可見On "Off "Readout模塊不停地閃爍(見圖1)。
lt;E:\王芳\現(xiàn)代電子技術201506\現(xiàn)代電子技術15年38卷第6期\Image\47T1.tifgt;
圖1 功能模型仿真
2 "代碼模型
驗證模型的功能后,將進一步把功能模型轉(zhuǎn)化為代碼模型,以便后期的自動代碼生成工作。打開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 項中選擇Texas Instruments Code Composer Studio ,在Board項中選擇TI C281x,雙擊打開Digital Output模塊,在GPIO Group 項中選擇GPIOA~ GPIOC,然后選中GPIOB復選框,如圖2所示。 " " " " " " lt;E:\王芳\現(xiàn)代電子技術201506\現(xiàn)代電子技術15年38卷第6期\Image\47T2.tifgt;
圖2 配置Digital Output模塊
3 "自動代碼生成
按上述步驟設置完畢后將目標板連接到主機上,然后單擊模型工具欄的編譯按鈕,生成代碼的報告如圖3所示。
lt;E:\王芳\現(xiàn)代電子技術201506\現(xiàn)代電子技術15年38卷第6期\Image\47T3.tifgt;
圖3 代碼生成報告
代碼生成完畢后將自動啟動CCS軟件,建立工程并對代碼進行編譯,如圖4所示。
4 "硬件測試
編譯完成后會自動下載.out文件并執(zhí)行,led燈不停閃爍(見圖5),與功能模型中的仿真結(jié)果一致,這說明自動生成的代碼完全實現(xiàn)了在模型中設計的各項功能。
5 "結(jié) "語
用Matlab快速建立DSP模型及直接生成C語言程序的方法,簡化了DSP軟件的開發(fā)。本文所提出的快速控制原型系統(tǒng)由于其控制性能優(yōu)越且成本低,在控制實驗系統(tǒng)中有著非常廣泛的應用前景。
lt;E:\王芳\現(xiàn)代電子技術201506\現(xiàn)代電子技術15年38卷第6期\Image\47T4.tifgt;
圖4 編譯信息
lt;E:\王芳\現(xiàn)代電子技術201506\現(xiàn)代電子技術15年38卷第6期\Image\47T5.tifgt;
圖5 硬件仿真結(jié)果
采用這種開發(fā)方法,開發(fā)人員不需寫一行代碼就可實現(xiàn)DSP系統(tǒng)的代碼開發(fā),極大地減輕了開發(fā)人員的工作負擔,提高工作效率。學習使用該開發(fā)方法對廣大DSP應用開發(fā)人員具有較大的實用意義。
參考文獻
[1] 張祥,楊志剛.Matlab/Simulink模型到C/C++代碼的自動實現(xiàn)[J].重慶工學院學報:自然科學版,2006(11):111?113.
[2] 冷斌,李學勇,劉建華.一種基于Matlab的DSP調(diào)試及直接代碼生成方法[J].現(xiàn)代電子技術,2008,31(20):68?70.
[3] 方正,張淇淳,齊玉成.基于DSP 的快速控制原型系統(tǒng)[J].東北大學學報:自然科學版,2009(8):1069?1073.
[4] 王子劍,孔峰.一種基于DSP的數(shù)字電子負載設計方法[J].廣西工學院學報:自然科學版,2009(6):241?244.
[5] 盧小錦,曾岳南.基于Matlab/Simulink的TMS320F2812代碼開發(fā)[J].廣東工業(yè)大學學報,2009(6):79?81.
[6] 杜磊,薛重德,任志國.基于DSP的自動代碼生成及應用[J].南京航空航天大學學報:自然科學版,2010(4):93?96.
[7] 趙秀玲,張利,武玉強.Matlab輔助DSP實現(xiàn)FIR數(shù)字濾波器[J].現(xiàn)代電子技術,2007,30(9):38?40.
[8] 王康佳,劉詩偉,孫番典.基于Matlab/DSP Builder任意波形信號發(fā)生器的兩種設計[J].現(xiàn)代電子技術,2011,34(3):179?181.