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