第一篇:DSP技术实验指导书
一 基础实验:CCS 的使用与简单应用程序的调试
1.1 实验目的
1.熟悉 CCS 集成开发环境,掌握工程的生成方法; 2.熟悉 SEED-DEC5416 实验环境; 3.掌握 CCS 集成开发环境的调试方法; 1.2 实验内容
1.DSP源文件的建立; 2.DSP程序工程文件的建立;
3.学习使用CCS集成开发工具的调试工具; 1.3 实验知识背景 1.3.1 CCS 简介
1.CCS 提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。CCS 支持如下所示的开发周期的所有阶段 1.3.1 CCS 简介
1.CCS 提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。CCS 支持如下所示的开发周期的所有阶段
湖南工学院教案用纸 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:
(经完整的编译、汇编以及连接的)可执行文件
9.project.wks:
存储环境设置信息的工作区文件
保存配置文件时将产生下列文件:
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 文 件后,在执行程序。
2)Restart:
Debug → Restart,将 PC 值恢复到当前载入程序的入口地址。
3)Go main:
Debug →Go main,将程序运行到主程序的入口处暂停。
3.CCS 提供 4 种执行操作
1)执行执行:
Debug →Run,程序运行直到遇到断点为止。
2)暂停执行:
Debug →Halt,程序停止运行。
3)动画执行:
Debug →Animate,用户反复运行程序,直到遇到断点为止。
4)自由执行:
Debug →Run Free,禁止所有断点运行程序。
4.CCS 提供 4 种单步执行操作
1)单步进入:Debug →step into,快捷键 F8,当调试语句不是
基本的汇编指令时,此操作进入语句内部。
2)单步执行:Debug → step Over,此命令将函数或子函数当作
一条语句执行,不进入内部调试。
3)单步跳出:Debug →step Out,此命令作用为从子程序中跳出
4)执行到光标处: 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等的属性可改变为如下图所示(也可根据具体需要设置属性)。向下滚动右侧的滚动条或调整 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 环境。
下面按照原文件、工程文件以及编译条件的设置来分别介绍一下 CCS 的使用。
1.4.1 创建源文件
1).打开 CCS 选择 File →New →Source File 命令 2).编写源代码并保存
3).保存源程序名为 math.c,选择 File →Save 4).创建其他源程序(如.cmd)可重复上述步骤。
1.4.2 创建工程文件
1.打开 CCS,点击 Project-->New,创建一个新工程,其中工程名及路径可任意指定 2.弹出如下对话框:
3.在 Project 中填入工程名,Location 中输入工程路径;其余按照默认选项,点击完成即可完成工程创建。
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 命令,进行编译连接,它只对修改部分做编译连接工作。可节省编译与连接的时间。编译通过,生成.out 文件。2. 点击File→loadprogram,在弹出的对话框中载入debug 文件夹下 的.out 可执行文件。3. 装载完毕
4.点击debug →Go Main回到C程序的入口
5. 打开 File →Workspace →Save Workspace 保存调试环境,以便下次调试时不需要重新进行设置。只要 File →Workspace →LoadWorkspace 即可恢复当前设置 1.5完成简单应用程序的调试 1.6记录实验结果 1.7完成实验报告:
二.设计实验 按键中断显示实验
3.1实验目的
1.了解D SP外部中断的使用,中断服务程序的设计方法;2.掌握DSP中断向量表的划分。3.2实验设备
计算机;
DSP硬件仿真器;
SZ-DSPF开发教学平台。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.采用单步运行或执行到光标处,或全速运行。观察其结果。(具体请参考实验一)
湖南工学院教案用纸 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 实验要求
能够掌据汇编语言的程序结构。正确进行异步串口的通讯与定时器的设置。能够与系统正确通讯。通过 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 的操作环境。5.装入 timer.pjt 工程文件,添加 dtk-boot.gel 文件。
6.装载程序 timer.out,进行调试。
7.在程序的第 101 行“i=i+1;”处设置断点。
8.运行程序,程序会停在断点处,表明已进入定时器中断。继续运行程序,程序每次都会停在断点处。实验者可根据自己的需要改变周期寄存器的
值,从而控制每次进中断的时间。
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滤波器实现上面要求。输入信号频率合成信号,目的是通过我们设计的滤波器将高频信号滤掉,余下低频的信号成分,达到滤波的效果。8.3实验原理
一个线性位移不变系统的输出序列Y(}>和输入序列X(}>之间的关系,应满足常系数线性差分方程:
湖南工学院教案用纸 p FIR滤波器的单位冲激响应h(n)为有限长序列。若h(n)为实数,且满足偶对称或奇对称的条件,则FIR滤波器具有线性相位特性。
N—偶数
在数字滤波器中,FIR滤波器具有如下几个主要特点: ①FIR滤波器无反馈回路,是一种无条件稳定系统;②FIR滤波器可以设计成具有线性相位特性。
本实验程序设计的就是一种偶对称的线性相位滤波器。程序算法实现采用循环缓冲区法。
算法原理: ①在数据存储器中开辟一个N个单元的缓冲区(滑窗),用来存放最新的N个输入样本;②从最新样本开始取数;③读完最老样本后,输入最新样本来代替最老样本,而其他数据位置不变;④用BK寄存器对缓冲区进行间接寻址,使缓冲区地址首尾相邻。
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.具体调试执行程序时,使用断点,单步执行等方式。} v }r.}.}xm }-}o'r nmsuwr,}rv;yxirxn}
8.6记录实验结果
8.7完成实验报告及思考题
1.为什么要对matlab程序生成的系数进行调整,即将浮点数转换成整数? 2.试改变输入的信号(保证一个频率在通带范围内,一个在通带范围外),进行相应的数据调整,然后在CCS底下观测看输入数据波形。
3.进行滤波器系数的调整再进行相应滤波,然后在CCS底下看输出数据波形情况有何变化。
第二篇:dsp实验指导书尉
电气工程学院
《DSP技术及应用》
实验指导书
尉学军编写
适用专业:电子信息工程
贵州大学 二OO 八年八月
前言
《数字信号处理》实验是理论教学的深化和补充,具有较强的实践性,是一门重要的专业必修课,可作为通信类、电子类专业学生的选修课。所开设的实验以具体实例为实验内容,让学生深刻理解DSP芯片的特点,培养学生应用DSP设计解决实际问题的能力。通过上机与实验,理解实验原理及实验方案,掌握正确的操作规程,掌握5410USB EVM实验箱的正确使用方法。掌握CCS软件的使用,熟练掌握DSP的汇编语言的编写和程序调试,掌握DSP的中断技术和定时器的初始化方法以及应用,以及利用串口进行数据采集。并要求学生利用北京闻亭5410USB EVM实验箱进行数字式信号发生器和滤波器的设计。
作者在此设计了11个实验,其中4个验证性实验,6个设计性实验,1个综合性实验。在开设实验过程中,可以根据大纲选作部分实验。
目录
1、实验一:CCS的安装与simulate的使用·····················································3
2、实验二:汇编语言基本算术运算································································7
3、实验三:程序的控制和转移······································································10
4、实验四:数字式正弦信号发生器·······························································14
5、实验五:FIR数字滤波器 ·········································································21
6、实验六:IIR数字滤波器 ·········································································27
7、实验七: 图象的伽玛增强······························································ ··········35
8、实验八: 快速傅立叶变换(FFT)的实现······················································42
9、实验九: 控制XF引脚周期性变化·····························································49
10、实验十: 多通道缓冲串口的使用·····························································54
11、实验十一: DTMF算法设计和DSP实现·····················································62
12、实验报告基本内容要求········································································66
13、实验报告格式··························································································68
14、参考文献·································································································70
实验一: CCS的安装与simulate的使用
实验学时:2 实验类型:验证 实验要求:必修
一、实验目的
学会CCS的安装和设置, 熟悉程序的开发流程, 初步掌握Simulator的使用方法.二、实验内容
安装CCS软件,并利用CCSsetup进行设置 对一个简单程序进行调试
三、实验原理、方法和手段
利用软件对指令进行仿真分析。
四、实验组织运行要求
根据本实验的特点、要求和具体条件,采用教师简单讲解,学生自己动手操作的形式。
五、实验条件
计算机一台
六、实验步骤
1、CCSset 的设置
CCS设置程序是用于建立CCS集成开发环境与目标板或simulator之间通信的接口.CCS是一个开放的环境,通过设置不同的驱动完成对不同环境的支持.本教案以CCS2.0为例说明CCS下的驱动设置方法.假设安装路径为: d:ti下,对CCS的 设置如下:
(1)双击桌面上的”setup ccs 2(c5000)”,开始运行程序,回出现如图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)创建工程
运行CCS 5000(54XX Simulaor/CPU)
在Project菜单中选择New项,将弹出Project Creation的窗口
图 1-3 创建工程界面
将新建的工程存入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)生成和运行程序
执行菜单Project->Rebuild All,对文件进行编译,汇编,链接,Output窗口将显示编译,汇编,链接的信息,错误提示等.最后生成*.out文件.编译通过时会出现两个警告.图1-4 Output窗口
执行菜单Project->Load Program,将刚才所生成的*.out文件加载到DSP中,CCS将会自动打开一个反汇编窗口,显示加载程序的反汇编指令.(4)观察程序结果:
分别点击菜单Viex->Memory和Registers可以观察程序执行后存储器的变化,程序执行的结果以及寄存器值的变化情况
七、思考题
1.按照实验要求写出实验报告;将程序显示的结果粘贴到实验报告里面.2.程序调试过程中,出现什么错误,什么原因造成的,怎样改正的?
3.熟悉CCS其他菜单的功能,如何设置断点进行程序调试?
八、实验报告
在实验分析过程中,要对寄存器的变化以及存贮器的分配有仔细的分析,实验报告要将程序结果,存储器和寄存器的结果抓下来。
九、其它说明
1. 学生实验时,应严格准守实验室规则、安全制度和学生实验守则;
2. 认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关规仪器设备,不要做与本实验无关的事情;
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可以观察程序执行后存储器的变化,程序执行的结果以及寄存器值的变化情况.七、思考题
1.按照实验要求写出实验报告;将程序显示的结果粘贴到实验报告里面.2.程序调试过程中,出现什么错误,什么原因造成的,怎样改正的? 3.在小数运算的过程中,小数大于1,比如a2=1.2,程序如何修改.八、实验报告
要求学生按本实验指导书后附的实验报告格式和要求的内容写出实验报告,实验报告应包括实验预习、实验记录和实验报告等三部分内容。
九、其它说明
1. 学生实验时,应严格准守实验室规则、安全制度和学生实验守则;
2. 认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关规仪器设备,不要做与本实验无关的事情;
3. 做好实验预习、实验记录,并按要求按时完成实验报告。
实验三:程序的控制和转移
实验学时:2 实验类型:验证 实验要求:必修
一、实验目的
了解堆栈的使用方法,掌握指令的重复操作,程序的跳转,调用和返回.掌握条件算符组合时候应注意的三点;掌握*.cmd文件,特别是伪指令MEMORY,SECTION的作用.二、实验内容
程序的转移和调用,重复执行,堆栈的使用
三、实验原理、方法和手段
利用软件对指令进行仿真分析。
四、实验组织运行要求
根据本实验的特点、要求和具体条件,采用集中讲解和学生动手的形式。
五、实验条件
安装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、重复操作
下面程序实现对数组进行初始化以后再对每个元素加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. 程序调试过程中,出现什么错误,什么原因造成的,怎样改正的? 3. 简要写出*.cmd文件,特别是伪指令MEMORY,SECTION的作用 4. 试将程序1的运行结果填写的相应的横线上。
八、实验报告
要求学生按本实验指导书后附的实验报告格式和要求的内容写出实验报告,实验报告应包括实验预习、实验记录和实验报告等三部分内容。
九、其它说明
1. 学生实验时,应严格准守实验室规则、安全制度和学生实验守则;
2. 认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关规仪器设备,不要做与本实验无关的事情;
3. 做好实验预习、实验记录,并按要求按时完成实验报告。
实验四:数字式正弦信号发生器
实验学时:2 实验类型:设计型 实验要求:必修
一、实验目的
掌握正弦信号发生器的算法;学会用断点进行程序调试.二、实验内容
利用DSP设计一个正弦信号发生器
三、实验原理、方法和手段
在高等数学中,正弦函数和余弦函数可以展开为泰勒级数,其表达式为: 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)在反汇编窗口直接进行设置.在反汇编窗口,用鼠标直接双击要设置的断点的指令行,即可完成断点的设置.执行的时候可以选择动画运行.在执行前先设置好断点,然后,没执行一次操作命令,就会从当前位置执行到下一个断点处.连续执行操作命令就可以实现动画操作.使用调试菜单”DEBUG”中的”Animate”命令,或者单击调试工具条上的动画执行按 18
纽,用户就可以进行动画操作.3、观察波形
观察存储器和寄存器的内容在实验一中进行了介绍.在此不做赘述了.现在介绍CCS图形工具的使用方法.CCS开发环境提供了多种强大的图形显示工具,可以将内存中的数据以各种图形的方式显示给用户,帮助拥护直观的了解数据的意义.CCS提供了四大类九种图形显示方式: 1)时频图(Time_frequency)单曲线图(Single_time)对数据不做处理,直接绘制显示缓冲区数据的幅度_时间曲线
双曲线图(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”
点击”OK”来观察图象.19
图4-1 产生的正弦波形
七、思考题
按照实验要求写出实验报告;将程序显示的结果粘贴到实验报告里面.如何设置断点进行程序调试? 要产生周期性的三角波,或者锯齿波,程序如何实现?
八、实验报告
要求学生按本实验指导书后附的实验报告格式和要求的内容写出实验报告,实验报告应包括实验预习、实验记录和实验报告等三部分内容。
九、其它说明
1. 学生实验时,应严格准守实验室规则、安全制度和学生实验守则;
2. 认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关规仪器设备,不要做与本实验无关的事情;
3. 做好实验预习、实验记录,并按要求按时完成实验报告。
实验五:FIR数字滤波器
实验学时:2 实验类型:设计
实验要求:选修
一、实验目的
了解FIR的MATLAB设计方法
掌握FIR的DSP实现方法,熟练掌握循环寻址指令.二、实验内容
设计一个31阶的低通FIR滤波器,其截止频率为0.6。
三、实验原理、方法和手段
FIR滤波器的差分方程: N1(5-1)i0 其中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(ni)
在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函数在重复频率点附近插入的区域大小。 【例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 文件加载入系统中,在反汇编窗口,设置探测点,如下: 图5-1 输入数据加载断点设置 然后在FILE菜单中选择出数据、加载到输入、输出断口。 最后观察滤波前后的频谱图分别如下: 功能,会弹出如下对话框,可以分别将输入数据输 25 七、思考题 试用此参数设计一个高通滤波器,并用DSP实现。 八、实验报告 要求学生按本实验指导书后附的实验报告格式和要求的内容写出实验报告,实验报告应包括实验预习、实验记录和实验报告等三部分内容。 九、其它说明 1. 学生实验时,应严格准守实验室规则、安全制度和学生实验守则; 2. 认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关规仪器设备,不要做与本实验无关的事情; 3. 做好实验预习、实验记录,并按要求按时完成实验报告。 实验六:IIR数字滤波器 实验学时:2 实验类型:设计 实验要求:选修 一、实验目的 了解IIR滤波器的原理及使用方法 了解使用MATLAB语言设计IIT滤波器的方法 掌握DSP对IIR对滤波器的设计及编程方法 熟悉在CCS环境下对IIR滤波器的调试方法 二、实验内容 要求设计一个采样频率为1200Hz,截止频率为200Hz的高通滤波器.输入信号频率为100Hz和300Hz的合成信号,目的是同过所设计的滤波器的将100Hz的信号滤除掉,余下300Hz的信号成分,达到滤波效果.三、实验原理、方法和手段 IIR数字滤波器的输入x(k)和输出y(k)的关系可以用如下常系数线性差分方程及其Z变换描述,即 y(k)=(6-1)bx(ki)ay(ki)i0Mii1Ni 系统的传递函数为 b0b1z...bnz H(Z)=(6-2) 1N1a1z1...anzM 四、实验组织运行要求 教师简单讲解,学生调试程序,教师全程辅导 五、实验条件 安装CCS和MATLAB的电脑一台 六、实验步骤 1、MATLAB的滤波器设计 在MATLAB中使用滤波器设计工具箱(FDA)来设计滤波器,首先打开MATLAB,在命令窗口输 27 入FDAtool, 将出现滤波器设计工具箱.下图是打开的滤波器设计的主要界面,通过输入有关参数可以设计各种滤波器,包括滤波器的类型,阶数,截止频率(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 } 编译,调试程序,生成了执行文件*.out,然后载入*.out文件,运行.4)运行后,观察输入数据的时域和频域的波形如下: 图 6-2 滤波前信号的时域图 图 6-3 滤波前信号的频域图 图 6-4 滤波后信号的时域图 图 6-5 滤波后信号的频域图 七、思考题 试设计一个低通滤波器,滤除300Hz的信号.其它要求同实验 八、实验报告 要求学生按本实验指导书后附的实验报告格式和要求的内容写出实验报告,实验报告应包括实验预习、实验记录和实验报告等三部分内容。 九、其它说明 1. 学生实验时,应严格准守实验室规则、安全制度和学生实验守则; 2. 认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关规仪器设备,不要做与本实验无关的事情; 3. 做好实验预习、实验记录,并按要求按时完成实验报告。 实验七:图象的伽玛增强 实验学时:2 实验类型:设计 实验要求:选修 一、实验目的 了解伽玛(Gamma)矫正的原理 掌握如何从文件读入数据到内存 掌握在CCS下图象的 输入和输出 二、实验内容 本实验要求对一个已经准备好的图象能够进行伽玛矫正,γ值为1.54,设计一个程序,用查表的方式对图象进行矫正,比较伽玛矫正前后的效果.三、实验原理、方法和手段 伽玛矫正实质上就是矫正亮度,在灰度图中就是灰度矫正.这个过程是简单的,不需要实时处理.可以通过查表来进行,创建一个查找需要用的空间很少.伽玛矫正的计量单位用γ(γ通常是大于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语言开发的DSP应用程序的运行支持库.3.编译,链接和运行程序 编译成功后,可以通过View_Watch Windows,或者单击工具栏上的窗口 图标.选择观测 38 图7-1,观测到的向量 4.将要校正的图象从文件读入到内存: 1)执行菜单命令File_Data_Load,将打开如图所示的对话框,将要校正的图象tire.dat读入到内存.图7-2 读图第一步 点击‟打开‟,将会出现如下一个对话框: 图7-3 读图第二步 由前图知道in-buffer(校正前的图片在内存中定义的地址)为0x00A5,长度为4096即0x1000, 5.显示校正前和校正后的图象 程序运行后执行View_Graph下的Image命令 图7-4 读图设置图 图7-5 校正之前的图 图7-6 校正之后的图 七、思考题 图形增强还有什么算法?如何实现? 八、实验报告 要求学生按本实验指导书后附的实验报告格式和要求的内容写出实验报告,实验报告应包括实验预习、实验记录和实验报告等三部分内容。 九、其它说明 1. 学生实验时,应严格准守实验室规则、安全制度和学生实验守则; 2. 认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关规仪器设备,不要做与本实验无关的事情; 3. 做好实验预习、实验记录,并按要求按时完成实验报告。 实验八:FIR数字滤波器 实验学时:2 实验类型:设计 实验要求:选修 一、实验目的 了解FFT的原理和算法 掌握DSP中FFT的设计和编程方法 熟悉FFT的调试方法 二、实验内容 本实验要求使用FFT变换求一个时域的频域特定,并从这个频域求出该信号的频率值,然后使用DSP汇编语言实现对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)ej(2/N)nkn0n1 令WM=e-j(2∏/N)nk 然而对于相当大的N值(比如1024)来说,直接计算它的DFT所需要的计算量很大.因此我们采用优化的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运算量的一半。上述方法反复使用,在组合和拆分的操作中,FFT的算法量均减半。 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的间接寻址的位倒序寻址来实现。2)W因子的生成和分布规律 在FFT中,乘法主要来自旋转因子,因为W=cos(2πr/N)-jsin(2πr/N), 所以在对W r r相乘时,必须产生相应的正,余弦函数。在编程序时候,正,余弦函数产生的方法一般有两种:一种是在每一步直接产生,另一种是在程序开始前预先计算出来将W,将r=0,1,….N-1这N个独立的值存放在数组中,等于直接建立一个表,在程序执行的过程中,可直接查表得到,提高运算速度,但要占用更多的内存。W的一般规律为: r r在第m级:,r=0,1,2,…….2 2m1wrm 四、实验组织运行要求 教师简单讲解,学生调试程序,教师全程辅导 五、实验条件 安装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,在它的下一条语句设置断点然后执行Debug_restart.然后观察位码倒置后的波形。如图8-3所示 观察进行FFT变换后的波形如图8-4所示 如果将上图的Dsplay Type栏中该为FFT Magnitude,就等于作了依次FFT反变换,得到如图所示的结果.如图8-5所示 图8-3 位倒码以后的波形图 图8-4 FFT以后的波形图 图8-5 FFT变换后的频谱图 七、思考题 探测点有何作用?如何设置探测点? 八、实验报告 要求学生按本实验指导书后附的实验报告格式和要求的内容写出实验报告,实验报告应包括实验预习、实验记录和实验报告等三部分内容。 九、其它说明 1. 学生实验时,应严格准守实验室规则、安全制度和学生实验守则; 2. 认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关规仪器设备,不要做与本实验无关的事情; 3. 做好实验预习、实验记录,并按要求按时完成实验报告。 实验九:控制XF引脚周期性变化 实验学时:2 实验类型:设计 实验要求:选修 一、实验目的 学习定时器的初始化步骤 掌握定时中断原理和中断调用的流程 掌握中断向量表的设置 二、实验内容 本实验要求利用中断系统和定时期设计一个周期为2ms的方波,并通过CCS图像观测器观测出来。 三、实验原理、方法和手段 中断是由外部设备向CPU传送数据,或者由外部设备向CPU提出数据产生的。具体是指当某个事件发生时,暂停当前的操作,转向中断服务程序,执行完后再返回继续原来的操作。这使得DSP能够处理多个任务。CPU执行中断服务程序(ISR)步骤如下: 1 保护现场,将PC值压入栈顶; 载入中断矢量表,将中断矢量表地址送入PC; 3执行中断矢量表,程序将进入ISR入口; 4 执行ISR,直至遇到返回指令; 5 回复现场,将栈顶值返回PC; 6 继续主程序。 定时器初始化初始化步骤: 1 关闭定时期,TCR中的TSS=1。2 加载PRD。 启动定时器,初始化TDDR,TSS=0,TBB=1。4 打开可屏蔽中断.四、实验组织运行要求 教师简单讲解,学生调试程序,教师全程辅导 五、实验条件 第一章 实验系统介绍 一、系统概述 EL-DSP-EXPII教学实验系统属于一种综合的教学实验系统,该系统采用双CPU 设计,实现了DSP 的多处理器协调工作。两个DSP 通过HPI 口并行连接,CPU1可以通过HPI 主机接口访问CPU2的存储空间。该系统采用模块化分离式结构,使用灵活方便用户二次开发。客户可根据自己的需求选用不同类型的CPU 适配板,我公司所有CPU 适配板是完全兼容的,用户在不需要改变任何配置情况下,更换CPU 适配板即可作TI 公司的不同类型的DSP 的相关试验。除此之外,在实验板上有丰富的外围扩展资源(数字、模拟信号发生器,数字量IO 扩展,语音CODEC 编解码、控制对象、人机接口等单元),可以完成DSP 基础实验、算法实验、控制对象实验和编解码通信试验。 EL-DSP-EXPII 教学实验系统功能框图 二、硬件组成 该实验系统其硬件资源主要包括: ● 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个系统时钟。因此要求适当的配置复位电路RC 网络。时钟电源主要利用数字信号处理器内部晶振源,并通过外部锁相环控制电路,选择适当倍频倍数,为CPU 内部提供系统时钟。 2、数字量输入输出单元 ● 8bit 的数字量输入(由八个带自锁的开关产生),通过74LS244缓冲;8bit 的数 字量输出(通过八个LED 灯显示),通过74LS273锁存。数字量的输入输出都映射到CPU 的IO 空间。 ● 数字量显示的八个LED 数码管,通过HD7279控制。 3、存储器及信号扩展单元: 静态存储器SRAM(IS61C256 32K×8bit 在该实验板上,使用的存储器接口芯片是ISSI 公司的IS61C256,它具有以下特点: ● 访问速度10、12、15、20、25ns 可选; ● 低功耗:400mW(典型); ● 低静态功耗 -250μW(典型)CMOS 器件;-55mW(典型)TTL 器件; ● 全静态操作,无需时钟或刷新; ● 输入输出和TTL 电平兼容; ● 单5V 供电。 静态存储器分为两个部分, 一部分是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 ● 低功耗:典型静态CMOS 电流20μA ● 单5V 供电 ● 供电电压可在±10%变化 ● 典型编程时间4S ● 100mA 闩锁保护从-1V 到V CC + 1V ● 高噪声门限 ● CMOS/TTL 输入/输出电平兼容 ● 标准28脚DIP、PDIP 封装或32脚PLCC 封装 板上芯片序号U24用来存放用户程序,可以通过选择CPU 板上的MP/MC_______ 来选择bootloader 模式。出厂时存储器内固化了系统测试程序,上电后可对系统硬件进行自动测试。在本系统中采用并行存储器引导模式。 5、语音处理单元 语音CODEC 采用TLC320AD50芯片。该芯片采用sigma-delta 技术提供高精度低速信号变换,有两个串行同步变换通道、D/A转换前的差补滤波器和A/D变换后的滤波器。其他部分提供片上时序和控制功能。Sigma-delta 结构可以实现高精度低速的数模/模数转换。芯片的各种应用软件配置可以通过串口来编程实现。主要包括:复位、节电模式、通信协议、串行时钟速率、信号采样速率、增益控制和测试模式。最大采样速率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、液晶模块 本实验系统选用中文液晶显示模块LCM12864ZK,其字型ROM 内含8192个16*16 点中文字型和128个16*8半宽的字母符号字型;另外绘图显示画面提供一个64*256点的绘图区域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 下载接口。可用XILINX 公司的软件,通过并口下载电缆对CPLD 在线编程。 D2、D3为CPLD 工作指示灯,正常工作时D2、D3点亮。CPU1复位时,D3不亮,CPU2复位时,D2不亮。 8、D/A转换单元 数模转换采用DAC08芯片,分辨率8位,精度1LSB,转换时间可达85ns。DAC08 可以应用在8-bit, 1 us A/D变换,伺服电机、波形发生、语音编码、衰减器、可编程功率变换器、CRT 显示驱动、高速modems 以及其他要求低成本、高速等多功能场合。在本实验系统中,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以內。可应用在数据采样、DSP 系统及移动通信等场合。在本实验系统中,参考电压源+2.5V,偏置电压输入引脚Vmid=+2.5V。模拟输入信号经过运放处理后输入AD7822。 AD7822编码图 模数单元原理框图 模数转换单元拨码开关说明: J12: AD输入端子 J23:地 拨码开关其它设置状态为非法状态 10、信号源单元 频率、幅值可调双路三角波、方波和正弦波产生电路采用两片8038信号发生器,输出频率范围20~100KHz,幅值范围-10V~+10V。输出波形、频率范围可通过波段开关来选择。频率、幅值可独立调节。两路输出信号可以经过加法器进行信号模拟处理和混叠,作为信号滤波处理的混叠信号源。混叠后的信号从信号源1输出。 ICL8038原理框图 信号源单元原理框图 信号源单元波段开关说明: 波形选择波段开关拨到底板丝印的相应位置选择对应的波形(正弦、三角、方波),频率选择波段开关拨到底板丝印的相应位置选择对应的频率范围(0~2K、2K~10K、10K~120K)。 信号源单元电位器说明: J8:信号源1输出 J7:信号源2输出 J5:地 11、温度控制单元 由温度信号采集单元、加热信号驱动单元、模拟温箱加热控制电路组成。温度信号采集单元电路的热敏电阻的阻值随温度的变化而变化,经运放处理,输出一个 电压变化(逐渐减小 的温度信号给系统板的A/D采集输入端;加热信号驱动单元将系统板送来的加热信号分两路处理:一路放大后驱动加热指示二极管发光;另一路经隔离后驱动可控硅导通。模拟温箱加热控制电路由加热信号隔离电路、AC220V 控制电路(可控硅)输出电路组成。 温度控制单元拨码开关说明: J10:温度控制单元反馈电压输出 J11:地 LED18:+12V电源指示灯。 12、步进电机单元 步进电机多为永磁感应式,有两相、四相、六相等多种,实验所用的电机为两相四拍式,通过对每相线圈中的电流的顺序切换来使电机作步进式旋转,驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。脉冲信号是有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、直流电机单元 该单元由电压调整、驱动电路、速度检测反馈电路组成。由系统板送来的电压信号与可调节的基准电压经加法运算后,输出驱动直流电机运行;速度检测、反馈电路由于电机同轴转的转盘上的强力磁钢、霍尔磁感应放大器、单周期速度信号采集器组成,当与电机同轴运行的转盘上的磁钢与霍尔片正对时,霍尔片输出负电压,经整形、放大,供系统采集。 J9:直流电机控制脉冲输入端 J13:地 LED15:中断反馈指示灯; 14、键盘接口 键盘接口是由芯片HD7279按制的,HD7279是一片具有串行接口的,可同时驱动8位共阴式数码管或(64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵, 单片即可完成LED 显示, 键盘接口的全部功能。HD7279A 内部含有译码器,可直接接受BCD 码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。HD7279A 具有片选信号,可方便地实现多于8 C D 位的显示或多于64键的键盘接口。在该实验系统中,仅提供了16个键。 15、其它接口说明 电源单元:为系统提供+5V、+12V、-12V、+3.3V电源 JTAG 接口: K1:非自锁按键,每按一下产生一个负的脉冲。 综上所述,本章介绍了该系统的硬件资源,看完本章内容,应该对实验系统有一个基本的了解,在余下的几章中将会结合实验详细介绍,每个单元在实验中的具体应用。 第二章 调试软件安装说明 一、CCS 的安装 利用CCS 集成开发环境,用户可以在一个开发环境下完成工程定义、程序编辑、编译链接、调试和数据分析等工作环节。下图为典型CCS 集成开发环境窗口示例。整个窗口由主菜单、工具条、工程窗口、编辑窗口、图形显示窗口、内存单元显示窗口和寄存器显示窗口等构成。 以安装CCS5000(2.0)为例: 1、CCS 软件安装系统要求 要使用Code Composer Studio操作平台必须满足以下的要求: ● IBM PC(或兼容机 ● Microsoft Window95/98/ NT 4.0/2000/XP ● 32M 内存,100M 硬盘空间, 奔腾处理器,SVGA(800*600 2、Code Composer Studio的安装 (1 安装CCS 到系统中。将CCS 安装光盘放入到光盘驱动器中,运行CCS 安装程 序setup.exe。出现以下画面。如果在WindowsNT 下安装,用户必须要具有系 统管理员的权限。 选择NEXT,按系统提示安装,默认安装路径是“C :ti”。(2 安装完成后,在桌面上会有“CCS 2(‘C5000)”和“Setup CCS 2(‘C5000)”两个快捷方式图标。分别对应CCS 应用程序和CCS 配置程序。 (3如果用户的操作系统为Windows 95,则可能需要增加环境变量空间。方法是将语句“shell=c:\windows \command .com /e :4096/p" 添加到C 盘根目录下的 CONFIG .SYS 文件中,然后重新启动计算机。这条语句将环境变量空间设置为4096字节。 二、CCS 的设置 安装CCS 软件与普通的程序安装类似,没有特殊要求。下面介绍安装完成后如何设 置CCS 软件。如果CCS 是在硬件目标板上运行,则先要安装目标板驱动程序,然后运行“CCS Setup ”配置驱动程序,最后才能执行CCS。除非用户改变CCS 应用平台类型,否则只需运行一次CCS 配置程序。运行Code Composer Studio Setup软件(即桌面上的Setup CCS2(C5000)图标。 点击Install a Device Driver,选择相应驱动程序.例如: 5X 系列: PCI开发器为xdspci54x.dvr;ISA 开发器为wtxds54xisa.dvr EPP 开发器为sdgo5xx32.dll 2X 系列: PCI开发器为xdspci2xx.dvr ISA 开发器为wtxds2xxisa.dvr EPP 开发器为sdgo2xx32.dll 3X 系列: PCI开发器为xds3xPCI.dvr ISA 开发器为wtxds3xisa.dvr EPP 开发器为Sdgo3x32.dll 此时,Available Board/Simulator Type一栏中会出现相应的驱动图标; 把该图标拖动到最左边的System Configuration一栏中.出现Board Properties对话框 .点击NEXT, 进入下一页,会显示板卡的I/O口值,修改为0x378(ISA、PCI、USB 仿真器不用修改,再点击NEXT,在Processor Configuration窗中, 在Available Processor中选择TMS320C54XX 然后, 点击Add Single;对话框右边出现CPU_1图标.点击NEXT, 进入下一页,提示选择一个初始化的.GEL 文件,对于5000系列的DSP 芯片,可选择5402、5409、5410等。 最后, 点击finish.关闭CCS 程序, 选择保存。至此CCS 安装设置完成。第三章 硬件安装说明 硬件仿真器是进行系统开发的必备工具,它是采用边界扫描技术和CPU 芯片通过JTAG 口相连接。实现了主机对CPU 芯片的完全检测和控制。可以通过JTAG 和相应的软件调试环境实现系统的硬件调试和软件的再现调试开发工作。 一、DSP 硬件仿真器的安装 第一步、取出开发系统,检查是否齐全 ● EPP 开发系统 A . 关闭PC 机电源,将专用电缆插入并口中,注意插接要稳固。B . 用+5V稳压电源通过电源插口给仿真器供电。C .启动PC 机,安装新硬件,驱动程序eppdrive.zip ● USB 开发系统 A .关闭PC 机电源,将专用电缆插入USB 口中,注意插接要稳固。B .启动PC 机,安装新硬件,驱动程序usbdrive.zip ● PCI 开发系统 A .关闭PC 机电源,取下机箱盒,将PCI 卡插入PCI 插槽中,注意插接要稳固。 B .启动PC 机,安装新硬件,驱动程序为pcitfsetup.zip C .安装好PCI 卡后,用37针专用连线,连接PCI 卡与连接仿真盒,再将仿真 盒另一端,连好JTAG 接线。 第二步、将以安装好的仿真器JTAG 线,插入CPU 板上的JTAG 接口。至此,硬件仿真器安装完成。 二、DSP 硬件仿真器的使用 硬件仿真器的用法比较简单,只要将JTAG 口连接正确,DSP 芯片能够正常工作并且软件调试环境配置正确即可以应用。下面给出JTAG 的定义: 注意第六脚是空脚。 接通电源,把实验箱后方的电源开关打到“1”位置,实验箱通电,实验箱电源单元 的指示灯LED1、2、3、4指示灯点亮。 双击桌面上的CCS2(‘C5000)图标,进入CCS 软件界面,可以开始。进行程序的开发和调试。 第四章 常规实验指导 实验一 常用指令实验 一、实验目的 1、了解DSP 开发系统的组成和结构; 2、熟悉DSP 开发系统的连接; 3、熟悉DSP 的开发界面; 4、熟悉C54X 系列的寻址系统; 5、熟悉常用C54X 系列指令的用法。 二、实验设备 计算机,CCS 2.0版软件,DSP 仿真器,实验箱。 三、实验步骤与内容 1、系统连接 进行DSP 实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示: 2、上电复位 在硬件安装完成后,确认安装正确、各实验部件及电源连接正常后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小灯”应点亮,否则DSP 开发系统与计算机连接有问题。 3、运行CCS 程序 待计算机启动成功后,实验箱220V 电源置“ON ”,实验箱上电,启动CCS,此时仿真器上的“绿色小灯”应点亮,并且CCS 正常启动,表明系统连接正常;否则仿真器的连接、JTAG 接口或CCS 相关设置存在问题,掉电,检查仿真器的连接、JTAG 接口连接,或检查CCS 相关设置是否正确。 注:如在此出现问题,可能是系统没有正常复位或连接错误,应重新检查系统硬件并复 位;也可能是软件安装或设置有问题,应尝试调整软件系统设置,具体仿真器和仿真 软件CCS 的应用方法参见第三章。 ●成功运行程序后,首先应熟悉CCS 的用户界面 ●学会CCS 环境下程序编写、调试、编译、装载,学习如何使用观察窗口等。 4、修改样例程序,尝试DSP 其他的指令。 注: 实验系统连接及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 仿真器,实验箱。 三、实验系统相关资源介绍 本实验指导书是以TMS32OVC5402为例,介绍相关的内部和外部存储器资源。对于其他类型的CPU 请参考查阅相关的数据手册。 下面给出TMS32OVC5402的存储器分配表: 对于数据存储空间而言,映射表相对固定。值得注意的是内部寄存器都映射到数据存储空间内。因此在编程应用是这些特定的空间不能作其他用途。对于程序存储空间而言,其映射表和CPU 的工作模式有关。当MP/MC引脚为高电平时,CPU 工作在微处理 器模式;当MP/MC引脚低电平时,CPU 工作在为计算机模式。具体的存储器映射关系如上如所示。 存储器试验主要帮助用户了解存储器的操作和DSP 的内部双总线结构。并熟悉相关的指令代码和操作等。 四、实验步骤与内容 1、连接好DSP 开发系统,运行CCS 软件; 2、在CCS 的Memory 窗口中查找C5402各个区段的数据存储器地址,在可以改变 的数据地址随意改变其中内容; 3、在CCS 中装载实验示范程序,单步执行程序,观察程序中写入和读出的数据存 储地址的变化; 4、联系其他寻址方式的使用。 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、了解数字量与模拟量的区别和联系。 二、实验设备 计算机,CCS 2.0版软件,DSP 仿真器,实验箱。 三、实验步骤与内容 1、运行CCS 软件,装载示范程序,分别调整数字输入单元的开关K2~K9,观察 LED7~LED14亮灭的变化,以及输入和输出状态是否一致。 2、样例程序实验操作说明 启动CCS 2.0,并加载“exp03.out ”; 单击“Run ”运行程序; 任意调整K2~K9开关,可以观察到对应LED7~LED14 灯“亮”或“灭”;单击“Halt ”,暂停持续运行,开关将对灯失去控制; 关闭所有窗口,本实验完毕。 源程序查看:用下拉菜单中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位的减法计数器,可以被特定的状态位实现停止、重新启动、重设置或禁止,可以使用该定时器产生周期性的CPU 中断,控制定时器中断频率的两个寄存器是定时周期寄存器PRD 和定时减法寄存器TDDR。 在本系统中,如果设置时钟频率为20MHZ,令PRD = 0x4e1f,这样得到每1/1000秒中断一次,通过累计1000次,就能定时1秒钟。 实验五 INT2中断实验 一、实验目的 1. 掌握中断技术,学会对外部中断的处理方法; 2. 掌握中断对程序流程的控制,理解DSP 对中断的响应时序。 二、实验设备 计算机,CCS 2.0版软件,DSP 仿真器,实验箱 三、实验步骤和内容 1、低电平单脉冲触发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单片机学习开发板一块 2. PC微机一台 四. 实验步骤 1. 打开编译软件伟煌MCS51开发系统。 2. 编写源程序并进行调试。要求:小灯先向左依次移动8次,再向右依次移动7次,随后循环前面的工作。 3. 将S51E开发板连接到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.打开开发板电源,用软件将调试好的程序下载至单片机中,观察实验现象。 五.实验参考程序 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单片机学习开发板一块 2.PC微机一台 四.实验步骤 1. 打开编译软件伟煌MCS51开发系统。 2. 编写源程序并进行调试。要求:学习利用查表方式,使小灯做舞台灯效果的变化,左移3次,右移3次,闪烁3次,廷时时间为200毫秒。3. 将S51E开发板连接到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.打开开发板电源,用软件将调试好的程序下载至单片机中,观察实验现象。 五.实验参考程序 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单片机学习开发板一块 2.PC微机一台 四.实验步骤 1.打开编译软件伟煌MCS51开发系统。 2.编写源程序并进行调试。要求:利用按键的方式,控制小灯的亮灭,按键后小灯亮,再次按键后小灯灭。了解人为按键的自然规律:由于单片机的指令执行很快,按键必须进行延时来消除抖动,并要求在按键后执行子程序的最后加入一条指令检测按键是否放下。3.将S51E开发板连接到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.打开开发板电源,用软件将调试好的程序下载至单片机中,按动键盘观察实验现象。 五.实验参考程序 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单片机学习开发板一块 2.PC微机一台 四.实验步骤 1.打开编译软件伟煌MCS51开发系统。 2.编写源程序并进行调试。要求:当主程序运行后,小灯一直在做右移循环运动,当按键发生后则触发了中断1,开始执行中断1的服务子程序,小灯全部闪烁10次,然后再返回主程序,继续原来的循环。 3.将S51E开发板连接到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.打开开发板电源,用软件将调试好的程序下载至单片机中,按动键盘观察实验现象。 五.实验参考程序 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单片机学习开发板一块 2.PC微机一台 四.实验步骤 1.打开编译软件伟煌MCS51开发系统。 2.编写源程序并进行调试。要求:当主程序运行后,用51单片机定时器中断来令小灯每隔1秒就左移一次。 3.将S51E开发板连接到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.打开开发板电源,用软件将调试好的程序下载至单片机中,观察实验现象。 五.实验参考程序 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 实验六 中断优先级实验 一.实验项目卡编号:59010115-06 二.实验目的 1.学习设置51单片机的中断优先级。 2.学习如何使用编程来调用中断服务子程序的整个过程。三.实验设备 1.S51E单片机学习开发板一块 2.PC微机一台 四.实验步骤 1.打开编译软件伟煌MCS51开发系统。2.编写源程序并进行调试。要求:当主程序运行后,首先P1的8个LED每隔1秒就左移一次,当按键后8个LED闪烁5次。 3.将S51E开发板连接到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.打开开发板电源,用软件将调试好的程序下载至单片机中,按动键盘观察实验现象。 五.实验参考程序 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单片机学习开发板一块 2.PC微机一台 四.实验步骤 1.打开编译软件伟煌MCS51开发系统。 2.编写源程序并进行调试。要求:实验中通过RS232的自收自发对小灯进行右移控制。3.将S51E开发板连接到PC机上。 将89S51的引脚RXD(P3.0)与TXD(P3.1)引脚对接。 4.打开开发板电源,用软件将调试好的程序下载至单片机中,观察实验现象。 五.实验参考程序 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 实验八 八段数码管动态显示实验 一.实验项目卡编号:59010115-08 二.实验目的 1.掌握数码管的显示原理。2.掌握动态显示的控制原理。三.实验设备 1.S51E单片机学习开发板一块 2.PC微机一台 四.实验步骤 1.打开编译软件伟煌MCS51开发系统。 2.编写源程序并进行调试。要求:实验中能在开发板的两个数码管上显示99倒记时。3.将S51E开发板连接到PC机上。 89S51与数码管显示器对应引脚的联机为: 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.打开开发板电源,用软件将调试好的程序下载至单片机中,观察实验现象。 五.实验参考程序 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单片机学习开发板一块 2.PC微机一台 四.实验步骤 1.打开编译软件伟煌MCS51开发系统。 2.编写源程序并进行调试。要求:实验中模拟交通灯红灯先亮10秒时间,接着黄灯亮3秒时间,随后绿灯再亮10秒时间。 89S51与数码管显示器对应引脚的联机为: 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.打开开发板电源,用软件将调试好的程序下载至单片机中,观察实验现象。 五.实验参考程序 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单片机学习开发板一块 2.PC微机一台 四.实验步骤 1.打开编译软件伟煌MCS51开发系统。 2.编写源程序并进行调试。要求:实验中模拟交通灯红灯先亮10秒时间,接着黄灯亮3秒时间,随后绿灯再亮10秒时间。 89S51与数码管显示器对应引脚的联机为: 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.打开开发板电源,用软件将调试好的程序下载至单片机中,观察实验现象。 五.实验参考程序 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频率采样法 频率采样法是从频域出发,将给定的理想频率响应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实验5