李智勇等
摘 要: 數(shù)字信號控制器具有數(shù)字信號處理器和微控制器的優(yōu)點,在現(xiàn)代自動控制、數(shù)據(jù)采集系統(tǒng)中占據(jù)著重要的地位,TMS320F28335作為目前最主流的數(shù)字信號控制器,在實際工程中被廣泛的使用。目前該處理器存在著程序設(shè)計周期長,程序設(shè)計過程復(fù)雜等問題。采用模型化設(shè)計的DSP嵌入式系統(tǒng)程序開發(fā)方法能很好地解決這個問題。以設(shè)計一個基于DSP的音頻數(shù)據(jù)采集系統(tǒng)為例,通過將CCS軟件和Matlab/Simulink進(jìn)行有機(jī)的結(jié)合,對模型進(jìn)行圖形化界面配置,最終實現(xiàn)目標(biāo)處理器程序代碼的自動生成、下載、調(diào)試和運行,從而快速地實現(xiàn)音頻信號數(shù)據(jù)采集系統(tǒng)的設(shè)計。
關(guān)鍵詞: TMS320F28335; 數(shù)據(jù)采集系統(tǒng); Matlab/Simulink; 模型化設(shè)計
中圖分類號: TN912?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)21?0011?03
Fast design of audio signal acquisition system based on DSP modeling design
LI Zhiyong, WANG Fei, ZHU Qiang
(Chongqing Key Laboratory of Signal and Information Processing, Chongqing University of Posts and Telecommunications, Chongqing 400065, China)
Abstract: The digital signal controller has the advantages from digital signal processor and microcontroller, which has played the important role in modern automatic control and data acquisition system. TMS320F28335 as the mainstream digital signal controller is widely used in practical engineering. Currently, this processor has the problems of long period program design and complicated program design process. The program development method of DSP embedded system with modeling design can solve these problems better. Taking design a DSP?based audio signal acquisition system as an instance, the graphic interface of the model is configured by combining CCS software with Matlab/Simulink greatly. The automatic generation, downloading, debugging and operation of the program codes in the target processor are realized, and the design of this audio signal acquisition system can be implemented fast.
Keywords: TMS320F28335; data acquisition system; Matlab/Simulink; modeling design
0 引 言
數(shù)字信號處理器(Digital Signal Processor)作為一種專用的高性能處理器,在通信、電力、自動控制等領(lǐng)域發(fā)揮著舉足輕重的作用。工程師進(jìn)行DSP程序設(shè)計時通常使用兩種方法:一種是通過建立常規(guī)的系統(tǒng)工程,編寫程序代碼的方式;另外一種是使用半圖形化的DSP/BIOS或SYS/BIOS對DSP進(jìn)行程序設(shè)計。第一種方法的設(shè)計過程太過復(fù)雜,工程師通常都需要查閱大量技術(shù)文檔才能完成相關(guān)控制寄存器的配置。此外,在進(jìn)行多任務(wù)設(shè)計時,工程師還要考慮程序的結(jié)構(gòu)問題。第二種方法針對前一種方法的缺點進(jìn)行了一定改進(jìn),減少了一定的程序設(shè)計量,工程師也不需要再去組織程序的結(jié)構(gòu),但還是要大量的編寫程序代碼,這些現(xiàn)象導(dǎo)致在實際工程應(yīng)用中,工程設(shè)計進(jìn)度緩慢,設(shè)計方法復(fù)雜。基于模型化快速DSP程序開發(fā)方法的出現(xiàn)使得這類問題得到了解決。
基于模型設(shè)計方法是通過將Matlab/Simulink和DSP編程軟件有機(jī)地結(jié)合起來使用。這樣,工程師能夠在Matlab中的Simulink工具中進(jìn)行系統(tǒng)原型設(shè)計、自動代碼生成和嵌入式系統(tǒng)開發(fā)。利用這樣一種簡單快捷的設(shè)計方法,工程師不僅可以對系統(tǒng)設(shè)計方案進(jìn)行快速驗證,分析方案的可行性,也可以快速對數(shù)字信號處理算法進(jìn)行評估,從而在短時間里完成系統(tǒng)設(shè)計、算法構(gòu)思到代碼的實現(xiàn)。這樣,工程師就可以將主要精力放在算法的研究,而不是瑣碎的程序代碼設(shè)計上。這就加快了系統(tǒng)軟硬件的開發(fā)速度,降低了工程師的入門門檻;解決了DSP嵌入式工程師既要有深厚的理論知識積累,又要有熟練的嵌入式編程經(jīng)驗的難題。因此,這樣一種基于模型化的設(shè)計可以在實際工程設(shè)計中被廣泛使用。
1 建立音頻數(shù)據(jù)采集系統(tǒng)模型
為了驗證這樣一種方法,建立了一個音頻數(shù)據(jù)采集系統(tǒng)的模型,以這種快速簡單的模型化設(shè)計方法來實現(xiàn)這個系統(tǒng)的功能。在開始設(shè)計之前需要設(shè)置一些環(huán)境變量,將CCS軟件和Matlab軟件有機(jī)結(jié)合起來,配置的主要工作就是在系統(tǒng)中指定相應(yīng)軟件的工作路徑,并設(shè)置好仿真器配置文件。
完成了相關(guān)的配置之后,打開Matlab的Simulink工具。新建一個名為SAMPLE_SYSTEM的模型文件,選擇器件庫中的“Embedded Coder”→“Embedded Targets” →“Processors” →“Texas Instruments C2000”,然后選擇C28x3x模塊,從這個庫中添加異步通信接口(SCI)發(fā)送模塊和模擬/數(shù)字信號轉(zhuǎn)換模塊(ADC)到模型設(shè)計文件中。由于此次設(shè)計的系統(tǒng)是一個多點數(shù)據(jù)采集系統(tǒng),各個數(shù)據(jù)采集模塊會分開工作,最后共用一個SCI串口將數(shù)據(jù)上傳到上位機(jī),選中“Simulink”→“Signal Routing”,將其中的復(fù)用器MUX拖入模型中,通過這個復(fù)用器,多個ADC的模塊就可以共用一個通信接口于上位機(jī)完成通信。
由于F28335的片內(nèi)ADC采用的數(shù)據(jù)格式是12位的無符號整型,而SCI接口通常采用的是8位的字符型數(shù)據(jù),這兩者的數(shù)據(jù)并不匹配,因此需要對ADC采集到的數(shù)據(jù)進(jìn)行一定的處理之后才能交給串口發(fā)送出去,而Simulink中并沒有現(xiàn)成的模塊,但是提供了自定義模塊的功能,可以選中“Simulink” →“User?Define Functions”將用戶自定義模塊添加到系統(tǒng)模型中。通過對這個自定義模塊的編輯,實現(xiàn)數(shù)據(jù)類型的轉(zhuǎn)換,使數(shù)據(jù)可以被SCI接口正常的接收和發(fā)送。
添加所需要的模塊之后,將各個模塊接口按功能需求連接起來,ADC的三個通道分別連接到了各自的數(shù)據(jù)類型轉(zhuǎn)換模塊的輸入口,這些模塊的輸出口和SCI模塊通過復(fù)用器MUX進(jìn)行連接,實際的連接情況如圖1所示。
2 系統(tǒng)模型配置
為了實現(xiàn)各個模塊的正常工作,需要對各個模塊的參數(shù)進(jìn)行配置。這一步的實質(zhì)其實就是通過圖形化的界面完成對DSP相應(yīng)的控制寄存器的配置;因此,工程師不必再查閱技術(shù)文檔即可完成相關(guān)的寄存器配置。
首先對ADC模塊進(jìn)行設(shè)置,將使用的ADC模塊設(shè)置為ADC_B,并且開啟ADC_B的3個轉(zhuǎn)換通道。在這里還可以配置ADC的采樣頻率和觸發(fā)方式。在本設(shè)計中將ADC采樣頻率設(shè)置為0.000 1 s,將觸發(fā)方式設(shè)置為軟件觸發(fā)。SCI接口的配置和ADC的配置基本類似,這里不再贅述。ADC的配置界面如圖2所示。
值得一提的是,在配置ADC時可以選擇是否啟用DMA(Direct Memory Access)傳輸ADC采集到的數(shù)據(jù)。DMA的使用可以使CPU不再管理ADC的運行,也就不需要花費大量的時間等待模/數(shù)轉(zhuǎn)換的完成,CPU只在需要使用數(shù)據(jù)時,才到指定的地址中獲得相關(guān)數(shù)據(jù),這使得處理器有更多的時間去執(zhí)行其他任務(wù),這種方法在DSP程序設(shè)計中被廣泛使用。但是,DMA控制器的配置非常繁瑣,很多工程師對此只能望而卻步,放棄這一對系統(tǒng)性能改善有明顯提升的方法。而在基于模型化的設(shè)計中,工程師只需選擇使用DMA就可以完成DMA的配置,這對提升系統(tǒng)性能和縮短程序的開發(fā)周期而言,有著重要的作用。
用戶自定義模塊的功能是實現(xiàn)數(shù)據(jù)類型的轉(zhuǎn)換,將ADC采集到的16位無符號整形數(shù)據(jù)轉(zhuǎn)換成8位的字符型數(shù)據(jù),通過編寫這個模塊的C語言控制程序就可以實現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換的功能。用鼠標(biāo)雙擊這個自定義模塊就可以進(jìn)入這個模塊的設(shè)置窗口(如圖3所示),在這里,工程師可以完成模塊功能的設(shè)計。該模塊將轉(zhuǎn)換完成的數(shù)據(jù)封裝到一個包含了相關(guān)信息的數(shù)據(jù)幀中,從模塊的輸出口送出。
在實際中,工程師也完全可以根據(jù)自己的實際情況,將一些更有效的算法設(shè)計成模塊,在移植這種模塊化的程序時,不做任何修改就可以使用。
最后就是對目標(biāo)平臺進(jìn)行設(shè)置,這里將目標(biāo)平臺設(shè)置為TMS320F28335,時鐘頻率設(shè)置為150 MHz,這樣就完成了對整個系統(tǒng)的設(shè)計。整個過程中,沒有對TMS320F28335的任何一個寄存器進(jìn)行設(shè)置,也沒有查閱任何參考文檔。這樣的設(shè)計方式無疑是非常實用的。
3 系統(tǒng)實際測試
配置好模型設(shè)計文件之后,點擊模型設(shè)計窗口右上角的建立模型按鈕,此時,Matlab就開始編譯文件,并將編譯過程的相關(guān)信息在Matlab的控制臺上顯示出來,編譯結(jié)束之后生成一個.OUT可執(zhí)行文件,將這個可執(zhí)行文件通過計算機(jī)系統(tǒng)的控制臺自動下載到DSP芯片中。程序文件下載過程中計算機(jī)系統(tǒng)的控制臺提示信息如圖4所示。
程序下載完成之后,首先將音頻信號接到一個音頻信號預(yù)處理的硬件上,該硬件電路將輸入的音頻信號限制在0~3.3 V之間,并對輸入信號做了抗混淆濾波處理,處理之后的信號就輸入到DSP的信號采集接口。然后,將硬件電路的串口和計算機(jī)串口連接起來,并打開計算機(jī)上的串口監(jiān)視軟件,按照相應(yīng)的通信協(xié)議完成串口的設(shè)置。確認(rèn)設(shè)置之后,串口就顯示出了接收到的數(shù)據(jù),串口監(jiān)控軟件接收到的數(shù)據(jù)如圖5所示。通過數(shù)據(jù)顯示,監(jiān)控軟件不斷地接收到采集系統(tǒng)發(fā)送來的數(shù)據(jù),數(shù)據(jù)被成功采集到計算機(jī)中。
為了更為直觀地查看采集到的數(shù)據(jù)波形,將串口數(shù)據(jù)監(jiān)視軟件關(guān)閉,打開一個串口數(shù)據(jù)的波形顯示軟件,就可以顯示出采集到音頻信號的時域波形。該軟件顯示采集到的音頻信號時域波形如圖6所示。由于在測試時只對ADC的A路輸入了信號,而其余兩路都沒有信號輸入,所以該軟件只顯示出了A路信號的時域波形,這與串口數(shù)據(jù)監(jiān)視軟件接收到的數(shù)據(jù)是匹配的。這就說明了這種基于模型化的DSP程序快速設(shè)計方法是易用可行的。
4 結(jié) 論
設(shè)計一個基于DSP的音頻信號數(shù)據(jù)采集系統(tǒng),通常需要編寫大量的控制寄存器,而工程師無法記憶這么多寄存器的配置方式,只能查閱數(shù)據(jù)手冊,一旦配置錯誤,很難再找出問題,這就導(dǎo)致了開發(fā)方式效率低下,開發(fā)周期長。而使用基于模型化的設(shè)計方法,工程師只需要在圖形化的對話框中就可以完成相應(yīng)的配置。這樣就可以提高程序的開發(fā)速度,降低程序設(shè)計的難度。工程師甚至不用編寫一行代碼就可以實現(xiàn)DSP程序的設(shè)計。這種模型化的DSP系統(tǒng)快速設(shè)計方法非常適合在實際工作中使用,有著極大的實際意義和推廣價值。
參考文獻(xiàn)
[1] 陳志英,劉虹,陳飄萍.基于模型的數(shù)字濾波器設(shè)計及DSP實現(xiàn)[J].廈門理工學(xué)院學(xué)報,2015,23(1):39?44.
[2] 鄧盼,侯志敏.基于DSP模型的快速代碼的生成[J].現(xiàn)代電子技術(shù),2015,38(6):142?144.
[3] 王偉,李育挺,馬松輝.基于模型的驗證與測試技術(shù)[J].計算機(jī)測量與控制,2013,21(4):987?989.
[4] 侯瑩,洪征,潘璠,等.基于模型的Fuzzing測試腳本自動化生成[J].計算機(jī)科學(xué),2013,40(3):206?209.
[5] 劉洋,周宇博.基于模型的設(shè)計[M].北京:國防工業(yè)出版社,2011.
[6] 冷斌,李學(xué)勇,劉建華.一種基于Matlab的DSP調(diào)試及直接代碼生成方法[J].現(xiàn)代電子技術(shù),2008,31(20):68?70.
[7] 梁志強(qiáng).基于模型的DSP程序設(shè)計[J].微計算機(jī)應(yīng)用,2008,29(3):93?97.
[8] Texas Instruments. TMS320x2833x,2823x serial communications interface (SCI) [EB/OL]. [2009?09?15]. http://www.ti.com/lit/ug/sprufz5a/sprufz5a.pdf.
[9] Texas Instruments. TMS320x2833x, 2823x system control and interrupts [EB/OL]. [2010?03?21]. http://www.ti.com/lit/ug/sprufb0d/sprufb0d.pdf.
[10] Texas Instruments. TMS320x2833x, 2823x direct memory access (DMA) module [EB/OL]. [2011?04?11]. http://www.ti.com/lit/ug/sprufb8d/sprufb8d.pdf.