崔耿豪 喬嬌嬌 曹瑛嬋
摘要:數(shù)字現(xiàn)代化是當今社會的潮流,是電子產(chǎn)品現(xiàn)代化的象征。數(shù)字信號處理器可以準確高效處理計算機的各種信號,這些都是模擬信號無法做到的。DSP芯片作為數(shù)字處理使用,在軍事、醫(yī)學等領域有著不可替代的作用,因此DSP技術作為各種電子產(chǎn)品的核心是當今大學生以及科研人員應該掌握的一門功課。
本文主要講述采用C語言進行C55x軟件開發(fā)的基礎知識,參照TI公司系列資料以及其它有關教材與文獻著作,結合本人三個月來的對開發(fā)DPS系統(tǒng)的學習體會,進行充實、提高和編撰而成。
關鍵詞:C語言;DSP芯片;C55x
1?背景
1.1課題背景和基礎研究的重要意義
當前,我國移動數(shù)字電話已擁有數(shù)億多的用戶,其中數(shù)字電視等各類數(shù)字產(chǎn)品已經(jīng)進入千家萬戶,這些產(chǎn)品均充分采用了先進的數(shù)字信號處理(DSP)技術對信號進行快速處理。因此,研究本課題對于數(shù)字現(xiàn)代化發(fā)展和物聯(lián)網(wǎng)等技術的進步有著深刻的意義,能大大推動智能現(xiàn)代化的趁勢。所以做為研究生的我們必須熟練掌握DSP這門課程。
1.2?DSP芯片的主要發(fā)展過程簡介
DSP芯片起源于20世紀70年代末,20世紀80年代后期和90年代初期DSP在硬件結構上更適合數(shù)字信號處理的要求,擁有了硬件乘法和單指令濾波處理兩種功能。
現(xiàn)在,DSP的制造封裝工藝普遍采用貼片式封裝,甚至采用BGA封裝。主頻也普遍達到1GHz,指令周期普遍縮短到10ns以下。其儲存容量也越來越大。現(xiàn)在的DSP芯片內(nèi)部一般都采用多級流水線結構,使DSP數(shù)據(jù)處理等功能有了很大的提高。DSP的字長也由以前的8位逐漸增長到現(xiàn)在的64位。較完善的開發(fā)工具也給開發(fā)者開發(fā)應用程序帶來了很大的方便。
2?集成開發(fā)環(huán)境
2.1集成開發(fā)環(huán)境CCS概述和軟件安裝
CCS5.4是基于Eclipse開放源軟件架構的TI嵌入式處理器集成開發(fā)環(huán)境。E-clipse軟件架構是作為一種建立開發(fā)工具的開放架構發(fā)展起來的,目前已廣泛應用于建立軟件開發(fā)環(huán)境,成為一種被很多嵌入式軟件開發(fā)商采用的標準架構。
系統(tǒng)配置要求:windows2000/XP/Win7操作系統(tǒng)下,1GB以上RAM,4GB以上的剩余硬盤空間。
CCS5.4的安裝過程十分簡單。雙擊安裝程序,按照提示操作就行了。安裝完畢,把CCS5.4軟件許可證文件拷貝到ccs\ccsv\ccs_base\debugServer路徑下。安裝成功后,桌面上自動會出現(xiàn)CCS5.4圖標。
2.2?C語言工程的創(chuàng)建
(1)選擇菜單“File”中“New……”菜單選項“CCS?Project”項。彈出“New?CCS?Project”對話框。
(2)在Project?name欄中,輸入“Ex3_2.pjt”。
(3)在Output?type欄中,選擇“Executable”。
(4)在Use?default?location欄中選“√”。Location欄中將出現(xiàn)啟動CCS時設置的Workspace路徑。
(5)在Device-Family下拉選單中,選擇“C55xx”。對于Device-Connection下拉選單中,選擇空白。對于Advanced?settings的各欄,均選擇缺省項。
(6)在Project?templates?and?example中選擇“Empty?Project”。單擊“Finish”按鈕,完成Ex3_2工程的建立。
2.3?C語言工程的創(chuàng)建與調(diào)試
建立配置文件。選擇菜單“File→New→New?Target?Configuration”項,彈出“New?Target?Configuration”對話框,填入配置的文件名字,單擊Finish按鈕。在彈出的對話框中的“Connection”欄中選擇:Texas?Instrument?Simulator,在“Board?or?Device”欄中選擇:C55xx?Rex2.x?CPU?Cycle?Accurate?Simulator,單擊“Save”按鈕退出,即可完成配置文件的建立。
進入Debug模式,出現(xiàn)Debug窗口。對于C語言工程來講,程序入口地址為main()函數(shù)入口處。
C語言工程中單步運行、連續(xù)運行、斷點的設置與取消等程序運行控制的方法與匯編語言工程基本相同。單擊窗口上面“run”菜單進行操作。
2.4寄存器、存儲器的觀察和修改
通過執(zhí)行菜單命令“View-Registers”或“View-Memory?Browser”,可以打開寄存器窗口或儲存器觀察窗口,查看或修改C55x?CPU寄存器的數(shù)值或存儲單元的數(shù)值。如果想要修改某存儲器單元的值,可以選中相應的存儲單元,之后輸入新的值,單擊鼠標左鍵或鍵盤回車鍵即可。
2.5表達式窗口和變量窗口的使用
CCS5.4還提供了表達式(Expressions)窗口和變量(Variables)窗口,用于實時地觀察和修改變局變量和局部變量的值。通過執(zhí)行菜單命令“View-Expressions”和“View-Variables”可以打開相應的窗口。
2.6圖形顯示工具
執(zhí)行菜單中的命令“Tools-Graph-XX”,可以打開相應的圖形信息顯示窗口。例如,執(zhí)行菜單命令“Tools-Graph-Single?Time”可以打開相應的圖形性質(Graph?Properties)窗口。這里要顯示的是向量x的圖形,其長度為200,數(shù)據(jù)類型為16位浮點(float型)。將相應參數(shù)填入圖形性質(Graph?Properties)窗口,單擊OK按鈕確認,即可直接得到如圖所示的向量x的一個時域圖形。
3?TMS320C55指令系統(tǒng)
3.1尋址方式
C55x可以用直接、間接、絕對三種類型的尋址方式來訪問數(shù)據(jù)空間、存儲器映射寄存器、寄存器位和I/O空間。
3.2指令系統(tǒng)
4??C語言程序設計
4.?1??C55x?C語言的編程理論基礎
在程序設計中,匯編語言較依賴于計算機的硬件,程序沒有好的可移植性。其它的高級語言可以解決這一狀況,但是匯編語言的一些功能難以在這些高級語言上實現(xiàn)。因此,我們通常選用C語言作為開發(fā)DSP的常用語言,并且這樣還能直接對硬件進行操作,解決匯編語言上某些方面上的問題。
數(shù)據(jù)類型有字符型、帶符號字符型、無符號字符型、浮點、雙精度等類型,每種類型的長度、內(nèi)容、最大值和最小值各有不同,使用時根據(jù)需要選擇合適的類型[4]。
4.1.2.2?關鍵字
(1)const:當定義任意變量和數(shù)組時,這個關鍵詞可以用來確保它們的值保持不變。
(2)ioport:編輯器對原始的C語言進行了擴展,增加了ioport這個詞來支持I/O尋址模式。
Interrupt、onchip、volatile等其它關鍵詞不再列舉。
4.1.3?asm指令和Pragma指令
(1)asm指令:提供了C不能提供的對硬件的訪問功能。
(2)pragma指令:告訴了編譯器的預處理器如何運行函數(shù)。
4.2應用程序的設計
4.2.1基礎算數(shù)運算
DSP程序也有像計算機語言程序一樣的各種加減乘除算法,從而實現(xiàn)各種邏輯功能。此處不再一一列舉。
數(shù)字濾波器是DPS的基本應用,分為有限沖擊響應濾波器和無限沖擊濾波器兩大類。在對相位要求不高的情況下,可選用IIR濾波器,在需要線性相位的情況下,則選擇用FIR濾波器[5]。
采用C語言也可以很容易地實現(xiàn)直接型FIR濾波器。例如:
float?fir(float?x_in,float?*x,float?*b,int?L)
{
float?y_out;int?I;
for(i=L-1;i>0;i--)
{
x[i]=x[i-1];
}
x[0]=x_in;y_out=0.0;
for(i=0;i<L;i++)
{
y_out=y_out+b[i]*x[i];
}
Return?y_out;
}
直接型FIR濾波器的實現(xiàn)有兩個基本操作,一個是輸入信號向量與濾波器系數(shù)向量的內(nèi)積計算,另一個是輸入信號的更新處理。每個采樣周期信號緩沖器都要更新一次,最開始的采樣x(n-L+1)被拋棄,而其它信號則向緩沖器的右方移動一個單元,一個新的采樣被插入存儲單元,并被標記x(n)。
實例程序[6]
6,?11
XE?"6"?:
Temp=xin;
for(k=0;k<N_IIR;k++)
{
w[0][k]=temp-a[1][k]*w[1][k]-a[2][k]*w[2][k];
temp=b[0][k]*w[0][k]+b[1][k]*w[1][k]+b[2][k]*w[2][k];
w[2][k]=w[1][k];
w[1][k]=w[0][k];
}
Xoutput=temp;
(1)DSPLLB是TI公司提供的一個優(yōu)化的DSP函數(shù)庫,它包括50多個在C程序中調(diào)用的匯編優(yōu)化的通用信號處理程序。
(2)DSPLLB新定義了Q.15(DATA)、Q.31(LDATA)、Q.3.12三個數(shù)據(jù)類型。
Q.15(DATA):一個Q.15操作數(shù)表達為short數(shù)據(jù)類型(16bit),在dsplibh頭文件中預定義為DATA。
Q.31(LDATA):一個Q.31操作數(shù)表達long數(shù)據(jù)類型(32bit),在dsplib.h頭文件中預定義為LDATA。
Q.3.12:含有3個整數(shù)位和12個小數(shù)位。
(3)DSPLLB庫函數(shù)采用的操作數(shù)通常為向量形式。威脅函數(shù)也可用于處理標量,標量可是為維數(shù)為1的向量。
(4)DSPLIB可以分為8類:FFT函數(shù)、濾波和卷積、自適應濾波、相關、數(shù)學、三角、矩陣、其它。
快速傅里葉變換是離散傅里葉變換的一種快速算法。雖然DFT的應用十分廣泛,但是計算量太大,因此FFT算法就是為了實時應用而提出的。通過FFT算法,可以使DFT的計算量大大減少,運算時間縮短1到2個數(shù)量級。
參考文獻:
[1]?黃鶴松,趙洪亮TMS320C55x?DSP應用系統(tǒng)設計[M].?北京:北京航空航天大學出版社,2014,3:31-36.
[2]趙中偉.DSP應用設計綜合實驗[M].杭州:浙江工商大學出版社,2013,1:51-53.
[3]楊勇.DSP控制技術與應用[M].北京:中國電力出版社,2015,5:79-80.
[4]蘇濤.DSP接口電路設計與編程[M].西安:西安電子科技大學出版,2003,11:59-61.
[5]楊鳳開.DSP原理及應用[M]湖北:華中科技大學出版社,?2012,2:45-46.
[6]鄭紅,劉振強.嵌入式DSP應用系統(tǒng)設計及實例剖析—基于TMS320C/DM64x平臺[M].北京:北京航空航天大學出版社,2012,1:105-10