姜恩華,楊一軍,陳得寶,周 正,趙慶平(淮北師范大學(xué)物理與電子信息學(xué)院,安徽淮北235000)
?
基于CCS軟件的數(shù)字信號(hào)處理課程實(shí)驗(yàn)設(shè)計(jì)
姜恩華,楊一軍,陳得寶,周正,趙慶平
(淮北師范大學(xué)物理與電子信息學(xué)院,安徽淮北235000)
摘要:文章借助TI公司的CCS3.3軟件,完成數(shù)字信號(hào)處理課程的實(shí)驗(yàn)設(shè)計(jì),主要從線性卷積、FFT算法、IIR濾波器設(shè)計(jì)和FIR濾波器設(shè)計(jì)4個(gè)方面討論數(shù)字信號(hào)處理課程的實(shí)驗(yàn)設(shè)計(jì).在CCS集成開發(fā)環(huán)境下,采用C語言編寫程序完成上述實(shí)驗(yàn)設(shè)計(jì)內(nèi)容.借助CCS軟件提供的軟件模擬器C5402 Device Simulator完成C語言程序的編譯、加載和運(yùn)行,通過time/frequency菜單觀察序列的波形,完成數(shù)字信號(hào)處理的實(shí)驗(yàn)教學(xué),取得良好的實(shí)驗(yàn)教學(xué)效果.
關(guān)鍵詞:CCS軟件;線性卷積;FFT算法;IIR濾波器設(shè)計(jì);FIR濾波器設(shè)計(jì)
數(shù)字信號(hào)處理課程是電子信息、通信工程和信號(hào)處理等學(xué)科的一門專業(yè)核心課程,針對(duì)數(shù)字信號(hào)處理的理論教學(xué)內(nèi)容開展相應(yīng)實(shí)驗(yàn)教學(xué),能夠提高數(shù)字信號(hào)處理課程的教學(xué)效果,如何搭建數(shù)字信號(hào)處理的實(shí)驗(yàn)教學(xué)環(huán)境是該課程能夠順利開展實(shí)驗(yàn)教學(xué)的關(guān)鍵.在長(zhǎng)期的數(shù)字信號(hào)處理課程教學(xué)中,采用TI公司的CCS軟件[1]搭建了數(shù)字信號(hào)處理的實(shí)驗(yàn)教學(xué)環(huán)境,通過C語言編寫實(shí)驗(yàn)教學(xué)程序,完成數(shù)字信號(hào)處理課程的實(shí)驗(yàn)教學(xué),取得良好的實(shí)驗(yàn)教學(xué)效果.
文獻(xiàn)[2-3]探索CCS用于“信號(hào)處理”課程的實(shí)驗(yàn)教學(xué),但需要DSP硬件設(shè)備的支持.文獻(xiàn)[4-5]探索采用CCS和MATLAB相結(jié)合的方法,通過MATLAB程序生成FIR濾波器的單位脈沖響應(yīng)h(n),供CCS環(huán)境下的FIR程序使用,該方法需要MATLAB軟件的支持.本文探索通過CCS3.3軟件搭建完成數(shù)字信號(hào)處理課程的軟件實(shí)驗(yàn)環(huán)境,選擇C5402 Device Simulator作為軟件模擬器,根據(jù)數(shù)字信號(hào)處理實(shí)驗(yàn)的數(shù)據(jù)和程序要求編寫CMD存儲(chǔ)器配置文件;使得數(shù)字信號(hào)處理課程的實(shí)驗(yàn)教學(xué)不需要DSP硬件實(shí)驗(yàn)設(shè)備或MATLAB軟件支持就可以順利完成,克服對(duì)DSP硬件實(shí)驗(yàn)設(shè)備維護(hù)的困難.
由于數(shù)字信號(hào)處理實(shí)驗(yàn)需要觀察信號(hào)的波形和頻譜,所以要熟悉CCS軟件菜單欄中的View菜單中的Graph子菜單中的time/frequency,借助time/frequency菜單觀察信號(hào)的波形.
由于借助CCS軟件輔助數(shù)字信號(hào)處理課程的實(shí)驗(yàn)教學(xué),主要在CCS集成開發(fā)環(huán)境下,通過C語言編寫程序?qū)崿F(xiàn),所以必須熟悉CCS軟件以工程文件組織程序文件的方法[6].首先建立一個(gè)工程文件,然后把程序文件添加到工程文件中,對(duì)工程文件進(jìn)行編譯,加載到軟件仿真器中,運(yùn)行,觀察實(shí)驗(yàn)結(jié)果.
根據(jù)數(shù)字信號(hào)處理課程的理論教學(xué)內(nèi)容,制定相應(yīng)的實(shí)驗(yàn)內(nèi)容.由于數(shù)字信號(hào)處理內(nèi)容主要分為兩部分,一部分主要講述序列的傅里葉變換和z變換,另一部分主要講述數(shù)字濾波器網(wǎng)絡(luò)結(jié)構(gòu)與設(shè)計(jì)方法,包括IIR濾波器設(shè)計(jì)和FIR濾波器設(shè)計(jì)[7-9].所以制定的實(shí)驗(yàn)內(nèi)容為:序列的線性卷積運(yùn)算、FFT算法計(jì)算序列的頻譜、IIR濾波器設(shè)計(jì)和FIR濾波器設(shè)計(jì),其中IIR濾波器設(shè)計(jì)采用雙線性變換法設(shè)計(jì),F(xiàn)IR濾波器設(shè)計(jì)采用窗函數(shù)法設(shè)計(jì).
根據(jù)數(shù)字信號(hào)處理的實(shí)驗(yàn)內(nèi)容,在CCS集成開發(fā)環(huán)境下,采用C語言編寫實(shí)現(xiàn)序列的線性卷積運(yùn)算、FFT算法、雙線性變換法設(shè)計(jì)IIR濾波器的系統(tǒng)函數(shù)H(z)和窗函數(shù)法設(shè)計(jì)FIR濾波器的單位脈沖響應(yīng)h (n)的子程序,組成數(shù)字信號(hào)處理實(shí)驗(yàn)教學(xué)的程序庫,學(xué)生做實(shí)驗(yàn)時(shí),可以參考程序庫中子程序編寫自己的子程序,也可以直接使用程序庫中的子程序.在C語言主函數(shù)main中,設(shè)計(jì)輸入序列x(n),調(diào)用數(shù)字信號(hào)處理實(shí)驗(yàn)函數(shù)庫中的子程序,完成實(shí)驗(yàn)程序設(shè)計(jì),對(duì)實(shí)驗(yàn)程序進(jìn)行編譯、加載和運(yùn)行,借助time/frequen?cy菜單觀察實(shí)驗(yàn)結(jié)果.
3.1序列的線性卷積實(shí)驗(yàn)設(shè)計(jì)
序列的線性卷積是數(shù)字信號(hào)處理課程中的一個(gè)基本運(yùn)算,能夠計(jì)算輸入序列x(n)通過初始狀態(tài)為零的線性時(shí)不變系統(tǒng)的輸出y(n),由于此系統(tǒng)的單位脈沖響應(yīng)為h(n),線性卷積計(jì)算公式如(1)式所示.
序列的線性卷積實(shí)驗(yàn)內(nèi)容主要是圍繞著(1)式展開,步驟如下:
(1)輸入序列x(n)和單位脈沖響應(yīng)h(n)設(shè)計(jì),通常把x(n)和h(n)設(shè)計(jì)為矩形序列,其長(zhǎng)度N=128.
(2)設(shè)計(jì)線性卷積運(yùn)算子程序,圍繞著計(jì)算線性卷積的4個(gè)步驟:翻轉(zhuǎn)、移位、相乘和求和.由于序列x(n)和h(n)通過C語言的數(shù)組存儲(chǔ),x(n)序列的翻轉(zhuǎn)移位序列x(n-m)在m≤n時(shí),能夠用數(shù)組表示,相乘求和可以用累加實(shí)現(xiàn),所以線性卷積運(yùn)算可以用兩重循環(huán)實(shí)現(xiàn),外層循環(huán)為移位運(yùn)算,循環(huán)變量為n,內(nèi)層循環(huán)為相乘求和運(yùn)算,循環(huán)變量為m,根據(jù)相乘求和的上下限確定內(nèi)層循環(huán)的起始條件和終止條件,根據(jù)相乘求和時(shí)序列x(n)和h(n)的邊界確定相乘求和時(shí)存放序列x(n)和h(n)數(shù)組的下標(biāo).
在CCS集成開發(fā)環(huán)境下,通過C語言編寫實(shí)現(xiàn)線性卷積運(yùn)算的子程序,在主函數(shù)main中,首先設(shè)計(jì)矩形序列x(n)和h(n),假設(shè)矩形序列的長(zhǎng)度N=128,x(n)和h(n)的波形如圖1所示,然后調(diào)用線性卷積運(yùn)算的子程序?qū)崿F(xiàn)矩形序列x(n)和h(n)的線性卷積運(yùn)算,實(shí)驗(yàn)結(jié)果如圖2所示,可以看出兩個(gè)矩形序列的線性卷積為三角序列.
圖1 x(n)和h(n)的時(shí)域波形
圖2 y(n)的時(shí)域波形
3.2FFT算法計(jì)算序列頻譜實(shí)驗(yàn)設(shè)計(jì)
在數(shù)字信號(hào)處理課程中,通過FFT算法計(jì)算序列的頻譜X(k),能夠節(jié)省復(fù)數(shù)乘法和加法的次數(shù),因此FFT算法常常被用來計(jì)算序列的頻譜X(k),F(xiàn)FT算法計(jì)算序列頻譜實(shí)驗(yàn)步驟如下:
(1)輸入序列x(n)設(shè)計(jì),由于正弦序列的傅里葉變換為單位沖激函數(shù),形狀容易辨認(rèn),一般輸入序列采用正弦序列.正弦序列的頻率ω越靠近π,周期N越小,頻率越大,為高頻信號(hào);頻率ω越靠近0,周期N越大,頻率越小,為低頻信號(hào).所以輸入序列x(n)采用低頻的正弦序列和高頻的正弦序列疊加而成,x(n)如(2)式所示,假設(shè)輸入序列x(n)的長(zhǎng)度N=128.
(2)FFT算法子程序設(shè)計(jì),由于FFT算法分為時(shí)域抽取FFT算法和頻域抽取FFT算法,設(shè)計(jì)FFT算法程序,主要是按照FFT算法的運(yùn)算流圖為編程思路.本文以時(shí)域抽取FFT算法為例,其編程思路如下:
首先把輸入序列x(n)以倒位序存放到數(shù)組中;其次由于蝶形運(yùn)算需要已知旋轉(zhuǎn)因子Wp
N,通過遞推公式計(jì)算出WpN存放到數(shù)組中;然后根據(jù)蝶形運(yùn)算流圖設(shè)計(jì)FFT算法程序,由于第一級(jí)蝶形運(yùn)算的旋轉(zhuǎn)因子W0N=1,所以第一級(jí)蝶形運(yùn)算直接采用單重循環(huán)結(jié)構(gòu)實(shí)現(xiàn),從第二級(jí)到最后一級(jí)蝶形運(yùn)算采用三重循環(huán)結(jié)構(gòu)實(shí)現(xiàn),外層循環(huán)控制蝶形運(yùn)算流圖中的級(jí)數(shù),中層循環(huán)用于控制本級(jí)蝶形運(yùn)算流圖中蝶形運(yùn)算的分組,內(nèi)層循環(huán)計(jì)算每個(gè)蝶形運(yùn)算的分組鐘的蝶形運(yùn)算.
在CCS集成開發(fā)環(huán)境下,通過C語言編寫實(shí)現(xiàn)FFT快速算法的子程序,在主函數(shù)把公式(2)轉(zhuǎn)換為C語言的語句,計(jì)算輸入序列x(n),假設(shè)輸入序列的長(zhǎng)度N=128,x(n)的波形如圖3所示,頻譜如圖4所示,然后調(diào)用FFT快速算法的子程序計(jì)算輸入序列x(n)的頻譜X(k),實(shí)驗(yàn)結(jié)果如圖5所示,比較圖5和圖4,判斷FFT程序的正確性,從頻譜X(k)可以明顯地看到截?cái)嘈?yīng).
圖3 FFT算法輸入序列x(n)的時(shí)域波形
圖4 FFT算法輸入序列x(n)的頻譜
圖5 FFT算法計(jì)算的X(k)的波形
3.3IIR濾波器設(shè)計(jì)
在數(shù)字信號(hào)處理課程中,IIR濾波器設(shè)計(jì)主要通過模擬濾波器設(shè)計(jì)實(shí)現(xiàn),本文以雙線性變換法設(shè)計(jì)IIR低通濾波器為例,討論IIR濾波器設(shè)計(jì)的過程,其步驟如下:
(1)輸入序列x(n)設(shè)計(jì),若待設(shè)計(jì)的IIR濾波器為低通濾波器,截止頻率ωc=0.1π,則輸入序列x(n)采用兩個(gè)正弦序列相加混合而成,其中一個(gè)正弦序列的頻率ω1低于0.1π,另一個(gè)正弦序列的頻率ω2高于0.1π,x(n)如(3)式所示,假設(shè)輸入序列x(n)的長(zhǎng)度N=256.
(2)通過雙線性變換法設(shè)計(jì)IIR低通濾波器,把待設(shè)計(jì)的數(shù)字濾波器的邊界頻率ωp=0.1π和ωs=0.5π通過(4)式變換為模擬濾波器的邊界頻率Ωp和Ωs,假設(shè)T=2 s.
然后通過模擬濾波器設(shè)計(jì)(例如巴特沃斯濾波器設(shè)計(jì)),求得模擬濾波器的階數(shù)N,得到模擬濾波器歸一化的系統(tǒng)函數(shù),對(duì)去歸一化,求得系統(tǒng)函數(shù)的一般形式如(5)式所示.
IIR濾波器的系統(tǒng)函數(shù)H(z),如(6)式所示.
(3)由H(z)求出IIR低通濾波器的線性常系數(shù)差分方程,把輸入序列x(n)和初始條件代入差分方程,通過遞推方法求出濾波后的輸出序列y(n),觀察y(n)的波形.
在CCS集成開發(fā)環(huán)境下,通過C語言編寫程序,在C語言的主函數(shù)main中通過公式(3)計(jì)算輸入序列x(n);假設(shè)的階數(shù)k=2,調(diào)用轉(zhuǎn)換成H(z)的k=2的子程序,計(jì)算H(z)的分子和分母多項(xiàng)式的系數(shù),得到IIR低通濾波器的線性常系數(shù)差分方程;通過遞推方法求解差分方程,求得濾波后的輸出序列y(n),x(n)和y(n)的時(shí)域波形如圖6所示.圖6的上幅圖為混疊的正弦序列x(n)的波形,下幅圖為IIR低通濾波器的輸出序列y(n)的波形,x(n)的頻譜如圖7所示,y(n)的頻譜如圖8所示,比較圖8與圖7,可以看出y(n)為x(n)的低頻成分,由圖6的下幅圖可以看出y(n)的周期N為32.
圖6 IIR濾波器的序列x(n)和y(n)的時(shí)域波形
圖7 IIR濾波器的輸入序列x(n)的頻譜
圖8 IIR濾波器的輸出序列y(n)的頻譜
3.4FIR濾波器設(shè)計(jì)
本文以窗函數(shù)法設(shè)計(jì)FIR低通濾波器為例,討論FIR濾波器設(shè)計(jì)的過程,其步驟如下:
(1)根據(jù)數(shù)字濾波器的傳輸函數(shù)Hd(ejω),求出hd() n,然后通過窗函數(shù)截短得到h(n),假設(shè)截取長(zhǎng)度N=128,若設(shè)計(jì)的FIR濾波器為低通濾波器,則h(n)如(7)式所示.
(2)輸入序列x(n)設(shè)計(jì),由(7)式得FIR低通濾波器的截止頻率ωc=0.1π,則輸入序列x(n)采用兩個(gè)正弦序列疊加而成,其中一個(gè)正弦序列的頻率ω1低于0.1π,另一個(gè)正弦序列的頻率ω2高于0.1π,x(n)如(8)式所示,假設(shè)輸入序列x(n)的長(zhǎng)度N=128.
(3)計(jì)算輸入序列x(n)和h(n)的線性卷積,求出濾波后的輸出序列y(n),觀察y(n)的波形.
在CCS集成開發(fā)環(huán)境下,通過C語言編寫程序,在主函數(shù)中,通過公式(7)計(jì)算出h(n),通過公式(8)計(jì)算輸入序列x(n),x(n)和h(n)的時(shí)域波形如圖9所示,圖9的上幅圖為混疊的正弦序列x(n)的時(shí)域波形,圖9的下幅圖為FIR低通濾波器的單位脈沖響應(yīng)序列h(n)的時(shí)域波形,x(n)的頻譜如圖10所示,h(n)的頻譜如圖11所示.
圖9 FIR濾波器的序列x(n)和h(n)的時(shí)域波形
圖10 FIR濾波器的輸入序列x(n)的頻譜
圖11 FIR濾波器的h(n)的頻譜
調(diào)用線性卷積子程序,計(jì)算x(n)和h(n)的線性卷積,得到輸出序列y(n),y(n)的時(shí)域波形如圖12所示,頻譜如圖13所示,比較圖13與圖10,可以看出y(n)為x(n)的低頻成分,由圖12可以看出y(n)的周期N為32.
圖12 FIR濾波器輸出序列y(n)的時(shí)域波形
圖13 FIR濾波器輸出序列y(n)的頻譜
本文借助TI公司的CCS3.3軟件,搭建數(shù)字信號(hào)處理課程的軟件實(shí)驗(yàn)環(huán)境,編寫CMD存儲(chǔ)器配置文件,選擇C5402 Device Simulator作為軟件模擬器.在CCS集成開發(fā)環(huán)境下,采用C語言編寫程序,主要從序列的線性卷積、FFT算法計(jì)算序列的頻譜、IIR濾波器設(shè)計(jì)和FIR濾波器設(shè)計(jì)4個(gè)方面開展數(shù)字信號(hào)處理課程的實(shí)驗(yàn)設(shè)計(jì),借助C5402 Device Simulator軟件模擬器完成C語言程序的編譯、加載和運(yùn)行,通過time/frequency菜單觀察信號(hào)序列的波形,操作簡(jiǎn)單方便,實(shí)驗(yàn)現(xiàn)象明顯,能夠加深學(xué)生對(duì)數(shù)字信號(hào)處理課程理論知識(shí)的學(xué)習(xí)與理解.
參考文獻(xiàn):
[1]Code Composer Studio(CCS)集成開發(fā)環(huán)境(IDE).http://www.ti.com.cn/tool/cn/CCSTUDIO.
[2]郝小江,繆志農(nóng),黃昆.基于DSP的數(shù)字信號(hào)處理實(shí)驗(yàn)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2012,29(2):44-47.
[3]劉成云,陳振學(xué),孔慧.基于CCS的“信號(hào)分析與處理”實(shí)驗(yàn)教學(xué)[J].實(shí)驗(yàn)室研究與探索,2010,29(1l):97-100.
[4]李軍,周亞訓(xùn).基于MATLAB和DSP的數(shù)字信號(hào)處理課程實(shí)驗(yàn)設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2007,26(1):26-30.
[5]謝海霞,孫志雄.FIR濾波器的DSP實(shí)現(xiàn)[J].電子器件,2012,35(5):554-557.
[6]彭啟琮.TI DSP集成化開發(fā)環(huán)境(CCS)使用手冊(cè)[M].北京:清華大學(xué)出版社,2007.
[7]丁玉美,高西全.數(shù)字信號(hào)處理[M].2版.西安:西安電子科技大學(xué)出版社,2001.
[8]程佩青.數(shù)字信號(hào)處理教程[M].3版.北京:清華大學(xué)出版社,2007.
[9]A.V.奧本海姆,R.W.謝弗,J.R.巴克.離散時(shí)間信號(hào)處理[M].2版.劉樹棠,黃建國,譯.陜西:西安交通大學(xué)出版社,2001.
Experimental Design of the Digital Signal Processing Curriculum Based on the CCS Software
JIANG Enhua,YANG Yijun,CHEN Debao,ZHOU Zheng,ZHAO Qingping
(School of Physics and Electronic Information,Huaibei Normal University,235000,Huaibei,Anhui,China)
Abstract:The experimental design of the digital signal processing curriculum is completed by the CCS soft?ware of the TI company.The experimental design content consists mostly of the linear convolution,F(xiàn)FT algo?rithm,IIR filter design and FIR filter design.By the CCS integrated development environment,the experimen?tal design content can be implemented by designing the C program.The C program is compiled,loaded and run by the C5402 Device simulator of the CCS software,and the waveform of the signal sequence is observed by the time/frequency menu.The experiment teaching of the digital signal processing is finished.
Key words:CCS software;linear convolution;FFT algorithm;IIR filter design;FIR filter design
作者簡(jiǎn)介:姜恩華(1974-),男,安徽碭山人,副教授,工學(xué)碩士,研究方向:數(shù)字信號(hào)處理與DSP技術(shù).
基金項(xiàng)目:安徽省高等學(xué)校省級(jí)教學(xué)研究項(xiàng)目(2014jyxm166);安徽省高等教育振興計(jì)劃項(xiàng)目(2014zdjy060);安徽省教育廳名師工作室(2015msgzs138);淮北師范大學(xué)教學(xué)研究項(xiàng)目(jy14107,jy14143,jy15126)
收稿日期:2015-05-04
中圖分類號(hào):TN 911.72
文獻(xiàn)標(biāo)識(shí)碼:C
文章編號(hào):2095-0691(2016)01-0089-05