第一篇:DSP實(shí)驗(yàn)5
實(shí)驗(yàn)五 FIR數(shù)字濾波器的設(shè)計(jì)(設(shè)計(jì)性實(shí)驗(yàn))
實(shí)驗(yàn)名稱:FIR數(shù)字濾波器的設(shè)計(jì) 實(shí)驗(yàn)項(xiàng)目性質(zhì):編程設(shè)計(jì) 所屬課程名稱:數(shù)字信號(hào)處理 計(jì)劃學(xué)時(shí):4
一、實(shí)驗(yàn)?zāi)康?/p>
1.掌握用窗函數(shù)法、頻率采樣法設(shè)計(jì)FIR濾波器的原理及方法,熟悉響應(yīng)的計(jì)算機(jī)編程;
2.熟悉線性相位FIR濾波器的幅頻特性和相頻特性; 3.了解各種不同窗函數(shù)對(duì)濾波器性能的影響。
二、預(yù)習(xí)與參考
2.1窗口法
窗函數(shù)法設(shè)計(jì)線性相位FIR濾波器步驟
? ? 確定數(shù)字濾波器的性能要求:臨界頻率{ωk},濾波器單位脈沖響應(yīng)長(zhǎng)度N; 根據(jù)性能要求,合理選擇單位脈沖響應(yīng)h(n)的奇偶對(duì)稱性,從而確定理想頻率響應(yīng)Hd(ejω)的幅頻特性和相頻特性;
? 求理想單位脈沖響應(yīng)hd(n),在實(shí)際計(jì)算中,可對(duì)Hd(ejω)按M(M遠(yuǎn)大于N)點(diǎn)等距離采樣,并對(duì)其求IDFT得hM(n),用hM(n)代替hd(n);
? 選擇適當(dāng)?shù)拇昂瘮?shù)w(n),根據(jù)h(n)= hd(n)w(n)求所需設(shè)計(jì)的FIR濾波器單位脈沖響應(yīng);
? 求H(e),分析其幅頻特性,若不滿足要求,可適當(dāng)改變窗函數(shù)形式或長(zhǎng)度N,重復(fù)上述設(shè)計(jì)過程,以得到滿意的結(jié)果。jω窗函數(shù)的傅式變換W(ejω)的主瓣決定了H(ejω)過渡帶寬。W(ejω)的旁瓣大小和多少?zèng)Q定了H(ejω)在通帶和阻帶范圍內(nèi)波動(dòng)幅度,常用的幾種窗函數(shù)有:
? ? 矩形窗 w(n)=RN(n); Hanning窗
;
? Hamming窗 ;
? Blackmen窗 ;
? Kaiser窗。
式中Io(x)為零階貝塞爾函數(shù)。2.2頻率采樣法
頻率采樣法是從頻域出發(fā),將給定的理想頻率響應(yīng)Hd(ejω)加以等間隔采樣
然后以此Hd(k)作為實(shí)際FIR數(shù)字濾波器的頻率特性的采樣值H(k),即令
由H(k)通過IDFT可得有限長(zhǎng)序列h(n)
將上式代入到Z變換中去可得
其中Φ(ω)是內(nèi)插函數(shù)
三、設(shè)計(jì)指標(biāo)
(1)矩形窗設(shè)計(jì)線性相位低通濾波器(參數(shù)自主設(shè)定)(2)改用Hanning 窗,設(shè)計(jì)(1)中的低通濾波器。
四、實(shí)驗(yàn)要求(設(shè)計(jì)要求)
(1)編寫窗函數(shù)法FIR濾波器設(shè)計(jì)代碼,觀察幅頻和相位特性的變化,注意長(zhǎng)度N變化的影響; 觀察并記錄窗函數(shù)對(duì)濾波器幅頻特性的影響,比較兩種窗的特點(diǎn);(2)要求所編的程序能正確運(yùn)行;畫出波形,完成并提交實(shí)驗(yàn)報(bào)告。
五、調(diào)試及結(jié)果測(cè)試 提交帶注釋的(或給出每個(gè)操作所涉及的算法)且運(yùn)行正確的源程序,說明調(diào)試過程中所遇到的問題、解決方法及經(jīng)驗(yàn)與體會(huì)。
六、考核形式
理論課程閉卷考試,實(shí)驗(yàn)部分提交實(shí)驗(yàn)報(bào)告。
七、實(shí)驗(yàn)報(bào)告要求
1.實(shí)驗(yàn)報(bào)告必須獨(dú)立完成,抄襲、復(fù)制他人作無效處理: 2.實(shí)驗(yàn)報(bào)告要求:
(1)要按規(guī)定從教學(xué)網(wǎng)站下載樣板文件格式書寫。
(2)實(shí)驗(yàn)報(bào)告要注明姓名,學(xué)號(hào),實(shí)驗(yàn)名稱,完成日期,聯(lián)系電話。(3)內(nèi)容不真實(shí)、不認(rèn)真、不能按時(shí)完成的,不記成績(jī)。(4)簡(jiǎn)要說明設(shè)計(jì)題目、內(nèi)容、原理。
3.附濾波器設(shè)計(jì)代碼及要求的圖形。對(duì)實(shí)驗(yàn)結(jié)果和實(shí)驗(yàn)中的現(xiàn)象進(jìn)行簡(jiǎn)練明確的分析并作出結(jié)論或評(píng)價(jià),對(duì)本人在實(shí)驗(yàn)全過程中的經(jīng)驗(yàn)、教訓(xùn)、體會(huì)、收獲等進(jìn)行必要的小結(jié)。4.報(bào)告要求獨(dú)立完成,篇幅為A4紙不超過5頁,突出自己的設(shè)計(jì)。5.對(duì)改進(jìn)實(shí)驗(yàn)內(nèi)容、安排、方法、設(shè)備等的建議和設(shè)想,(此部分可選作)。6.不能完成實(shí)驗(yàn)報(bào)告者,不能參加課程考試。
八、思考題
1.不同窗函數(shù)對(duì)濾波器性能的影響如何?
2.線性相位FIR濾波器的幅頻特性和相頻特性如何?
附:實(shí)驗(yàn)內(nèi)容
%N=45,計(jì)算并畫出矩形框、漢明窗、布萊克曼窗的歸一化的幅度譜,并比較各自的主要特點(diǎn) %(1)矩形窗(Rectangle Window)調(diào)用格式:w=boxcar(n),根據(jù)長(zhǎng)度 n 產(chǎn)生一個(gè)矩形窗 w。
%(2)三角窗(Triangular Window)調(diào)用格式:w=triang(n),根據(jù)長(zhǎng)度 n 產(chǎn)生一個(gè)三角窗 w。
%(3)漢寧窗(Hanning Window)調(diào)用格式:w=hanning(n),根據(jù)長(zhǎng)度 n 產(chǎn)生一個(gè)漢寧窗 w。
%(4)海明窗(Hamming Window)調(diào)用格式:w=hamming(n),根據(jù)長(zhǎng)度 n 產(chǎn)生一個(gè)海明窗 w。
%(5)布拉克曼窗(Blackman Window)調(diào)用格式:w=blackman(n),根據(jù)長(zhǎng)度 n 產(chǎn)生一個(gè)布拉克曼窗 w。
%(6)愷撒窗(Kaiser Window)調(diào)用格式:w=kaiser(n,beta),根據(jù)長(zhǎng)度 n 和影響窗函數(shù)旁瓣的β參數(shù)產(chǎn)生一個(gè)愷撒窗w 1 clear all %清零
close all %關(guān)閉其他程序 N=45;w1=boxcar(N);%矩形窗的調(diào)用 w2=hamming(N);%漢明窗的調(diào)用
w3=blackman(N);%布萊克曼窗的調(diào)用 [h,w]=freqz(w1,N);%矩形窗的幅頻特性
figure(1)%第一張圖
plot(w/pi,20*log10(abs(h)));%繪制圖形
axis([0,1,-80,10]);%橫軸0到1,縱軸是-80到10 grid on%畫格
xlabel('歸一化頻率/π');%x軸標(biāo)簽 ylabel('幅度/dB');%y軸標(biāo)簽 title('矩形窗');%標(biāo)題 figure(2)[h,w]=freqz(w2,N);plot(w/pi,20*log10(abs(h)));axis([0,1,-80,10]);grid on xlabel('歸一化頻率/π');ylabel('幅度/dB');title('漢明窗');figure(3)[h,w]=freqz(w3,N);plot(w/pi,20*log10(abs(h)));axis([0,1,-150,10]);grid on xlabel('歸一化頻率/π');ylabel('幅度/dB');title('布萊克曼窗');2 %N=15,帶通濾波器的兩個(gè)通帶邊界分別是w1=0.3π,w2=0.5π。用漢寧窗設(shè)計(jì)此線性相位濾波器,觀察
%它的實(shí)際3dB和20dB帶寬。N=45,重復(fù)這一設(shè)計(jì),觀察幅頻和相位特性的變化,注意N變化的影響。
close all %關(guān)閉其他程序 clear all%清零 N=15;w1=0.3;w2=0.5;w=hanning(N);%漢寧窗的調(diào)用 n=0:N-1;alfa=(N-1)/2;%對(duì)稱軸
h=fir1(N-1,[w1 w2],w);%設(shè)計(jì)加窗函數(shù)的有效濾波器,w1,w2通帶的兩個(gè)范圍,w指漢寧窗
[h1,w3]=freqz(h,1);% %漢寧窗的幅頻特性 figure(1)%第一張圖
subplot(2,1,1);%兩張圖的第一張圖
plot(w3/pi,20*log10(abs(h1)));%繪制圖形
grid on;%畫格
axis([0,1,-80,10]);;%橫軸0到1,縱軸是-80到10 xlabel('歸一化頻率/π');%x軸標(biāo)簽 ylabel('幅度/dB');%y軸標(biāo)簽
subplot(2,1,2);%兩張圖的第二張圖 plot(w3/pi,angle(h1));grid on;axis([0,1,-4,4]);xlabel('歸一化頻率/π');ylabel('角度/rad');N=45;w=hanning(N);n=0:N-1;alfa=(N-1)/2;h=fir1(N-1,[w1 w2],w);[h1,w3]=freqz(h,1);figure(2)subplot(2,1,1);plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);xlabel('歸一化頻率/π');ylabel('幅度/dB');subplot(2,1,2);plot(w3/pi,angle(h1));grid on;axis([0,1,-4,4]);xlabel('歸一化頻率/π');ylabel('角度/rad');3 close all%關(guān)閉其他程序 clear all%清零 N=15;w1=0.3;w2=0.5;wn1=boxcar(N);%矩形窗的調(diào)用
wn2=blackman(N);%布萊克曼窗的調(diào)用
hn1=fir1(N-1,[w1 w2],wn1);%設(shè)計(jì)加窗函數(shù)的有效濾波器,w1,w2通帶的兩個(gè)范圍,w指漢寧窗
hn2=fir1(N-1,[w1 w2],wn2);[h1,w3]=freqz(hn1,1);%矩形窗的幅頻特性 figure(1)%第一張圖%繪制圖形
plot(w3/pi,20*log10(abs(h1)));%繪制圖形 grid on;%畫格
axis([0,1,-80,10]);%橫軸0到1,縱軸是-80到10 xlabel('歸一化頻率/π');%x軸標(biāo)簽 ylabel('幅度/dB');%y軸標(biāo)簽 title('矩形窗,N=15');%標(biāo)題 [h1,w3]=freqz(hn2,1);figure(2)plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);xlabel('歸一化頻率/π');ylabel('幅度/dB');title('布萊克曼窗,N=15');N=45;wn1=boxcar(N);wn2=blackman(N);hn1=fir1(N-1,[w1 w2],wn1);hn2=fir1(N-1,[w1 w2],wn2);[h1,w3]=freqz(hn1,1);figure(3)plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);xlabel('歸一化頻率/π');ylabel('幅度/dB');title('矩形窗,N=45');[h1,w3]=freqz(hn2,1);figure(4)plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-110,10]);xlabel('歸一化頻率/π');ylabel('幅度/dB');title('布萊克曼窗,N=45');4:
close all%關(guān)閉其他程序 clear all%清零 N=40;%beta=4 for n=1:3 %or循環(huán) if n==1 %if語句 beta=4;elseif n==2 beta=6;else beta=10;end;w=kaiser(N,beta);%凱塞窗的調(diào)用
h=fir1(N-1,[0.2 0.4 0.6 0.8],w);%設(shè)計(jì)加窗函數(shù)的有效濾波器,w指漢寧窗 [h1,w1]=freqz(h,1);%凱塞窗的幅頻特性 figure(n)%第n張圖
subplot(2,1,1);%兩張圖的第一張圖 plot(w1/pi,20*log10(abs(h1)));%繪制圖形 grid on;%畫格
axis([0,1,-80,10]);%橫軸0到1,縱軸是-80到10 xlabel('歸一化頻率/π');%x軸標(biāo)簽 ylabel('幅度/dB');%y軸標(biāo)簽 if n==1 %if語句
title('beta=4');elseif n==2 title('beta=6');else title('beta=10');end;subplot(2,1,2);plot(w1/pi,angle(h1));grid on;axis([0,1,-4,4]);xlabel('歸一化頻率/π');ylabel('角度/rad');end 5 clear all%清零
close all%關(guān)閉其他程序 N=45;k=0:N-1;for k=0:N-1 %for循環(huán) w=2*pi/N*k;%取樣 hk(1,k+1)=0;if((w>=0.2*pi)&&(w<=0.4*pi))||(w>=0.6*pi && w<=0.8*pi)||(w>=1.2*pi && w<=1.4*pi)||(w>=1.6*pi && w<=1.8*pi)hk(1,k+1)=1;end end k=0:N-1;hk(1,5)=0.5;hk(1,11)=0.5;hk(1,14)=0.5;hk(1,20)=0.5;hk(1,27)=0.5;hk(1,33)=0.5;hk(1,36)=0.5;hk(1,42)=0.5;thetak=-k*2*pi/N*((N-1)/2);%表示相位 hk1=hk.*exp(j*thetak);%定義式子 hn=ifft(hk1);%快速傅立葉逆變換 [h1,w1]=freqz(hn,1);%幅頻特性
plot(w1/pi,20*log10(abs(h1)));%繪制圖形 grid on;%畫格
axis([0,1,-80,10]);%橫軸0到1,縱軸是-80到10 xlabel('歸一化頻率/π');%x軸標(biāo)簽 ylabel('幅度/dB');%y軸標(biāo)簽
六、實(shí)驗(yàn)分析及心得體會(huì)
第二篇:DSP實(shí)驗(yàn)學(xué)習(xí)心得
DSP實(shí)驗(yàn)學(xué)習(xí)心得
論DSP發(fā)展前景
DSP 即為數(shù)字信號(hào)處理器(Digital Signal Processing),是在模擬信號(hào)變換成數(shù) 字信號(hào)以后進(jìn)行高速實(shí)時(shí)處理的專用處理器。它的工作原理是將現(xiàn)實(shí)世界的模擬信號(hào)轉(zhuǎn)換 成數(shù)字信號(hào),再用數(shù)學(xué)方法處理此信號(hào),得到相應(yīng)的結(jié)果。自從數(shù)字信號(hào)處理器(Digital Signal Processor)問世以來,由于它具有高速、靈活、可編程、低功耗和便于接口等特 點(diǎn),已在圖形、圖像處理,語音、語言處理,通用信號(hào)處理,測(cè)量分析,通信等領(lǐng)域發(fā)揮 越來越重要的作用。隨著成本的降低,控制界已對(duì)此產(chǎn)生濃厚興趣,已在不少場(chǎng)合得到成 功應(yīng)用。DSP 數(shù)字信號(hào)處理器 DSP 芯片采用了數(shù)據(jù)總線和程序總線分離的哈佛結(jié)構(gòu)及改 進(jìn)的哈佛結(jié)構(gòu),較傳統(tǒng)處理器的馮?諾依曼結(jié)構(gòu)具有更高的指令執(zhí)行速度。其處理速度比最 快的 CPU 快 10-50 倍。在當(dāng)今數(shù)字化時(shí)代背景下,DSP 已成為通信、計(jì)算機(jī)、消費(fèi)類電 子產(chǎn)品等領(lǐng)域的基礎(chǔ)器件,被譽(yù)為信息社會(huì)革命的“旗手”。
最初的 DSP 器件只是被設(shè)計(jì)成用以完成復(fù)雜數(shù)字信號(hào)處理的算法。DSP 器件 緊隨著數(shù)字信號(hào)理論的發(fā)展而不斷發(fā)展。DSP發(fā)展最快,現(xiàn)在的 DSP 屬于第五代產(chǎn)品,它與第四代相比,系統(tǒng)集成度更高,將 DSP 芯核及外圍組件綜合集成在單一芯片上。這種集成度極高的 DSP 芯片不僅在通信、計(jì)算機(jī)領(lǐng)域大顯身手,而且逐漸滲透 到人們?nèi)粘OM(fèi)領(lǐng)域,前景十分可觀。近年來,隨著通信技術(shù)的飛速發(fā)展,DSP已經(jīng)成為信號(hào)與信息處理領(lǐng)域里一門十分重要的新興學(xué)科,它代表著當(dāng)今無線系統(tǒng)的主流發(fā)展方向?,F(xiàn)在,通信領(lǐng)域中許多產(chǎn)品 都與 DSP 密切聯(lián)系,例如,Modem、數(shù)據(jù)加密、擴(kuò)頻通信、可視電話等。而尋找 DSP 芯片來實(shí)現(xiàn)算法最開始的目標(biāo)是在可以接受的時(shí)間內(nèi)對(duì)算法做仿真,隨后是將波形存儲(chǔ)起 來,然后再加以處理。
在短短的十多年 時(shí)間,DSP芯片已經(jīng)在信號(hào)處理、通信、雷達(dá)等許多領(lǐng)域得到廣泛的應(yīng)用。目前, DSP 芯片的價(jià)格也越來越低,性能價(jià)格比日益提高,具有巨大的應(yīng)用潛力。DSP 芯片的應(yīng)用主要有:(1)
信號(hào)處理--如,數(shù)字濾波、自適應(yīng)濾波、快速傅里葉變換、相關(guān)運(yùn)算、頻譜分析、卷積等。(2)通信--如,調(diào)制解調(diào)器、自適應(yīng)均衡、數(shù)據(jù)加密、數(shù)據(jù)壓縮、回坡抵消、多路復(fù)用、傳真、擴(kuò)頻通信、糾錯(cuò)編碼、波形產(chǎn)生等。(3)語音--如語音編碼、語音合成、語音識(shí)別、語音增強(qiáng)、說話人辨認(rèn)、說話人確認(rèn)、語音郵件、語音儲(chǔ)存等。(4)圖像/圖形--如二維和三維圖形處理、圖像壓縮與傳輸、圖像增強(qiáng)、動(dòng)畫、機(jī)器人視覺等。(5)軍事--如保密通信、雷達(dá)處理、聲納處理、導(dǎo)航等。
(6)儀器儀表--如頻譜分析、函數(shù)發(fā)生、鎖相環(huán)、地震處理等。(7)
自動(dòng)控制--如引擎控制、深空、自動(dòng)駕駛、機(jī)器人控制、磁盤控制。(8)
醫(yī)療--如助聽、超聲設(shè)備、診斷工具、病人監(jiān)護(hù)等。(9)家用電器--如高保真音響、音樂合成、音調(diào)控制、玩具與游戲、數(shù)字 電話/電視等 DSP 的發(fā)展前景 DSP 的功能越來越強(qiáng),應(yīng)用越來越廣,達(dá)到甚至超過了微控制器的功能,比 微控制器做得更好而且價(jià)格更便宜,許多家電用第二代 DSP 來控制大功率電機(jī)就 是一個(gè)很好的例子。汽車、個(gè)人通信裝置、家用電器以及數(shù)以百萬計(jì)的工廠使用 DSP 系統(tǒng)。數(shù)碼相機(jī)、IP 電話和手持電子設(shè)備的熱銷帶來了對(duì) DSP 芯片的巨大需 求。而手機(jī)、PDA、MP3 播放器以及手提電腦等則是設(shè)備個(gè)性化的典型代表,這 些設(shè)備的發(fā)展水平取決于 DSP 的發(fā)展。新的形勢(shì)下,DSP 面臨的要求是處理速度 更高,功能更多更全,功耗更低,存儲(chǔ)器用量更少。
DSP 的技術(shù)發(fā)展將會(huì)有以下 一些走勢(shì):(1)系統(tǒng)級(jí)集成 DSP 是潮流。小 DSP 芯片尺寸始終是 DSP 的技術(shù)發(fā)展方向。當(dāng)前的 DSP 尺寸小、功耗低、性能高。各 DSP 廠商紛紛采用新工藝,改進(jìn) DSP 芯核,并將幾個(gè) DSP 芯核、MPU 芯核、專用處理單元、外圍電路單元、存儲(chǔ)單元 統(tǒng)統(tǒng)集成在一個(gè)芯片上,成為 DSP 系統(tǒng)級(jí)集成電路。(2)追求更高的運(yùn)算速度和進(jìn)一步降低功耗和幾何尺寸。由于電子設(shè)備的 個(gè)人化和客戶化趨勢(shì),DSP 必須追求更高更快的運(yùn)算速度,才能跟上電子設(shè)備的 更新步伐。同時(shí)由于 DSP 的應(yīng)用范圍已擴(kuò)大到人們工作生活的各個(gè)領(lǐng)域,特別是 便攜式手持產(chǎn)品對(duì)于低功耗和尺寸的要求很高,所以
DSP 有待于進(jìn)一步降低功 耗。按照 CMOS 的發(fā)展趨勢(shì),依靠新工藝改進(jìn)芯片結(jié)構(gòu),DSP 運(yùn)算速度的提高和 功耗尺寸的降低是完全可能的。
(3)DSP 的內(nèi)核結(jié)構(gòu)進(jìn)一步改善。DSP 的結(jié)構(gòu)主要是針對(duì)應(yīng)用,并根據(jù)應(yīng)用 優(yōu)化 DSP 設(shè)計(jì)以極大改進(jìn)產(chǎn)品的性能。多通道結(jié)構(gòu)和單指令多重?cái)?shù)據(jù)、超長(zhǎng)指令 字結(jié)構(gòu)、超標(biāo)量結(jié)構(gòu)、超流水結(jié)構(gòu)、多處理、多線程及可并行擴(kuò)展的超級(jí)哈佛結(jié) 構(gòu)(SHARC)在新的高性能處理器中將占據(jù)主導(dǎo)地位。(4)DSP 嵌入式系統(tǒng)。DSP 嵌入式系統(tǒng)是 DSP 系統(tǒng)嵌入到應(yīng)用電子系統(tǒng)中 的一種通用系統(tǒng)。這種系統(tǒng)既具有 DSP 器件在數(shù)據(jù)處理方面的優(yōu)勢(shì),又具有應(yīng)用 目標(biāo)所需要的技術(shù)特征。在許多嵌入式應(yīng)用領(lǐng)域,既需要在數(shù)據(jù)處理方面具有獨(dú) 特優(yōu)勢(shì)的 DSP,也需要在智能控制方面技高一籌的微處理器(MCU)。因此,將 DSP 與 MCU 融合在一起的雙核平臺(tái),將成為 DSP 技術(shù)發(fā)展的一種新潮流。DSP 的發(fā)展非常迅速,而銷售價(jià)格逐年降低目前 DSP 的結(jié)構(gòu)、總線、資源和 接口技術(shù)都趨于標(biāo)準(zhǔn)化,尤其接口的標(biāo)準(zhǔn)化進(jìn)展更快。這給從事系統(tǒng)設(shè)計(jì)的工程 技術(shù)人員帶來很大機(jī)遇,采用先進(jìn)的 DSP 將會(huì)使開發(fā)的產(chǎn)品具有更強(qiáng)的市場(chǎng)競(jìng)爭(zhēng) 力。
近幾年來,DSP芯片、應(yīng)用軟件和系統(tǒng)的發(fā)展非常迅速,每年增長(zhǎng)速度高達(dá)40%。其市場(chǎng)驅(qū)動(dòng)力主要是因特網(wǎng)、無線通信、硬盤驅(qū)動(dòng)器、可視電話和會(huì)議電視以及其它消費(fèi) 類電子產(chǎn)品。也就是說,DSP產(chǎn)業(yè)的發(fā)展依賴于通信技術(shù)和通信市場(chǎng)。隨著新的通信體 制、傳輸方式和多媒體智能終端的迅速發(fā)展,其算法、標(biāo)準(zhǔn)和規(guī)程都需要在實(shí)踐中不斷發(fā) 展、改進(jìn)和優(yōu)化。DSP編程的靈活性和不斷增強(qiáng)的運(yùn)算能力,同時(shí)又將使通信技術(shù)向更 高層次邁進(jìn)。這對(duì)通信領(lǐng)域的廣大科技人員是一個(gè)機(jī)遇。抓住這個(gè)機(jī)遇,我們將大有作為。
通過這幾次實(shí)驗(yàn),我初步的對(duì)dsp有了一定了解。雖然是在老師們的指導(dǎo)下完成實(shí)驗(yàn)要求的,但是我想我還是收獲蠻多的。希望在以后的學(xué)習(xí)生活中能對(duì)dsp有更多的學(xué)習(xí)和研究。
第三篇:DSP實(shí)驗(yàn)心得體會(huì)
篇一:dsp實(shí)驗(yàn)報(bào)告心得體會(huì)
tms320f2812x dsp原理及應(yīng)用技術(shù)實(shí)驗(yàn)心得體會(huì)
1.設(shè)置環(huán)境時(shí)分為軟件設(shè)置和硬件設(shè)置,根據(jù)實(shí)驗(yàn)的需要設(shè)置,這次實(shí)驗(yàn)只是
軟件仿真,可以不設(shè)置硬件,但是要為日后的實(shí)驗(yàn)做準(zhǔn)備,還是要學(xué)習(xí)和熟悉硬件設(shè)置的過程。
2.在設(shè)置硬件時(shí),不是按實(shí)驗(yàn)書上的型號(hào)選擇,而是應(yīng)該按照實(shí)驗(yàn)設(shè)備上的型
號(hào)去添加。
3.不管是硬件還是軟件的設(shè)置,都應(yīng)該將之前設(shè)置好的刪去,重新添加。設(shè)置好的配置中
只能有一項(xiàng)。4.ccs可以工作在純軟件仿真環(huán)境中,就是由軟件在pc機(jī)內(nèi)存中構(gòu)造一個(gè)虛擬的
dsp環(huán)境,可以調(diào)試、運(yùn)行程序。但是一般無法構(gòu)造dsp中的外設(shè),所以軟件仿真通常用于調(diào)試純軟件算法和進(jìn)行效率分析等。
5.這次實(shí)驗(yàn)采用軟件仿真,不需要打開電源箱的電源。
6.在軟件仿真工作時(shí),無需連接板卡和仿真器等硬件。
7.執(zhí)行write_buffer一行時(shí)。如果按f10執(zhí)行程序,則程序在mian主函數(shù)中運(yùn)行,如果按f11,則程序進(jìn)入write_buffe函數(shù)內(nèi)部的程序運(yùn)行。
8.把str變量加到觀察窗口中,點(diǎn)擊變量左邊的“+”,觀察窗口可以展開結(jié)構(gòu)變
量,就可以看到結(jié)構(gòu)體變量中的每個(gè)元素了。
9.在實(shí)驗(yàn)時(shí),顯示圖形出現(xiàn)問題,不能顯示,后來在graph title 把input的大寫
改為input,在對(duì)volume進(jìn)行編譯執(zhí)行后,就可以看到顯示的正弦波圖形了。
10.在修改了實(shí)驗(yàn)2-1的程序后,要重新編譯、連接執(zhí)行程序,并且必須對(duì).out 文件進(jìn)行重新加載,因?yàn)榇藭r(shí).out文件已經(jīng)改變了。如果不重新加載,那么修改執(zhí)行程序后,其結(jié)果將不會(huì)改變。11.再觀察結(jié)果時(shí),可將data和data1的窗口同時(shí)打開,這樣可以便于比較,觀察
結(jié)果。
12.通過這次實(shí)驗(yàn),對(duì)tms320f2812x dsp軟件仿真及調(diào)試有了初步的了解與認(rèn)識(shí),因?yàn)樽?/p>
實(shí)驗(yàn)的時(shí)候都是按照實(shí)驗(yàn)指導(dǎo)書按部就班的,與真正的理解和掌握還是有些距離的。但是這也為我們?nèi)蘸筮\(yùn)用這些知識(shí)打下了基礎(chǔ),我覺得實(shí)驗(yàn)中遇到的問題,不要急于問老師或者同學(xué),先自己想辦法分析原因,想辦法解決,這樣對(duì)自身的提高更多吧。通過做實(shí)驗(yàn),把學(xué)習(xí)的知識(shí)利用起來,也對(duì)這門課程更加有興趣了。
組員:葉孝璐 馮煥芬 鄭瑋儀 龐露露
2012年4月10號(hào) 篇二:dsp實(shí)驗(yàn)報(bào)告+心得體會(huì)
龍 巖 學(xué) 院
實(shí) 驗(yàn) 報(bào) 告
班 級(jí) 07電本(1)班 學(xué)號(hào) 2007050344 姓 名 楊寶輝 同組人 獨(dú)立 實(shí)驗(yàn)日期 2010-5-18 室溫 大氣壓 成 績(jī)
基礎(chǔ)實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/p>
二、實(shí)驗(yàn)設(shè)備
三、實(shí)驗(yàn)原理
浮點(diǎn)數(shù)的表達(dá)和計(jì)算是進(jìn)行數(shù)字信號(hào)處理的基本知識(shí);產(chǎn)生正弦信號(hào)是數(shù)字信號(hào)處理1.一臺(tái)裝有ccs軟件的計(jì)算機(jī); 2.dsp實(shí)驗(yàn)箱的tms320f2812主控板; 3.dsp硬件仿真器。1.掌握ccs實(shí)驗(yàn)環(huán)境的使用; 2.掌握用c語言編寫dsp程序的方法。中經(jīng)常用到的運(yùn)算;c語言是現(xiàn)代數(shù)字信號(hào)處理表達(dá)的基礎(chǔ)語言和通用語言。寫實(shí)現(xiàn)程序時(shí)需要注意兩點(diǎn):(1)浮點(diǎn)數(shù)的范圍及存儲(chǔ)格式;(2)dsp的c語言與ansi c語言的區(qū)別。
四、實(shí)驗(yàn)步驟 1.打開ccs 并熟悉其界面;
2.在ccs環(huán)境中打開本實(shí)驗(yàn)的工程(example_base.pjt),編譯并重建.out 輸出文件,然后通過仿真器把執(zhí)行代碼下載到dsp芯片中;
3. 把x0 , y0 和z0添加到watch窗口中作為觀察對(duì)象(選中變量名,單擊鼠標(biāo)右鍵,在彈出菜單中選擇“add watch window”命令);
4. 選擇view->graph->time/frequency?。設(shè)置對(duì)話框中的參數(shù): 其中“start address”
設(shè)為“sin_value”,“acquisition buffer size”和“display data size”都設(shè)為“100”,并且把“dsp data type”設(shè)為“32-bit floating point”,設(shè)置好后觀察信號(hào)序列的波形(sin函數(shù),如圖);
5. 單擊運(yùn)行;
6. 觀察三個(gè)變量從初始化到運(yùn)算結(jié)束整個(gè)過程中的變化;觀察正弦波形從初始化到運(yùn)算結(jié)束整個(gè)過程中的變化;
7. 修改輸入序列的長(zhǎng)度或初始值,重復(fù)上述過程。
五、實(shí)驗(yàn)心得體會(huì)
通過本次實(shí)驗(yàn),加深了我對(duì)dsp的認(rèn)識(shí),使我對(duì)dsp實(shí)驗(yàn)的操作有了更進(jìn)一步的理解?;菊莆樟薱cs實(shí)驗(yàn)環(huán)境的使用,并能夠使用c語言進(jìn)行簡(jiǎn)單的dsp程序設(shè)計(jì)。
從軟件的安裝到使用軟件進(jìn)行程序設(shè)計(jì)與仿真,鍛煉了自己的動(dòng)手能力,也遇到了不少的坎坷,例如芯片的選擇,不能因?yàn)槁闊┒÷栽摬襟E,否則將會(huì)運(yùn)行出錯(cuò)。
附錄實(shí)驗(yàn)程序:
#include math.h #include stdio.h #define n 100 #define pi 3.14159 float sin_value[100];float x0,y0,z0;void main(void){ int i;for(i=0;i /* 0.100 0000 0000 0000 */ z0=x0*y0; /* 00.01 0000 0000 0000 0000 0000 0000 0000 */ for(i=0;i 實(shí) 驗(yàn) 報(bào) 告 班 級(jí) 07電本(1)班 學(xué)號(hào) 2007050344姓 名 楊寶輝 同組人 獨(dú)立 實(shí)驗(yàn)日期 2010-5-20 室溫 大氣壓 成 績(jī) 數(shù)碼管控制實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康? 1.2.3.熟悉2812的指令系統(tǒng); 熟悉74hc573的使用方法。熟悉dsp的io操作使用方法。 二、實(shí)驗(yàn)設(shè)備 1.一臺(tái)裝有ccs2000軟件的計(jì)算機(jī); 2.插上2812主控板的dsp實(shí)驗(yàn)箱; 3.dsp硬件仿真器。 三、實(shí)驗(yàn)原理 此模塊由數(shù)碼管和四個(gè)鎖存器組成。數(shù)碼管為共陰極型的。數(shù)據(jù)由2812模塊的低八位輸入,鎖存器的控制信號(hào)由2812模塊輸出,但經(jīng)由cpld模塊譯碼后再控制對(duì)應(yīng)的八個(gè) 四、實(shí)驗(yàn)步驟 1.把2812模塊小板插到大板上; 2.在ccs2000環(huán)境中打開本實(shí)驗(yàn)的工程編譯example_7segled.prj,生成輸出文件,通過仿真器把執(zhí)行代碼下載到dsp芯片; 3.運(yùn)行程序;數(shù)碼管會(huì)顯示1~8的數(shù)字。 4.參考源代碼自行修改程序改變顯示樣式。 五、實(shí)驗(yàn)心得體會(huì) 通過本次實(shí)驗(yàn)中,基本掌握了2812的指令系統(tǒng)的特點(diǎn),并能夠了解并熟悉74hc573的使用方法,進(jìn)一步加深了對(duì)dsp的認(rèn)識(shí)。同時(shí),通過實(shí)驗(yàn)操作dsp的io操作使用方法,對(duì)于dsp的io操作可以熟悉的運(yùn)用,學(xué)到更多的知識(shí)。 程序見附錄: #include include/dsp281x_device.h // dsp281x headerfile include file #include include/dsp281x_examples.h // dsp281x examples include file // prototype statements for functions found within this file.void delay_loop(void);void gpio_select(void);// global variable for this example short codetab[17]= {0x4020,0x6cc0,0x5800,0x4840,0x6440,0xc040,0xc000,0x4cc0, 0x4000,0x4040,0x4400,0xe000,0xd080,0xe800,0xd000,0xd400,0xffff};main(){ short i;// step 1.initialize system control: // pll, watchdog, enable peripheral clocks // this example function is found in the dsp281x_sysctrl.c file.initsysctrl();// specific clock setting for this example: 篇三:dsp實(shí)驗(yàn)學(xué)習(xí)心得 dsp實(shí)驗(yàn)學(xué)習(xí)心得 論dsp發(fā)展前景 dsp 即為數(shù)字信號(hào)處理器(digital signal processing),是在模擬信號(hào)變換成數(shù) 字信號(hào)以后進(jìn)行高速實(shí)時(shí)處理的專用處理器。它的工作原理是將現(xiàn)實(shí)世界的模擬信號(hào)轉(zhuǎn)換 成數(shù)字信號(hào),再用數(shù)學(xué)方法處理此信號(hào),得到相應(yīng)的結(jié)果。自從數(shù)字信號(hào)處理器(digital signal processor)問世以來,由于它具有高速、靈活、可編程、低功耗和便于接口等特 點(diǎn),已在圖形、圖像處理,語音、語言處理,通用信號(hào)處理,測(cè)量分析,通信等領(lǐng)域發(fā)揮 越來越重要的作用。隨著成本的降低,控制界已對(duì)此產(chǎn)生濃厚興趣,已在不少場(chǎng)合得到成 功應(yīng)用。dsp 數(shù)字信號(hào)處理器 dsp 芯片采用了數(shù)據(jù)總線和程序總線分離的哈佛結(jié)構(gòu)及改 進(jìn)的哈佛結(jié)構(gòu),較傳統(tǒng)處理器的馮?諾依曼結(jié)構(gòu)具有更高的指令執(zhí)行速度。其處理速度比最 快的 cpu 快 10-50 倍。在當(dāng)今數(shù)字化時(shí)代背景下,dsp 已成為通信、計(jì)算機(jī)、消費(fèi)類電 子產(chǎn)品等領(lǐng)域的基礎(chǔ)器件,被譽(yù)為信息社會(huì)革命的“旗手”。 最初的 dsp 器件只是被設(shè)計(jì)成用以完成復(fù)雜數(shù)字信號(hào)處理的算法。dsp 器件 緊隨著數(shù)字信號(hào)理論的發(fā)展而不斷發(fā)展。dsp發(fā)展最快,現(xiàn)在的 dsp 屬于第五代產(chǎn)品,它與第四代相比,系統(tǒng)集成度更高,將 dsp 芯核及外圍組件綜合集成在單一芯片上。這種集成度極高的 dsp 芯片不僅在通信、計(jì)算機(jī)領(lǐng)域大顯身手,而且逐漸滲透 到人們?nèi)粘OM(fèi)領(lǐng)域,前景十分可觀。近年來,隨著通信技術(shù)的飛速發(fā)展,dsp已經(jīng)成為信號(hào)與信息處理領(lǐng)域里一門十分重要的新興學(xué)科,它代表著當(dāng)今無線系統(tǒng)的主流發(fā)展方向。現(xiàn)在,通信領(lǐng)域中許多產(chǎn)品 都與 dsp 密切聯(lián)系,例如,modem、數(shù)據(jù)加密、擴(kuò)頻通信、可視電話等。而尋找 dsp 芯片來實(shí)現(xiàn)算法最開始的目標(biāo)是在可以接受的時(shí)間內(nèi)對(duì)算法做仿真,隨后是將波形存儲(chǔ)起 來,然后再加以處理。 在短短的十多年 時(shí)間,dsp芯片已經(jīng)在信號(hào)處理、通信、雷達(dá)等許多領(lǐng)域得到廣泛的應(yīng)用。目前, dsp 芯片的價(jià)格也越來越低,性能價(jià)格比日益提高,具有巨大的應(yīng)用潛力。dsp 芯片的應(yīng)用主要有:(1) 信號(hào)處理--如,數(shù)字濾波、自適應(yīng)濾波、快速傅里葉變換、相關(guān)運(yùn)算、頻譜分析、卷積等。(2)通信--如,調(diào)制解調(diào)器、自適應(yīng)均衡、數(shù)據(jù)加密、數(shù)據(jù)壓縮、回坡抵消、多路復(fù)用、傳真、擴(kuò)頻通信、糾錯(cuò)編碼、波形產(chǎn)生等。(3)語音--如語音編碼、語音合成、語音識(shí)別、語音增強(qiáng)、說話人辨認(rèn)、說話人確認(rèn)、語音郵件、語音儲(chǔ)存等。(4)圖像/圖形--如二維和三維圖形處理、圖像壓縮與傳輸、圖像增強(qiáng)、動(dòng)畫、機(jī)器人視覺等。(5)軍事--如保密通信、雷達(dá)處理、聲納處理、導(dǎo)航等。 (6)儀器儀表--如頻譜分析、函數(shù)發(fā)生、鎖相環(huán)、地震處理等。(7)自動(dòng)控制--如引擎控制、深空、自動(dòng)駕駛、機(jī)器人控制、磁盤控制。(8)醫(yī)療--如助聽、超聲設(shè)備、診斷工具、病人監(jiān)護(hù)等。(9)家用電器--如高保真音響、音樂合成、音調(diào)控制、玩具與游戲、數(shù)字 電話/電視等 dsp 的發(fā)展前景 dsp 的功能越來越強(qiáng),應(yīng)用越來越廣,達(dá)到甚至超過了微控制器的功能,比 微控制器做得更好而且價(jià)格更便宜,許多家電用第二代 dsp 來控制大功率電機(jī)就 是一個(gè)很好的例子。汽車、個(gè)人通信裝置、家用電器以及數(shù)以百萬計(jì)的工廠使用 dsp 系統(tǒng)。數(shù)碼相機(jī)、ip 電話和手持電子設(shè)備的熱銷帶來了對(duì) dsp 芯片的巨大需 求。而手機(jī)、pda、mp3 播放器以及手提電腦等則是設(shè)備個(gè)性化的典型代表,這 些設(shè)備的發(fā)展水平取決于 dsp 的發(fā)展。新的形勢(shì)下,dsp 面臨的要求是處理速度 更高,功能更多更全,功耗更低,存儲(chǔ)器用量更少。 dsp 的技術(shù)發(fā)展將會(huì)有以下 一些走勢(shì):(1)系統(tǒng)級(jí)集成 dsp 是潮流。小 dsp 芯片尺寸始終是 dsp 的技術(shù)發(fā)展方向。當(dāng)前的 dsp 尺寸小、功耗低、性能高。各 dsp 廠商紛紛采用新工藝,改進(jìn) dsp 芯核,并將幾個(gè) dsp 芯核、mpu 芯核、專用處理單元、外圍電路單元、存儲(chǔ)單元 統(tǒng)統(tǒng)集成在一個(gè)芯片上,成為 dsp 系統(tǒng)級(jí)集成電路。(2)追求更高的運(yùn)算速度和進(jìn)一步降低功耗和幾何尺寸。由于電子設(shè)備的 個(gè)人化和客戶化趨勢(shì),dsp 必須追求更高更快的運(yùn)算速度,才能跟上電子設(shè)備的 更新步伐。同時(shí)由于 dsp 的應(yīng)用范圍已擴(kuò)大到人們工作生活的各個(gè)領(lǐng)域,特別是 便攜式手持產(chǎn)品對(duì)于低功耗和尺寸的要求很高,所以 dsp 有待于進(jìn)一步降低功 耗。按照 cmos 的發(fā)展趨勢(shì),依靠新工藝改進(jìn)芯片結(jié)構(gòu),dsp 運(yùn)算速度的提高和 功耗尺寸的降低是完全可能的。 (3)dsp 的內(nèi)核結(jié)構(gòu)進(jìn)一步改善。dsp 的結(jié)構(gòu)主要是針對(duì)應(yīng)用,并根據(jù)應(yīng)用 優(yōu)化 dsp 設(shè)計(jì)以極大改進(jìn)產(chǎn)品的性能。多通道結(jié)構(gòu)和單指令多重?cái)?shù)據(jù)、超長(zhǎng)指令 字結(jié)構(gòu)、超標(biāo)量結(jié)構(gòu)、超流水結(jié)構(gòu)、多處理、多線程及可并行擴(kuò)展的超級(jí)哈佛結(jié) 構(gòu)(sharc)在新的高性能處理器中將占據(jù)主導(dǎo)地位。(4)dsp 嵌入式系統(tǒng)。dsp 嵌入式系統(tǒng)是 dsp 系統(tǒng)嵌入到應(yīng)用電子系統(tǒng)中 的一種通用系統(tǒng)。這種系統(tǒng)既具有 dsp 器件在數(shù)據(jù)處理方面的優(yōu)勢(shì),又具有應(yīng)用 目標(biāo)所需要的技術(shù)特征。在許多嵌入式應(yīng)用領(lǐng)域,既需要在數(shù)據(jù)處理方面具有獨(dú) 特優(yōu)勢(shì)的 dsp,也需要在 智能控制方面技高一籌的微處理器(mcu)。因此,將 dsp 與 mcu 融合在一起的雙核平臺(tái),將成為 dsp 技術(shù)發(fā)展的一種新潮流。dsp 的發(fā)展非常迅速,而銷售價(jià)格逐年降低目前 dsp 的結(jié)構(gòu)、總線、資源和 接口技術(shù)都趨于標(biāo)準(zhǔn)化,尤其接口的標(biāo)準(zhǔn)化進(jìn)展更快。這給從事系統(tǒng)設(shè)計(jì)的工程 技術(shù)人員帶來很大機(jī)遇,采用先進(jìn)的 dsp 將會(huì)使開發(fā)的產(chǎn)品具有更強(qiáng)的市場(chǎng)競(jìng)爭(zhēng) 力。 近幾年來,dsp芯片、應(yīng)用軟件和系統(tǒng)的發(fā)展非常迅速,每年增長(zhǎng)速度高達(dá)40%。其市場(chǎng)驅(qū)動(dòng)力主要是因特網(wǎng)、無線通信、硬盤驅(qū)動(dòng)器、可視電話和會(huì)議電視以及其它消費(fèi) 類電子產(chǎn)品。也就是說,dsp產(chǎn)業(yè)的發(fā)展依賴于通信技術(shù)和通信市場(chǎng)。隨著新的通信體 制、傳輸方式和多媒體智能終端的迅速發(fā)展,其算法、標(biāo)準(zhǔn)和規(guī)程都需要在實(shí)踐中不斷發(fā) 展、改進(jìn)和優(yōu)化。dsp編程的靈活性和不斷增強(qiáng)的運(yùn)算能力,同時(shí)又將使通信技術(shù)向更 高層次邁進(jìn)。這對(duì)通信領(lǐng)域的廣大科技人員是一個(gè)機(jī)遇。抓住這個(gè)機(jī)遇,我們將大有作為。 通過這幾次實(shí)驗(yàn),我初步的對(duì)dsp有了一定了解。雖然是在老師們的指導(dǎo)下完成實(shí)驗(yàn)要求的,但是我想我還是收獲蠻多的。希望在以后的學(xué)習(xí)生活中能對(duì)dsp有更多的學(xué)習(xí)和研究。篇四:dsp課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告總結(jié) dsp課程設(shè)計(jì)總結(jié) (2013-2014學(xué)年第2學(xué)期) 題 目 : 專業(yè)班級(jí) : 電子1103 學(xué)生姓名 : 萬 蒙 學(xué) 號(hào) : 11052304 指導(dǎo)教師 : 設(shè)計(jì)成績(jī) : 2014 年 6 月 目 錄 一 設(shè)計(jì)目的--------3 二 系統(tǒng)分析--------3 三 硬件設(shè)計(jì) 3.1 硬件總體結(jié)構(gòu)----------------------------3 3.2 dsp模塊設(shè)計(jì)----------------------------4 3.3 電源模塊設(shè)計(jì)---------------------------4 3.4 時(shí)鐘模塊設(shè)計(jì)---------------------------5 3.5 存儲(chǔ)器模塊設(shè)計(jì)-------------------------6 3.6 復(fù)位模塊設(shè)計(jì)---------------------------6 3.7 jtag模塊設(shè)計(jì)-------------------------7 四 軟件設(shè)計(jì) 4.1 軟件總體流程----------------------7 4.2 核心模塊及實(shí)現(xiàn)代碼--------8 五 課程設(shè)計(jì)總結(jié)----------------------14 一、設(shè)計(jì)目的 設(shè)計(jì)一個(gè)功能完備,能夠獨(dú)立運(yùn)行的精簡(jiǎn)dsp硬件系統(tǒng),并設(shè)計(jì)簡(jiǎn)單的dsp控制程序。 二、系統(tǒng)分析 1.1設(shè)計(jì)要求 硬件要求: (1)使用tms320vc5416作為核心芯片。(2)具有最簡(jiǎn)單的led控制功能。(3)具有存放程序的外部flash芯片。(4)外部輸入+5v電源。(5)繪制出系統(tǒng)的功能框圖。 (6)使用ad(altium designer)繪制出系統(tǒng)的原理圖和pcb版圖。軟件要求: 利用實(shí)驗(yàn)箱的模擬信號(hào)產(chǎn)生單元產(chǎn)生不同頻率的信號(hào),或者產(chǎn)生兩個(gè)頻率的信號(hào)的疊加。在dsp中采集信號(hào),并且對(duì)信號(hào)進(jìn)行頻譜分析,濾波等。通過鍵盤選擇算法的功能,將計(jì)算的信號(hào)頻率或者濾波后信號(hào)的頻率在lcd上顯示。 三、硬件設(shè)計(jì) 3.1 硬件總體結(jié)構(gòu) 3.2 dsp總體結(jié)構(gòu) 3.3 電源模塊設(shè)計(jì) 3.4 時(shí)鐘模塊設(shè)計(jì) 3.5 存儲(chǔ)器模塊設(shè)計(jì) 3.6復(fù)位模塊設(shè)計(jì) 篇五:dsp實(shí)驗(yàn)報(bào)告(完美版)dsp實(shí)驗(yàn)報(bào)告 班 級(jí):11050641 學(xué) 號(hào): 姓 名: 指導(dǎo)教師: 實(shí)驗(yàn)一、二 dsp芯片的開發(fā)工具及應(yīng)用實(shí)驗(yàn) 1.實(shí)驗(yàn)?zāi)康模?)熟悉ccs集成開發(fā)環(huán)境,掌握工程的生成方法; (2)熟悉seed-dtk dad實(shí)驗(yàn)環(huán)境; (3)掌握ccs集成開發(fā)環(huán)境的調(diào)試方法。 2.實(shí)驗(yàn)設(shè)備 dsp實(shí)驗(yàn)箱,計(jì)算機(jī),ccs軟件。 3.實(shí)驗(yàn)內(nèi)容及步驟 (1)ccs軟件的安裝; (2)了解seed-dtk5416實(shí)驗(yàn)環(huán)境; (3)打開ccs集成開發(fā)環(huán)境,進(jìn)入ccs的操作環(huán)境; (4)新建一個(gè)工程文件 1在c:timyprojects中建立文件夾 volume1(如果ccs安裝在其他○ d:ti ,則在d:timyprojects中); 2將c:titutorialtargetvolume1○拷貝到c:timyprojects volume1; 3從在ccs 中的project 菜單,選擇 new; ○ 4在project name域中,鍵入volume1; ○ 5在location區(qū)域中,瀏覽步驟1所建立的工作文件夾; ○ 6在project type 域中,選擇executable(.out); ○ 7在target域中,選擇ccs配置的目標(biāo),并單擊完成?!?/p> (5)向工程中添加文件 1從project/add files to project,選擇 volume.c,單擊 open(或右○ 擊project view圖標(biāo),選擇add files to project); 2選擇project/add files to project,在files of type對(duì)話框中,選○ 擇asm source files(*.a*, *.s*)。選擇vectors.asm 和 load.asm, 單擊open; 3選擇 project/add files to project,在files of type 對(duì)話框中選○ 4選擇project/add files to project,到編輯器庫文件夾○ (c:tic5400cgtoolslib),在files of type對(duì)話框中選擇object and library files(*.o*, *.lib)。選擇rts.lib文件,單擊open。這個(gè)庫提供目標(biāo)dsp 運(yùn)行時(shí)間支持(runtime-support); 5project view窗口,右擊volume1.pjt,選擇scan all dependencies,○ volume.h將出現(xiàn)在project view窗中的libraries文件夾; 頭文件不要手動(dòng)添加,自動(dòng)到:當(dāng)前目錄(源文件所在)或預(yù)編譯器的“include search path(-i)”option所指定的位置。顯示頭文件:project—>show dependencies。 6單擊 volume1.pjt上的+號(hào),展開工程列表。這個(gè)列表稱為project ○ view。 (6)查看源程序代碼 雙擊project view中 volume.c文件,ccs窗口的右半窗中出現(xiàn)c源代碼。 (7)編譯與運(yùn)行程序 1選擇project/rebuild all或單擊(rebuild all)菜單條按鈕,ccs重○ 新進(jìn)行編輯、匯編、連接工程里的所有文件。這個(gè)處理的有關(guān)信息在窗口低部一個(gè)小框里顯示; 2默認(rèn)時(shí),.out文件編譯到位于當(dāng)前工程文件夾中的調(diào)試(debug),目錄中○ 也可以通過ccs工具條選擇一個(gè)存儲(chǔ)目錄; 3選擇file/load program。選中volume1.out,并按open。○ (c:timyprojectsvolume1debug 文件夾中。)ccs將程序裝載到目標(biāo)dsp上,打開顯示程序反匯編指令的disassembly窗口; 4選擇view/mixed source/asm.,這樣可以同時(shí)查看c源程序和產(chǎn)生的匯○ 編代碼; 5在混合窗口單擊匯編指令(單擊有效指令,而不是指令的地址或指令所○ 傳遞的區(qū)域),單擊f1,ccs可以尋找此指令的幫助。這是學(xué)習(xí)指令的很好的方法; 6選擇debug/go main,從主程序開始執(zhí)行; ○ 7選擇debug/run或單擊(run)按鈕; ○ 8選擇debug/ halt,退出程序運(yùn)行?!?/p> (8)更改程序的選擇、定位語法錯(cuò)誤 1選擇project/build options; ○ preprocessor,在define symbols區(qū)域鍵入fileio,按tab鍵; 3單擊ok,保存新的選擇設(shè)置; ○ 4選擇project/rebuild all或單擊(rebuild all)按鈕。只要工程選擇○ 更改,則必須重新編譯所有的文件; 5編譯信息顯示,程序包含編輯錯(cuò)誤。單擊build,你可以看見語法錯(cuò)誤信○ 息; 6雙擊描述語法錯(cuò)誤位置的紅色文字(第68行)○。注意volume.c源程序已打開,且光標(biāo)位于下面的行上: processing(input, output);; 7語法錯(cuò)誤位于光標(biāo)位置的上一行(丟了個(gè)分號(hào))○,如:puts(begin processing);; 8注意:edit窗口標(biāo)題欄中的文件名附近出現(xiàn)星號(hào)(*)○,指示源程序已經(jīng)被修改,文件保存后,星號(hào)消失; 9選擇file/save,或按ctrl+s,將更改保存到volume.c; ○ 10選擇project/build,或(incremental build)單擊工具條,ccs重新編○ 譯已經(jīng)修改的文件; 11選擇file/load program,選中volume1.out; ○ 12選擇debug/go main,從主函數(shù)開始執(zhí)行。由→執(zhí)行可以暫停; ○ 13選擇debug/run或(run)單擊菜單條; ○ 14選擇debug/halt,退出程序運(yùn)行?!?/p> (9)使用斷點(diǎn)(breakpoints)和觀察窗口(watch window)程序執(zhí)行時(shí)常常需要檢查變量的值。1file/reload program; ○ 2雙擊project view 窗中的volume.c??梢詫⒋翱谧兇?,看到更多的源○ 代碼; 3將光標(biāo)放在dataio(); ○ 4單擊(toggle breakpoint)工具條,或按f9。選擇空白區(qū)指示斷點(diǎn)已經(jīng)設(shè)○ 置(紅色圖標(biāo)); 5window,在ccs窗口的右下角出現(xiàn)單個(gè)區(qū)域,同時(shí),這○ 量的值; 6選擇debug/go main; ○ 7或按f5; ○ 9達(dá)式圖標(biāo),鍵入要觀察的變量名dataio; ○ 10中的白色區(qū)域,保存更改。這個(gè)值將立即出現(xiàn)在下面的例○ 11over)或按f10,跨過對(duì)dataio()的調(diào)用; ○ 12(remove all breakpoints)?!?/p> 的watch window 的值,也可以觀察一個(gè)結(jié)構(gòu)的元素的值。 2表達(dá)式圖標(biāo),鍵入要觀察表達(dá)式名稱str; ○ 3的白色空間,保存更改。數(shù)值將立即出現(xiàn)在下面的例子○ 4source code調(diào)出 volume.c中全局申明、并初始化的○ 構(gòu)。volume.h定義了parms的結(jié)構(gòu)類型; 5ccs將結(jié)構(gòu)中所有元素和元素值。雙擊結(jié)構(gòu)中元素的○ value選擇view/watch 個(gè)區(qū)域顯示觀察變?nèi)绻辉谥鞒绦颍x擇debug/run,選擇watch1; ○ 單擊name欄中表單擊觀察窗口子中; 單擊(step 完成后,單擊(10)使用帶結(jié)構(gòu)除了觀察簡(jiǎn)單變量選擇watch1; ○ 單擊name欄中的單擊觀察窗口中中; 從reviewing the 類型為parms的結(jié)單擊str上的+號(hào),編輯元素的值; 6在watch window 中value欄,更改變量的值。注意:watch window中○ 數(shù)值的更改,數(shù)值也變?yōu)榧t色,表示已經(jīng)手動(dòng)修改; 7選擇watch window中str變量,按delete 鍵。其他變量同理; ○ 8選擇debug/breakpoints,在breakpoints中,單擊delete all,然后○ 單擊ok。 (11)添加探針probe point(為了文件i/o) 可以添加探針(probe point),從pc機(jī)中的文件讀數(shù)據(jù)。 按照下面的步驟使用探針: 從主pc中傳遞輸入數(shù)據(jù),到算法所使用的目標(biāo)的緩沖器中; 從目標(biāo)的緩沖器中傳遞輸出數(shù)據(jù),到主pc中; 用數(shù)據(jù)修改窗口。 下面將學(xué)習(xí)如何使用probe point,將pc文件中的內(nèi)容,作為測(cè)試數(shù)據(jù),傳遞到目標(biāo)dsp中。另外,也可以使用斷點(diǎn)修改所有打開的窗口。1選擇file/load program,選中volume1.out,單擊open; ○ 2雙擊project view中的volume.c; ○ 3將光標(biāo)放到主程序中dataio(); ○ 4單擊(toggle probe point)。選擇空白區(qū)域指示探針已經(jīng)設(shè)置(蘭色圖○ 標(biāo)),如果廢止 選擇區(qū),此行為蘭色顯亮; 5從file菜單,選擇file i/o。出現(xiàn)file i/o對(duì)話框,因此可以選擇輸○ 入輸出文件; 6在file input,單擊add file; ○ 7瀏覽volume1工程文件夾,選中sine.dat,單擊open。sine.dat文件是○ 正弦波的十六進(jìn)制數(shù)值,出現(xiàn)sine.dat文件的控制窗口。再后,當(dāng)運(yùn)行程序時(shí),可以在數(shù)據(jù)文件中使用此窗口啟動(dòng)、停止、返回、或快進(jìn); 8在file i/o對(duì)話框,更改address 為inp_buffer,length為100,在○ wrap around中可以添加選中符號(hào); 9單擊add probe point。出現(xiàn) break/probe points對(duì)話框中的 probe ○ points; 10在 probe point列表中,顯亮行為:volume.c line 61--> no ○ connection; 11區(qū)域中,單擊下箭頭,從列表中選中sine.dat; ○ 12probe point列表改向顯示這個(gè)probe point連接到○ sine.dat 13i/o對(duì)話框顯示文件現(xiàn)在連接到probe point; ○ 14file i/o對(duì)話框。○ 以查看關(guān)于時(shí)間的信號(hào)圖形。 在connect to單擊 replace。文件; 單擊ok。file 單擊ok,關(guān)閉(12)顯示圖形 在這個(gè)例子中,可 DSP實(shí)驗(yàn)學(xué)習(xí)心得 DSP即為數(shù)字信號(hào)處理器(Digital Signal Processing),是在模擬信號(hào)變換成數(shù)字信號(hào)以后進(jìn)行高速實(shí)時(shí)處理的專用處理器。它的工作原理是將現(xiàn)實(shí)世界的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),再用數(shù)學(xué)方法處理此信號(hào),得到相應(yīng)的結(jié)果。自從數(shù)字信號(hào)處理器(Digital Signal Processor)問世以來,由于它具有高速、靈活、可編程、低功耗和便于接口等特點(diǎn),已在圖形、圖像處理,語音、語言處理,通用信號(hào)處理,測(cè)量分析,通信等領(lǐng)域發(fā)揮越來越重要的作用。隨著成本的降低,控制界已對(duì)此產(chǎn)生濃厚興趣,已在不少場(chǎng)合得到成功應(yīng)用。DSP 數(shù)字信號(hào)處理器DSP 芯片采用了數(shù)據(jù)總線和程序總線分離的哈佛結(jié)構(gòu)及改進(jìn)的哈佛結(jié)構(gòu),較傳統(tǒng)處理器的馮諾依曼結(jié)構(gòu)具有更高的指令執(zhí)行速度。其處理速度比最快的CPU快10-50倍。在當(dāng)今數(shù)字化時(shí)代背景下,DSP 已成為通信、計(jì)算機(jī)、消費(fèi)類電子產(chǎn)品等領(lǐng)域的基礎(chǔ)器件,被譽(yù)為信息社會(huì)革命的“旗手”。 最初的DSP器件只是被設(shè)計(jì)成用以完成復(fù)雜數(shù)字信號(hào)處理的算法。DSP器件緊隨著數(shù)字信號(hào)理論的發(fā)展而不斷發(fā)展。DSP發(fā)展最快,現(xiàn)在的DSP屬于第五代產(chǎn)品,它與第四代相比,系統(tǒng)集成度更高,將DSP 芯核及外圍組件綜合集成在單一芯片上。這種集成度極高的DSP 芯片不僅在通信、計(jì)算機(jī)領(lǐng)域大顯身手,而且逐漸滲透到人們?nèi)粘OM(fèi)領(lǐng)域,前景十分可觀。近年來,隨著通信技術(shù)的飛速發(fā)展,DSP已經(jīng)成為信號(hào)與信息處理領(lǐng)域里一門十分重要的新興學(xué)科,它代表著當(dāng)今無線系統(tǒng)的主流發(fā)展方向?,F(xiàn)在,通信領(lǐng)域中許多產(chǎn)品都與DSP 密切聯(lián)系,例如,Modem、數(shù)據(jù)加密、擴(kuò)頻通信、可視電話等。而尋找DSP芯片來實(shí)現(xiàn)算法最開始的目標(biāo)是在可以接受的時(shí)間內(nèi)對(duì)算法做仿真,隨后是將波形存儲(chǔ)起 來,然后再加以處理。在短短的十多年時(shí)間,DSP芯片已經(jīng)在信號(hào)處理、通信、雷達(dá)等許多領(lǐng)域得到廣泛的應(yīng)用。目前, DSP 芯片的價(jià)格也越來越低,性能價(jià)格比日益提高,具有巨大的應(yīng)用潛力。DSP 芯片的應(yīng)用主要有:(1)信號(hào)處理--如,數(shù)字濾波、自適應(yīng)濾波、快速傅里葉變換、相關(guān)運(yùn)算、頻譜分析、卷積等。(2)通信--如,調(diào)制解調(diào)器、自適應(yīng)均衡、數(shù)據(jù)加密、數(shù)據(jù)壓縮、回坡抵消、多路復(fù)用、傳真、擴(kuò)頻通信、糾錯(cuò)編碼、波形產(chǎn)生等。(3)語音--如語音編碼、語音合成、語音識(shí)別、語音增強(qiáng)、說話人辨認(rèn)、說話人確認(rèn)、語音郵件、語音儲(chǔ)存等。(4)圖像/圖形--如二維和三維圖形處理、圖像壓縮與傳輸、圖像增強(qiáng)、動(dòng)畫、機(jī)器人視覺等。(5)軍事--如保密通信、雷達(dá)處理、聲納處理、導(dǎo)航等。(6)儀器儀表--如頻譜分析、函數(shù)發(fā)生、鎖相環(huán)、地震處理等。(7)自動(dòng)控制--如引擎控制、深空、自動(dòng)駕駛、機(jī)器人控制、磁盤控制。(8)醫(yī)療--如助聽、超聲設(shè)備、診斷工具、病人監(jiān)護(hù)等。(9)家用電器--如高保真音響、音樂合成、音調(diào)控制、玩具與游戲、數(shù)字電話/電視等DSP 的發(fā)展前景DSP的功能越來越強(qiáng),應(yīng)用越來越廣,達(dá)到甚至超過了微控制器的功能,比微控制器做得更好而且價(jià)格更便宜,許多家電用第二代DSP 來控制大功率電機(jī)就是一個(gè)很好的例子。汽車、個(gè)人通信裝置、家用電器以及數(shù)以百萬計(jì)的工廠使用DSP 系統(tǒng)。數(shù)碼相機(jī)、IP 電話和手持電子設(shè)備的熱銷帶來了對(duì)DSP芯片的巨大需求。而手機(jī)、PDA、MP3 播放器以及手提電腦等則是設(shè)備個(gè)性化的典型代表,這些設(shè)備的發(fā)展水平取決于DSP 的發(fā)展。新的形勢(shì)下,DSP面臨的要求是處理速度更高,功能更多更全,功耗更低,存儲(chǔ)器用量更少。 這學(xué)期我們學(xué)習(xí)了DSP的理論課程,也進(jìn)行了相應(yīng)的實(shí)驗(yàn),實(shí)際操作讓我們學(xué)習(xí)的更加深入。我們的主處理芯片: TMS320VC5502PGF300; 低功耗設(shè)計(jì),比上一代 C54XX 器件功耗低 30%左右; 處理速度更快,雙乘法器結(jié)構(gòu),處理速度 600MMACS; 軟件程序兼容 C54XX DSP; 片內(nèi)存貯空間 32K× 16Bit(DARAM)(64K Bytes); 最大外部尋址空間 8M× 16Bit; SDRAM: 1M× 16Bit; 2 路 8bit 板上 A/D 接口; 路的 TLC7528 轉(zhuǎn)換,5M/S,8Bit; 片上 UART 接口,符合 RS232 標(biāo)準(zhǔn); 8Mbit 擴(kuò)展 FLASH,存儲(chǔ)大量固化程序和數(shù)據(jù); 設(shè)計(jì)有用戶可以自定義的開關(guān)和測(cè)試指示燈; 3U 標(biāo)準(zhǔn)的 DSP 擴(kuò)展總線,包括數(shù)據(jù)、地址、I/O、控制; 4 組標(biāo)準(zhǔn)擴(kuò)展連接器,為用戶進(jìn)行二次開發(fā)提供條件; 具有 IEEE1149.1 相兼容的邏輯掃描電路,該電路僅用于測(cè)試和仿真; +5V 電源輸入,內(nèi)部+3.3V、+1.26V 電源管理; 高保真語音接口設(shè)計(jì),雙路語音采集,每路 48K/S; 4 層板設(shè)計(jì)工藝,穩(wěn)定可靠; 具有自啟動(dòng)功能設(shè)計(jì),可以實(shí)現(xiàn)脫機(jī)工作; 可以選配多種應(yīng)用接口板,包括圖像板,網(wǎng)絡(luò)板等; 開發(fā)環(huán)境 開發(fā) TMS320C55xx 應(yīng)用系統(tǒng)一般需要以下設(shè)備和軟件調(diào)試工具: 1.通用 PC 一臺(tái),安裝 Windows2000 或 WindowsXP 操作系統(tǒng)及常用軟件(如: WinRAR 等)。 2. TMS320C55xx 評(píng)估板及相關(guān)電源。如: ICETEK– VC5502-A 評(píng)估板。 3.通用 DSP 仿真器一臺(tái)及相關(guān)連線。如: ICETEK-5100USB 仿真器。 4.控制對(duì)象(選用)。如: ICETEK-CTR 控制板。 5. TI 的 DSP 開發(fā)集成環(huán)境 Code Composer Studio。如: CCS3.1。 6.仿真器驅(qū)動(dòng)程序。7.實(shí)驗(yàn)程序及文檔。 ICETEK-DSP 教學(xué)實(shí)驗(yàn)箱的硬件連接 .連接電源:打開實(shí)驗(yàn)箱,取出三相電源連接線(如右圖),將電源線的 一端插入實(shí)驗(yàn)箱外部左側(cè)箱壁上的電源插孔中。確認(rèn)實(shí)驗(yàn)箱面板上電源總 開關(guān)(位于實(shí)驗(yàn)箱底板左上角)處于“關(guān)”的位置,連接電源線的另一端至 220V 交流供電插座上,保證穩(wěn)固連接。 2.使用電源連接線(如右圖,插頭是帶孔的)連接各模塊電源:確認(rèn)實(shí)驗(yàn) 箱總電源斷開。連接 ICETEK-CTR 板上邊插座到實(shí)驗(yàn)箱底板上+12V 電源 插座; ICETEK-CTR 板下邊插座到實(shí)驗(yàn)箱底板上+5V 電源插座;如使用 PP(并口)型仿真器,則連接仿真器上插座到實(shí)驗(yàn)箱底板上+5V 電源插座; 連接 DSP 評(píng)估板模塊電源插座到實(shí)驗(yàn)箱底板上+5V 電源插座。注意各插 頭要插到底,防止虛接或接觸不良。 3.連接 DSP 評(píng)估板信號(hào)線:當(dāng)需要連接信號(hào)源輸出到 A/D 輸入插座時(shí),使用信號(hào)連接線(如右圖)分別連接相應(yīng)插座。 4. 接通電源: 檢查實(shí)驗(yàn)箱上 220V 電源插座(箱體左側(cè))中保險(xiǎn)管是否完好,在連接電源線以后,檢查各模塊供電連線是否正確連接,打開實(shí)驗(yàn)箱上的電源總開關(guān)(位于實(shí)驗(yàn)箱底板左上角),使 開關(guān)位于“開”的位置,電源開關(guān)右側(cè)的指示燈亮。構(gòu)造 DSP 開發(fā)軟件環(huán)境 1.安裝 CCS 軟件(此文檔假定用戶將 CCS 安裝在默認(rèn)目錄 C:CCStudio_v3.1 中,同時(shí)也建議 用戶按照默認(rèn)安裝目錄安裝)⑵將實(shí)驗(yàn)箱附帶的教學(xué)光盤插入計(jì)算機(jī)光盤驅(qū)動(dòng)器。⑶打開教學(xué)光盤的“ CCS3.1”目錄。⑷雙擊其中的“ Setup.exe”,進(jìn)入安裝程序。⑸選擇“ Code Composer Studio” 按照安裝提示進(jìn)行安裝,并重新啟動(dòng)計(jì)算機(jī)。⑹安裝完畢,桌面上出現(xiàn)兩個(gè)新的圖標(biāo) 2.安裝 DSP 通用仿真器驅(qū)動(dòng) 需要安裝兩部分:(1)仿真器的 Windows 驅(qū)動(dòng)程序(并口無需,usb 口要安裝);(2)根據(jù)仿真的 DSP 芯片不同,設(shè)置仿真器在 CCS 環(huán)境中的對(duì)應(yīng)驅(qū)動(dòng)程序。 ⑴雙擊光盤中的“開發(fā)系統(tǒng)驅(qū)動(dòng)USB”目錄下的 usbdrv54x.exe 文件,然后再打開的頁 面中輸入 ccs 的安裝路徑,例如 C:CCStudio_v3.1 ⑵此時(shí)驅(qū)動(dòng)已經(jīng)被拷貝到 C:CCStudio_v3.1icetek 目錄下。⑶然后把 usb 電纜連接到計(jì)算機(jī)的 usb 接口和 usb 仿真器上,計(jì)算機(jī)將提示找到新硬件,選擇否,然后點(diǎn)下一步。3.安裝實(shí)驗(yàn)程序 雙擊光盤中的實(shí)驗(yàn)安裝文件,自動(dòng)解壓縮后安裝到 C:ICETEK 目錄下。 例如:實(shí)驗(yàn)安裝文件為“ Setup5502A.exe” 4.安裝初始化仿真器程序 將光盤中“工具”子目錄下的“ xdsresetUSB”目錄拷貝到硬盤上的任意路徑下,建 議和實(shí)驗(yàn)程序目錄放在一起,便一管理。然后用單擊鼠標(biāo)右鍵選擇“ xdsresetUSB”目 錄下 “ xdsrstusb”批處理文件,選擇“發(fā)送到”->“桌面快捷方式”。注: 如果您的 CCS 系統(tǒng)未安裝在默認(rèn)的 C:CCStudio_v3.1 目錄,請(qǐng)用鼠標(biāo)右鍵單擊桌面上“ xdsrstusb”圖標(biāo),選擇“屬性”,將“快捷方式”項(xiàng)和“起始位置”中的路徑改成您所安裝的路徑。 啟動(dòng) CCS 啟動(dòng) Emulator 方式: ⑴ 首先將實(shí)驗(yàn)箱電源關(guān)閉。連接實(shí)驗(yàn)箱的外接電源線。⑵ 檢查 ICETEK-5100USB 仿真器的黑色 JTAG 插頭是否正確連接到 ICETEK– VC5502-A板的 J1 插頭上。注:仿真器的插頭中有一個(gè)孔加入了封針,與 J1 插頭上的缺針位置應(yīng)重合,保證不會(huì)插錯(cuò)。 ⑶ 檢查是否已經(jīng)用電源連接線連接了 ICETEK– VC5509-A 板上的POW1插座和實(shí)驗(yàn)箱底板上+5V 電源插座。⑷ 檢查其他連線是否符合實(shí)驗(yàn)要求。檢查實(shí)驗(yàn)箱上三個(gè)撥動(dòng)開關(guān)位置是否符合實(shí)驗(yàn)要求。 ⑸ 打開實(shí)驗(yàn)箱上電源開關(guān)(位于實(shí)驗(yàn)箱底板左上角),注意開關(guān)邊上紅色指示燈點(diǎn)亮。 ICETEK– VC5502-A 板上指示燈 D5 和 D6 點(diǎn)亮。如果打開了 ICETEK-CTR 的電源開關(guān),ICETEK-CTR 板上指示燈 L1、L2 和 L3 點(diǎn)亮。如果打開了信號(hào)源電源開關(guān),相應(yīng)開關(guān)邊的指示燈點(diǎn)亮。 ⑹ 用實(shí)驗(yàn)箱附帶的 USB 信號(hào)線連接 ICETEK-5100USB 仿真器和 PC 機(jī)后面的 USB 插座,注意 ICETEK-5100USB 仿真器上指示燈 Power 和 Run 燈點(diǎn)亮。 ⑺ 雙擊桌面上仿真器初始化圖標(biāo): (8)如果進(jìn)入 CCS 提示錯(cuò)誤,先選“ Abort”,然后用“初始化 ICETEK-5100 USB2.0 仿真器”初始化仿真器,如提示出錯(cuò),可多做幾次。如仍然出錯(cuò),拔掉仿真器上 USB 接頭(白色方形),按一下 ICETEK– VC5509-A 板上 S1 復(fù)位按鈕,連接 USB 接頭,再做“初始化 ICETEK-5100 USB2.0仿真器”。 (9)如果遇到反復(fù)不能連接或復(fù)位仿真器、進(jìn)入 CCS 報(bào)錯(cuò),請(qǐng)打開 Windows 的“任務(wù)管理器”,在“進(jìn)程”卡片上的“映像名稱”欄中查找是否有“cc_app.exe”,將它結(jié)束再試。 退出 CCS 指示燈實(shí)驗(yàn) 了解 ICETEK-VC5502-AE 板在 TMS320VC5502DSP 外部擴(kuò)展存儲(chǔ)空間上的擴(kuò)展。了解 ICETEK-VC5502-AE 板上指示燈擴(kuò)展原理。學(xué)習(xí)在 C 語言中使用擴(kuò)展的控制寄存器的方法。 TMS320VC5502DSP 的 EMIF 接口: 存儲(chǔ)器擴(kuò)展接口(EMIF)是 DSP 擴(kuò)展片外資源的主要接口,它提供了一組控制信號(hào)和地 址、數(shù)據(jù)線,可以擴(kuò)展各類存儲(chǔ)器和寄存器映射的外設(shè)。-ICETEK-VC5502-AE 評(píng)估板在 EMIF 接口上除了擴(kuò)展了片外 SDRAM 外,還擴(kuò)展了指 示燈、DIP 開關(guān)和 D/A 設(shè)備。具體擴(kuò)展地址如下: 0x400009,0x40000b: D/A 轉(zhuǎn)換控制寄存器 0x400007: 板上 DIP 開關(guān)控制寄存器 0x400005: 板上指示燈控制寄存器 -與 ICETEK-VC5502-AE 評(píng)估板連接的 ICETEK-CTR 顯示控制模塊也使用擴(kuò)展空間控制 主要設(shè)備: 608001h: 讀-鍵盤掃描值,寫-液晶控制寄存器 608002h: 液晶輔助控制寄存器 608003h、608004h: 液晶顯示數(shù)據(jù)寄存器 608005h: 發(fā)光二極管顯示陣列控制寄存器 撥碼開關(guān)控制實(shí)驗(yàn) 了解 ICETEK-VC5502-AE 板在 TMS320VC5502DSP 外部擴(kuò)展存儲(chǔ)空間上的擴(kuò)展。了解 ICETEK-VC5502-AE 板上撥碼開關(guān)擴(kuò)展原理。熟悉在 C 語言中使用擴(kuò)展的控制寄存器的方法。 TMS320VC5502DSP 的 EMIF 接口: 存儲(chǔ)器擴(kuò)展接口(EMIF)是 DSP 擴(kuò)展片外資源的主要接口,它提供了一組控制信號(hào)和地址、數(shù)據(jù)線,可以擴(kuò)展各類存儲(chǔ)器和寄存器映射的外設(shè)。 -ICETEK-VC5502-AE 評(píng)估板在 EMIF 接口上除了擴(kuò)展了片外 SDRAM 外,還擴(kuò)展了指 示燈、DIP 開關(guān)和 D/A 設(shè)備。具體擴(kuò)展地址如下: 0x400009,0x40000b: D/A 轉(zhuǎn)換控制寄存器 0x400007: 板上 DIP 開關(guān)控制寄存器 0x400005: 板上指示燈控制寄存器 -與 ICETEK-VC5502-AE 評(píng)估板連接的 ICETEK-CTR 顯示控制模塊也使用擴(kuò)展空間控制 主要設(shè)備: 608001h: 讀-鍵盤掃描值,寫-液晶控制寄存器 608002h: 液晶輔助控制寄存器 608003h、608004h: 液晶顯示數(shù)據(jù)寄存器 608005h: 發(fā)光二極管顯示陣列控制寄存器 DSP 的定時(shí)器 通過實(shí)驗(yàn)熟悉 VC5502A 的定時(shí)器;掌握 VC5502A 定時(shí)器的控制方法;掌握 VC5502A 的中斷結(jié)構(gòu)和對(duì)中斷的處理流程;學(xué)會(huì) C 語言中斷程序設(shè)計(jì),以及運(yùn)用中斷程序控制程序流程。通用定時(shí)器介紹及其: TMS320VC5502A 內(nèi)部有兩個(gè) 64 位通用定時(shí)器(GP), 控制方法詳見spru618.pdf。中斷響應(yīng)過程(詳見 spru371.pdf): 外設(shè)事件要引起 CPU 中斷,必須保證: IER 中相應(yīng)使能位被使能,IFR 相應(yīng)中斷也被使能。在軟件中,當(dāng)設(shè)置好相應(yīng)中斷標(biāo)志后,開中斷,進(jìn)入等待中斷發(fā)生的狀態(tài);外設(shè)(如定時(shí)器)中斷發(fā)生時(shí),首先跳轉(zhuǎn)到相應(yīng)中斷級(jí)高的服務(wù)程序中(如:定時(shí)器 1 會(huì)引起 TINT中斷),程序在進(jìn)行服務(wù)操作之后,應(yīng)將本外設(shè)的中斷標(biāo)志位清除以便能繼續(xù)中斷,然后返回。中斷程序設(shè)計(jì): -程序中應(yīng)包含中斷向量表,VC5502A 默認(rèn)向量表從程序區(qū) 0xffff00 地址開始存放,根據(jù)IPVD 和 IPVH 的值確定向量表的實(shí)際地址。 -注意觀察程序中 INTR_init()函數(shù)的定義部分,其中 IPVD 和 IPVH 的值都為 0x0001;同時(shí) 觀察配置文件 ICETEK-VC5502-AE.cmd 中的 VECT 段描述中 o=0x0100。 -向量表中每項(xiàng)為 8 個(gè)字,存放一個(gè)跳轉(zhuǎn)指令,跳轉(zhuǎn)指令中的地址為相應(yīng)服務(wù)程序入口地址。 第一個(gè)向量表的首項(xiàng)為復(fù)位向量,即 CPU 復(fù)位操作完成后自動(dòng)進(jìn)入執(zhí)行的程序入口。 -服務(wù)程序在服務(wù)操作完成后,清除相應(yīng)中斷標(biāo)志,返回,完成一次中斷服務(wù)。單路,多路數(shù)模轉(zhuǎn)換(DA) 了解數(shù)模轉(zhuǎn)換的基本操作。了解 ICETEK-VC5502-AE 板擴(kuò)展數(shù)模轉(zhuǎn)換方式。掌握數(shù)模轉(zhuǎn)換程序設(shè)計(jì)方法。 1.?dāng)?shù)模轉(zhuǎn)換操作:數(shù)模轉(zhuǎn)換芯片使用 TLC7528C。TLC7528C 是雙路、8 位數(shù)字-模擬轉(zhuǎn)換器,內(nèi)部具有各自單獨(dú)的數(shù)據(jù)鎖存器,其特性包括兩 DAC 非常精密的一致性,數(shù)據(jù)通過公共 8 位輸入口轉(zhuǎn)送至兩DAC 數(shù)據(jù)鎖存器的任意一個(gè)。控制輸入端 DACA/DACB 決定哪一個(gè) DAC 被裝載。器件的裝載周期與隨機(jī)存取存儲(chǔ)器的寫周期類似,能方便地與大多數(shù)通用微處理器總線或端口相接口。器件的工作電壓 5V 至 15V,功耗小于 15mW(典型值)。2 或 4 象限的乘法功能使該器件成為許多微處理器的增益設(shè)置和信號(hào)控制的良好選擇。它可工作于電壓模式,與電流輸出相比較,更適合于電壓輸出。TLC7528C 的工作溫度范圍從 0℃至 70℃。 2. TLC7528C 與 TMS320VC5502A 的連接:由于 TMS320VC5502A DSP 沒有數(shù)模轉(zhuǎn)換輸出設(shè)備,采用外擴(kuò)數(shù)模轉(zhuǎn)換芯片的方法。在 ICETEK-VC5502-AE 板上選用的是 TLC7528C。TLC7528C 的轉(zhuǎn)換寄存器被映射到了 DSP的 CE2 空間,兩路 DA 轉(zhuǎn)換通道的地址分別是: 0x400009,0x40000b。在 TLC7528C 的輸出端,為了增加輸出功率,經(jīng)過一級(jí)運(yùn)放再輸出到板上插座上。 實(shí)驗(yàn)學(xué)習(xí)讓我們更好的學(xué)習(xí)到了理論知識(shí),不只是停留在理論上,實(shí)踐才是真理。 匯編語言程序設(shè)計(jì)實(shí)驗(yàn) 實(shí)驗(yàn)一 程序的控制與轉(zhuǎn)移 一、實(shí)驗(yàn)?zāi)康?/p> 1、掌握條件算符的使用。 2、掌握循環(huán)操作指令(BNAZ) 二、實(shí)驗(yàn)設(shè)備 計(jì)算機(jī)、DSP實(shí)驗(yàn)箱、ccs5000軟件。 三、實(shí)驗(yàn)內(nèi)容: 編寫程序,實(shí)現(xiàn)計(jì)算的值。 四、實(shí)驗(yàn)步驟 1、用仿真器將計(jì)算機(jī)與DSP實(shí)驗(yàn)箱連接好,并依次打開實(shí)驗(yàn)箱電源、仿真器電源,然后運(yùn)行CCS 軟件。 2、新建一個(gè)項(xiàng)目:點(diǎn)擊Project-New,將項(xiàng)目命名為example2,并將項(xiàng)目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因?yàn)镃CS 軟件不能識(shí)別以中文命名的文件夾。 3、新建一個(gè)源文件:點(diǎn)擊File-New-Source File可以打開一個(gè)文本編輯窗口,點(diǎn)擊保存按鍵,保存在和項(xiàng)目相同的一個(gè)文件夾下面(example2),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實(shí)驗(yàn)中的例程是使用匯編語言編寫的,所以選擇*.ASM 為保存類型),我們?cè)谶@里將保存名字命名為example2.asm。 4、在項(xiàng)目中添加源文件:在新建了一個(gè)源文件以后,要想使用CCS 編譯器對(duì)該源文件進(jìn)行編譯還需要將源文件添加到項(xiàng)目中去。添加方法是在工程管理器中右鍵單擊example2.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的example2.asm 文件添加到該項(xiàng)目中去。 5、編寫源程序: 在工程管理器中雙擊example2.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容: .title “example2.asm”.mmregs STACK.usect “STACK”,10H;堆棧的設(shè)置 .bss x,5;為變量分配6 個(gè)字的存儲(chǔ)空間.bss y,1.def _c_int00;start.data table:.word 10,20,3,4,5;x1,x2,x3,x4,x5.text;start: STM #0,SWWSR;插入0 個(gè)等待狀態(tài) _c_int00: STM #0,SWWSR STM #STACK+10H,sp;設(shè)置堆棧指針 STM #x,AR1;AR1指向x RPT #4;下一條被重復(fù)執(zhí)行5 遍 MVPD table,*AR1+;把程序存儲(chǔ)器中的數(shù)據(jù)傳送到數(shù)據(jù)存儲(chǔ)器 LD #0,A;A清零 CALL SUM;調(diào)用求和函數(shù) end: B end SUM: STM #x,AR3;AR3指向x STM #4,AR2;AR2=4 loop: ADD *AR3+,A;*AR3+A-->A,然后AR3+ BANZ loop,*AR2-;如果AR2 的值不為0,則跳到loop 處;;否則執(zhí)行下一條指令 STL A,*(y);把A 的低16 位賦給變量y RET.end 提示: (1)源代碼的書寫有一定的格式,初學(xué)者往往容易忽視。每一行代碼分為三個(gè)區(qū):標(biāo)號(hào)區(qū)、指令區(qū)和注釋區(qū)。標(biāo)號(hào)區(qū)必須頂格寫,主要是定義變量、常量、程序標(biāo)識(shí)時(shí)的名稱。指令區(qū)在標(biāo)號(hào)區(qū)之后,以空格或TAB 格開。如果沒有標(biāo)號(hào),也必須在指令前面加上空格或TAB,不能頂格。注釋區(qū)在標(biāo)號(hào)區(qū)、程序區(qū)之后,以分號(hào)開始。注釋區(qū)前面可以沒有標(biāo)號(hào)區(qū)或程序區(qū)。另外還有專門的注釋行,以*打頭,必須頂格開始。(2)一般區(qū)分大小寫,除非加編譯參數(shù)忽略大小寫。 (3)標(biāo)點(diǎn)符號(hào)有時(shí)不注意會(huì)打成中文全角版本號(hào)導(dǎo)致錯(cuò)誤。 6、編寫鏈接配置文件: 只有匯編源程序是不夠的,一個(gè)完整的DSP 程序至少包含三個(gè)部分:主程序、中斷向量表、鏈接配置文件(*.cmd)。這里先介紹一下鏈接配置文件。鏈接配置文件有很多功能,這里先介紹最常用的也是必須的兩條:1.存貯器的分配 2.標(biāo)明程序入口。 由于每個(gè)程序都需要一個(gè)鏈接配置文件,每個(gè)程序的鏈接配置文件根據(jù)實(shí)際情況的需要都略有不同,下面就為本實(shí)驗(yàn)的程序編寫一個(gè)鏈接配置文件,其它實(shí)驗(yàn)的鏈接配置文件都可以參考與本書配套的相應(yīng)例程來完成: /*example2.cmd */ vectors.obj /*中斷向量的目標(biāo)文件*/ example2.obj /*產(chǎn)生目標(biāo)文件*/-o example2.out /*產(chǎn)生可執(zhí)行下載文件,文件名可以根據(jù)不同項(xiàng)目而定*/-m example2.map /*產(chǎn)生存儲(chǔ)器映射文件,文件名可以根據(jù)不同項(xiàng)目而定 */ MEMORY { PAGE 0: /*定義程序存貯區(qū)*/ EPROG: origin = 0x4000, len = 0x3f80 VECT: origin = 0x7f80,len = 0x80 PAGE 1: /*定義數(shù)據(jù)存貯區(qū)*/ SYSREGS: origin = 0x00,len = 0x60 BIOSREGS: origin = 0x60,len = 0x20 IDATA: origin = 0x80,len = 0x3f00 EDATA: origin = 0x8000,len = 0x8000 } SECTIONS { .text :> EPROG PAGE 0 /*將.text 段映射到PAGE0 的EPROM 區(qū)*/.data :> EPROG PAGE 0 /*將.data 段映射到PAGE0 的EPROM 區(qū)*/.vectors: > VECT PAGE 0/*將中斷向量表定位到PAGE0 的VECS 區(qū)*/ .bss: > IDATA PAGE 1 /*將.bss 段映射到PAGE1 的IDATA 區(qū)*/ STACK: > IDATA PAGE 1 /*將.stack 段映射到PAGE1 的IDATA 區(qū)*/ } 7、編寫中斷向量表文件;/* vectors.asm */.title “vectors.asm”;/*中斷向量表的文件名*/.ref _c_int00;start /*引用外部定義的標(biāo)號(hào)*/.sect “.vectors”;/*定義初始化的段名*/ B _c_int00;start /*引用start*/.end 8、對(duì)項(xiàng)目進(jìn)行編譯和鏈接: 把 example2.asm、vectors.asm、example2.cmd 依次添加到項(xiàng)目后,點(diǎn)擊Project-Compile File,在項(xiàng)目編譯成功之后點(diǎn)擊Project-Build 選項(xiàng)對(duì)該項(xiàng)目進(jìn)行鏈接,生成*.OUT文件。 9、裝載可執(zhí)行文件: 要讓程序代碼在DSP內(nèi)部運(yùn)行必需將生成的*.OUT文件裝載到DSP 內(nèi)部,裝載方法是點(diǎn)擊:File-Load Programe再選擇生成的example2.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲(chǔ)器中。 10、運(yùn)行程序并查看結(jié)果: a)首先打開欲查看的數(shù)據(jù)空間:點(diǎn)擊View-Memory,彈出“Memory Window Options”對(duì)話框,把欲查看的地址改為0x0080,如右圖所示。 b)點(diǎn)擊 OK 按鈕,然后點(diǎn)擊 Debug-Run 讓程序在DSP 內(nèi)部運(yùn)行,最后點(diǎn)擊Debug -Halt,再觀察“Memory ” 對(duì)話框,看是否與右圖一致。 實(shí)驗(yàn)二 堆棧的使用方法 一、實(shí)驗(yàn)?zāi)康?/p> 掌握堆棧的使用方法。 二、實(shí)驗(yàn)設(shè)備 計(jì)算機(jī)、DSP 實(shí)驗(yàn)箱。 三、實(shí)驗(yàn)內(nèi)容 編寫程序,觀察堆棧的使用情況。 四、實(shí)驗(yàn)步驟 1、用仿真器將計(jì)算機(jī)與DSP 實(shí)驗(yàn)箱連接好,并依次打開實(shí)驗(yàn)箱電源、仿真器電源,然后運(yùn)行CCS 軟件。 2、新建一個(gè)項(xiàng)目:點(diǎn)擊Project-New,將項(xiàng)目命名為example3,并將項(xiàng)目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因?yàn)镃CS 軟件不能識(shí)別以中文命名的文件夾。 3、新建一個(gè)源文件:點(diǎn)擊File-New-Source File 可以打開一個(gè)文本編輯窗口,點(diǎn)擊保存按鍵,保存在和項(xiàng)目相同的一個(gè)文件夾下面(example3),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實(shí)驗(yàn)中的例程是使用匯編語言編寫的,所以選擇*.ASM 為保存類型),我們?cè)谶@里將保存名字命名為example3.asm。 4、在項(xiàng)目中添加源文件:在新建了一個(gè)源文件以后,要想使用CCS 編譯器對(duì)該源文件進(jìn)行編譯還需要將源文件添加到項(xiàng)目中去。添加方法是在工程管理器中右鍵單擊example3.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的example3.asm 文件添加到該項(xiàng)目中去。 5、編寫源程序: 在工程管理器中雙擊example3.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容: .title “example3.asm”.mmregs size.set 100 stack.usect “STK”,size;堆棧的設(shè)置 .bss length,10H.def _c_int00;start.text _c_int00: B start;start: STM #0,SWWSR;插入0 個(gè)等待狀態(tài) STM #stack+size,SP;設(shè)置堆棧的指針 LD #-8531,A STM #size,AR1 MVMM SP,AR7 loop: STL A,*AR7-BANZ loop,*AR1-.end 6、編寫鏈接配置文件: 參照實(shí)驗(yàn)一,需要更改的地方如下: 7、編寫中斷向量表文件 參照實(shí)驗(yàn)一,可不作修改。 8、對(duì)項(xiàng)目進(jìn)行編譯和鏈接: 把 example3.asm、vectors.asm、example3.cmd 依次添加到項(xiàng)目后,點(diǎn)擊Project-CompileFile,在項(xiàng)目編譯成功之后點(diǎn)擊Project-Build 選項(xiàng)對(duì)該項(xiàng)目進(jìn)行鏈接,生成*.out 文件。 9、裝載可執(zhí)行文件: 要讓程序代碼在 DSP 內(nèi)部運(yùn)行必需將生成的*.OUT 文件裝載到DSP 內(nèi)部,裝載方法是點(diǎn)擊:File-Load Programe 再選擇生成的example3.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲(chǔ)器中。 10、運(yùn)行程序并查看結(jié)果: a)首先打開欲查看的數(shù)據(jù)空間:點(diǎn)擊View-Memory,彈出“Memory Window Options”對(duì)話框,把欲查看的地址改為0x0090,如右圖所示。 b)點(diǎn)擊OK 按鈕,然后點(diǎn)擊Debug-Run 讓程序在DSP內(nèi)部運(yùn)行,最后點(diǎn)擊Debug-Halt,再觀察“Memory ”對(duì)話框,看是否與下圖一致: 實(shí)驗(yàn)三 加減法和乘法運(yùn)算 一、實(shí)驗(yàn)?zāi)康?/p> 掌握加減法和乘法運(yùn)算指令。 二、實(shí)驗(yàn)設(shè)備 計(jì)算機(jī)、DSP 實(shí)驗(yàn)箱。 三、實(shí)驗(yàn)內(nèi)容 編寫程序,分別實(shí)現(xiàn)計(jì)算 z=x+y-w、y=mx+b、y=x1×a2+x2×a2、。 四、實(shí)驗(yàn)步驟 1、用仿真器將計(jì)算機(jī)與DSP 實(shí)驗(yàn)箱連接好,并依次打開實(shí)驗(yàn)箱電源、仿真器電源,然后運(yùn)行CCS 軟件。 2、新建一個(gè)項(xiàng)目:點(diǎn)擊Project-New,將項(xiàng)目命名為example4,并將項(xiàng)目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因?yàn)镃CS 軟件不能識(shí)別以中文命名的文件夾。 3、新建一個(gè)源文件:點(diǎn)擊File-New-Source File 可以打開一個(gè)文本編輯窗口,點(diǎn)擊保存按鍵,保存在和項(xiàng)目相同的一個(gè)文件夾下面(example4),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實(shí)驗(yàn)中的例程是使用匯編語言編寫的,所以選擇*.ASM 為保存類型),我們?cè)谶@里將保存名字命名為example4.asm。 4、在項(xiàng)目中添加源文件:在新建了一個(gè)源文件以后,要想使用CCS 編譯器對(duì)該源文件進(jìn)行編譯還需要將源文件添加到項(xiàng)目中去。添加方法是在工程管理器中右鍵單擊example4.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的example4.asm 文件添加到該項(xiàng)目中去。 5、編寫源程序: 在工程管理器中雙擊example4.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容: ********** 計(jì)算 z=x+y-w **********.title “example4.asm”.mmregs STACK.usect “STACK”,10H;堆棧的設(shè)置 .bss x,1;為變量分配4 個(gè)字的存儲(chǔ)空間.bss y,1.bss w,1.bss z,1.def _c_int00.data table.word 10,26,23;x,y,w.text _c_int00: STM #0,SWWSR;插入0 個(gè)等待狀態(tài) STM #STACK+10H,SP;設(shè)置堆棧指針 STM #x,AR1;AR1指向x RPT #2 MVPD table,*AR1+;把程序存儲(chǔ)器中的數(shù)據(jù)移動(dòng)到數(shù)據(jù)存儲(chǔ)器 CALL SUMB end: B end SUMB: LD *(x),A ADD *(y),A SUB *(w),A STL A,*(z)RET.end 6、編寫鏈接配置文件: 參照實(shí)驗(yàn)一,需要更改的地方如下: 7、編寫中斷向量表文件 參照實(shí)驗(yàn)一,可不作修改。 8、對(duì)項(xiàng)目進(jìn)行編譯和鏈接: 把 example4.asm、vectors.asm、example4.cmd 依次添加到項(xiàng)目后,點(diǎn)擊Project-Compile File,在項(xiàng)目編譯成功之后點(diǎn)擊Project-Build 選項(xiàng)對(duì)該項(xiàng)目進(jìn)行鏈接,生成*.out 文件。 9、裝載可執(zhí)行文件: 要讓程序代碼在DSP 內(nèi)部運(yùn)行必需將生成的*.OUT 文件裝載到DSP 內(nèi)部,裝載方法是點(diǎn)擊:File-Load Programe 再選擇生成的example4.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲(chǔ)器中。 10、運(yùn)行程序并查看結(jié)果: a)首先打開欲查看的數(shù)據(jù)空間:點(diǎn)擊View-Memory,彈出“Memory Window Options”對(duì)話框,把欲查看的地址改為0x0080,如右上圖所示。b)點(diǎn)擊OK 按鈕,然后點(diǎn)擊Debug-Run 讓程序在DSP 內(nèi)部運(yùn)行,最后點(diǎn)擊Debug-Halt,再觀察“Memory ”對(duì)話框,看是否與右圖一致: 11、建立其它項(xiàng)目工程文件 建立項(xiàng)目工程文件 example5,使之實(shí)現(xiàn)計(jì)算y=mx+b;建立項(xiàng)目工程文件example6,使之實(shí)現(xiàn)計(jì)算y=x1×a2+x2×a2;建立項(xiàng)目工程文件example7,使之實(shí)現(xiàn)計(jì)算 注:各源程序操作步驟均與前面相似,需要觀察的數(shù)據(jù)存儲(chǔ)器的地址均為0x0080;另外要注意對(duì)相應(yīng)的鏈接配置文件作相應(yīng)的修改。下面是它們的實(shí)驗(yàn)結(jié)果: example5 的結(jié)果 example6結(jié)果 Example7 的結(jié)果 實(shí)驗(yàn)四 重復(fù)操作 一、實(shí)驗(yàn)?zāi)康?/p> 掌握各種重復(fù)操作指令。 二、實(shí)驗(yàn)設(shè)備 計(jì)算機(jī)、DSP 實(shí)驗(yàn)箱。 三、實(shí)驗(yàn)內(nèi)容 編寫程序,實(shí)現(xiàn)對(duì)數(shù)組初始化后再對(duì)每個(gè)元素加 1。 四、實(shí)驗(yàn)步驟 1、用仿真器將計(jì)算機(jī)與DSP 實(shí)驗(yàn)箱連接好,并依次打開實(shí)驗(yàn)箱電源、仿真器電源,然后運(yùn)行CCS 軟件。 2、新建一個(gè)項(xiàng)目:點(diǎn)擊Project-New,將項(xiàng)目命名為example9,并將項(xiàng)目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因?yàn)镃CS 軟件不能識(shí)別以中文命名的文件夾。 3、新建一個(gè)源文件:點(diǎn)擊File-New-Source File 可以打開一個(gè)文本編輯窗口,點(diǎn)擊保存按鍵,保存在和項(xiàng)目相同的一個(gè)文件夾下面(example9),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實(shí)驗(yàn)中的例程是使用匯編語言編寫的,所以選擇*.ASM為保存類型),我們?cè)谶@里將保存名字命名為example9.asm。 4、在項(xiàng)目中添加源文件:在新建立了一個(gè)源文件以后,要想使用CCS 編譯器對(duì)該源文件進(jìn)行編譯還需要將源文件添加到項(xiàng)目中去。添加方法是在工程管理器中右鍵單擊example9.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的example9.asm 文件添加到該項(xiàng)目中去。 5、編寫源程序: 在工程管理器中雙擊example9.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容: ********** 學(xué)習(xí)塊重復(fù)操作指令:RPTB **********.title “example9.asm”.mmregs STACK.usect “STACK”,10H.bss x,5.def _c_int00.text _c_int00: STM #x,AR1 LD #2H,A;將數(shù)組每個(gè)元素初始化為2 RPT #4 STL A,*AR1+;把A 的低16 位賦給AR1 指向的變量x,然后AR1+1 LD #1,16,B;為每個(gè)元素加1 作準(zhǔn)備 STM #4,BRC STM #x,AR4 RPTB next-1;next-1為循環(huán)結(jié)束地址 add *AR4,16,B,A STH A,*AR4+ next: LD #0,B end: B end.end 6、編寫鏈接配置文件: 參照實(shí)驗(yàn)一,需要更改的地方如下: 更改前 更改后 7、編寫中斷向量表文件 參照實(shí)驗(yàn)一,可不作修改。 8、對(duì)項(xiàng)目進(jìn)行編譯和鏈接: 把 example9.asm、vectors.asm、example9.cmd依次添加到項(xiàng)目后,點(diǎn)擊Project-Compile File,在項(xiàng)目編譯成功之后點(diǎn)擊Project-Build 選項(xiàng)對(duì)該項(xiàng)目進(jìn)行鏈接,生成*.out 文件。 9、裝載可執(zhí)行文件: 要讓程序代碼在 DSP 內(nèi)部運(yùn)行必需將生成的*.OUT 文件裝載到DSP 內(nèi)部,裝載方法是點(diǎn)擊:File-Load Programe 再選擇生成的example9.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲(chǔ)器中。 10、運(yùn)行程序并查看結(jié)果: a)首先打開欲查看的數(shù)據(jù)空間:點(diǎn)擊View-Memory,彈出“Memory Window Options”對(duì)話框,把欲查看的地址改為0x0080,如右圖所示。b)點(diǎn)擊OK 按鈕,然后點(diǎn)擊Debug-Run 讓程序在DSP 內(nèi)部運(yùn)行,最后點(diǎn)擊Debug-Halt,再觀察“Memory ”對(duì)話框,看是否與下圖一致: 11、試用數(shù)據(jù)塊傳送指令實(shí)現(xiàn)數(shù)組初始化:把上述程序中的“STLA,*AR1+”改成“MVPD table,*AR1+”,看實(shí)現(xiàn)結(jié)果是否一致。 實(shí)驗(yàn)五 數(shù)據(jù)塊傳送 一、實(shí)驗(yàn)?zāi)康?/p> 掌握各種數(shù)據(jù)塊傳送操作指令。 二、實(shí)驗(yàn)設(shè)備 計(jì)算機(jī)、DSP 實(shí)驗(yàn)箱.三、實(shí)驗(yàn)內(nèi)容 編寫程序,實(shí)現(xiàn)把數(shù)據(jù)從程序存儲(chǔ)器傳送到數(shù)據(jù)存儲(chǔ)器,以及從數(shù)據(jù)存儲(chǔ)器傳送到程序存儲(chǔ)器。 四、實(shí)驗(yàn)步驟 1、用仿真器將計(jì)算機(jī)與DSP 實(shí)驗(yàn)箱連接好,并依次打開實(shí)驗(yàn)箱電源、仿真器電源,然后運(yùn)行CCS 軟件。 2、新建一個(gè)項(xiàng)目:點(diǎn)擊Project-New,將項(xiàng)目命名為zhao3,并將項(xiàng)目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因?yàn)镃CS 軟件不能識(shí)別以中文命名的文件夾。 3、新建一個(gè)源文件:點(diǎn)擊File-New-Source File 可以打開一個(gè)文本編輯窗口,點(diǎn)擊保存按鍵,保存在和項(xiàng)目相同的一個(gè)文件夾下面(zhao3),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實(shí)驗(yàn)中的例程是使用匯編語言編寫的,所以選擇*.ASM為保存類型),我們?cè)谶@里將保存名字命名為zhao3.asm。 4、在項(xiàng)目中添加源文件:在新建立了一個(gè)源文件以后,要想使用CCS 編譯器對(duì)該源文件進(jìn)行編譯還需要將源文件添加到項(xiàng)目中去。添加方法是在工程管理器中右鍵單擊zhao3.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的zhao3.asm 文件添加到該項(xiàng)目中去。 5、編寫源程序: 在工程管理器中雙擊zhao3.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容: ************ 學(xué)習(xí)數(shù)據(jù)塊傳送指令:MVPD、MVDD ************.title “zhao3.asm”.mmregs STACK.usect “STACK”,30H.bss x,20.bss y,20.data table:.word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20.def _c_int00.text _c_int00: STM #x,AR1 RPT #19 MVPD table,*AR1+;程序存儲(chǔ)器傳送到數(shù)據(jù)存儲(chǔ)器 STM #x,AR2 STM #y,AR3 RPT #19 MVDD *AR2+,*AR3+;數(shù)據(jù)存儲(chǔ)器傳送到數(shù)據(jù)存儲(chǔ)器 end: B end.end 6、編寫鏈接配置文件: 參照實(shí)驗(yàn)一,需要更改的地方如下: 更改前 更改后 7、編寫中斷向量表文件 參照實(shí)驗(yàn)一,可不作修改。 8、對(duì)項(xiàng)目進(jìn)行編譯和鏈接: 把 zhao3.asm、vectors.asm、zhao3.cmd 依次添加到項(xiàng)目后,點(diǎn)擊Project-Compile File,在項(xiàng)目編譯成功之后點(diǎn)擊Project-Build 選項(xiàng)對(duì)該項(xiàng)目進(jìn)行鏈接,生成*.out 文件。 9、裝載可執(zhí)行文件: 要讓程序代碼在DSP 內(nèi)部運(yùn)行必需將生成的*.OUT 文件裝載到DSP 內(nèi)部,裝載方法是點(diǎn)擊:File-Load Programe 再選擇生成的zhao3.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲(chǔ)器中。 10、運(yùn)行程序并查看結(jié)果: a)首先打開欲查看的數(shù)據(jù)空間:點(diǎn)擊View-Memory,彈出“Memory Window Options”對(duì)話框,把欲查看的地址改為0x0080,如右圖所示。 c)點(diǎn)擊 OK 按鈕,然后點(diǎn)擊Debug-Run 讓程序在DSP 內(nèi)部運(yùn)行,最后點(diǎn)擊Debug-Halt,再觀察“Memory ”對(duì)話框,看是否與下圖一致: 實(shí)驗(yàn)六 除法運(yùn)算 一、實(shí)驗(yàn)?zāi)康?/p> 掌握除法運(yùn)算的實(shí)現(xiàn)方法。 二、實(shí)驗(yàn)設(shè)備 計(jì)算機(jī)、DSP 實(shí)驗(yàn)箱。 三、實(shí)驗(yàn)內(nèi)容 分別編寫程序,實(shí)現(xiàn)計(jì)算 0.4÷(-0.8)和16384÷512 的值。 四、實(shí)驗(yàn)步驟 1、用仿真器將計(jì)算機(jī)與DSP 實(shí)驗(yàn)箱連接好,并依次打開實(shí)驗(yàn)箱電源、仿真器電源,然后運(yùn)行CCS 軟件。 2、新建一個(gè)項(xiàng)目:點(diǎn)擊Project-New,將項(xiàng)目命名為zhao9f,并將項(xiàng)目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因?yàn)镃CS 軟件不能識(shí)別以中文命名的文件夾。 3、新建一個(gè)源文件:點(diǎn)擊File-New-Source File 可以打開一個(gè)文本編輯窗口,點(diǎn)擊保存按鍵,保存在和項(xiàng)目相同的一個(gè)文件夾下面(zhao9f),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實(shí)驗(yàn)中的例程是使用匯編語言編寫的,所以選擇*.ASM為保存類型),我們?cè)谶@里將保存名字命名為zhao9f.asm。 4、在項(xiàng)目中添加源文件:在新建立了一個(gè)源文件以后,要想使用CCS 編譯器對(duì)該源文件進(jìn)行編譯還需要將源文件添加到項(xiàng)目中去。添加方法是在工程管理器中右鍵單擊zhao9f.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的zhao9f.asm 文件添加到該項(xiàng)目中去。 5、編寫源程序: 在工程管理器中雙擊zhao9f.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容: ********************************* * |被除數(shù)|<|除數(shù)|,商為小數(shù) * * 計(jì)算0.4÷(-0.8)的值 * *********************************.title “zhao9f.asm”.mmregs STACK.usect “STACK”,10H.bss num,1;分子.bss den,1;分母.bss quot,1;商.data table:.word 4*32768/10;-128.word-8*32768/10;1024.def _c_int00.text _c_int00: LD #1H,DP;設(shè)置數(shù)據(jù)頁指針,使DP 指向第1 頁(80H 處)STM #num,AR1 RPT #1 MVPD table,*AR1+;傳送2 個(gè)數(shù)據(jù)至分子、分母 LD @den,16,A;將分母移到累加器A(31~16)MPYA @num;(num)*(A(31~16))->B,獲取商的符號(hào);(在累加器B 中)ABS A;分母取絕對(duì)值 STH A,@den;分母取絕對(duì)值存回原處 LD @num,16,A;將分子移到累加器A(32~16)ABS A;分子取絕對(duì)值 RPT #14;15次減法循環(huán),完成除法 SUBC @den,A XC 1,BLT;如果B<0(商為負(fù)數(shù)),則需要變號(hào) NEG A STL A,@quot;保存商 end: B end.end 6、編寫鏈接配置文件: 參照實(shí)驗(yàn)一,需要更改的地方如下: 7、編寫中斷向量表文件 參照實(shí)驗(yàn)一,可不作修改。 8、對(duì)項(xiàng)目進(jìn)行編譯和鏈接:把 zhao9f.asm、vectors.asm、zhao9f.cmd 依次添加到項(xiàng)目后,點(diǎn)擊Project-Compile File,在項(xiàng)目編譯成功之后點(diǎn)擊Project-Build 選項(xiàng)對(duì)該項(xiàng)目進(jìn)行鏈接,生成*.out 文件。 9、裝載可執(zhí)行文件: 要讓程序代碼在 DSP 內(nèi)部運(yùn)行必需將生成的*.OUT文件裝載到DSP 內(nèi)部,裝載方法是點(diǎn)擊:File-LoadPrograme 再選擇生成的zhao9f.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲(chǔ)器中。 10、運(yùn)行程序并查看結(jié)果: a)首先打開欲查看的數(shù)據(jù)空間:點(diǎn)擊View-Memory,彈出“Memory Window Options”對(duì)話框,把欲查看的地址改為0x0080,如右圖所示。 b)點(diǎn)擊OK 按鈕,然后點(diǎn)擊Debug-Run 讓程序在 DSP 內(nèi)部運(yùn)行,最后點(diǎn)擊Debug-Halt,再觀察“Memory ”對(duì)話框,看是否與右圖一致: 11、上述程序是商為小數(shù)的除法,下面編寫商為整數(shù)的除法: a)建立項(xiàng)目工程文件zhao9g,編寫源程序zhao9g.asm,并與zhao9f.asm 作一比較。以下是源程序: ******************************** * |被除數(shù)|>=|除數(shù)|,商為整數(shù) * * 計(jì)算16384÷512 的值 * ********************************.title “zhao9g.asm”.mmregs STACK.usect “STACK”,10H.bss num,1;分子.bss den,1;分母.bss quot,1;商.data table:.word 16384;更改被除數(shù) 66*32768/100.word 512 ;更改除數(shù)-33*32768/100.def _c_int00.text _c_int00: LD #0020H,DP;指定數(shù)據(jù)頁指針 STM #num,AR1 RPT #1 MVPD table,*AR1+;傳送2 個(gè)數(shù)據(jù)至分子、分母 LD @den,16,A;將分母移到累加器A(31~16)MPYA @num;(num)*(A(31~16))->B,獲取商的符號(hào);(在累加器B 中)ABS A;分母取絕對(duì)值 STH A,@den;分母取絕對(duì)值存回原處 LD @num,A;將分子移到累加器A(32~16)ABS A;分子取絕對(duì)值 RPT #15;16次減法循環(huán),完成除法 SUBC @den,A XC 1,BLT;如果B<0(商為負(fù)數(shù)),則需要變號(hào) NEG A STL A,@quot;保存商 end: B end.end b)編寫鏈接配置文件: 參照實(shí)驗(yàn)一,需要更改的地方如下: c)編寫中斷向量表文件 參照實(shí)驗(yàn)一,可不作修改。 d)把各文件添加到項(xiàng)目中并對(duì)項(xiàng)目進(jìn)行編譯和鏈接并下載到DSP 內(nèi)部,具體方法請(qǐng)參照前面的步驟。 d)運(yùn)行程序并查看結(jié)果: 首先打開欲查看的數(shù)據(jù)空間:點(diǎn)擊View-Memory,彈出“Memory Window Options” 對(duì)話框,把欲查看的地址改為0x0080,如右圖所示。運(yùn)行程序后,結(jié)果如下: 實(shí)驗(yàn)七 定時(shí)器中斷實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?/p> 1、掌握DSP 中斷技術(shù),學(xué)會(huì)對(duì)DSP 中斷的處理方法。 2、掌握中斷對(duì)于程序流程的控制,理解DSP 對(duì)于中斷的響應(yīng)時(shí)序。 3、掌握匯編語言編寫中斷的基本方法。 二、實(shí)驗(yàn)設(shè)備 計(jì)算機(jī)、DSP實(shí)驗(yàn)箱。 二、實(shí)驗(yàn)原理 DSP一般情況下均支持軟件中斷和硬件中斷。軟件中斷由指令引起,如INTR、TRAP、RESET;硬件中斷由外部中斷信號(hào)和內(nèi)部中斷信號(hào)引起,外部硬件中斷如INT0-INT2,內(nèi)部硬件中斷包括定時(shí)器、串口、主機(jī)接口等引起的中斷。軟件中斷不分優(yōu)先級(jí),硬件中斷有優(yōu)先級(jí)。中斷寄存器有中斷標(biāo)志寄存器IFR 和中斷屏蔽寄存器IMR。 1、中斷標(biāo)志寄存器(Interrupt Flag Register,IFR)是一個(gè)存儲(chǔ)器映像寄存器,當(dāng)某個(gè)中斷觸發(fā)時(shí),寄存器的相應(yīng)位置1,直到中斷處理完畢為止。IFR 各位的意義如圖: 不同型號(hào)DSP 的IFR的5-0 位對(duì)應(yīng)的中斷源完全相同,是外部中斷和通信中斷標(biāo)志位。其它15-6 位中斷源根據(jù)芯片的不同,定義的中斷源不同。當(dāng)對(duì)芯片進(jìn)行復(fù)位、中斷處理完畢,寫1于IFR的某位,執(zhí)行INTR 指令等硬件或軟件中斷操作時(shí),IFR的相應(yīng)位置1,表示中斷發(fā)生。通過讀IFR 可以了解是否有已經(jīng)被掛起的中斷,通過寫IFR可以清除被掛起的中斷。在以下3 種情況下將清除被掛起的中斷。(1)復(fù)位(包括軟件和硬件復(fù)位)。(2)置位1 寫入相應(yīng)的IFR 標(biāo)志位。 (3)使用相應(yīng)的中斷號(hào)響應(yīng)該中斷,即使用INTR #K 指令。若有掛起的中斷,在IFR中該標(biāo)志位為1,通過寫IFR 的當(dāng)前內(nèi)容,就可以清除所有正被掛起的中斷;為了避免來自串口的重復(fù)中斷,應(yīng)在相應(yīng)的中斷服務(wù)程序中清除IFR 位。 2、中斷屏蔽寄存器 中斷屏蔽寄存器(Interrupt Mask Register,IMR),是用于屏蔽外部和內(nèi)部的硬件中斷。通過讀IMR 可以檢查中斷是否被屏蔽,通過寫可以屏蔽中斷(或解除中斷屏蔽),在IMR 位置0,則屏蔽該中斷。IMR 不包含/RS 和NMI,復(fù)位時(shí)IMR 均設(shè)為0,TMS320C5410a 中斷屏蔽寄存器IMR 各位的意義如下: 硬件中斷信號(hào)產(chǎn)生后能否引起DSP 執(zhí)行相應(yīng)的中斷服務(wù)程序還取決于以下四點(diǎn)(復(fù)位和NMI 除外,它們不可屏蔽): (1)、狀態(tài)寄存器ST1 的INTM 位為0,即中斷方式位,允許可屏蔽中斷;INTM 為1,禁止可屏蔽中斷。若中斷響應(yīng)后INTM 自動(dòng)置1,則其它中斷將不被響應(yīng)。在ISR(中斷服務(wù)程序)中以RETE 指令返回時(shí),INTM 位自動(dòng)清0,INTM 位可用軟件置位,如指令SSBX INTM(置1)和RSBX INTM(清0)。 (2)、當(dāng)前沒有響應(yīng)更高優(yōu)先級(jí)的中斷。 (3)、中斷屏蔽寄存器IMR 中對(duì)應(yīng)此中斷的位為1。在IMR 中相應(yīng)位為1,表明允許該中斷。(4)、在中斷標(biāo)志寄存器(IFR)中對(duì)應(yīng)位置為1。 TMS320C54x 中,中斷向量地址由PMST 寄存器中的9 位中斷向量地址指針I(yè)PTR 和左移2位后的中斷向量序號(hào)(中斷向量序號(hào)位0~31,左移2 位后變成7 位)所組成。例如:已知中斷向量序號(hào)INT0=0001 0000B=10H,中斷向量地址指針I(yè)PTR=0001H,求中斷向量地址? 因?yàn)橹袛嘞蛄啃蛱?hào)左移2 位后變成100 0000B=40H 所以中斷向量地址為0000 0000 1100 0000B=00C0H 復(fù)位時(shí),IPTR 位置全1(IPTR=1FFH),并按此值將復(fù)位中斷向量映射到程序存儲(chǔ)器的511頁空間。所以硬件復(fù)位后,程序地址總是PC=1111 1111 1000 0000B=0FF80H,即總是從0FF80H開始執(zhí)行程序。而且,硬件復(fù)位地址是固定不變的,其他中斷向量可以通過改變內(nèi)容重新安排中斷程序的地址。例如中斷向量地址指針I(yè)PTR=0001H,中斷向量就被移到0080H 開始的程序存儲(chǔ)空間。 當(dāng)DSP響應(yīng)中斷時(shí),將依次完成以下步驟: (1)、發(fā)出IACK 信號(hào),并清除IFR 中相應(yīng)的中斷標(biāo)志位。(2)、將PC 值(返回地址)壓入堆棧。(3)、取中斷向量。 (4)、跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序。 (5)、保存應(yīng)保護(hù)的寄存器和變量,壓入堆棧。(6)、執(zhí)行中斷處理程序。 (7)、恢復(fù)保護(hù)的內(nèi)容,從堆棧彈出。(8)、中斷返回,從堆棧中彈出返回地址。(9)、繼續(xù)執(zhí)行原先的程序。 本實(shí)驗(yàn)是利用DSP內(nèi)部的定時(shí)器產(chǎn)生中斷來完成中斷實(shí)驗(yàn),這里先簡(jiǎn)要介紹一下DSP內(nèi)部的定時(shí)器:TMS320VC5410a有一個(gè)16 位的定時(shí)器,定時(shí)器帶有一個(gè)4位預(yù)分頻器PSC和16位定時(shí)計(jì)數(shù)器TIM。CPUCLOCK時(shí)鐘先經(jīng)PSC預(yù)分頻后,用分頻的時(shí)鐘再對(duì)TIM 作減1計(jì)數(shù),當(dāng)TIM減為0 時(shí),將在定時(shí)器輸出管腳TOUT上產(chǎn)生一個(gè)脈沖,同時(shí)產(chǎn)生定時(shí)器中斷請(qǐng)求,并將定時(shí)器周期寄存器PRD的值裝入TIM。 定時(shí)器由TIM、PRD、TCR 三個(gè)寄存器和相應(yīng)的輸出管腳TOUT組成。(1)TIM 在數(shù)據(jù)存儲(chǔ)器中的地址為0024H,是減1計(jì)數(shù)器。(2)PRD 地址為0025H,存放定時(shí)時(shí)間常數(shù)。 (3)TCR 地址為0026H,存儲(chǔ)定時(shí)器的控制及狀態(tài)位。定時(shí)器產(chǎn)生中斷的計(jì)算公式如下: 定時(shí)周期=CLKOUT*(TDDR+1)*(PRD+1)TMS320VC5410a 的定時(shí)器可以被特定的狀態(tài)位實(shí)現(xiàn)停止、重新啟動(dòng)、重新設(shè)置或禁止??梢允褂迷摱〞r(shí)器產(chǎn)生周期性的CPU 中斷。 定時(shí)器初始化的步驟為: (1)、將TCR 中的TSS 位置1,關(guān)閉定時(shí)器。(2)、修改PRD。 (3)、重新設(shè)置TCR:令TSS=0,TRB=1,并按要求設(shè)置SOFT,F(xiàn)REE、TDDR。 設(shè)置定時(shí)器中斷的步驟為(設(shè)INTM=1): (1)、將IFR 中TINT 位置為1,清除以前的定時(shí)器中斷請(qǐng)求。(2)、將IMR 中的TINT 位置為1,打開定時(shí)器中斷。(3)、將ST1 中的INTM 位置為0,使能所有中斷。 每當(dāng)TIM 減為0 時(shí),會(huì)產(chǎn)生一個(gè)定時(shí)器中斷,并在相應(yīng)的TOUT 管腳上產(chǎn)生一個(gè)寬度為CLKOUT 周期的正脈沖。 在RESET 后,TIM 和PRD 被設(shè)置為最大值(FFFFH),TCR 中的TDDR 置0,定時(shí)器啟動(dòng)。定時(shí)控制寄存器(TCR)為一個(gè)映射到片內(nèi)的16 位寄存器: RESERVED:常常設(shè)置為0。 FREE 和SOFT: 軟件調(diào)試組合控制位,用于控制調(diào)試程序斷點(diǎn)操作情況下的定時(shí)器狀態(tài)。當(dāng)free=0 且soft=0 時(shí),定時(shí)器立即停止工作。當(dāng)free=0 且soft=1 且計(jì)數(shù)器TIM 減為1 時(shí),定時(shí)器停止工作。當(dāng)free=1 且soft=x 時(shí),定時(shí)器繼續(xù)工作。PSC: 預(yù)定標(biāo)計(jì)數(shù)器。每個(gè)CLKOUT 作減1 操作,減為0 時(shí),“TDDR”寄存器的值裝載到“PSC”寄存器,TIM 減1,PSC 的作用相當(dāng)于預(yù)分頻器。 TRB: 定時(shí)器重新加載控制位,用于復(fù)位片內(nèi)定時(shí)器。當(dāng)TRB 置1 時(shí),“PRD”寄存器的值裝載到“TIM”寄存器,“TDDR”寄存器的值裝載到“PSC”寄存器,TRB 常常設(shè)置為0。TSS: TSS=0,定時(shí)器開始。TSS=1,定時(shí)器停止。TDDR: 定時(shí)器分頻比。以此數(shù)對(duì)CLKOUT 分頻后再去對(duì)TIM 做減1 操作,當(dāng)“PSC”為0,“TDDR”寄存器的值裝載到“PSC”寄存器中。 四、實(shí)驗(yàn)內(nèi)容 利用定時(shí)器中斷制作方波發(fā)生器,通過XF 引腳控制LED 發(fā)光來檢測(cè)方波的周期。 五、實(shí)驗(yàn)步驟 1、新建一個(gè)項(xiàng)目:testxf.pjt; 2、在項(xiàng)目中編輯以下匯編語言文件: 有時(shí)定時(shí)的長(zhǎng)度不能滿足需要,比如F=10Mhz時(shí),定時(shí)最大是:10ns*2^4*2^16=10.485760ms。如果需要更長(zhǎng)的定時(shí),就要在定時(shí)器中斷子程序中再加一個(gè)計(jì)數(shù)器,直到產(chǎn)生一定次數(shù)的定時(shí)中斷后再執(zhí)行相應(yīng)的操作。如下程序可以產(chǎn)生1Hz 的方波: ;;fangbo.asm;利用定時(shí)器Timer0 在XF 腳產(chǎn)生周期1s 的的方波;.title “fangbo.asm”.mmregs.def _c_int00;程序入口 .def TINT0_ISR;Timer0中斷服務(wù)程序 STACK.usect “STACK”,10H;分配堆棧空間;設(shè)定定時(shí)器0 控制寄存器的內(nèi)容 K_TCR_SOFT.set 0B<<11;TCR第11位soft=0 K_TCR_FREE.set 0B<<10;TCR第10位free=0 K_TCR_PSC.set 0B<<6;TCR第9-6位,可設(shè)跟TDDR 一樣,也可不設(shè)自動(dòng)加載 K_TCR_TRB.set 1B<<5;TCR第5位TRB=1此位置1,PSC會(huì)自動(dòng)加載的 K_TCR_TSS.set 0B<<4;TCR第4位TSS=0 K_TCR_TDDR.set 0100B<<0;TCR第3-0位TDDR=0100B K_TCR.set K_TCR_SOFT|K_TCR_FREE|K_TCR_PSC|K_TCR_TRB|K_TCR_TSS|K_TCR_TDDR K_TCR_STOP.set 1B<<4;TSS=1時(shí)計(jì)數(shù)器停止 .data DATA_DP: XF_Flag:.word 1;當(dāng)前XF的輸出電平標(biāo)志,如果XF_Flag=1,則XF=1;==;主程序: ;==.text _c_int00: STM #STACK+10H,SP;設(shè)堆棧指針SP LD #DATA_DP,DP;設(shè)數(shù)據(jù)地址DP STM #XF_Flag,AR2;AR 指向XF 標(biāo)志;改變中斷向量表位置 K_IPTR.set 7F80h;指向7f80H,默認(rèn)是FF80 LDM PMST,A AND #7FffH,A;保留低7位,清掉高位 OR #K_IPTR,A;STLM A,PMST;初始化定時(shí)器0;f=20Mhz,定時(shí)最大是:50ns*2^4*2^16=50ms,;要輸出1s 的方波,可定時(shí)25ms,再在中斷程序中加個(gè)40計(jì)數(shù)器;Tt=50ns*(1+4)*(1+49999)=5ms;f=20M, Tt=50ns*(1+4)*(1+49999)=25ms;再加40 計(jì)數(shù)器 CounterSet.set 39;定義計(jì)數(shù)次數(shù) PERIOD.set 49999;定義計(jì)數(shù)周期 .asg AR1,Counter;AR1做計(jì)數(shù)指針,重新命名以便識(shí)別 STM #CounterSet,Counter;設(shè)計(jì)數(shù)器初值 STM K_TCR_STOP,TCR;停止計(jì)數(shù)器0;STM #PERIOD,TIM;可設(shè)成跟PRD 一樣,也可不設(shè)自動(dòng)加載 STM #PERIOD,PRD;設(shè)定計(jì)數(shù)周期 STM #K_TCR,TCR;開始Timer0 stm #0008h,IMR;允許Timer0中斷 STM #0008h,IFR;清除掛起的中斷 RSBX INTM;開中斷 end1: nop B end1;==;Timer0 中斷服務(wù)程序:TIN0_ISR;== TINT0_ISR: PSHM ST0;本中斷程序影響TC,位于ST0 中 BANZ Next,*Counter-;判斷不等于0 時(shí)跳轉(zhuǎn),然后計(jì)數(shù)器減1 STM #CounterSet,Counter;恢復(fù)初值 ;判斷當(dāng)前XF狀態(tài)并作電平變化 BITF *AR2,#1;IF XF_Flag=1 then TC=1 else TC=0 BC ResetXF,TC;IF TC=1 then XF=0 else XF=1 setXF: SSBX XF;置XF為高電平 ST #1,*AR2;相應(yīng)修改標(biāo)志 B Next ResetXF: RSBX XF;;置XF為低電平 ST #0,*AR2;相應(yīng)修改標(biāo)志 Next: POPM ST0 RETE.end 3、編寫存儲(chǔ)器配置文件:(fangbo.cmd)/*-e _c_int00 This is the entry point reset vector */-m map.map-o fangbo.out MEMORY { PAGE 0: /*定義程序存貯區(qū)*/ EPROM: origin = 0x4000, len = 0x3f80 VECT: origin = 0x7f80, len = 0x80 PAGE 1: /*定義數(shù)據(jù)存貯區(qū)*/ SYSREGS: origin = 0x00, len = 0x60 BIOSREGS: origin = 0x60, len = 0x20 IDATA: origin = 0x80, len = 0x3f00 EDATA: origin = 0x8000, len = 0x8000 } SECTIONS {.text :>EPROM PAGE 0 /*將.text 段映射到PAGE0 的EPROM 區(qū)*/.data :>EPROM PAGE 0 /*將.data 段映射到PAGE0 的EPROM 區(qū)*/.vectors: > VECT PAGE 0/*將中斷向量表定位到PAGE0 的VECS 區(qū)*/.bss: > IDATA PAGE 1 /*將.bss 段映射到PAGE1 的IDATA 區(qū)*/ STACK > IDATA PAGE 1 /*將.stack 段映射到PAGE1 的IDATA 區(qū)*/ } 4、編寫中斷向量表文件(vectors.asm) 中斷向量表是DSP 程序的重要組成部分,下面是5410a 中斷向量表的一個(gè)示例,可以作為模板: ***************************************************************** *vectors.asm *完整的5410a 中斷向量表示例 *5410a 共有30 個(gè)中斷向量,每個(gè)向量占4 個(gè)字的空間。 *使用的向量一般加一條跳轉(zhuǎn)指令轉(zhuǎn)到相應(yīng)中斷服務(wù)子程序,其余空位用NOP 填充 *未使用的向量直接用RETE 返回,是為了防止意外進(jìn)入未用中斷。 *****************************************************************.sect “.vectors”;開始命名段.vecotrs.global _c_int00;引用程序入口的全局符號(hào)定義 ;引用其它中斷程序入口的全局符號(hào)定義 .align 0x80;中斷向量必須對(duì)齊頁邊界 .global TINT0_ISR RESET: B _c_int00;Reset 中斷向量,跳轉(zhuǎn)到程序入口 STM #200,SP;stack size of 200 nmi: RETE;enable interrupts and return from one NOP NOP NOP;NMI~;software interrupts sint17.space 4*16 sint18.space 4*16 sint19.space 4*16 sint20.space 4*16 sint21.space 4*16 sint22.space 4*16 sint23.space 4*16 sint24.space 4*16 sint25.space 4*16 sint26.space 4*16 sint27.space 4*16 sint28.space 4*16 sint29.space 4*16 sint30.space 4*16 int0: RETE;External user interrupt #0 NOP NOP NOP int1: RETE;External user interrupt #1 NOP NOP NOP int2: RETE;External user interrupt #2 NOP NOP NOP tint: BD TINT0_ISR;Timer0 中斷 NOP NOP rint0: RETE;McBSP #0 receive interrupt(default)NOP NOP NOP xint0: RETE;McBSP #0 transmit interrupt(default)NOP NOP NOP rint2: RETE;McBSP #2 receive interrupt(default)NOP NOP NOP xint2: RETE;McBSP #2 transmit interrupt(default)NOP NOP NOP int3: RETE;External user interrupt #3 NOP NOP NOP hint: RETE;HPI interrupt NOP NOP NOP rint1: RETE;McBSP #1 receive interrupt(default)NOP NOP NOP xint1: RETE;McBSP #1 transmit interrupt(default)NOP NOP NOP.space 16*16.end 技巧提示:第一個(gè)中斷(Reset 中斷)是每個(gè)程序都應(yīng)該有的,在不需要其它中斷的情況下,可以只用這一部分,后面全部省掉。另外一個(gè)重要問題是中斷向量表的位置,上電時(shí)默認(rèn)是在FF80H 處,但實(shí)際上很多情況下無法把中斷向量表加載到FF80 處,一般重定向到0080H,并在程序開頭重新設(shè)置一下IPTR的值。K_IPTR.set 7f80h;指向7f80H,默認(rèn)是FF80 LDM PMST,A AND #7FffH,A;保留低7位,清掉高位 OR #K_IPTR,A;STLM A,PMST 要注意的是這段代碼要用到累加器A,所以嵌入這段代碼的地方必須在用到累加器A 之前。 5、在testxf.pjt 文件中添加fangbo.asm、vector.asm、fangbo.cmd 文件,進(jìn)行編譯和鏈接,注意該項(xiàng)目是由匯編語言編寫的,應(yīng)該注意實(shí)驗(yàn)一的步驟9 的選項(xiàng)是否正確。 6、裝載fangbo.out 文件到DSP 芯片并運(yùn)行程序,觀測(cè)XF 的變化。也可以觀察CLKOUT管腳電平的變化。第四篇:DSP實(shí)驗(yàn)學(xué)習(xí)心得
第五篇:DSP實(shí)驗(yàn)教案