第一篇:DSP技術實驗指導書
一 基礎實驗:CCS 的使用與簡單應用程序的調試
1.1 實驗目的
1.熟悉 CCS 集成開發(fā)環(huán)境,掌握工程的生成方法; 2.熟悉 SEED-DEC5416 實驗環(huán)境; 3.掌握 CCS 集成開發(fā)環(huán)境的調試方法; 1.2 實驗內容
1.DSP源文件的建立; 2.DSP程序工程文件的建立;
3.學習使用CCS集成開發(fā)工具的調試工具; 1.3 實驗知識背景 1.3.1 CCS 簡介
1.CCS 提供了配置、建立、調試、跟蹤和分析程序的工具,它便于實時、嵌入式信號處理程序的編制和測試,它能夠加速開發(fā)進程,提高工作效率。CCS提供了基本的代碼生成工具,它們具有一系列的調試、分析能力。CCS 支持如下所示的開發(fā)周期的所有階段 1.3.1 CCS 簡介
1.CCS 提供了配置、建立、調試、跟蹤和分析程序的工具,它便于實時、嵌入式信號處理程序的編制和測試,它能夠加速開發(fā)進程,提高工作效率。CCS提供了基本的代碼生成工具,它們具有一系列的調試、分析能力。CCS 支持如下所示的開發(fā)周期的所有階段
湖南工學院教案用紙 p
2.CCS窗口介紹
1.3.2 CCS 常用文件介紹
使用CCS時,經常遇見下述擴展名文件:
1.project.mak:
CCS使用的工程文件
2.program.c:
C程序源文件
3.program.asm:
匯編程序源文件
4.filename.h:
C程序的頭文件,包含DSP/BIOS API模塊的頭文件
5.filename.lib:
庫文件
6.project.cmd:
連接命令文件
7.program.obj:
由源文件編譯或匯編而得的目標文件
8.program.out:
(經完整的編譯、匯編以及連接的)可執(zhí)行文件
9.project.wks:
存儲環(huán)境設置信息的工作區(qū)文件
保存配置文件時將產生下列文件:
1.programcfg.cmd:
連接器命令文件
2.programcfg.h54:
匯編頭文件
3.programcfg.s54:
匯編源文件
湖南工學院教案用紙 p
1.3.3 CCS 常用指令簡介
1.設置斷點。
將光標放置在需要設置斷點的程序行前,選擇 Debug→Breakpoints,即完成可一個斷點的設置。
2.CCS 提供 3 種方法復位目標板
1)Reset DSP:
Debug →Reset D,初始化所有的寄存器內容并暫停運行中的程序。使用此命令后,要重新裝載.out 文 件后,在執(zhí)行程序。
2)Restart:
Debug → Restart,將 PC 值恢復到當前載入程序的入口地址。
3)Go main:
Debug →Go main,將程序運行到主程序的入口處暫停。
3.CCS 提供 4 種執(zhí)行操作
1)執(zhí)行執(zhí)行:
Debug →Run,程序運行直到遇到斷點為止。
2)暫停執(zhí)行:
Debug →Halt,程序停止運行。
3)動畫執(zhí)行:
Debug →Animate,用戶反復運行程序,直到遇到斷點為止。
4)自由執(zhí)行:
Debug →Run Free,禁止所有斷點運行程序。
4.CCS 提供 4 種單步執(zhí)行操作
1)單步進入:Debug →step into,快捷鍵 F8,當調試語句不是
基本的匯編指令時,此操作進入語句內部。
2)單步執(zhí)行:Debug → step Over,此命令將函數或子函數當作
一條語句執(zhí)行,不進入內部調試。
3)單步跳出:Debug →step Out,此命令作用為從子程序中跳出
4)執(zhí)行到光標處: Debug → Run to Cursor,快捷鍵 crtl+F10,此命令作用為將程序運行到光標處。
5.內存、寄存器與變量的操作
1)查看變量
使用 view →Watch Window 命令
2)查看寄存器
使用 view →Registers →CPU Registers 命令
3)查看內存
使用 view →memory 命令
湖南工學院教案用紙 p
6.Graph 的設置即圖形顯示
1)選擇View →Graph →Time/Frequency。
2)在彈出的Graph Property Dialog對話窗中,將 Graph Title,Start Address,Acquisition Buffer Size,Display Data Size,DSP Data Type等的屬性可改變?yōu)槿缦聢D所示(也可根據具體需要設置屬性)。向下滾動右側的滾動條或調整 dialog 框的大小可看到所有的屬性。1.4 實驗步驟
1).將 DSP 仿真器與計算機連接好;
2).將 DSP 仿真器的 JTAG 插頭與 SEED-DEC5416 單元的 J1 相連接;
3).啟動計算機,當計算機啟動后,打開 SEED-DTK_DBD 的電源。觀察SEED-DTK-IO1 單元的+5V,+3.3V,+15V,-15V 的電源指示燈,SEED_DEC5416 的 D2 以及 SEED-DSK2812 的 D2 是否均亮;若有不亮的,請斷開電源,檢查電源。4).雙擊圖標進入 CCS 環(huán)境。
下面按照原文件、工程文件以及編譯條件的設置來分別介紹一下 CCS 的使用。
1.4.1 創(chuàng)建源文件
1).打開 CCS 選擇 File →New →Source File 命令 2).編寫源代碼并保存
3).保存源程序名為 math.c,選擇 File →Save 4).創(chuàng)建其他源程序(如.cmd)可重復上述步驟。
1.4.2 創(chuàng)建工程文件
1.打開 CCS,點擊 Project-->New,創(chuàng)建一個新工程,其中工程名及路徑可任意指定 2.彈出如下對話框:
3.在 Project 中填入工程名,Location 中輸入工程路徑;其余按照默認選項,點擊完成即可完成工程創(chuàng)建。
4點擊 Project 選擇 add files to project,添加工程所需文件。
湖南工學院教案用紙 p
5.在彈出的對話框中的下拉菜單中分別選擇.c 點擊打開,即可添加源程序XXX.c 添加到工程中。
6.同樣的方法可以添加文件 XXX.cmd、XXX.lib 到工程中;在下面窗口中可以看到 XXX.c、XXX.cmd、XXX.lib 文件已經加到工程文件中。
7.以下操作可使您對工程中的文件進行打開、刪除、查看屬性等操作
1.4.3 設置編譯與連接選項 1. 點擊Project選擇Build Opitions 2. 在彈出的對話框中設置相應的編譯參數,一般情況下,按默認值就可以;
3. 在彈出的對話框中選擇連接的參數設置,設置輸出文件名,堆棧的大小以及初始化的方式。
1.4.4 工程編譯與調試
1. 點擊Project→Buildall,對工程進行編譯,如正確則生成out文件;
若是修改程序,可以使用 Project → Build 命令,進行編譯連接,它只對修改部分做編譯連接工作??晒?jié)省編譯與連接的時間。編譯通過,生成.out 文件。2. 點擊File→loadprogram,在彈出的對話框中載入debug 文件夾下 的.out 可執(zhí)行文件。3. 裝載完畢
4.點擊debug →Go Main回到C程序的入口
5. 打開 File →Workspace →Save Workspace 保存調試環(huán)境,以便下次調試時不需要重新進行設置。只要 File →Workspace →LoadWorkspace 即可恢復當前設置 1.5完成簡單應用程序的調試 1.6記錄實驗結果 1.7完成實驗報告:
二.設計實驗 按鍵中斷顯示實驗
3.1實驗目的
1.了解D SP外部中斷的使用,中斷服務程序的設計方法;2.掌握DSP中斷向量表的劃分。3.2實驗設備
計算機;
DSP硬件仿真器;
SZ-DSPF開發(fā)教學平臺。3.3實驗硬件設置
做實驗之前,需要接通該實驗所需的硬件電路,木實驗為:先將實驗箱上的電源開關“MS2“,”MS3 “和”MS4”按下,再將機箱右側的船型開關往“I”方向打開電源;SZ-5416的主控模塊上的J7,J9,J4,J16短接;在“設置模塊”中將“A”和“C”設置為“1”。然后開始做實驗,注意在做D SP實驗時一開始按了SZ-5416的主控模塊上的K1硬件復位后,程序運行中不要再按復位鍵,以免實驗由十D SP復位而失敗。3.4實驗原理及說明
本實驗采用鍵盤中斷,當有鍵按下時一給DSP一個中斷信號(INT2)DSP通過此I/O端口地址COOlh讀鍵值,在讀取鍵值后由數碼管顯T出來。硬件原理圖請參考“SZ-LK板”的說明,邏輯關系請參考第二章邏輯分析5416部分,數據流程請參考第五章中的數碼管和按鍵。中斷標志寄存器(IFR},中斷屏蔽寄存器(IMR} 3.5實驗步驟及結果
本實驗是一個測試鍵盤的實驗,運行程序依次按鍵1-8,數碼管依次顯T 7-0,中間鍵一一對應,任意按一鍵,其對應的數碼管顯不相應的數字。
步驟: 1.啟動CCS}編寫實驗程序代碼(可參考隨機光盤中的例程alldsp4h2keptest,進行編譯并加載到DSP中。
2.采用單步運行或執(zhí)行到光標處,或全速運行。觀察其結果。(具體請參考實驗一)
湖南工學院教案用紙 p
3.6實驗程序框圖
3.7完成實驗報告及實驗思考
1.分析下例指令的特點POPD, POPM, PSHD PUSHM?
2.分析中斷管理流程及中斷向量表的特點
湖南工學院教案用紙 p
三、定時器實驗
4.1 實驗目的
1.了解 DSP 匯編程序的構成; 2.了解 DSP 程序各段的含義;
3.熟悉在匯編條件下如何編寫中斷服務程序; 4.了解串行通訊的過程
5.掌握長時間間隔的定時器的處理。6.掌握片內外設的設置方法。
4.2 實驗內容
1.DSP 的初始設置;
2.DSP 中斷向量表的建立; 3.定時中斷的編寫;
4.查詢方式異步串口程序的編寫。
4.3 實驗要求
能夠掌據匯編語言的程序結構。正確進行異步串口的通訊與定時器的設置。能夠與系統(tǒng)正確通訊。通過 LCD 與鍵盤可以控制定時器的運行。
4.4 實驗程序功能與結構說明
湖南工學院教案用紙 p
4.5.實驗步驟
首先將光盤下 03.Examples of
Program 04.SEED_DTK-DBD 調試實驗程 序目錄下的 CCS-Timer 的文件夾拷貝到 D:盤根目錄下。
1.將 DSP 仿真器與計算機連接好;
2.將 DSP 仿真器的 JTAG 插頭與
SEED-DEC5416 單元的 J1 相連接;
3.啟動計算機,當計算機啟動后,打開 SEED-DTK_DBD 的電源。觀察
SEED-DTK-IO1 單元的+5V,+3.3V,+15V,-15V 的電源指示燈,SEED_DEC5416 的 D2 以及 SEED-DSK2812 的 D2 是否均亮;若有不亮的,請斷開電源,檢查電源。
4.打開 CCS,進入 CCS 的操作環(huán)境。5.裝入 timer.pjt 工程文件,添加 dtk-boot.gel 文件。
6.裝載程序 timer.out,進行調試。
7.在程序的第 101 行“i=i+1;”處設置斷點。
8.運行程序,程序會停在斷點處,表明已進入定時器中斷。繼續(xù)運行程序,程序每次都會停在斷點處。實驗者可根據自己的需要改變周期寄存器的
值,從而控制每次進中斷的時間。
4.6 思考題
理解 DSP 程序的編寫過程,如何編寫中斷程序? 四. 綜合性實驗
FIR濾波器的設計
8.1實驗目的
1.了解F工R濾波器的原理及使用方法;
2.了解使用Matlab語言設計F工RR濾波器的方法;3.了解DSP對F工R濾波器的設計及編程方法;4.熟悉對F工R濾波器的調試方法;8.2實驗內容
本試驗要求設計濾波器采樣頻率為1000hz,截n頻率300hz的低通濾波器。設計F工R濾波器實現(xiàn)上面要求。輸入信號頻率合成信號,目的是通過我們設計的濾波器將高頻信號濾掉,余下低頻的信號成分,達到濾波的效果。8.3實驗原理
一個線性位移不變系統(tǒng)的輸出序列Y(}>和輸入序列X(}>之間的關系,應滿足常系數線性差分方程:
湖南工學院教案用紙 p FIR濾波器的單位沖激響應h(n)為有限長序列。若h(n)為實數,且滿足偶對稱或奇對稱的條件,則FIR濾波器具有線性相位特性。
N—偶數
在數字濾波器中,F(xiàn)IR濾波器具有如下幾個主要特點: ①FIR濾波器無反饋回路,是一種無條件穩(wěn)定系統(tǒng);②FIR濾波器可以設計成具有線性相位特性。
本實驗程序設計的就是一種偶對稱的線性相位濾波器。程序算法實現(xiàn)采用循環(huán)緩沖區(qū)法。
算法原理: ①在數據存儲器中開辟一個N個單元的緩沖區(qū)(滑窗),用來存放最新的N個輸入樣本;②從最新樣本開始取數;③讀完最老樣本后,輸入最新樣本來代替最老樣本,而其他數據位置不變;④用BK寄存器對緩沖區(qū)進行間接尋址,使緩沖區(qū)地址首尾相鄰。
8.4程序設計
1.濾波器的Matlab 編寫matlab程序,語言設計生成F工R濾波器系數后,附到DSP匯編語言程序中。主程序如
f=[0 0.6 0.6 1];m=[1 1 0 0] b=firls(36, f, m)freqz(b, 1, 512)b二b*2^ 15 2.輸入信號程序,文件名為firinput.3.DSP匯編語言程序設計。匯編源文件fir.asm,中斷向量表vectoes.asm和鏈接命令文件fir.cmd組成。
8.5實驗步驟
1.打開ccs,新建立一上程文件fir.Pjt.2.將匯編源文件fir.asm、中斷向量表vectors.asm和鏈接命令文件fir.cmd添加到fir.pjt中。
3.在project菜單下選擇build options選項,選取Linker選項,調整為
-q-c –m,.Debugf ir.Map,-o,.Debugf ir.out“-w一x。點擊編譯,鏈接圖標,通過后生成fir.out文件和f irr.map文件,其余選項.丁默認。
湖南工學院教案用紙 p 4.在file菜單下,選擇load program選項,將生成的fir.out文件裝載 到DSP中。
5.運行程序,在view菜單下選擇watch window選項來觀測變量值。依次輸入input和output來觀測輸入輸出變量值,這兩個變量分別為濾波前的輸入數據和濾波后輸出數據的首地址。
6.在view菜單下選擇graph/time frequence,彈出如下對話框。按照要求,設置好相應的參數,來觀測輸入和輸出數據的波形。7.具體調試執(zhí)行程序時,使用斷點,單步執(zhí)行等方式。} v }r.}.}xm }-}o'r nmsuwr,}rv;yxirxn}
8.6記錄實驗結果
8.7完成實驗報告及思考題
1.為什么要對matlab程序生成的系數進行調整,即將浮點數轉換成整數? 2.試改變輸入的信號(保證一個頻率在通帶范圍內,一個在通帶范圍外),進行相應的數據調整,然后在CCS底下觀測看輸入數據波形。
3.進行濾波器系數的調整再進行相應濾波,然后在CCS底下看輸出數據波形情況有何變化。
第二篇:dsp實驗指導書尉
電氣工程學院
《DSP技術及應用》
實驗指導書
尉學軍編寫
適用專業(yè):電子信息工程
貴州大學 二OO 八年八月
前言
《數字信號處理》實驗是理論教學的深化和補充,具有較強的實踐性,是一門重要的專業(yè)必修課,可作為通信類、電子類專業(yè)學生的選修課。所開設的實驗以具體實例為實驗內容,讓學生深刻理解DSP芯片的特點,培養(yǎng)學生應用DSP設計解決實際問題的能力。通過上機與實驗,理解實驗原理及實驗方案,掌握正確的操作規(guī)程,掌握5410USB EVM實驗箱的正確使用方法。掌握CCS軟件的使用,熟練掌握DSP的匯編語言的編寫和程序調試,掌握DSP的中斷技術和定時器的初始化方法以及應用,以及利用串口進行數據采集。并要求學生利用北京聞亭5410USB EVM實驗箱進行數字式信號發(fā)生器和濾波器的設計。
作者在此設計了11個實驗,其中4個驗證性實驗,6個設計性實驗,1個綜合性實驗。在開設實驗過程中,可以根據大綱選作部分實驗。
目錄
1、實驗一:CCS的安裝與simulate的使用?????????????????????????????????????????????????????3
2、實驗二:匯編語言基本算術運算????????????????????????????????????????????????????????????????7
3、實驗三:程序的控制和轉移??????????????????????????????????????????????????????????????????????10
4、實驗四:數字式正弦信號發(fā)生器???????????????????????????????????????????????????????????????14
5、實驗五:FIR數字濾波器 ?????????????????????????????????????????????????????????????????????????21
6、實驗六:IIR數字濾波器 ?????????????????????????????????????????????????????????????????????????27
7、實驗七: 圖象的伽瑪增強?????????????????????????????????????????????????????????????? ??????????35
8、實驗八: 快速傅立葉變換(FFT)的實現(xiàn)??????????????????????????????????????????????????????42
9、實驗九: 控制XF引腳周期性變化?????????????????????????????????????????????????????????????49
10、實驗十: 多通道緩沖串口的使用?????????????????????????????????????????????????????????????54
11、實驗十一: DTMF算法設計和DSP實現(xiàn)?????????????????????????????????????????????????????62
12、實驗報告基本內容要求????????????????????????????????????????????????????????????????????????66
13、實驗報告格式??????????????????????????????????????????????????????????????????????????????????????????68
14、參考文獻?????????????????????????????????????????????????????????????????????????????????????????????????70
實驗一: CCS的安裝與simulate的使用
實驗學時:2 實驗類型:驗證 實驗要求:必修
一、實驗目的
學會CCS的安裝和設置, 熟悉程序的開發(fā)流程, 初步掌握Simulator的使用方法.二、實驗內容
安裝CCS軟件,并利用CCSsetup進行設置 對一個簡單程序進行調試
三、實驗原理、方法和手段
利用軟件對指令進行仿真分析。
四、實驗組織運行要求
根據本實驗的特點、要求和具體條件,采用教師簡單講解,學生自己動手操作的形式。
五、實驗條件
計算機一臺
六、實驗步驟
1、CCSset 的設置
CCS設置程序是用于建立CCS集成開發(fā)環(huán)境與目標板或simulator之間通信的接口.CCS是一個開放的環(huán)境,通過設置不同的驅動完成對不同環(huán)境的支持.本教案以CCS2.0為例說明CCS下的驅動設置方法.假設安裝路徑為: d:ti下,對CCS的 設置如下:
(1)雙擊桌面上的”setup ccs 2(c5000)”,開始運行程序,回出現(xiàn)如圖1-1所示的界面;3
圖1-1 CCS的首界面(2)單擊”CLOSE”按紐關閉對話框.(3)在“Available Board/Simulator Types”欄選擇 “54xx simulator”在“Board Propertis”對話框中點擊按紐“next”,一直到“Finish”如圖1-2所示。
圖1-2 選擇仿真板界面
此處對要仿真的方式進行選擇,是進行軟件仿真(Simulator)還是硬件仿真(Eimulator),并可以選擇要仿真的板子的型號,在此我們選擇軟件仿真.用的是C54xx Simulator.(4)在菜單File中選擇”Start Code Composer Studio”,啟動CCS 5000.設置完畢
2、一個簡單DSP程序的調試
(1)創(chuàng)建工程
運行CCS 5000(54XX Simulaor/CPU)
在Project菜單中選擇New項,將彈出Project Creation的窗口
圖 1-3 創(chuàng)建工程界面
將新建的工程存入E盤,CCS將建立一個名為*.pjt的工程,此文件保存了工程的設置信息及工程中的文件引用情況.(2)將文件添加到工程
從Files->new菜單中選擇Source File,輸入源程序.這里請大家輸入以下的源程序.將程序存為*.asm的程序.title “wx1.asm”.mmregs STACK.usect “STACK”,10H.bss a,4.bss x,4.bss y,1.def start.data table:.word 1,2,3,4.word 8,6,4,2.text start: STM #0,SWWSR STM #STACK+10H,SP STM #a,AR1 RPT #7 MVPD table,*AR1+ LD #1,DP CALL SUM end: B end SUM: STM #a,AR3 STM #x,AR4 RPTZ A,#3 MAC *AR3+,*AR4+,A STL A,@y 5
RET.end 從Project菜單中選取 Add Files to Project,將剛才編寫的程序添加到本工程.雙擊的Source右邊的”+”,可以觀察到剛才所添加的源文件.(3)生成和運行程序
執(zhí)行菜單Project->Rebuild All,對文件進行編譯,匯編,鏈接,Output窗口將顯示編譯,匯編,鏈接的信息,錯誤提示等.最后生成*.out文件.編譯通過時會出現(xiàn)兩個警告.圖1-4 Output窗口
執(zhí)行菜單Project->Load Program,將剛才所生成的*.out文件加載到DSP中,CCS將會自動打開一個反匯編窗口,顯示加載程序的反匯編指令.(4)觀察程序結果:
分別點擊菜單Viex->Memory和Registers可以觀察程序執(zhí)行后存儲器的變化,程序執(zhí)行的結果以及寄存器值的變化情況
七、思考題
1.按照實驗要求寫出實驗報告;將程序顯示的結果粘貼到實驗報告里面.2.程序調試過程中,出現(xiàn)什么錯誤,什么原因造成的,怎樣改正的?
3.熟悉CCS其他菜單的功能,如何設置斷點進行程序調試?
八、實驗報告
在實驗分析過程中,要對寄存器的變化以及存貯器的分配有仔細的分析,實驗報告要將程序結果,存儲器和寄存器的結果抓下來。
九、其它說明
1. 學生實驗時,應嚴格準守實驗室規(guī)則、安全制度和學生實驗守則;
2. 認真學習實驗操作技能,嚴格按指導書和實驗指導教師的指導操作有關規(guī)儀器設備,不要做與本實驗無關的事情;
3. 做好實驗預習、實驗記錄,并按要求按時完成實驗報告。
實驗二:匯編語言基本算術運算
實驗學時:2 實驗類型:驗證 實驗要求:必修
一、實驗目的
進一步熟悉CCS進行程序編譯,調試的步驟.掌握進行算術運算的常用指令,以及偽指令的作用.掌握匯編語言進行整數運算,小數運算以及雙操作數運算.浮點運算的方法.注意雙操作數運算所允許使用的輔助寄存器.二、實驗內容
加減法和乘法運算 小數運算
三、實驗原理、方法和手段
利用軟件對指令進行仿真分析。
四、實驗組織運行要求
根據本實驗的特點、要求和具體條件,采用教師簡單講解,學生自己動手操作的形式。
五、實驗條件
計算機一臺
六、實驗步驟
1、計算 z=x+y-w
.tiltle “example.asm”.mmregs STACK.usect “stack”,10H
.bss x,1.bss y,1.bss w,1.bss z,1.def start.data table:.word 10,26,23.text Start: STM #0,SWWSR STM #STACK+10H,SP STM #x,AR1 RPT #2 MVPD table,*AR1+ CALL SUMB end: B end SUMB: LD @x,A ADD @y,A SUB @w,A LD #1,DP STL A,@z RET.end
2、乘加運算
.tiltle “example.asm”.mmregs STACK.usect “stack”,10H
.bss a,4.bss x,4.bss y,1.def start.data table.word 1,2,3,4.word 8,6,4,2
.text start: STM #0,SWWSR STM #STACK+10H,SP STM #x,AR1 RPT #7 MVPD table,*AR1+ CALL SUM end: B end SUM: STM #a,AR3 STM #x,AR4 RPTZ A,#3 MAC *AR3+,*AR4+,A STL A,@Y RET.end
3、小數運算
.tiltle “example.asm”.mmregs STACK.usect “stack”,10H.bss a,4.bss x,4
.bss y,1.def start.data table.word 1*32768/10.word 2*32768/10.word-3*32768/10.word 4*32768/10.word 8*32768/10.word 6*32768/10.word-4*32768/10.word-2*32768/10 start: SSBX FRCT STM #a,AR1 RPT #7 MVPD table,*AR1+ STM #a,AR3 STM #x,AR4 RPTZ A,#3 MAC *AR3+,*AR4+,A STL A,@Y end: B end.end 觀察程序結果: 分別點擊菜單Viex->Memory和Registers可以觀察程序執(zhí)行后存儲器的變化,程序執(zhí)行的結果以及寄存器值的變化情況.七、思考題
1.按照實驗要求寫出實驗報告;將程序顯示的結果粘貼到實驗報告里面.2.程序調試過程中,出現(xiàn)什么錯誤,什么原因造成的,怎樣改正的? 3.在小數運算的過程中,小數大于1,比如a2=1.2,程序如何修改.八、實驗報告
要求學生按本實驗指導書后附的實驗報告格式和要求的內容寫出實驗報告,實驗報告應包括實驗預習、實驗記錄和實驗報告等三部分內容。
九、其它說明
1. 學生實驗時,應嚴格準守實驗室規(guī)則、安全制度和學生實驗守則;
2. 認真學習實驗操作技能,嚴格按指導書和實驗指導教師的指導操作有關規(guī)儀器設備,不要做與本實驗無關的事情;
3. 做好實驗預習、實驗記錄,并按要求按時完成實驗報告。
實驗三:程序的控制和轉移
實驗學時:2 實驗類型:驗證 實驗要求:必修
一、實驗目的
了解堆棧的使用方法,掌握指令的重復操作,程序的跳轉,調用和返回.掌握條件算符組合時候應注意的三點;掌握*.cmd文件,特別是偽指令MEMORY,SECTION的作用.二、實驗內容
程序的轉移和調用,重復執(zhí)行,堆棧的使用
三、實驗原理、方法和手段
利用軟件對指令進行仿真分析。
四、實驗組織運行要求
根據本實驗的特點、要求和具體條件,采用集中講解和學生動手的形式。
五、實驗條件
安裝CCS 的電腦一臺
六、實驗步驟
程序調試步驟參考實驗一
1、程序的轉移和調用.title “example.asm”.mmregs STACK.usect “stack”,10H;.bss x,5.bss y,1.def start.data table:.word 10,30,4,5,6.text start: STM #0,SWWSR STM #STACK+10H,SP;SP= STM #x,AR1;AR1= RPT #4 MVPD table,*AR1+;AR1=
LD #0,A CALL SUM end: B end SUM: STM #x, AR3 STM #4,AR2 loop: ADD *AR3+,A BANZ loop,*AR2-STL A,@y;AR2= , AR3= ,A= RET.end 將以上文件存為*.ASM格式.以下是*.CMD文件: *.obj;注意:此處文件名要與上面的*.ASM文件的名字要一致.-o *.out-m *.map-e start MEMORY { PAGE 0: EPROM: org=0E000H len=0100H VECS : org=0FF80H len=0004H PAGE 1: SPRAM: org=0060H len=0020H DARAM: org=0080H len=0100H } SECTIONS {.text :>EPROM PAGE 0.data :>EMROM PAGE 0
.bss :>SPRAM PAGE 1 STACK :>DARAM PAGE 1.vectors :>VECS PAGE 0 } 2)堆棧段的初始化
.title “wxample3.asm”.mmregs size.set 100 stack.usect “STK”,10H.bss length,10H.def start.text start: STM #0,SWWSR STM #stack+size,SP 11
LD #-8531,A STM #length,AR1 MVMM SP,AR7 loop: STL A,*AR7-BANZ loop,*AR1-.end CMD文件 example.obj-o example.out-m example.map-e start MEMORY { PAGE 0: EPROM :ORG=0E000H,LEN=0100h VECS: ORG=0FF80H,LEN=0004H PAGE 1: SARAM: ORG=0060H,LEN=0010H;DARAM: ORG=0070H,LEN=0100H } SECTIONS {.text :>EPROM PAGE 0.data :>EPROM PAGE 0.bss :>SARAM PAGE 1.STACK :>DARAM PAGE 1 }
3、重復操作
下面程序實現(xiàn)對數組進行初始化以后再對每個元素加1.title “example.asm”
.mmregs stack.usect “STACK”,10H.bss x,5.def start.text start: STM #x,AR1 LD #2,A;將每個數組初始化為2 RPT #4 STL A,*AR1+ LD #1,16,A STM #4,BRC STM #X,AR4 PRTB next-1 12
ADD *AR4,16,B,A STH A,*AR4+ next: LD #0,B end: B end.end
七、思考題
1. 按照實驗要求寫出實驗報告;將程序顯示的結果粘貼到實驗報告里面.2. 程序調試過程中,出現(xiàn)什么錯誤,什么原因造成的,怎樣改正的? 3. 簡要寫出*.cmd文件,特別是偽指令MEMORY,SECTION的作用 4. 試將程序1的運行結果填寫的相應的橫線上。
八、實驗報告
要求學生按本實驗指導書后附的實驗報告格式和要求的內容寫出實驗報告,實驗報告應包括實驗預習、實驗記錄和實驗報告等三部分內容。
九、其它說明
1. 學生實驗時,應嚴格準守實驗室規(guī)則、安全制度和學生實驗守則;
2. 認真學習實驗操作技能,嚴格按指導書和實驗指導教師的指導操作有關規(guī)儀器設備,不要做與本實驗無關的事情;
3. 做好實驗預習、實驗記錄,并按要求按時完成實驗報告。
實驗四:數字式正弦信號發(fā)生器
實驗學時:2 實驗類型:設計型 實驗要求:必修
一、實驗目的
掌握正弦信號發(fā)生器的算法;學會用斷點進行程序調試.二、實驗內容
利用DSP設計一個正弦信號發(fā)生器
三、實驗原理、方法和手段
在高等數學中,正弦函數和余弦函數可以展開為泰勒級數,其表達式為: x3x5x7 sinx=x-+-+? 3!5!7!x2x4x6 cosx=1-+-+? 2!4!6!如果要計算一個角度的正弦和余弦,可以取泰勒級數的前5項進行近似計算.上兩個式子可以化為: x2x2x2x2 sinx=x(1-(1-(1-(1-))))2*34*56*78*9x2x2x2x2 cosx=1-(1-(1-(1-)))23*45*67*8 然后利用這兩個式子,計算出0
o___
45(間隔為0.5)的正弦和余弦值.o___
oo 再利用sin2x=2sinxcos公式,計算0 最后通過復制取反,獲得0
o___
o
90的正弦值.o
359的正弦值.四、實驗組織運行要求
根據本實驗的特點、要求和具體條件,采用集中講授和學生動手的形式。
五、實驗條件
安裝CCS軟件的電腦一臺
六、實驗步驟
程序調試步驟參考實驗一
1、源程序
.mmregs.def start.ref d_xs,d_sinx,d_xc,d_cosx,sinx,cosx sin_x:.usect “sin_x”,360 STACK.usect “STACK”,10H PA0.set 0 k_theta.set 286 start:.text STM #STACK+10H,SP STM k_theta,AR0 STM 0,AR1 STM #sin_x,AR6 STM #90,BRC RPTB loop1-1 LDM AR1,A LD #d_xs,DP STL A,@d_xc STL A,@d_xs CALL sinx CALL cosx LD #d_sinx,DP LD @d_sinx,16,A MPYA @d_cosx STH B,1,*AR6+ MAR *AR1+0 ;計算0—45度的正弦值 loop1: STM #sin_x+89,AR7 STM #88,BRC RPTB loop2-1 LD *AR7-,A STL A,*AR6+ ;計算45-89度的正弦值 loop2: STM #179,BRC STM #sin_x,AR7 RPTB loop3-1 LD *AR7+,A NEG A STL A,*AR6+ ;計算90-179度的正弦值 loop3: STM #sin_x,AR6 STM #1,AR0 STM #360,BK ;計算180-359度的正弦值
loop4: PORTW *AR6+0%,PA0 B loop4
sinx: sinx子程序.def d_xs,d_sinx.data table_s.word 01C7H.word 030BH.word 0666H.word 1556H d_coef_s.usect “coef_s”,4 d_xs.usect “sin_vars”,1 d_square_xs.usect “sin_vars”,1 d_temp_s.usect “sin_vars”,1 d_sinx.usect “sin_vars”,1 d_l_s.usect “sin_vars”,1.text SSBX FRCT STM d_coef_s,AR5 RPT #3 MVPD #table_s,*AR5+ STM #d_coef_s,AR3 STM #d_xs,AR2 STM #d_l_s,AR4 STM #7FFFH,d_l_s SQUR *AR2+,A ST A,*AR2 ||LD *AR4,B MASR *AR2+,*AR3+,B,A MPYA A STH A,*AR2 MASR *AR2-,*AR3+,B,A MPYA *AR2+ ST B,*AR2 || LD *AR4,B MASR *AR2-,*AR3+,B,A MPYA *AR2+ ST B,*AR2 ||LD *AR4,B MASR *AR2-,*AR3+,B,A MPYA d_xs STH B,d_sinx RET
cosx: ; cosx子程序.def d_xc,d_cosx.data table_c.word 0249H.word 0444H.word 0aabH.word 4000H d_coef_c.usect “coef_c”,4 d_xc.usect “cos_vars”,1 d_square_xc.usect “cos_vars”,1 d_temp_c.usect “cos_vars”,1 d_cosx.usect “cos_vars”,1 c_l_c.usect “cos_vars”,1.text SSBX FRCT STM d_coef_c,AR5 RPT #3 MVPD #table_c,*AR5+ STM #d_coef_c,AR3 STM #d_xc,AR2 STM #c_l_c,AR4 STM #7FFFH,c_l_c SQUR *AR2+,A ST A,*AR2 ||LD *AR4,B MASR *AR2+,*AR3+,B,A MPYA A STH A,*AR2 MASR *AR2-,*AR3+,B,A MPYA *AR2+ ST B,*AR2 || LD *AR4,B MASR *AR2-,*AR3+,B,A SFTA A,-1,A NEG A MPYA *AR2+ MAR *AR2+ RETD ADD *AR4,16,B STH B,*AR2 RET.end *.CMD 文件 sinx.obj 17
-o sin.out-m sin.map-e start MEMORY { PAGE 0: EPROM: org=0E000H,len=1000H VECS: org=0FF80H,len=0080H PAGE 1: SPRAM: org=0060H,len=0020H DARAM1: org=0080H,len=0010H DARAM2: org=0090H,len=0010H DARAM3: org=0200H,len=0200H }
SECTIONS {.text :>EPROM PAGE 0.data :>EPROM PAGE 0 STACK :>SPRAM PAGE 1 sin_vars :>DARAM1 PAGE 1 coef_s :>DARAM1 PAGE 1 cos_vars :>DARAM2 PAGE 1 coef_c :>DARAM2 PAGE 1 sin_x : align(512){}>DARAM3 PAGE 1 }
2、程序調試過程中,可以采用利用斷點進行調試,方法如下: 1)利用斷點對話框進行設置.2)使用工具條上的按紐進行設置, 利用工具條上的按紐,可以快速設置斷點: 在反匯編窗口中,將光標移到需要設置斷點的語句行上,然后單擊工具條上的設置斷點按紐(有一個手),則在該語句行上設置一個斷點.3)在反匯編窗口直接進行設置.在反匯編窗口,用鼠標直接雙擊要設置的斷點的指令行,即可完成斷點的設置.執(zhí)行的時候可以選擇動畫運行.在執(zhí)行前先設置好斷點,然后,沒執(zhí)行一次操作命令,就會從當前位置執(zhí)行到下一個斷點處.連續(xù)執(zhí)行操作命令就可以實現(xiàn)動畫操作.使用調試菜單”DEBUG”中的”Animate”命令,或者單擊調試工具條上的動畫執(zhí)行按 18
紐,用戶就可以進行動畫操作.3、觀察波形
觀察存儲器和寄存器的內容在實驗一中進行了介紹.在此不做贅述了.現(xiàn)在介紹CCS圖形工具的使用方法.CCS開發(fā)環(huán)境提供了多種強大的圖形顯示工具,可以將內存中的數據以各種圖形的方式顯示給用戶,幫助擁護直觀的了解數據的意義.CCS提供了四大類九種圖形顯示方式: 1)時頻圖(Time_frequency)單曲線圖(Single_time)對數據不做處理,直接繪制顯示緩沖區(qū)數據的幅度_時間曲線
雙曲線圖(Double_time)在一個圖象中顯示兩條信號的幅度_時間曲線 FFT幅度(FFT Magnitude)對顯示緩沖器數據進行FFT變換,顯示幅度_頻率圖
復數FFT(Complex FFT)對復數數據的實部和虛部分別進行FFT變換,在一幅圖中顯示兩條幅度_頻率曲線.FFT幅度和相位(FFT Magnitude and Phase)在一幅圖中顯示幅度_頻率曲線和相位_頻率曲線.FFT多楨顯示(略)2)星座圖(Constellation)顯示信號的相位分布 3)眼圖(Eye Diagram)顯示信號碼間的干擾情況 4)圖像顯示(Image)顯示YUV和RGB圖像
圖形顯示步驟: 在”View”菜單中,選擇”Graph”選項,彈出命令子菜單, 在該菜單中選擇”Time/Frequency”,在彈出的對話框中,將”Display Type”選擇為”Single_time”,”Start Addtress”定為”0200H”, 將”PAGE”定為”data”
“Display Data Size”定為”0200H”
點擊”O(jiān)K”來觀察圖象.19
圖4-1 產生的正弦波形
七、思考題
按照實驗要求寫出實驗報告;將程序顯示的結果粘貼到實驗報告里面.如何設置斷點進行程序調試? 要產生周期性的三角波,或者鋸齒波,程序如何實現(xiàn)?
八、實驗報告
要求學生按本實驗指導書后附的實驗報告格式和要求的內容寫出實驗報告,實驗報告應包括實驗預習、實驗記錄和實驗報告等三部分內容。
九、其它說明
1. 學生實驗時,應嚴格準守實驗室規(guī)則、安全制度和學生實驗守則;
2. 認真學習實驗操作技能,嚴格按指導書和實驗指導教師的指導操作有關規(guī)儀器設備,不要做與本實驗無關的事情;
3. 做好實驗預習、實驗記錄,并按要求按時完成實驗報告。
實驗五:FIR數字濾波器
實驗學時:2 實驗類型:設計
實驗要求:選修
一、實驗目的
了解FIR的MATLAB設計方法
掌握FIR的DSP實現(xiàn)方法,熟練掌握循環(huán)尋址指令.二、實驗內容
設計一個31階的低通FIR濾波器,其截止頻率為0.6。
三、實驗原理、方法和手段
FIR濾波器的差分方程: N?1(5-1)i?0 其中bi為濾波器的系數,N為濾波器的階次,x(n)為輸入,y(n)為輸出.FIR濾波器的MATLAB設計
MATLAB中的工具箱(Toolbox)包含了許多實用程序。它提供了多種FIR濾波器設計方法。
下面以標準頻率響應設計法fir1和任意頻率響應設計法fir2為例說明其使用方法
1、fir1函數
使用fir1函數可設計標準的低通、高通、帶通和帶阻濾波器。
語法: b=fir1(n,Wn)b=fir1(n,Wn,?ftype?)b=fir1(n,Wn,Window)b=fir1(n,Wn,?ftype?,Window)其中n為 濾波器的階次,Wn為截止頻率,ftype為濾波器的類型,window為采用的窗函數的類型,默認為H amming類型.1)采用漢明窗設計低通FIR濾波器
使用b=fir1(n,Wn)可得到低通濾波。0? Wn ?1, Wn=1相當于0.5fs。
格式:
b=fir1(n,Wn)(2)采用漢明窗設計高通FIR濾波器 y(n)??bix(n?i)
在b=fir1(n,Wn,?ftype?)中,當ftype=high時,可設計高通濾波器。
格式:
b=fir1(n,Wn,?high?)(3)采用漢明窗設計帶通FIR濾波器
在b=fir1(n,Wn)中,當Wn=[ W1 W2 ]時,可得到帶通濾波器,其通帶為W1 格式: b=fir1(n,[ W1 W2 ])(4)采用漢明窗設計帶阻FIR濾波器 在b=fir1(n,Wn,?ftype?)中,當ftype= stop,Wn=[ W1 W2 ]時,fir1函數可得到帶阻濾波器。格式: b=fir1(n,[ W1 W2 ],?stop?)【例1】 采用Hamming窗設計一個48階FIR帶通濾波器,通帶為0.35 < w < 0.65。采用fir1函數的程序格式: b=fir1(48,[ 0.35 0.65 ]); freqz(b,1,512)【例2】設計一個FIR高通濾波器,使其具有30dB波紋的Chebyshev窗,其階數為34,截止頻率為0.48。 解:采用fir1函數設計高通濾波器的程序格式為 Window = chebwin(35,30); b=fir1(34,0.48,?high?,Window); freqz(b,1,512)注意:用fir1函數設計高通和帶阻濾波器時,所使用的階數n應為偶數,當輸入的階數n為奇數時,fir1函數會自動將階數增加1形成偶數。2.fir2函數 用來設計有任意頻率響應的各種加窗FIR濾波器。語法: b=fir2(n,f,m) b=fir2(n,f,m,Window)b=fir2(n,f,m,npt) b=fir2(n,f,m,npt,Window)b=fir2(n,f,m,npt,lap) b=fir2(n,f,m,nptt,lap,Window)說明: 參數n為濾波器的階數; 參數f為頻率點矢量,且f?[0,1],f=1對應于0.5fs。矢量f按升序排列,且第一個元素必須為0,最后一個必須為1,并可以包含重復的頻率點; 參數m為幅度點矢量,在矢量m中包含了與f相對應的期望得到濾波器幅度; 參數Window用來指定所使用的窗函數類型,其默認值為漢明(Hamming)窗; 參數npt用來指定fir2函數對頻率響應進行內插的點數; 參數lap用來指定fir2函數在重復頻率點附近插入的區(qū)域大小。 【例3】 設計一個31階的低通FIR濾波器,其截止頻率為0.6。 解:采用fir2函數的程序格式: 在MATLAB 的命令窗口輸入一下指令 f = [ 0 0.6 0.6 1 ]; m = [ 1 1 0 0 ]; b=fir2(29,f,m) 會得到下面的結果: b = Columns 1 through 10 0.0000 0.0017-0.0016-0.0023 0.0059-0.0001-0.0127 0.0112 0.0151-0.0337 Columns 11 through 20 0.0003 0.0634-0.0569-0.0893 0.2996 0.5996 0.2996-0.0893-0.0569 0.0634 Columns 21 through 30 0.0003-0.0337 0.0151 0.0112-0.0127-0.0001 0.0059-0.0023-0.0016 0.0017 Column 31 0.0000 四、實驗組織運行要求 教師簡單講解,學生調試程序,教師輔導 五、實驗條件 安裝NATLAB和CCS的電腦一臺 六、實驗步驟 實驗步驟同實驗一: 請大家輸入以下程序: .title “fir.asm”.mmregs.def start h.usect “h”,31 y.usect “y”,1 xn.usect “xn”,31 x1.usect “x1”,1 PA2.set 2 PA1.set 1.data table:.word 0*32768/10000, 17 *32768/10000.word-16*32768/10000,-23*32768/10000.word 59*32768/10000 ,-1*32768/10000.word-127*32768/10000,112*32768/10000.word 151*32768/10000,-337*32768/10000.word 3*32768/10000 ,634*32768/10000.word-569*32768/10000,-893*32768/10000.word 2996*32768/10000 , 5996*32768/10000.word 2996*32768/10000 ,-893*32768/10000.word-569*32768/10000 , 634*32768/10000.word 3*32768/10000,-337*32768/10000.word 151*32768/10000, 112*32768/10000.word-127*32768/10000,-1*32768/10000.word 59*32768/10000 ,-23*32768/10000.word-16*32768/10000, 17*32768/10000.text start: SSBX FRCT STM #h,AR1;RPT #30 MVPD #table,*AR1+ STM #xn,AR2 RPTZ A,#30 STL A,*AR2+ STM #xn+30,AR3 STM #h+30,AR4 STM #31,BK STM-1,AR0 LD #x1,DP PORTR PA1,@x1 LD @x1,A LD #xn,DP STL A,@xn FIR: RPTZ A,#30 MAC *AR3+0%,*AR4+0%,A STH A,@y PORTW @y,PA2 PORTR PA1,@x1 LD @x1,A 24 STL A,*AR3+0% B FIR.end 假如已經從端口PA1讀到的數據,放在IN.dat文件中,經過濾波后,從端口輸出的數據放在OUT.dat中.IN.dat文件中的內容如下: 1651 1 bf 0 0 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 其余略 OUT.dat文件為空白.首先將生成的*.out 文件加載入系統(tǒng)中,在反匯編窗口,設置探測點,如下: 圖5-1 輸入數據加載斷點設置 然后在FILE菜單中選擇出數據、加載到輸入、輸出斷口。 最后觀察濾波前后的頻譜圖分別如下: 功能,會彈出如下對話框,可以分別將輸入數據輸 25 七、思考題 試用此參數設計一個高通濾波器,并用DSP實現(xiàn)。 八、實驗報告 要求學生按本實驗指導書后附的實驗報告格式和要求的內容寫出實驗報告,實驗報告應包括實驗預習、實驗記錄和實驗報告等三部分內容。 九、其它說明 1. 學生實驗時,應嚴格準守實驗室規(guī)則、安全制度和學生實驗守則; 2. 認真學習實驗操作技能,嚴格按指導書和實驗指導教師的指導操作有關規(guī)儀器設備,不要做與本實驗無關的事情; 3. 做好實驗預習、實驗記錄,并按要求按時完成實驗報告。 實驗六:IIR數字濾波器 實驗學時:2 實驗類型:設計 實驗要求:選修 一、實驗目的 了解IIR濾波器的原理及使用方法 了解使用MATLAB語言設計IIT濾波器的方法 掌握DSP對IIR對濾波器的設計及編程方法 熟悉在CCS環(huán)境下對IIR濾波器的調試方法 二、實驗內容 要求設計一個采樣頻率為1200Hz,截止頻率為200Hz的高通濾波器.輸入信號頻率為100Hz和300Hz的合成信號,目的是同過所設計的濾波器的將100Hz的信號濾除掉,余下300Hz的信號成分,達到濾波效果.三、實驗原理、方法和手段 IIR數字濾波器的輸入x(k)和輸出y(k)的關系可以用如下常系數線性差分方程及其Z變換描述,即 y(k)=(6-1)bx(k?i)?ay(k?i)?i?0Mi?i?1Ni 系統(tǒng)的傳遞函數為 b0?b1z?...?bnz H(Z)=(6-2) ?1?N1?a1z?1?...?anz?M 四、實驗組織運行要求 教師簡單講解,學生調試程序,教師全程輔導 五、實驗條件 安裝CCS和MATLAB的電腦一臺 六、實驗步驟 1、MATLAB的濾波器設計 在MATLAB中使用濾波器設計工具箱(FDA)來設計濾波器,首先打開MATLAB,在命令窗口輸 27 入FDAtool, 將出現(xiàn)濾波器設計工具箱.下圖是打開的濾波器設計的主要界面,通過輸入有關參數可以設計各種濾波器,包括濾波器的類型,階數,截止頻率(Fpass),帶寬,紋波系數(Apass),采樣頻率(Fs)等有關參數.6-1 MAILAB設計IIR濾波器界面 上圖所設計是IIR型的3階契比雪夫1型高通濾波器的采樣頻率為1200Hz,截止頻率為200Hz,圖中中間顯示的是數據為設計好的濾波器的參數.通過這個工具箱可以觀察濾波器的頻率特性,沖激響應特性,階躍響應,零極點示意圖 2、用MATLAB 產生輸入信號: t=(1:256)/1200;x=32768*(sin(2*pi*100*t)+sin(2*pi*300*t))/2 此時會產生如下結果: x = 1.0e+004 * 28 Columns 1 through 12 2.4576 1.4189 0 1.4189 2.4576 0-2.4576-1.4189 0-1.4189-2.4576-0(會產生256點周期為12的輸入信號,因此在此只給出一個周期的輸入信號) 3、濾波器的匯編語言設計: 在編寫濾波器之前,首先確定濾波器的參數,從上面的設計中得出濾波器的系數,為了防止小數運算的溢出,將各個系數除以8,得到新的數據: 分子:0.04045,-0.1213375,0.1213375,-0.04045 分母:1 ,-0.1151875,0.080275,0.080275,-0.0030875 針對以上參數,編寫匯編語言如下:.mmregs.ref filter_start.def _main;定義主函數入口 K_DATA_SIZE.set 256;定義數據個數 K_BUFFER_SIZE.set 8 K_STACK_SIZE.set 256;堆棧大小 K_A.set 3;A的個數 K_B.set 4;B的個數 K_CIR.set K_BUFFER_SIZE STACK.usect “stack”,K_STACK_SIZE SYSTEM_STACK.set K_STACK_SIZE+STACK DATA_DP.usect “filter_vars”,0 filterdata.usect “filter_vars”,K_DATA_SIZE bufferdatay.usect “filter_vars”,K_BUFFER_SIZE*2 bufferdatax.usect “filter_vars”,K_BUFFER_SIZE*2.data.global inputdata inputdata.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0 .word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0 .word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0.word 24576,14189,0,14189.text.asg AR2,ORIGIN.asg AR3,INPUT.asg AR4,FILTER.asg AR5,OUTPUT _main: SSBX FRCT SSBX INTM LD #DATA_DP,DP STM #STACK,SP CALL filter_start NOP NOP NOP loop B loop .def b1,b2,b3,b4,a1,a2,a3.def filter_start b1.set 052dh b2.set-0f87h b3.set 0f87h b4.set-052dh a1.set-0ebeh a2.set 0a46h a3.set-0065h .text filter_start STM #inputdata,ORIGIN STM #bufferdatax,INPUT STM #bufferdatay,FILTER STM #filterdata,OUTPUT STM #K_DATA_SIZE-3-1,BRC 30 STM #K_CIR,BK STM #1, AR0 RPTB filter_end-1 MVDD *ORIGIN+,*INPUT RPT #K_B-1-1 MAR *INPUT-0% MPY *INPUT+0%,#b4,B LD B,A MPY *INPUT+0%,#b3,B ADD B,A MPY *INPUT+0%,#b2,B ADD B,A MPY *INPUT+0%,#b1,B ADD B,A MPY *FILTER+0%,#a3,B ADD B,A MPY *FILTER+0%,#a2,B ADD B,A MPY *FILTER+0%,#a1,B ADD B,A STH A,*FILTER-0% STH A,*OUTPUT+ MAR *FILTER-0% filter_end: NOP RET.end 其*.CMD命令文件如下: iir.obj-o iir.out-m iir.map-e _main MEMORY { PAGE 0: PARAM: org=3000h,len=4000h PAGE 1: DARAM: org=100h,len=4000h } SECTIONS {.text :> PARAM PAGE 0 stack :> DARAM PAGE 1 filter :> DARAM PAGE 1.bss :> DARAM PAGE 1.data :> DARAM PAGE 1 } 編譯,調試程序,生成了執(zhí)行文件*.out,然后載入*.out文件,運行.4)運行后,觀察輸入數據的時域和頻域的波形如下: 圖 6-2 濾波前信號的時域圖 圖 6-3 濾波前信號的頻域圖 圖 6-4 濾波后信號的時域圖 圖 6-5 濾波后信號的頻域圖 七、思考題 試設計一個低通濾波器,濾除300Hz的信號.其它要求同實驗 八、實驗報告 要求學生按本實驗指導書后附的實驗報告格式和要求的內容寫出實驗報告,實驗報告應包括實驗預習、實驗記錄和實驗報告等三部分內容。 九、其它說明 1. 學生實驗時,應嚴格準守實驗室規(guī)則、安全制度和學生實驗守則; 2. 認真學習實驗操作技能,嚴格按指導書和實驗指導教師的指導操作有關規(guī)儀器設備,不要做與本實驗無關的事情; 3. 做好實驗預習、實驗記錄,并按要求按時完成實驗報告。 實驗七:圖象的伽瑪增強 實驗學時:2 實驗類型:設計 實驗要求:選修 一、實驗目的 了解伽瑪(Gamma)矯正的原理 掌握如何從文件讀入數據到內存 掌握在CCS下圖象的 輸入和輸出 二、實驗內容 本實驗要求對一個已經準備好的圖象能夠進行伽瑪矯正,γ值為1.54,設計一個程序,用查表的方式對圖象進行矯正,比較伽瑪矯正前后的效果.三、實驗原理、方法和手段 伽瑪矯正實質上就是矯正亮度,在灰度圖中就是灰度矯正.這個過程是簡單的,不需要實時處理.可以通過查表來進行,創(chuàng)建一個查找需要用的空間很少.伽瑪矯正的計量單位用γ(γ通常是大于1)表示.如果灰度Iin的值介于0和255之間,伽瑪矯正公式為: Iout=(Iin/max gray)1/ γ*max gray(7-1) max gray=255;此表可用MATLAB先計算好.四、實驗組織運行要求 教師簡單講解,學生調試程序,教師全程輔導 五、實驗條件 安裝CCS和MATLAB的電腦一臺 六、實驗步驟 項目的編譯步驟如前所述,在此不多講了;1.向工程添加以下兩個源程序 1)gamma.c 源程序如下: #include #define FALSE 0 #define BUFSIZE 4096 /* the buffer size is 64*64=4096 */ /* Global declarations */ int in_buffer[BUFSIZE];/* processing data buffers */ int out_buffer[BUFSIZE];/* Functions */ static int gamma(int *input, int *output);static void dataIO(void);/* Functions */ static int gamma(int *input, int *output);static void dataIO(void);void main(){ int *input = &in_buffer[0];int *output = &out_buffer[0];puts(“the 3rd experiment startedn”);/* loop forever */ while(TRUE){ /* * Read input data using a probe-point connected to a host file.* Write output data to a graph connected through a probe-point.*/ // read the input image data.dataIO(); puts(“processingn”);/* Processing Gamma Calibration*/ gamma(input, output); // write the output image.// the output file is result.dat.dataIO();} } /* ======== processing gamma calibration======== * * FUNCTION: apply gamma calibration to enhance the brightness of dark are in an image.* * PARAMETERS: address of input and output buffers.* * RETURN VALUE: TRUE.*/ static int gamma(int *input, int *output){ int i;36 /* the given gamma value is 0.65.*/ /* please try other gamma values.*/ int LUT[256]={0, 7, 11, 14, 17, 20, 22, 25, 27, 29, 31, 33, 35, 37, 39, 40, 42, 44, 46, 47, 49, 50, 52, 53, 55, 56, 58, 59, 61, 62, 63, 65, 66, 68, 69, 70, 71, 73, 74, 75, 76, 78, 79, 80, 81, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98,100,101,102, 103,104,105, 106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121, 122,123,124,125,126,127,128,129,130,131,131,132,133,134,135, 136,137,138,139,140,141,141,142,143,144,145,146,147,148,149, 149,150,151,152,153,154,155,155,156,157,158,159,160,160,161, 162,163,164,165,165,166,167,168,169,169,170,171,172,173,173, 174,175,176,177,177,178,179,180,181,181,182,183,184,185,185, 186,187,188,188,189,190,191,191,192,193,194,194,195,196,197, 197,198,199,200,200,201,202,203,203,204,205,206,206,207, 208,208,209,210,211,211,212,213,213,214,215,216,216,217,218, 218,219,220,221,221,222,223,223,224,225,225,226,227,228, 228,229,230,230,231,232,232,233,234,234,235,236,236,237, 238,238,239,240,240,241,242,242,243,244,244,245,246,246, 247,248,248,249,250,250,251,252,252,253,254,254,255};/*replace the brightness with a calibrated value.*/ for(i=0;i return;} 2)其CMD文件如下:-m volume.map MEMORY { PAGE 0: EPROG: origin = 0x3000, len = 0x1000 VECT: origin = 0xff80, len = 0x80 PAGE 1: USERREGS: origin = 0x60, len = 0x1c BIOSREGS: origin = 0x7c, len = 0x4 IDATA: origin = 0x80, len = 0x2f80 } SECTIONS {.vectors: {} > VECT PAGE 0.sysregs: {} > BIOSREGS PAGE 1.trcinit: {} > EPROG PAGE 0.gblinit: {} > EPROG PAGE 0 frt: {} > EPROG PAGE 0.text: {} > EPROG PAGE 0.cinit: {} > EPROG PAGE 0.pinit: {} > EPROG PAGE 0.sysinit: {} > EPROG PAGE 0.bss: {} > IDATA PAGE 1.far: {} > IDATA PAGE 1.const: {} > IDATA PAGE 1.switch: {} > IDATA PAGE 1.sysmem: {} > IDATA PAGE 1.cio: {} > IDATA PAGE 1.MEM$obj: {} > IDATA PAGE 1.sysheap: {} > IDATA PAGE 1.stack: {} > IDATA PAGE 1 } 同時將ti:c5400ctgtoolslib目錄下的rts.lib文件加到工程下,給文件是C語言開發(fā)的DSP應用程序的運行支持庫.3.編譯,鏈接和運行程序 編譯成功后,可以通過View_Watch Windows,或者單擊工具欄上的窗口 圖標.選擇觀測 38 圖7-1,觀測到的向量 4.將要校正的圖象從文件讀入到內存: 1)執(zhí)行菜單命令File_Data_Load,將打開如圖所示的對話框,將要校正的圖象tire.dat讀入到內存.圖7-2 讀圖第一步 點擊?打開?,將會出現(xiàn)如下一個對話框: 圖7-3 讀圖第二步 由前圖知道in-buffer(校正前的圖片在內存中定義的地址)為0x00A5,長度為4096即0x1000, 5.顯示校正前和校正后的圖象 程序運行后執(zhí)行View_Graph下的Image命令 圖7-4 讀圖設置圖 圖7-5 校正之前的圖 圖7-6 校正之后的圖 七、思考題 圖形增強還有什么算法?如何實現(xiàn)? 八、實驗報告 要求學生按本實驗指導書后附的實驗報告格式和要求的內容寫出實驗報告,實驗報告應包括實驗預習、實驗記錄和實驗報告等三部分內容。 九、其它說明 1. 學生實驗時,應嚴格準守實驗室規(guī)則、安全制度和學生實驗守則; 2. 認真學習實驗操作技能,嚴格按指導書和實驗指導教師的指導操作有關規(guī)儀器設備,不要做與本實驗無關的事情; 3. 做好實驗預習、實驗記錄,并按要求按時完成實驗報告。 實驗八:FIR數字濾波器 實驗學時:2 實驗類型:設計 實驗要求:選修 一、實驗目的 了解FFT的原理和算法 掌握DSP中FFT的設計和編程方法 熟悉FFT的調試方法 二、實驗內容 本實驗要求使用FFT變換求一個時域的頻域特定,并從這個頻域求出該信號的頻率值,然后使用DSP匯編語言實現(xiàn)對FFT的DSP的編程.三、實驗原理、方法和手段 1、FFT基本數學理論 對于有限長的離散數字信號{x(n)},0≦n≦N-1,它的頻譜數學值{X(n)}可由離散傅氏變換(DTF)求得.DTF定義為: X(k)= k=0,1,…..N-1(8-1)x(n)e?j(2?/N)nk?n?0n?1 令WM=e-j(2∏/N)nk 然而對于相當大的N值(比如1024)來說,直接計算它的DFT所需要的計算量很大.因此我們采用優(yōu)化的FFT算法,它是一個組合以后的算法,原始的2N個點的實輸入序列組合為一個N點的復序列,然后對復序列進行N點的FFT,最后再將N點復數輸出拆分為2N點的 復數序列,這2N點的復數序列與原始的2N點實數輸入序列是一致。 FFT的基本思想是:將原來的N點序列分為較短的序列,這些序列的DFT可以簡單的組合起來得到原來的DFT。例如,若N為偶數,將原有的N點序列分為兩個(N/2)點的序列,那么計算N點的DFT將需要約(N/2)*2=N/2,是直接采用DFT運算量的一半。上述方法反復使用,在組合和拆分的操作中,F(xiàn)FT的算法量均減半。 2、FFT算法 1)碼位倒置 2FFT的碼位倒置實際上是將輸入的數據進行位倒序,以便在輸出時候得到正確的序列,以N=8 為例說明位倒序的原理。舍輸入的序列為x[n], N=8,其自然序列為:0,1,2,3,4,5,6,7。其一次按奇偶分開,得到兩組M/2點的DFT,其序號為: 0,2,4,6| 1,3,5,7,對每一組再看奇偶分開,得到: 0,4|2,6|1,5|3,7 對于這種運算,我們可以采用DSP的間接尋址的位倒序尋址來實現(xiàn)。2)W因子的生成和分布規(guī)律 在FFT中,乘法主要來自旋轉因子,因為W=cos(2πr/N)-jsin(2πr/N), 所以在對W r r相乘時,必須產生相應的正,余弦函數。在編程序時候,正,余弦函數產生的方法一般有兩種:一種是在每一步直接產生,另一種是在程序開始前預先計算出來將W,將r=0,1,….N-1這N個獨立的值存放在數組中,等于直接建立一個表,在程序執(zhí)行的過程中,可直接查表得到,提高運算速度,但要占用更多的內存。W的一般規(guī)律為: r r在第m級:,r=0,1,2,…….2 2m?1wrm 四、實驗組織運行要求 教師簡單講解,學生調試程序,教師全程輔導 五、實驗條件 安裝CCS和MATLAB的電腦一臺 六、實驗步驟 主函數(文件名為*.asm)從主函數中可以看出FFT的基本過程和步驟,以及碼位倒置,產生三角因子,碟形運算和計算功率譜密度。 .title “zxy_fft5k_program”.mmregs.global _c_int00.include “vc54xnt.h”.include “cfft256coff.h”.include “cfft256fn.h” STACK.usect “stack”,stack_size SYSTEM_STACK.set STACK+stack_size.sect “vectors” reset: BD _c_int00 STM #SYSTEM_STACK,SP.space 31*4*16.text 43 _c_int00: NOP CALL c54x_init;Initialize CPU and clear A and B CALL bit_rev;Here AR7--> fft_data , others is free NOP CALL fft_task NOP CALL power NOP main_start: B main_start.end 2 初始化CPU;文件名為: vc54xnt.h stack_size.set 200h K_FFT_SIZE.set 256 .text c54x_init:;CPU initialize; STM #0b,CLKMD;TstStatu: LDM CLKMD,A;Switch to DIV mode; AND #01b,A; BC TstStatu,ANEQ STM #9FF7h,CLKMD;CPU Clock Feg.:100MHz STM #00A0h,PMST STM #8FFFh,SWWSR;IO wait for 7 clk STM #8802h,BSCR;Clockout=50MHz LD #0h,DP;Data Page Points at NO.0 LD #0h,A LD #0h,B RET 3.cfft256coff.h 函數 cfft256coff.h 函數包括輸入的數據和FFT要用到的各種參數的定義,其中 w11112w4w8w16w111132w64w128w256分別為L =cosw12(2π/2)-jsin(2π/2)=-1-j0 =cosw14(2π/4)-jsin(2π/4)=0-j =cosw18(2π/8)-jsin(2π/8)=0.707-j0.707 =cosw116(2π/16)-jsin(2π/16)=0.9239-j0.3827 =cosw132(2π/32)-jsin(2π/32)=0.9808-j0.1951 =cosw164(2π/64)-jsin(2π/64)=0.9952-j0.0980 44 分別,w =cos(2π/256)-jsin(2π/256)=0.9997-j0.0246 w =cos(2π/128)-jsin(2π/128)=0.9988-j0.0491 12812561 將上述系數分別乘以32768得到DSP的Q15格式的小數. 要進行FFT變換的數據是一個周期內采樣20個點的正弦信號,共采集 了256點。 4. cfft256fn.h函數 此頭文件里包含位碼倒置,計算功率譜密度、FFT碟形運算三個子程序。 以上2個程序太長,因此在這里不顯示,大家可以在課程論壇里下載這兩個程序。5. Cmd 文件 /* Filename:cfft256.cmd*/-m cfft256.map MEMORY { PAGE 0: PM0: o=0x80 , l=0x80 PM1: o=0x100 , l=0x1000 PAGE 1: DM0: o=0x2000 , l=0x2000 } SECTIONS { vectors: PAGE 0 load=PM0.text: PAGE 0 load=PM1.data: PAGE 1 load=DM0 圖8-1 觀察圖形設置對話框.bss : PAGE 1 load=DM0.bss : PAGE 1 load=DM0 stack: PAGE 1 load=DM0 } 6.觀察程序運行結果 觀察輸入數據的波形和頻譜 觀察圖形首先對對話框做如圖8-1所示的設置。 圖8-2 輸入信號的波形和頻譜圖 2 察看位碼倒置后的圖形: 點擊View-Disassembly,在Disassembly窗口點右鍵,選擇start_address,輸入bit_rev_end,在它的下一條語句設置斷點然后執(zhí)行Debug_restart.然后觀察位碼倒置后的波形。如圖8-3所示 觀察進行FFT變換后的波形如圖8-4所示 如果將上圖的Dsplay Type欄中該為FFT Magnitude,就等于作了依次FFT反變換,得到如圖所示的結果.如圖8-5所示 圖8-3 位倒碼以后的波形圖 圖8-4 FFT以后的波形圖 圖8-5 FFT變換后的頻譜圖 七、思考題 探測點有何作用?如何設置探測點? 八、實驗報告 要求學生按本實驗指導書后附的實驗報告格式和要求的內容寫出實驗報告,實驗報告應包括實驗預習、實驗記錄和實驗報告等三部分內容。 九、其它說明 1. 學生實驗時,應嚴格準守實驗室規(guī)則、安全制度和學生實驗守則; 2. 認真學習實驗操作技能,嚴格按指導書和實驗指導教師的指導操作有關規(guī)儀器設備,不要做與本實驗無關的事情; 3. 做好實驗預習、實驗記錄,并按要求按時完成實驗報告。 實驗九:控制XF引腳周期性變化 實驗學時:2 實驗類型:設計 實驗要求:選修 一、實驗目的 學習定時器的初始化步驟 掌握定時中斷原理和中斷調用的流程 掌握中斷向量表的設置 二、實驗內容 本實驗要求利用中斷系統(tǒng)和定時期設計一個周期為2ms的方波,并通過CCS圖像觀測器觀測出來。 三、實驗原理、方法和手段 中斷是由外部設備向CPU傳送數據,或者由外部設備向CPU提出數據產生的。具體是指當某個事件發(fā)生時,暫停當前的操作,轉向中斷服務程序,執(zhí)行完后再返回繼續(xù)原來的操作。這使得DSP能夠處理多個任務。CPU執(zhí)行中斷服務程序(ISR)步驟如下: 1 保護現(xiàn)場,將PC值壓入棧頂; 載入中斷矢量表,將中斷矢量表地址送入PC; 3執(zhí)行中斷矢量表,程序將進入ISR入口; 4 執(zhí)行ISR,直至遇到返回指令; 5 回復現(xiàn)場,將棧頂值返回PC; 6 繼續(xù)主程序。 定時器初始化初始化步驟: 1 關閉定時期,TCR中的TSS=1。2 加載PRD。 啟動定時器,初始化TDDR,TSS=0,TBB=1。4 打開可屏蔽中斷.四、實驗組織運行要求 教師簡單講解,學生調試程序,教師全程輔導 五、實驗條件 第一章 實驗系統(tǒng)介紹 一、系統(tǒng)概述 EL-DSP-EXPII教學實驗系統(tǒng)屬于一種綜合的教學實驗系統(tǒng),該系統(tǒng)采用雙CPU 設計,實現(xiàn)了DSP 的多處理器協(xié)調工作。兩個DSP 通過HPI 口并行連接,CPU1可以通過HPI 主機接口訪問CPU2的存儲空間。該系統(tǒng)采用模塊化分離式結構,使用靈活方便用戶二次開發(fā)。客戶可根據自己的需求選用不同類型的CPU 適配板,我公司所有CPU 適配板是完全兼容的,用戶在不需要改變任何配置情況下,更換CPU 適配板即可作TI 公司的不同類型的DSP 的相關試驗。除此之外,在實驗板上有豐富的外圍擴展資源(數字、模擬信號發(fā)生器,數字量IO 擴展,語音CODEC 編解碼、控制對象、人機接口等單元),可以完成DSP 基礎實驗、算法實驗、控制對象實驗和編解碼通信試驗。 EL-DSP-EXPII 教學實驗系統(tǒng)功能框圖 二、硬件組成 該實驗系統(tǒng)其硬件資源主要包括: ● CPU 單元 ● 數字量輸入輸出單元 ● 存儲器及信號擴展單元 ● BOOTLOADER 單元 ● 語音模塊 ● 液晶模塊 ● CPLD 接口 ● A/D轉換單元 ● D/A轉換單元 ● 信號源單元 ● 溫控單元 ● 步進電機 ● 直流電機 ● 鍵盤接口 ● 電源模塊 1、C PU 單元 CPU 單元包括CPU1、CPU2兩塊可以更換的 CPU板,用戶可根據需要選擇不同種 類的CPU 板。板上除CPU 之外還包括以下單元: 1)CPU模式選擇 CPU 通常情況下可以根據用戶需求工作在不同的模式下,主要用MP/MC ———— 的電平來決定。當MP/MC ———— 為高電平時,DSP 工作在微處理器模式,當MP/MC ————— 為低電平時。DSP 工作在為計算機方式。在不同模式下存儲器映射表有所不同。詳細信息請查閱相應的數據手冊。2)電源模塊 在CPU 板上由于TMS320VC54X 數字信號處理器內核采用3.3V 和1.8V 供電,因此需要將通用的5V 轉換成3.3V 和1.8V。為中央處理器提供內部電源。轉換電路如圖所示: 3 3)電平轉換 由于數字信號處理其內部采用3.3V 和1.8V 供電,而且其輸入輸出接口電平為3.3V,對于數字量輸出而言完全可以和5V 電平兼容。但對于數字量輸入而言,由于其內部是3.3V,因此不能將中央處理器的輸出口直接和外圍擴展的5V 器件相連,必須加入電平轉換期間進行電平轉換和信號隔離。典型的就是數據線,必須進行隔離,對于其他的涉及到的輸入信號也要進行相應的轉換。在CPU 板上,U2(LVTH16245)完成了該項功能。4)復位電路以及時鐘單元 復位電路主要包括上電復位和硬件手動復位,每次復位要求至少要有8到10個系統(tǒng)時鐘。因此要求適當的配置復位電路RC 網絡。時鐘電源主要利用數字信號處理器內部晶振源,并通過外部鎖相環(huán)控制電路,選擇適當倍頻倍數,為CPU 內部提供系統(tǒng)時鐘。 2、數字量輸入輸出單元 ● 8bit 的數字量輸入(由八個帶自鎖的開關產生),通過74LS244緩沖;8bit 的數 字量輸出(通過八個LED 燈顯示),通過74LS273鎖存。數字量的輸入輸出都映射到CPU 的IO 空間。 ● 數字量顯示的八個LED 數碼管,通過HD7279控制。 3、存儲器及信號擴展單元: 靜態(tài)存儲器SRAM(IS61C256 32K×8bit 在該實驗板上,使用的存儲器接口芯片是ISSI 公司的IS61C256,它具有以下特點: ● 訪問速度10、12、15、20、25ns 可選; ● 低功耗:400mW(典型); ● 低靜態(tài)功耗 -250μW(典型)CMOS 器件;-55mW(典型)TTL 器件; ● 全靜態(tài)操作,無需時鐘或刷新; ● 輸入輸出和TTL 電平兼容; ● 單5V 供電。 靜態(tài)存儲器分為兩個部分, 一部分是32K ×16bit 的程序存儲器(地址為8000H ~0FFFFH)芯片序號U20、U21和32K ×16bit 的數據存儲器(地址為0000H ~7FFFH)芯片序號U22、U23。根據選擇不同類型的CPU 分別映射到相應地址的程序空間和數據空間。、DSK 擴展信號插座: 接插件P7、P8是和TI 公司DSK 兼容的信號擴展接口,可連接圖像處理、高速AD、DA、USB、以太網等擴展板,也可以連接TI 公司的標準DSK 擴展信號板。 4、BOOTLOADER 單元: 使用的存儲器接口芯片是28C256 32K×8bit,地址為數據空間8000H ~0FFFFH,它具有以下特點: ● 訪問速度快于45ns ● 低功耗:典型靜態(tài)CMOS 電流20μA ● 單5V 供電 ● 供電電壓可在±10%變化 ● 典型編程時間4S ● 100mA 閂鎖保護從-1V 到V CC + 1V ● 高噪聲門限 ● CMOS/TTL 輸入/輸出電平兼容 ● 標準28腳DIP、PDIP 封裝或32腳PLCC 封裝 板上芯片序號U24用來存放用戶程序,可以通過選擇CPU 板上的MP/MC_______ 來選擇bootloader 模式。出廠時存儲器內固化了系統(tǒng)測試程序,上電后可對系統(tǒng)硬件進行自動測試。在本系統(tǒng)中采用并行存儲器引導模式。 5、語音處理單元 語音CODEC 采用TLC320AD50芯片。該芯片采用sigma-delta 技術提供高精度低速信號變換,有兩個串行同步變換通道、D/A轉換前的差補濾波器和A/D變換后的濾波器。其他部分提供片上時序和控制功能。Sigma-delta 結構可以實現(xiàn)高精度低速的數模/模數轉換。芯片的各種應用軟件配置可以通過串口來編程實現(xiàn)。主要包括:復位、節(jié)電模式、通信協(xié)議、串行時鐘速率、信號采樣速率、增益控制和測試模式。最大采樣速率22.05kb/s,采樣精度16bit。 語音處理單元由語音輸入模塊、TLC320AD50模塊、輸出功率模塊組成。語音輸入模塊采用偏置和差動放大技術,并經過濾波和處理后將輸入到語音編解碼芯片TLV320AD50,前端輸入的電壓范圍為-2.5V---+2.5V。經過變換后輸入到AD50的芯片的差動信號范圍為0---5V。TLC320AD50C 作為主方式,通過DSP 的MCBSP0口進行通信。音頻信號通過D/A轉換后輸出,由于TLC320AD50輸出的是差動信號,因此首先經過差動放大,然后可以推動功率為0.4W 的板載揚聲器,也可以接耳機輸出。 語音處理單元原理框圖 語音處理單元接口說明: J14:音頻輸入端子,可輸入CD、聲卡、MP3、麥克風等語音信號。J15:音頻輸出端子,可接耳機、音箱。J3: 語音處理單元輸入信號接口 J1: 語音處理單元輸出信號接口 J6: 地 語音處理單元撥碼開關說明: 語音處理單元可調電位器說明: 注:語音處理單元的二號孔IN 和OUT 通過導線的連接,可以為溫控單元,信號源單元提供A/D,D/A轉換的功能。詳細操作參見實驗指導。 6、液晶模塊 本實驗系統(tǒng)選用中文液晶顯示模塊LCM12864ZK,其字型ROM 內含8192個16*16 點中文字型和128個16*8半寬的字母符號字型;另外繪圖顯示畫面提供一個64*256點的繪圖區(qū)域GDRAM ;而且內含CGRAM 提供4 組軟件可編程的16*16 點陣造字功能。電源操作范圍寬(2.7V to 5.5V;低功耗設計可滿足產品的省電要求。同時,與CPU 等微控器的接口界面靈活(三種模式并行8 位/4 位串行3 線/2 線 ;LCD 數據接口基本上分為串行接口和并行接口兩種形式,本實驗采用串行接口方式,用戶根據需要改變跳線JS1改用并行接口方式。 JS1 注:連接1,2 串行方式 液晶模塊撥碼開關說明: 7、CPLD 接口 采用XILINX 公司的XC95144XL 芯片,完成譯碼和時序控制。JTAG4為CPLD 下載接口??捎肵ILINX 公司的軟件,通過并口下載電纜對CPLD 在線編程。 D2、D3為CPLD 工作指示燈,正常工作時D2、D3點亮。CPU1復位時,D3不亮,CPU2復位時,D2不亮。 8、D/A轉換單元 數模轉換采用DAC08芯片,分辨率8位,精度1LSB,轉換時間可達85ns。DAC08 可以應用在8-bit, 1 us A/D變換,伺服電機、波形發(fā)生、語音編碼、衰減器、可編程功率變換器、CRT 顯示驅動、高速modems 以及其他要求低成本、高速等多功能場合。在本實驗系統(tǒng)中,DAC08采用對稱偏移二進制輸出方式,輸出電壓范圍-5V~+5V。 注:Vref=+10V 對稱偏移二進制輸出編碼圖 底板DAC08參考電壓Vref=+5V;輸入00h,輸出電壓-5V ;輸入ffh,輸出電壓+5V。 D/A單元原理框圖 數模轉換單元接口說明: J4:DA 輸出端子 J2:地 9、A/D轉換單元 模數轉換芯片選用AD7822,單極性輸入,采樣分辨率8BIT,并行輸出;內含取樣保持電路,以及可選擇使用內部或外部參考電壓源,具有轉換后自動Power-Down 的模式,電流消耗可降低至 5μA 以下。轉換時間最大為420ns,SNR可達48dB,INL 及DNL 都在±0.75 LSB以內??蓱迷跀祿蓸印SP 系統(tǒng)及移動通信等場合。在本實驗系統(tǒng)中,參考電壓源+2.5V,偏置電壓輸入引腳Vmid=+2.5V。模擬輸入信號經過運放處理后輸入AD7822。 AD7822編碼圖 模數單元原理框圖 模數轉換單元撥碼開關說明: J12: AD輸入端子 J23:地 撥碼開關其它設置狀態(tài)為非法狀態(tài) 10、信號源單元 頻率、幅值可調雙路三角波、方波和正弦波產生電路采用兩片8038信號發(fā)生器,輸出頻率范圍20~100KHz,幅值范圍-10V~+10V。輸出波形、頻率范圍可通過波段開關來選擇。頻率、幅值可獨立調節(jié)。兩路輸出信號可以經過加法器進行信號模擬處理和混疊,作為信號濾波處理的混疊信號源?;殳B后的信號從信號源1輸出。 ICL8038原理框圖 信號源單元原理框圖 信號源單元波段開關說明: 波形選擇波段開關撥到底板絲印的相應位置選擇對應的波形(正弦、三角、方波),頻率選擇波段開關撥到底板絲印的相應位置選擇對應的頻率范圍(0~2K、2K~10K、10K~120K)。 信號源單元電位器說明: J8:信號源1輸出 J7:信號源2輸出 J5:地 11、溫度控制單元 由溫度信號采集單元、加熱信號驅動單元、模擬溫箱加熱控制電路組成。溫度信號采集單元電路的熱敏電阻的阻值隨溫度的變化而變化,經運放處理,輸出一個 電壓變化(逐漸減小 的溫度信號給系統(tǒng)板的A/D采集輸入端;加熱信號驅動單元將系統(tǒng)板送來的加熱信號分兩路處理:一路放大后驅動加熱指示二極管發(fā)光;另一路經隔離后驅動可控硅導通。模擬溫箱加熱控制電路由加熱信號隔離電路、AC220V 控制電路(可控硅)輸出電路組成。 溫度控制單元撥碼開關說明: J10:溫度控制單元反饋電壓輸出 J11:地 LED18:+12V電源指示燈。 12、步進電機單元 步進電機多為永磁感應式,有兩相、四相、六相等多種,實驗所用的電機為兩相四拍式,通過對每相線圈中的電流的順序切換來使電機作步進式旋轉,驅動電路由脈沖信號來控制,所以調節(jié)脈沖信號的頻率便可改變步進電機的轉速。脈沖信號是有DSP 的IO 端口(地址8001H 的低四位提供。位0對應“D ”,位1對應“C ”,位2對應“B ”,位3對應“A ”; 如下圖所示,電機每相電流為0.2A,相電壓為5V,兩相四拍的通電順序如下表所示: 注:順時針方向旋轉通電順序為0-1-2-3; 逆時針方向旋轉通電順序為3-2-1-0;步進電機單元撥碼開關說明: LED16:+12V電源指示燈; LED17:+5V電源指示燈; 13、直流電機單元 該單元由電壓調整、驅動電路、速度檢測反饋電路組成。由系統(tǒng)板送來的電壓信號與可調節(jié)的基準電壓經加法運算后,輸出驅動直流電機運行;速度檢測、反饋電路由于電機同軸轉的轉盤上的強力磁鋼、霍爾磁感應放大器、單周期速度信號采集器組成,當與電機同軸運行的轉盤上的磁鋼與霍爾片正對時,霍爾片輸出負電壓,經整形、放大,供系統(tǒng)采集。 J9:直流電機控制脈沖輸入端 J13:地 LED15:中斷反饋指示燈; 14、鍵盤接口 鍵盤接口是由芯片HD7279按制的,HD7279是一片具有串行接口的,可同時驅動8位共陰式數碼管或(64只獨立LED)的智能顯示驅動芯片,該芯片同時還可連接多達64鍵的鍵盤矩陣, 單片即可完成LED 顯示, 鍵盤接口的全部功能。HD7279A 內部含有譯碼器,可直接接受BCD 碼或16進制碼,并同時具有2種譯碼方式。此外,還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。HD7279A 具有片選信號,可方便地實現(xiàn)多于8 C D 位的顯示或多于64鍵的鍵盤接口。在該實驗系統(tǒng)中,僅提供了16個鍵。 15、其它接口說明 電源單元:為系統(tǒng)提供+5V、+12V、-12V、+3.3V電源 JTAG 接口: K1:非自鎖按鍵,每按一下產生一個負的脈沖。 綜上所述,本章介紹了該系統(tǒng)的硬件資源,看完本章內容,應該對實驗系統(tǒng)有一個基本的了解,在余下的幾章中將會結合實驗詳細介紹,每個單元在實驗中的具體應用。 第二章 調試軟件安裝說明 一、CCS 的安裝 利用CCS 集成開發(fā)環(huán)境,用戶可以在一個開發(fā)環(huán)境下完成工程定義、程序編輯、編譯鏈接、調試和數據分析等工作環(huán)節(jié)。下圖為典型CCS 集成開發(fā)環(huán)境窗口示例。整個窗口由主菜單、工具條、工程窗口、編輯窗口、圖形顯示窗口、內存單元顯示窗口和寄存器顯示窗口等構成。 以安裝CCS5000(2.0)為例: 1、CCS 軟件安裝系統(tǒng)要求 要使用Code Composer Studio操作平臺必須滿足以下的要求: ● IBM PC(或兼容機 ● Microsoft Window95/98/ NT 4.0/2000/XP ● 32M 內存,100M 硬盤空間, 奔騰處理器,SVGA(800*600 2、Code Composer Studio的安裝 (1 安裝CCS 到系統(tǒng)中。將CCS 安裝光盤放入到光盤驅動器中,運行CCS 安裝程 序setup.exe。出現(xiàn)以下畫面。如果在WindowsNT 下安裝,用戶必須要具有系 統(tǒng)管理員的權限。 選擇NEXT,按系統(tǒng)提示安裝,默認安裝路徑是“C :ti”。(2 安裝完成后,在桌面上會有“CCS 2(‘C5000)”和“Setup CCS 2(‘C5000)”兩個快捷方式圖標。分別對應CCS 應用程序和CCS 配置程序。 (3如果用戶的操作系統(tǒng)為Windows 95,則可能需要增加環(huán)境變量空間。方法是將語句“shell=c:\windows \command .com /e :4096/p" 添加到C 盤根目錄下的 CONFIG .SYS 文件中,然后重新啟動計算機。這條語句將環(huán)境變量空間設置為4096字節(jié)。 二、CCS 的設置 安裝CCS 軟件與普通的程序安裝類似,沒有特殊要求。下面介紹安裝完成后如何設 置CCS 軟件。如果CCS 是在硬件目標板上運行,則先要安裝目標板驅動程序,然后運行“CCS Setup ”配置驅動程序,最后才能執(zhí)行CCS。除非用戶改變CCS 應用平臺類型,否則只需運行一次CCS 配置程序。運行Code Composer Studio Setup軟件(即桌面上的Setup CCS2(C5000)圖標。 點擊Install a Device Driver,選擇相應驅動程序.例如: 5X 系列: PCI開發(fā)器為xdspci54x.dvr;ISA 開發(fā)器為wtxds54xisa.dvr EPP 開發(fā)器為sdgo5xx32.dll 2X 系列: PCI開發(fā)器為xdspci2xx.dvr ISA 開發(fā)器為wtxds2xxisa.dvr EPP 開發(fā)器為sdgo2xx32.dll 3X 系列: PCI開發(fā)器為xds3xPCI.dvr ISA 開發(fā)器為wtxds3xisa.dvr EPP 開發(fā)器為Sdgo3x32.dll 此時,Available Board/Simulator Type一欄中會出現(xiàn)相應的驅動圖標; 把該圖標拖動到最左邊的System Configuration一欄中.出現(xiàn)Board Properties對話框 .點擊NEXT, 進入下一頁,會顯示板卡的I/O口值,修改為0x378(ISA、PCI、USB 仿真器不用修改,再點擊NEXT,在Processor Configuration窗中, 在Available Processor中選擇TMS320C54XX 然后, 點擊Add Single;對話框右邊出現(xiàn)CPU_1圖標.點擊NEXT, 進入下一頁,提示選擇一個初始化的.GEL 文件,對于5000系列的DSP 芯片,可選擇5402、5409、5410等。 最后, 點擊finish.關閉CCS 程序, 選擇保存。至此CCS 安裝設置完成。第三章 硬件安裝說明 硬件仿真器是進行系統(tǒng)開發(fā)的必備工具,它是采用邊界掃描技術和CPU 芯片通過JTAG 口相連接。實現(xiàn)了主機對CPU 芯片的完全檢測和控制??梢酝ㄟ^JTAG 和相應的軟件調試環(huán)境實現(xiàn)系統(tǒng)的硬件調試和軟件的再現(xiàn)調試開發(fā)工作。 一、DSP 硬件仿真器的安裝 第一步、取出開發(fā)系統(tǒng),檢查是否齊全 ● EPP 開發(fā)系統(tǒng) A . 關閉PC 機電源,將專用電纜插入并口中,注意插接要穩(wěn)固。B . 用+5V穩(wěn)壓電源通過電源插口給仿真器供電。C .啟動PC 機,安裝新硬件,驅動程序eppdrive.zip ● USB 開發(fā)系統(tǒng) A .關閉PC 機電源,將專用電纜插入USB 口中,注意插接要穩(wěn)固。B .啟動PC 機,安裝新硬件,驅動程序usbdrive.zip ● PCI 開發(fā)系統(tǒng) A .關閉PC 機電源,取下機箱盒,將PCI 卡插入PCI 插槽中,注意插接要穩(wěn)固。 B .啟動PC 機,安裝新硬件,驅動程序為pcitfsetup.zip C .安裝好PCI 卡后,用37針專用連線,連接PCI 卡與連接仿真盒,再將仿真 盒另一端,連好JTAG 接線。 第二步、將以安裝好的仿真器JTAG 線,插入CPU 板上的JTAG 接口。至此,硬件仿真器安裝完成。 二、DSP 硬件仿真器的使用 硬件仿真器的用法比較簡單,只要將JTAG 口連接正確,DSP 芯片能夠正常工作并且軟件調試環(huán)境配置正確即可以應用。下面給出JTAG 的定義: 注意第六腳是空腳。 接通電源,把實驗箱后方的電源開關打到“1”位置,實驗箱通電,實驗箱電源單元 的指示燈LED1、2、3、4指示燈點亮。 雙擊桌面上的CCS2(‘C5000)圖標,進入CCS 軟件界面,可以開始。進行程序的開發(fā)和調試。 第四章 常規(guī)實驗指導 實驗一 常用指令實驗 一、實驗目的 1、了解DSP 開發(fā)系統(tǒng)的組成和結構; 2、熟悉DSP 開發(fā)系統(tǒng)的連接; 3、熟悉DSP 的開發(fā)界面; 4、熟悉C54X 系列的尋址系統(tǒng); 5、熟悉常用C54X 系列指令的用法。 二、實驗設備 計算機,CCS 2.0版軟件,DSP 仿真器,實驗箱。 三、實驗步驟與內容 1、系統(tǒng)連接 進行DSP 實驗之前,先必須連接好仿真器、實驗箱及計算機,連接方法如下所示: 2、上電復位 在硬件安裝完成后,確認安裝正確、各實驗部件及電源連接正常后,接通仿真器電源或啟動計算機,此時,仿真盒上的“紅色小燈”應點亮,否則DSP 開發(fā)系統(tǒng)與計算機連接有問題。 3、運行CCS 程序 待計算機啟動成功后,實驗箱220V 電源置“ON ”,實驗箱上電,啟動CCS,此時仿真器上的“綠色小燈”應點亮,并且CCS 正常啟動,表明系統(tǒng)連接正常;否則仿真器的連接、JTAG 接口或CCS 相關設置存在問題,掉電,檢查仿真器的連接、JTAG 接口連接,或檢查CCS 相關設置是否正確。 注:如在此出現(xiàn)問題,可能是系統(tǒng)沒有正常復位或連接錯誤,應重新檢查系統(tǒng)硬件并復 位;也可能是軟件安裝或設置有問題,應嘗試調整軟件系統(tǒng)設置,具體仿真器和仿真 軟件CCS 的應用方法參見第三章。 ●成功運行程序后,首先應熟悉CCS 的用戶界面 ●學會CCS 環(huán)境下程序編寫、調試、編譯、裝載,學習如何使用觀察窗口等。 4、修改樣例程序,嘗試DSP 其他的指令。 注: 實驗系統(tǒng)連接及CCS 相關設置是以后所有實驗的基礎,在以下實驗中這部分內容將不再復述。 5、填寫實驗報告。 6、樣例程序實驗操作說明 啟動CCS 2.0,并加載“exp01.out ”; 加載完畢,單擊“Run ”運行程序; 實驗結果:可見指示燈LED5以一定頻率閃爍;單擊“Halt ”暫停程序運行,則指示燈LED5停止閃爍,如再單擊“Run ”,則指示燈LED5又開始閃爍; 關閉所有窗口,本實驗完畢。 源程序查看:用下拉菜單中Project/Open,打開“Exp01.pjt ”,雙擊“Source ”,可查看源程序。 實驗二 數據存儲實驗 一、實驗目的 1、掌握TMS320C54的程序空間的分配; 2、掌握TMS320C54的數據空間的分配; 3、熟悉操作TMS320C54數據空間的指令。 二、實驗設備 計算機,CCS 2.0版軟件,DSP 仿真器,實驗箱。 三、實驗系統(tǒng)相關資源介紹 本實驗指導書是以TMS32OVC5402為例,介紹相關的內部和外部存儲器資源。對于其他類型的CPU 請參考查閱相關的數據手冊。 下面給出TMS32OVC5402的存儲器分配表: 對于數據存儲空間而言,映射表相對固定。值得注意的是內部寄存器都映射到數據存儲空間內。因此在編程應用是這些特定的空間不能作其他用途。對于程序存儲空間而言,其映射表和CPU 的工作模式有關。當MP/MC引腳為高電平時,CPU 工作在微處理 器模式;當MP/MC引腳低電平時,CPU 工作在為計算機模式。具體的存儲器映射關系如上如所示。 存儲器試驗主要幫助用戶了解存儲器的操作和DSP 的內部雙總線結構。并熟悉相關的指令代碼和操作等。 四、實驗步驟與內容 1、連接好DSP 開發(fā)系統(tǒng),運行CCS 軟件; 2、在CCS 的Memory 窗口中查找C5402各個區(qū)段的數據存儲器地址,在可以改變 的數據地址隨意改變其中內容; 3、在CCS 中裝載實驗示范程序,單步執(zhí)行程序,觀察程序中寫入和讀出的數據存 儲地址的變化; 4、聯(lián)系其他尋址方式的使用。 5、樣例程序實驗操作說明 啟動CCS 2.0,并加載“exp02.out ”; 用“View ”下拉菜單中的“Memory ”查看內存單元; 輸入要查看的內存單元地址,本實驗要查看0x1000H~0x100FH單元的數值變化,輸入地址0x1000H ; 查看0x1000H~0x100FH單元的初始值,單擊“Run ”運行程序,也可以“單步”運行程序; 單擊“Halt ”暫停程序運行; 查看0x1000H~0x100FH單元內數值的變化; 關閉各窗口,本實驗完畢。 源程序查看:用下拉菜單中Project/Open,打開“Exp02.pjt ”,雙擊“Source ”,可查看源程序。 本實驗說明: 本實驗程序將對0x1000開始的8個地址空間,填寫入0xAAAA 的數值,然后讀出,并存儲到0X1008開始的8個地址空間。在CCS 中可以觀察DATA 存儲器空間地址0X1000~0X100F值的變化。 實驗三 I/O實驗 一、實驗目的 1、了解I/O口的擴展;掌握I/O口的操作方法; 2、熟悉PORTR,PORTW 指令的用途; 3、了解數字量與模擬量的區(qū)別和聯(lián)系。 二、實驗設備 計算機,CCS 2.0版軟件,DSP 仿真器,實驗箱。 三、實驗步驟與內容 1、運行CCS 軟件,裝載示范程序,分別調整數字輸入單元的開關K2~K9,觀察 LED7~LED14亮滅的變化,以及輸入和輸出狀態(tài)是否一致。 2、樣例程序實驗操作說明 啟動CCS 2.0,并加載“exp03.out ”; 單擊“Run ”運行程序; 任意調整K2~K9開關,可以觀察到對應LED7~LED14 燈“亮”或“滅”;單擊“Halt ”,暫停持續(xù)運行,開關將對燈失去控制; 關閉所有窗口,本實驗完畢。 源程序查看:用下拉菜單中Project/Open,打開“Exp03.pjt ”,雙擊“Source ”,可查看源程序。 四、實驗說明 實驗中采用簡單的一一映射關系來對I/O口進行驗證,目的是使實驗者能夠對I/O 有一目了然的認識。在本實驗中,提供的IO 空間分配如下: CPU: 0x8000 按鍵 input(X 8 0x8001 燈 output(X 8 實驗四 定時器實驗 一、實驗目的 1、熟悉C54的定時器; 2、掌握C54定時器的控制方法; 3、學會使用定時器中斷方式控制程序流程。 二、實驗設備 計算機,CCS 2.0版軟件,DSP 硬件仿真器,實驗箱。 三、實驗步驟和內容 1、運行CCS 軟件,調入樣例程序,裝載并運行; 2、定時器試驗通過數字量輸入輸出單元的LED7~LED14來顯示; 3、例程序實驗操作說明 啟動CCS 2.0,并加載“exp04.out ”; 單擊“Run ”運行,可觀察到LED 燈(LED7~LED14)以一定的間隔時間不停擺動; 單擊“Halt ”,暫停程序運行,LED 燈停止閃爍;單擊“Run ”,運行程序,LED 燈又開始閃爍; 關閉所有窗口,本實驗完畢。 源程序查看:用下拉菜單中Project/Open,打開“Exp04.pjt ”,雙擊“Source ”,可查看各源程序。 四、實驗說明 C54的定時器是一個20位的減法計數器,可以被特定的狀態(tài)位實現(xiàn)停止、重新啟動、重設置或禁止,可以使用該定時器產生周期性的CPU 中斷,控制定時器中斷頻率的兩個寄存器是定時周期寄存器PRD 和定時減法寄存器TDDR。 在本系統(tǒng)中,如果設置時鐘頻率為20MHZ,令PRD = 0x4e1f,這樣得到每1/1000秒中斷一次,通過累計1000次,就能定時1秒鐘。 實驗五 INT2中斷實驗 一、實驗目的 1. 掌握中斷技術,學會對外部中斷的處理方法; 2. 掌握中斷對程序流程的控制,理解DSP 對中斷的響應時序。 二、實驗設備 計算機,CCS 2.0版軟件,DSP 仿真器,實驗箱 三、實驗步驟和內容 1、低電平單脈沖觸發(fā)DSP 中斷INT2;該中斷由“單脈沖單元”產生。按一次非自鎖開關K1,產生一個中斷。 2、運行CCS 軟件,調入樣例程序,裝載并運行; 3、每按一次開關K1、LED7~LED14燈亮滅變化一次; 4、填寫實驗報告。 5、樣例程序實驗操作說明 啟動CCS 2.0,并加載“exp05.out ”; 單擊“Run ”運行程序,反復按開關K1,觀察LED7~LED14燈亮滅變化; 單擊“Halt ”暫停程序運行,反復按開關K1,LED7~LED14燈亮滅不變化; 《單片機控制技術》實驗指導書 實驗一 流水燈實驗(左移右移方式) 一. 實驗項目卡編號:59010115-01 二. 實驗目的 通過此實驗,讓大家初步掌握左移位、右移位指令的使用。三. 實驗設備 1. S51E單片機學習開發(fā)板一塊 2. PC微機一臺 四. 實驗步驟 1. 打開編譯軟件偉煌MCS51開發(fā)系統(tǒng)。 2. 編寫源程序并進行調試。要求:小燈先向左依次移動8次,再向右依次移動7次,隨后循環(huán)前面的工作。 3. 將S51E開發(fā)板連接到PC機上。 對應的89S51與LED引腳的連線為 LED1——————P1.0 LED2——————P1.1 LED3——————P1.2 LED4——————P1.3 LED5——————P1.4 LED6——————P1.5 LED7——————P1.6 LED8——————P1.7 4.打開開發(fā)板電源,用軟件將調試好的程序下載至單片機中,觀察實驗現(xiàn)象。 五.實驗參考程序 ORG 0000H START:MOV A,#0FFH CLR C MOV R2,#08H LOOP:RLC A MOV P1,A LCALL DELAY DJNZ R2,LOOP MOV R2,#07H LOOP1:RRC A MOV P1,A LCALL DELAY DJNZ R2,LOOP1 JMP START DELAY:MOV R4,#200 D1: MOV R5,#248 DJNZ R5,$ DJNZ R4,D1 RET END 實驗二 流水燈實驗(利用查表方式) 一.實驗項目卡編號:59010115-02 二.實驗目的 通過此實驗,讓同學們掌握查表指令的使用。三.實驗設備 1.S51E單片機學習開發(fā)板一塊 2.PC微機一臺 四.實驗步驟 1. 打開編譯軟件偉煌MCS51開發(fā)系統(tǒng)。 2. 編寫源程序并進行調試。要求:學習利用查表方式,使小燈做舞臺燈效果的變化,左移3次,右移3次,閃爍3次,廷時時間為200毫秒。3. 將S51E開發(fā)板連接到PC機上。 對應的89S51與LED引腳的連線為 LED1——————P1.0 LED2——————P1.1 LED3——————P1.2 LED4——————P1.3 LED5——————P1.4 LED6——————P1.5 LED7——————P1.6 LED8——————P1.7 4.打開開發(fā)板電源,用軟件將調試好的程序下載至單片機中,觀察實驗現(xiàn)象。 五.實驗參考程序 ORG 0000H MOV P1,#00H MOV A,#00H START:MOV DPTR,#TABLE LOOP: CLR A MOVC A,@A+DPTR CJNE A,#01H,LOOP1 JMP START LOOP1:MOV P1,A MOV R3,#20 LCALL DELAY JMP LOOP DELAY:MOV R4,#20 D1: MOV R5,#248 DJNZ R5,$ DJNZ R4,D1 DJNZ R3,DELAY RET TABLE:DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH DB 7FH, 0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 7FH, 0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 7FH, 0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 00H,0FFH,00H,0FFH DB 00H,OFFH END 實驗三 按鍵的應用(按鍵控制小燈) 一.實驗項目卡編號:59010115-03 二.實驗目的 1.掌握按鍵的識別與處理。2.加強對輸入控制的理解。三.實驗設備 1.S51E單片機學習開發(fā)板一塊 2.PC微機一臺 四.實驗步驟 1.打開編譯軟件偉煌MCS51開發(fā)系統(tǒng)。 2.編寫源程序并進行調試。要求:利用按鍵的方式,控制小燈的亮滅,按鍵后小燈亮,再次按鍵后小燈滅。了解人為按鍵的自然規(guī)律:由于單片機的指令執(zhí)行很快,按鍵必須進行延時來消除抖動,并要求在按鍵后執(zhí)行子程序的最后加入一條指令檢測按鍵是否放下。3.將S51E開發(fā)板連接到PC機上。 對應的89S51與LED引腳的連線為 LED1——————P1.0 SW1———————P2.2 SW2———————P2.3 SW3———————P2.4 SW4———————P2.5 SW5———————P2.6 SW6———————P2.7 4.打開開發(fā)板電源,用軟件將調試好的程序下載至單片機中,按動鍵盤觀察實驗現(xiàn)象。 五.實驗參考程序 KEY BIT P3.3 SW1 BIT P2.2 ORG 0000H START:MOV SP,#40H MOV P2,#0FFH MOV P3,#0FFH MOV P1,#0FFH CLR KEY WAIT: JB KEY,$ JB SW1,$ LCALL DELAY CPL P1.0 JNB SW1,$ JMP WAIT DELAY:MOV R3,#200 D1: MOV R4,#200 DJNZ R4,$ DJNZ R3,D1 RET END 實驗四 外部中斷實驗 一.實驗項目卡編號:59010115-04 二.實驗目的 1.了解51單片機外部中斷原理和概念。 2.學習如何使用編程來調用中斷服務子程序的整個過程。三.實驗設備 1.S51E單片機學習開發(fā)板一塊 2.PC微機一臺 四.實驗步驟 1.打開編譯軟件偉煌MCS51開發(fā)系統(tǒng)。 2.編寫源程序并進行調試。要求:當主程序運行后,小燈一直在做右移循環(huán)運動,當按鍵發(fā)生后則觸發(fā)了中斷1,開始執(zhí)行中斷1的服務子程序,小燈全部閃爍10次,然后再返回主程序,繼續(xù)原來的循環(huán)。 3.將S51E開發(fā)板連接到PC機上。 對應的89S51與LED引腳的連線為 LED1——————P1.0 LED2——————P1.1 LED3——————P1.2 LED4——————P1.3 LED5——————P1.4 LED6——————P1.5 LED7——————P1.6 LED8——————P1.7 SW1———————P2.2 SW2———————P2.3 SW3———————P2.4 SW4———————P2.5 SW5———————P2.6 SW6———————P2.7 INT1(P3.3)——————SW 4.打開開發(fā)板電源,用軟件將調試好的程序下載至單片機中,按動鍵盤觀察實驗現(xiàn)象。 五.實驗參考程序 ORG 0000H JMP START ORG 0013H JMP EXT1 ORG 100H START:MOV IE,#84H MOV IP,#04H MOV TCON,#00H MOV SP,#40H MOV P1,#0FFH MOV P2,#00H MOV P3,#0FFH SETB P2.0 LOOP:MOV A,#0FFH CLR C MOV R2,#08H LOOP1:RLC A MOV P1,A LCALL DELAY DJNZ R2,LOOP1 JMP LOOP EXT1:PUSH ACC PUSH PSW MOV A,#00H MOV R3,#10 LOOP2:MOV P1,A LCALL DELAY CPL A DJNZ R3,LOOP2 POP PSW POP ACC RETI DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END 實驗五 定時器中斷實驗 一.實驗項目卡編號:59010115-05 二.實驗目的 1.了解51單片機定時器中斷原理和概念。 2.學習如何使用編程來調用中斷服務子程序的整個過程。三.實驗設備 1.S51E單片機學習開發(fā)板一塊 2.PC微機一臺 四.實驗步驟 1.打開編譯軟件偉煌MCS51開發(fā)系統(tǒng)。 2.編寫源程序并進行調試。要求:當主程序運行后,用51單片機定時器中斷來令小燈每隔1秒就左移一次。 3.將S51E開發(fā)板連接到PC機上。 對應的89S51與LED引腳的連線為 LED1——————P1.0 LED2——————P1.1 LED3——————P1.2 LED4——————P1.3 LED5——————P1.4 LED6——————P1.5 LED7——————P1.6 LED8——————P1.7 4.打開開發(fā)板電源,用軟件將調試好的程序下載至單片機中,觀察實驗現(xiàn)象。 五.實驗參考程序 ORG 0000H JMP START ORG 000BH JMP TIM0 ORG 100H START:MOV P1,#0FFH MOV TMOD,#01H MOV TH0,#HIGH(65536-10000) MOV TL0,#LOW(65536-10000) SETB TR0 MOV IE,#82H MOV R2,#100 MOV P1.#0FEH SJMP $ TIM0: PUSH ACC PUSH PSW MOV TH0,# HIGH(65536-10000) MOV TL0,#LOW(65536-10000) DJNZ R2,LOOP MOV R2,#100 MOV A,P1 RL A MOV P1,A LOOP: POP PSW POP ACC RETI END 實驗六 中斷優(yōu)先級實驗 一.實驗項目卡編號:59010115-06 二.實驗目的 1.學習設置51單片機的中斷優(yōu)先級。 2.學習如何使用編程來調用中斷服務子程序的整個過程。三.實驗設備 1.S51E單片機學習開發(fā)板一塊 2.PC微機一臺 四.實驗步驟 1.打開編譯軟件偉煌MCS51開發(fā)系統(tǒng)。2.編寫源程序并進行調試。要求:當主程序運行后,首先P1的8個LED每隔1秒就左移一次,當按鍵后8個LED閃爍5次。 3.將S51E開發(fā)板連接到PC機上。 對應的89S51與LED引腳的連線為 LED1——————P1.0 LED2——————P1.1 LED3——————P1.2 LED4——————P1.3 LED5——————P1.4 LED6——————P1.5 LED7——————P1.6 LED8——————P1.7 INT1(P3.3)——————SW 4.打開開發(fā)板電源,用軟件將調試好的程序下載至單片機中,按動鍵盤觀察實驗現(xiàn)象。 五.實驗參考程序 ORG 0000H JMP START ORT 000BH JMP TIM0 ORG 100H START:MOV P1,#0FFH MOV TMOD,#01H MOV TH0,#HIGH(65536-10000)MOV TL0,#LOW(65536-10000)SETB TR0 MOV IE,#86H MOV IP,#04H:用MOV IP,#00H代替本行看結果如何? MOV R2,#50 MOV P2,#00H MOV P3,#0FFH SETB P2.0 MOV P1,#0FEH SJMP $ EXT1: PUSH ACC PUSH PSW MOV A,#00H MOV R3,#10 LOOP1: MOV P1,A LCALL DELAY CPL A DJNZ R3,LOOP1 MOV P1,#0FEH POP PSW POP ACC RETI TIM0: PUSH ACC PUSH PSW MOV TH0,#HIGH(65536-10000)MOV TL0,#LOW(65536-10000)DJNZ R2,LOOP MOV R2,#100 MOV A,P1 RL A MOV P1,A LOOP: POP PSW POP ACC RETI DELAY: MOV R6,#0FFH D1: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,D1 RET END 實驗七 RS232串行通訊實驗 一.實驗項目卡編號:59010115-07 二.實驗目的 1.了解RS232串行通訊的工作原理。 2.掌握用查詢方式進行數據傳輸的控制原理。三.實驗設備 1.S51E單片機學習開發(fā)板一塊 2.PC微機一臺 四.實驗步驟 1.打開編譯軟件偉煌MCS51開發(fā)系統(tǒng)。 2.編寫源程序并進行調試。要求:實驗中通過RS232的自收自發(fā)對小燈進行右移控制。3.將S51E開發(fā)板連接到PC機上。 將89S51的引腳RXD(P3.0)與TXD(P3.1)引腳對接。 4.打開開發(fā)板電源,用軟件將調試好的程序下載至單片機中,觀察實驗現(xiàn)象。 五.實驗參考程序 NUM EQU 20H ORG 0000H JMP START ORG 100H MOV NUM,#00H START:MOV SCON,#50H MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 LOOP:MOV DPTR,#TABLE MOV A,NUM MOVC A,@A+DPTR JZ CLRA0 RET1:INC NUM CLR TI MOV SUBF,A CLR RI LOOP1:JBC RI,LOOP2 JMP LOOP1 LOOP2:MOV A,SUBF MOV P1,A LCALL DELAY JMP START CLRA0:MOV NUM,#00H MOV A,NUM MOV DPTR,#TABLE MOVC A,@A+DPTR JMP RET1 DELAY:MOV R7,#50 D1:MOV R6,#20 D2:MOV R5,#248 DJNZ R5,$ DJNZ R6,D2 DJNZ R7,D1 RET TABLE:DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,7FH DB 00H END 實驗八 八段數碼管動態(tài)顯示實驗 一.實驗項目卡編號:59010115-08 二.實驗目的 1.掌握數碼管的顯示原理。2.掌握動態(tài)顯示的控制原理。三.實驗設備 1.S51E單片機學習開發(fā)板一塊 2.PC微機一臺 四.實驗步驟 1.打開編譯軟件偉煌MCS51開發(fā)系統(tǒng)。 2.編寫源程序并進行調試。要求:實驗中能在開發(fā)板的兩個數碼管上顯示99倒記時。3.將S51E開發(fā)板連接到PC機上。 89S51與數碼管顯示器對應引腳的聯(lián)機為: P0.0————————數碼管顯示器的a腳 P0.1————————數碼管顯示器的b腳 P0.2————————數碼管顯示器的c腳 P0.3————————數碼管顯示器的d腳 P0.4————————數碼管顯示器的e腳 P0.5————————數碼管顯示器的f腳 P0.6————————數碼管顯示器的g腳 P0.7————————數碼管顯示器的dp腳 P2.6————————數碼管顯示器1的驅動腳 P2.7————————數碼管顯示器2的驅動腳 4.打開開發(fā)板電源,用軟件將調試好的程序下載至單片機中,觀察實驗現(xiàn)象。 五.實驗參考程序 MIAO EQU 21H GEWEI EQU 22H SHIWEI EQU 23H SCANLED BIT 01H ORG 0000H JMP START ORG 0BH JMP TIMER0 ORG 100H START:MOV SP,#40H MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#OFFH MOV R0,#20H MOV R5,#60H CLR0:MOV @R0,#00H INC RO DJNZ R5,CLR0 MOV TMOD,#01H MOV TH0,#HIGH(65536-5000)MOV TL0,#HIGH(65536-5000)SETB TR0 MOV IE,#82H MOV R7,#200 MOV MIAO,#99 AJMP $ TIMER0: PUSH ACC PUSH PSW MOV TH0,#HIGH(65536-5000) MOV TL0,#HIGH(65536-5000)DJNZ R7,TIM0_LP MOV R7,#200 DJNZ R7,TIM0_LP MOV MIAO,#99 TIM0_LP: MOV A,MIAO LCALL BIN_BCD MOV SHIWEI,A MOV GEWEI,B CPL SCANLED JB SCAN_L1 JMP SCAN_L2 SCAN_L1:MOV P2,#7FH MOV A,SHIWEI JMP END_SCAN SCAN_L1:MOV P2,#0BFH MOV A,GEWEI JMP END_SCAN END_SCAN:MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A POP PSW POP ACC RETI BIN_BCD:MOV B,#10 DIV AB RET TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H DB 90H END 實驗九 模擬交通燈實驗(調用延時子程序方式) 一.實驗項目卡編號:59010115-09 二.實驗目的 1.掌握數碼管的顯示原理。2.學習延時子程序的編寫。三.實驗設備 1.S51E單片機學習開發(fā)板一塊 2.PC微機一臺 四.實驗步驟 1.打開編譯軟件偉煌MCS51開發(fā)系統(tǒng)。 2.編寫源程序并進行調試。要求:實驗中模擬交通燈紅燈先亮10秒時間,接著黃燈亮3秒時間,隨后綠燈再亮10秒時間。 89S51與數碼管顯示器對應引腳的聯(lián)機為: P0.0————————數碼管顯示器的a腳 P0.1————————數碼管顯示器的b腳 P0.2————————數碼管顯示器的c腳 P0.3————————數碼管顯示器的d腳 P0.4————————數碼管顯示器的e腳 P0.5————————數碼管顯示器的f腳 P0.6————————數碼管顯示器的g腳 P0.7————————數碼管顯示器的dp腳 P2.6————————數碼管顯示器1的驅動腳 P2.7————————數碼管顯示器2的驅動腳 LED1——————P1.0 LED2——————P1.1 LED3——————P1.2 LED4——————P1.3 LED5——————P1.4 LED6——————P1.5 4.打開開發(fā)板電源,用軟件將調試好的程序下載至單片機中,觀察實驗現(xiàn)象。 五.實驗參考程序 GEWEI EQU 21H SHIWEI EQU 22H SCANLED EQU 23H RED EQU 24H GREEN EQU 25H YELLOW EQU 26H NUMTIM EQU 27H ORG 0000H JMP START ORG 0BH JMP TIMER0 ORG 100H START:MOV SP,#40H MOV R0,#20H MOV R5,#20 CLR0: MOV @R0,#00H INC R0 DJNZ R5,CLR0 MOV TMOD #01H MOV TH0,#HIGH(65536-5000) MOV TL0,#LOW(65536-5000) SETB TR0 MOV IE,#82H MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R3,#10 MOV R2,#3 MOV R1,#10 INE: MOV RED,#10 MOV YELLOW,#3 MOV GREEN,#10 LOOP:MOV P1,#0FBH MOV NUMTIM,RED LCALL DELAY1 DEC RED DJNZ R3,LOOP MOV R3,#10 MOV NUMTIM,#00H LCALL DELAY1 LOOP1:MOV P1,#0F3H MOV NUMTIM,YELLOW LCALL DELAY1 DEC YELLOW DJNZ R2,LOOP1 MOV R2,#3 MOV NUMTIM,#00H LCALL DELAY1 LOOP2: MOV P1,#0BFH MOV NUMTIM,GREEN LCALL DELAY1 DEC GREEN DJNZ R1,LOOP2 MOV R1,#10 MOV NUMTIM,#00H LCALL DELAY1 MOV YELLOW,#3 LOOP3: MOV P1,#0F3H MOV NUMTIM,YELLOW LCALL DELAY1 DEC YELLOW DJNZ R2,LOOP3 MOV R2,#3 MOV NUMTIM,#00H LCALL DELAY1 LJMP INI TIMER0:PUSH ACC PUSH PSW MOV TH0,#HIGH(65536-5000) MOV TL0,#LOW(65536-5000)MOV A,NUMTIM LCALL BIN_BCD MOV SHIWEI,A MOV GEWEI,B MOV A,SCANLED CPL A MOV SCANLED,A JZ SCAN_L1 JMP SCAN_L2 SCAN_L1:MOV P2,#7FH MOV A,SHIWEI JMP END_SCAN SCAN_L2:MOV P2,#0BFH MOV A,GEWEI JMP END_SCAN END_SCAN:MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A POP PSW POP ACC RETI BIN_BCD:MOV B,#10 DIV AB RET DELAY1:MOV R6,#10 D1:MOV R5,#200 D2:MOV R4,#248 DJNZ R4,$ DJNZ R5,D2 DJNZ R6,D1 RET TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END 實驗十 模擬交通燈實驗(調用定時中斷方式) 一.實驗項目卡編號:59010115-10 二.實驗目的 1.掌握數碼管的顯示原理。2.學習中斷子程序的編寫。三.實驗設備 1.S51E單片機學習開發(fā)板一塊 2.PC微機一臺 四.實驗步驟 1.打開編譯軟件偉煌MCS51開發(fā)系統(tǒng)。 2.編寫源程序并進行調試。要求:實驗中模擬交通燈紅燈先亮10秒時間,接著黃燈亮3秒時間,隨后綠燈再亮10秒時間。 89S51與數碼管顯示器對應引腳的聯(lián)機為: P0.0————————數碼管顯示器的a腳 P0.1————————數碼管顯示器的b腳 P0.2————————數碼管顯示器的c腳 P0.3————————數碼管顯示器的d腳 P0.4————————數碼管顯示器的e腳 P0.5————————數碼管顯示器的f腳 P0.6————————數碼管顯示器的g腳 P0.7————————數碼管顯示器的dp腳 P2.6————————數碼管顯示器1的驅動腳 P2.7————————數碼管顯示器2的驅動腳 LED1——————P1.0 LED2——————P1.1 LED3——————P1.2 LED4——————P1.3 LED5——————P1.4 LED6——————P1.5 4.打開開發(fā)板電源,用軟件將調試好的程序下載至單片機中,觀察實驗現(xiàn)象。 五.實驗參考程序 GEWEI EQU 21H SHIWEI EQU 23H SCANLED EQU 25H SCANMODE EQU 26H RED EQU 28H GREEN EQU 29H YELLOW EQU 2AH NUMTIM EQU 2BH LED EQU 34H ORG 0000H JMP START ORG 0BH JMP TIMER0 ORG 100H START:MOV SP,#30H MOV R0,#20H MOV R5,#40 CLR0: MOV @R0,#00H INC R0 DJNZ R5,CLR0 MOV TMOD #01H MOV TH0,#HIGH(65536-5000) MOV TL0,#LOW(65536-5000) SETB TR0 MOV IE,#82H MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R3,#10 MOV R2,#3 MOV R1,#10 MOV RED,#10 MOV YELLOW,#3 MOV GREEN,#10 MOV NUMTIM,#10 MOV LED,#0FFH AJMP $ TIMER0:PUSH ACC PUSH PSW MOV TH0,#HIGH(65536-5000) MOV TL0,#LOW(65536-5000) DJNZ R7,RET0 MOV R7,#200 MOV A,SCANMODE MOV B,#4 DIV AB MOV A,B RL A MOV DPTR,#TAB_SCAN JMP @A+DPTR TAB_SCAN:AJMP RED_LIGHT AJMP YEL_LIGHT AJMP GRE_LIGHT AJMP YEL_LIGHT RET0:MOV A,NUMTIM LCALL BIN_BCD MOV SHIWEI,A MOV GEWEI,B INC SCANLED MOV A,SCANLED MOV B,#4 DIV AB RL A MOV DPTR,#TAB_SCAN0 JMP @A+DPTR TAB_SCAN0:AJMP SCAN_L1 AJMP SCAN_L2 SCAN_L1: MOV P2,#0F7H MOV A,SHIWEI JMP END_SCAN SCAN_L2: MOV P2,#0FBH MOV A,GEWEI JMP END_SCAN END_SCAN:MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,LED MOV P1,A POP PSW POP ACC RETI RED_LIGHT:MOV LED,#OFBH MOV NUMTIM,RED DEC RED MOV A,RED CJNE A,#0FFH,RET0 MOV RED,#10 MOV A,SCANMODE ADD A,#01H MOV SCANMODE,A JMP RET0 YEL_LIGHT:MOV LED,#0F3H MOV NUMTIM,YELLOW DEC YELLOW MOV A,YELLOW CJNE A,#0FFH,RET0 MOV YELLOW,#3 MOV A,SCANMODE ADD A,#01H MOV SCANMODE,A JMP RET0 GRE_LIGHT: MOV LED,#0BFH MOV NUMTIM,GREEN DEC GREEN MOV A,GREEN CJNE A,#0FFH,RET1 MOV GREEN,#10 MOV A,SCANMODE ADD A,#01H MOV SCANMODE,A RET1:JMP RET0 BIN_BCD: MOV B,#10 DIV AB RET DELAY: MOV R5,#02 D1: MOV R6,#200 D2: MOV R7,#200 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END 實驗五 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頻率采樣法 頻率采樣法是從頻域出發(fā),將給定的理想頻率響應Hd(ejω)加以等間隔采樣 然后以此Hd(k)作為實際FIR數字濾波器的頻率特性的采樣值H(k),即令 由H(k)通過IDFT可得有限長序列h(n) 將上式代入到Z變換中去可得 其中Φ(ω)是內插函數 三、設計指標 (1)矩形窗設計線性相位低通濾波器(參數自主設定)(2)改用Hanning 窗,設計(1)中的低通濾波器。 四、實驗要求(設計要求) (1)編寫窗函數法FIR濾波器設計代碼,觀察幅頻和相位特性的變化,注意長度N變化的影響; 觀察并記錄窗函數對濾波器幅頻特性的影響,比較兩種窗的特點;(2)要求所編的程序能正確運行;畫出波形,完成并提交實驗報告。 五、調試及結果測試 提交帶注釋的(或給出每個操作所涉及的算法)且運行正確的源程序,說明調試過程中所遇到的問題、解決方法及經驗與體會。 六、考核形式 理論課程閉卷考試,實驗部分提交實驗報告。 七、實驗報告要求 1.實驗報告必須獨立完成,抄襲、復制他人作無效處理: 2.實驗報告要求: (1)要按規(guī)定從教學網站下載樣板文件格式書寫。 (2)實驗報告要注明姓名,學號,實驗名稱,完成日期,聯(lián)系電話。(3)內容不真實、不認真、不能按時完成的,不記成績。(4)簡要說明設計題目、內容、原理。 3.附濾波器設計代碼及要求的圖形。對實驗結果和實驗中的現(xiàn)象進行簡練明確的分析并作出結論或評價,對本人在實驗全過程中的經驗、教訓、體會、收獲等進行必要的小結。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循環(huán) 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循環(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軸標簽 ylabel('幅度/dB');%y軸標簽 六、實驗分析及心得體會第三篇:DSP實驗指導書完全版正文_圖文(精)
第四篇:單片機技術實驗指導書
第五篇:DSP實驗5