第一篇: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 打开可屏蔽中断.四、实验组织运行要求 教师简单讲解,学生调试程序,教师全程辅导 五、实验条件 一 基础实验: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底下看输出数据波形情况有何变化。 第一章 实验系统介绍 一、系统概述 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灯亮灭不变化; 实验五 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实验报告心得体会 tms320f2812x dsp原理及应用技术实验心得体会 1.设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是 软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。 2.在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上的型 号去添加。 3.不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。设置好的配置中 只能有一项。4.ccs可以工作在纯软件仿真环境中,就是由软件在pc机内存中构造一个虚拟的 dsp环境,可以调试、运行程序。但是一般无法构造dsp中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。 5.这次实验采用软件仿真,不需要打开电源箱的电源。 6.在软件仿真工作时,无需连接板卡和仿真器等硬件。 7.执行write_buffer一行时。如果按f10执行程序,则程序在mian主函数中运行,如果按f11,则程序进入write_buffe函数内部的程序运行。 8.把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变 量,就可以看到结构体变量中的每个元素了。 9.在实验时,显示图形出现问题,不能显示,后来在graph title 把input的大写 改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。 10.在修改了实验2-1的程序后,要重新编译、连接执行程序,并且必须对.out 文件进行重新加载,因为此时.out文件已经改变了。如果不重新加载,那么修改执行程序后,其结果将不会改变。11.再观察结果时,可将data和data1的窗口同时打开,这样可以便于比较,观察 结果。 12.通过这次实验,对tms320f2812x dsp软件仿真及调试有了初步的了解与认识,因为做 实验的时候都是按照实验指导书按部就班的,与真正的理解和掌握还是有些距离的。但是这也为我们日后运用这些知识打下了基础,我觉得实验中遇到的问题,不要急于问老师或者同学,先自己想办法分析原因,想办法解决,这样对自身的提高更多吧。通过做实验,把学习的知识利用起来,也对这门课程更加有兴趣了。 组员:叶孝璐 冯焕芬 郑玮仪 庞露露 2012年4月10号 篇二:dsp实验报告+心得体会 龙 岩 学 院 实 验 报 告 班 级 07电本(1)班 学号 2007050344 姓 名 杨宝辉 同组人 独立 实验日期 2010-5-18 室温 大气压 成 绩 基础实验 一、实验目的 二、实验设备 三、实验原理 浮点数的表达和计算是进行数字信号处理的基本知识;产生正弦信号是数字信号处理1.一台装有ccs软件的计算机; 2.dsp实验箱的tms320f2812主控板; 3.dsp硬件仿真器。1.掌握ccs实验环境的使用; 2.掌握用c语言编写dsp程序的方法。中经常用到的运算;c语言是现代数字信号处理表达的基础语言和通用语言。写实现程序时需要注意两点:(1)浮点数的范围及存储格式;(2)dsp的c语言与ansi c语言的区别。 四、实验步骤 1.打开ccs 并熟悉其界面; 2.在ccs环境中打开本实验的工程(example_base.pjt),编译并重建.out 输出文件,然后通过仿真器把执行代码下载到dsp芯片中; 3. 把x0 , y0 和z0添加到watch窗口中作为观察对象(选中变量名,单击鼠标右键,在弹出菜单中选择“add watch window”命令); 4. 选择view->graph->time/frequency„。设置对话框中的参数: 其中“start address” 设为“sin_value”,“acquisition buffer size”和“display data size”都设为“100”,并且把“dsp data type”设为“32-bit floating point”,设置好后观察信号序列的波形(sin函数,如图); 5. 单击运行; 6. 观察三个变量从初始化到运算结束整个过程中的变化;观察正弦波形从初始化到运算结束整个过程中的变化; 7. 修改输入序列的长度或初始值,重复上述过程。 五、实验心得体会 通过本次实验,加深了我对dsp的认识,使我对dsp实验的操作有了更进一步的理解。基本掌握了ccs实验环境的使用,并能够使用c语言进行简单的dsp程序设计。 从软件的安装到使用软件进行程序设计与仿真,锻炼了自己的动手能力,也遇到了不少的坎坷,例如芯片的选择,不能因为麻烦而省略该步骤,否则将会运行出错。 附录实验程序: #include math.h #include stdio.h #define n 100 #define pi 3.14159 float sin_value[100];float x0,y0,z0;void main(void){ int i;for(i=0;i /* 0.100 0000 0000 0000 */ z0=x0*y0; /* 00.01 0000 0000 0000 0000 0000 0000 0000 */ for(i=0;i 实 验 报 告 班 级 07电本(1)班 学号 2007050344姓 名 杨宝辉 同组人 独立 实验日期 2010-5-20 室温 大气压 成 绩 数码管控制实验 一、实验目的 1.2.3.熟悉2812的指令系统; 熟悉74hc573的使用方法。熟悉dsp的io操作使用方法。 二、实验设备 1.一台装有ccs2000软件的计算机; 2.插上2812主控板的dsp实验箱; 3.dsp硬件仿真器。 三、实验原理 此模块由数码管和四个锁存器组成。数码管为共阴极型的。数据由2812模块的低八位输入,锁存器的控制信号由2812模块输出,但经由cpld模块译码后再控制对应的八个 四、实验步骤 1.把2812模块小板插到大板上; 2.在ccs2000环境中打开本实验的工程编译example_7segled.prj,生成输出文件,通过仿真器把执行代码下载到dsp芯片; 3.运行程序;数码管会显示1~8的数字。 4.参考源代码自行修改程序改变显示样式。 五、实验心得体会 通过本次实验中,基本掌握了2812的指令系统的特点,并能够了解并熟悉74hc573的使用方法,进一步加深了对dsp的认识。同时,通过实验操作dsp的io操作使用方法,对于dsp的io操作可以熟悉的运用,学到更多的知识。 程序见附录: #include include/dsp281x_device.h // dsp281x headerfile include file #include include/dsp281x_examples.h // dsp281x examples include file // prototype statements for functions found within this file.void delay_loop(void);void gpio_select(void);// global variable for this example short codetab[17]= {0x4020,0x6cc0,0x5800,0x4840,0x6440,0xc040,0xc000,0x4cc0, 0x4000,0x4040,0x4400,0xe000,0xd080,0xe800,0xd000,0xd400,0xffff};main(){ short i;// step 1.initialize system control: // pll, watchdog, enable peripheral clocks // this example function is found in the dsp281x_sysctrl.c file.initsysctrl();// specific clock setting for this example: 篇三:dsp实验学习心得 dsp实验学习心得 论dsp发展前景 dsp 即为数字信号处理器(digital signal processing),是在模拟信号变换成数 字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换 成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器(digital signal processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特 点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥 越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成 功应用。dsp 数字信号处理器 dsp 芯片采用了数据总线和程序总线分离的哈佛结构及改 进的哈佛结构,较传统处理器的冯?诺依曼结构具有更高的指令执行速度。其处理速度比最 快的 cpu 快 10-50 倍。在当今数字化时代背景下,dsp 已成为通信、计算机、消费类电 子产品等领域的基础器件,被誉为信息社会革命的“旗手”。 最初的 dsp 器件只是被设计成用以完成复杂数字信号处理的算法。dsp 器件 紧随着数字信号理论的发展而不断发展。dsp发展最快,现在的 dsp 属于第五代产品,它与第四代相比,系统集成度更高,将 dsp 芯核及外围组件综合集成在单一芯片上。这种集成度极高的 dsp 芯片不仅在通信、计算机领域大显身手,而且逐渐渗透 到人们日常消费领域,前景十分可观。近年来,随着通信技术的飞速发展,dsp已经成为信号与信息处理领域里一门十分重要的新兴学科,它代表着当今无线系统的主流发展方向。现在,通信领域中许多产品 都与 dsp 密切联系,例如,modem、数据加密、扩频通信、可视电话等。而寻找 dsp 芯片来实现算法最开始的目标是在可以接受的时间内对算法做仿真,随后是将波形存储起 来,然后再加以处理。 在短短的十多年 时间,dsp芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前, dsp 芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。dsp 芯片的应用主要有:(1) 信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。(2)通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。(3)语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。(4)图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。(5)军事--如保密通信、雷达处理、声纳处理、导航等。 (6)仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。(7)自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。(8)医疗--如助听、超声设备、诊断工具、病人监护等。(9)家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字 电话/电视等 dsp 的发展前景 dsp 的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比 微控制器做得更好而且价格更便宜,许多家电用第二代 dsp 来控制大功率电机就 是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用 dsp 系统。数码相机、ip 电话和手持电子设备的热销带来了对 dsp 芯片的巨大需 求。而手机、pda、mp3 播放器以及手提电脑等则是设备个性化的典型代表,这 些设备的发展水平取决于 dsp 的发展。新的形势下,dsp 面临的要求是处理速度 更高,功能更多更全,功耗更低,存储器用量更少。 dsp 的技术发展将会有以下 一些走势:(1)系统级集成 dsp 是潮流。小 dsp 芯片尺寸始终是 dsp 的技术发展方向。当前的 dsp 尺寸小、功耗低、性能高。各 dsp 厂商纷纷采用新工艺,改进 dsp 芯核,并将几个 dsp 芯核、mpu 芯核、专用处理单元、外围电路单元、存储单元 统统集成在一个芯片上,成为 dsp 系统级集成电路。(2)追求更高的运算速度和进一步降低功耗和几何尺寸。由于电子设备的 个人化和客户化趋势,dsp 必须追求更高更快的运算速度,才能跟上电子设备的 更新步伐。同时由于 dsp 的应用范围已扩大到人们工作生活的各个领域,特别是 便携式手持产品对于低功耗和尺寸的要求很高,所以 dsp 有待于进一步降低功 耗。按照 cmos 的发展趋势,依靠新工艺改进芯片结构,dsp 运算速度的提高和 功耗尺寸的降低是完全可能的。 (3)dsp 的内核结构进一步改善。dsp 的结构主要是针对应用,并根据应用 优化 dsp 设计以极大改进产品的性能。多通道结构和单指令多重数据、超长指令 字结构、超标量结构、超流水结构、多处理、多线程及可并行扩展的超级哈佛结 构(sharc)在新的高性能处理器中将占据主导地位。(4)dsp 嵌入式系统。dsp 嵌入式系统是 dsp 系统嵌入到应用电子系统中 的一种通用系统。这种系统既具有 dsp 器件在数据处理方面的优势,又具有应用 目标所需要的技术特征。在许多嵌入式应用领域,既需要在数据处理方面具有独 特优势的 dsp,也需要在 智能控制方面技高一筹的微处理器(mcu)。因此,将 dsp 与 mcu 融合在一起的双核平台,将成为 dsp 技术发展的一种新潮流。dsp 的发展非常迅速,而销售价格逐年降低目前 dsp 的结构、总线、资源和 接口技术都趋于标准化,尤其接口的标准化进展更快。这给从事系统设计的工程 技术人员带来很大机遇,采用先进的 dsp 将会使开发的产品具有更强的市场竞争 力。 近几年来,dsp芯片、应用软件和系统的发展非常迅速,每年增长速度高达40%。其市场驱动力主要是因特网、无线通信、硬盘驱动器、可视电话和会议电视以及其它消费 类电子产品。也就是说,dsp产业的发展依赖于通信技术和通信市场。随着新的通信体 制、传输方式和多媒体智能终端的迅速发展,其算法、标准和规程都需要在实践中不断发 展、改进和优化。dsp编程的灵活性和不断增强的运算能力,同时又将使通信技术向更 高层次迈进。这对通信领域的广大科技人员是一个机遇。抓住这个机遇,我们将大有作为。 通过这几次实验,我初步的对dsp有了一定了解。虽然是在老师们的指导下完成实验要求的,但是我想我还是收获蛮多的。希望在以后的学习生活中能对dsp有更多的学习和研究。篇四:dsp课程设计实验报告总结 dsp课程设计总结 (2013-2014学年第2学期) 题 目 : 专业班级 : 电子1103 学生姓名 : 万 蒙 学 号 : 11052304 指导教师 : 设计成绩 : 2014 年 6 月 目 录 一 设计目的--------3 二 系统分析--------3 三 硬件设计 3.1 硬件总体结构----------------------------3 3.2 dsp模块设计----------------------------4 3.3 电源模块设计---------------------------4 3.4 时钟模块设计---------------------------5 3.5 存储器模块设计-------------------------6 3.6 复位模块设计---------------------------6 3.7 jtag模块设计-------------------------7 四 软件设计 4.1 软件总体流程----------------------7 4.2 核心模块及实现代码--------8 五 课程设计总结----------------------14 一、设计目的 设计一个功能完备,能够独立运行的精简dsp硬件系统,并设计简单的dsp控制程序。 二、系统分析 1.1设计要求 硬件要求: (1)使用tms320vc5416作为核心芯片。(2)具有最简单的led控制功能。(3)具有存放程序的外部flash芯片。(4)外部输入+5v电源。(5)绘制出系统的功能框图。 (6)使用ad(altium designer)绘制出系统的原理图和pcb版图。软件要求: 利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。在dsp中采集信号,并且对信号进行频谱分析,滤波等。通过键盘选择算法的功能,将计算的信号频率或者滤波后信号的频率在lcd上显示。 三、硬件设计 3.1 硬件总体结构 3.2 dsp总体结构 3.3 电源模块设计 3.4 时钟模块设计 3.5 存储器模块设计 3.6复位模块设计 篇五:dsp实验报告(完美版)dsp实验报告 班 级:11050641 学 号: 姓 名: 指导教师: 实验一、二 dsp芯片的开发工具及应用实验 1.实验目的(1)熟悉ccs集成开发环境,掌握工程的生成方法; (2)熟悉seed-dtk dad实验环境; (3)掌握ccs集成开发环境的调试方法。 2.实验设备 dsp实验箱,计算机,ccs软件。 3.实验内容及步骤 (1)ccs软件的安装; (2)了解seed-dtk5416实验环境; (3)打开ccs集成开发环境,进入ccs的操作环境; (4)新建一个工程文件 1在c:timyprojects中建立文件夹 volume1(如果ccs安装在其他○ d:ti ,则在d:timyprojects中); 2将c:titutorialtargetvolume1○拷贝到c:timyprojects volume1; 3从在ccs 中的project 菜单,选择 new; ○ 4在project name域中,键入volume1; ○ 5在location区域中,浏览步骤1所建立的工作文件夹; ○ 6在project type 域中,选择executable(.out); ○ 7在target域中,选择ccs配置的目标,并单击完成。○ (5)向工程中添加文件 1从project/add files to project,选择 volume.c,单击 open(或右○ 击project view图标,选择add files to project); 2选择project/add files to project,在files of type对话框中,选○ 择asm source files(*.a*, *.s*)。选择vectors.asm 和 load.asm, 单击open; 3选择 project/add files to project,在files of type 对话框中选○ 4选择project/add files to project,到编辑器库文件夹○ (c:tic5400cgtoolslib),在files of type对话框中选择object and library files(*.o*, *.lib)。选择rts.lib文件,单击open。这个库提供目标dsp 运行时间支持(runtime-support); 5project view窗口,右击volume1.pjt,选择scan all dependencies,○ volume.h将出现在project view窗中的libraries文件夹; 头文件不要手动添加,自动到:当前目录(源文件所在)或预编译器的“include search path(-i)”option所指定的位置。显示头文件:project—>show dependencies。 6单击 volume1.pjt上的+号,展开工程列表。这个列表称为project ○ view。 (6)查看源程序代码 双击project view中 volume.c文件,ccs窗口的右半窗中出现c源代码。 (7)编译与运行程序 1选择project/rebuild all或单击(rebuild all)菜单条按钮,ccs重○ 新进行编辑、汇编、连接工程里的所有文件。这个处理的有关信息在窗口低部一个小框里显示; 2默认时,.out文件编译到位于当前工程文件夹中的调试(debug),目录中○ 也可以通过ccs工具条选择一个存储目录; 3选择file/load program。选中volume1.out,并按open。○ (c:timyprojectsvolume1debug 文件夹中。)ccs将程序装载到目标dsp上,打开显示程序反汇编指令的disassembly窗口; 4选择view/mixed source/asm.,这样可以同时查看c源程序和产生的汇○ 编代码; 5在混合窗口单击汇编指令(单击有效指令,而不是指令的地址或指令所○ 传递的区域),单击f1,ccs可以寻找此指令的帮助。这是学习指令的很好的方法; 6选择debug/go main,从主程序开始执行; ○ 7选择debug/run或单击(run)按钮; ○ 8选择debug/ halt,退出程序运行。○ (8)更改程序的选择、定位语法错误 1选择project/build options; ○ preprocessor,在define symbols区域键入fileio,按tab键; 3单击ok,保存新的选择设置; ○ 4选择project/rebuild all或单击(rebuild all)按钮。只要工程选择○ 更改,则必须重新编译所有的文件; 5编译信息显示,程序包含编辑错误。单击build,你可以看见语法错误信○ 息; 6双击描述语法错误位置的红色文字(第68行)○。注意volume.c源程序已打开,且光标位于下面的行上: processing(input, output);; 7语法错误位于光标位置的上一行(丢了个分号)○,如:puts(begin processing);; 8注意:edit窗口标题栏中的文件名附近出现星号(*)○,指示源程序已经被修改,文件保存后,星号消失; 9选择file/save,或按ctrl+s,将更改保存到volume.c; ○ 10选择project/build,或(incremental build)单击工具条,ccs重新编○ 译已经修改的文件; 11选择file/load program,选中volume1.out; ○ 12选择debug/go main,从主函数开始执行。由→执行可以暂停; ○ 13选择debug/run或(run)单击菜单条; ○ 14选择debug/halt,退出程序运行。○ (9)使用断点(breakpoints)和观察窗口(watch window)程序执行时常常需要检查变量的值。1file/reload program; ○ 2双击project view 窗中的volume.c。可以将窗口变大,看到更多的源○ 代码; 3将光标放在dataio(); ○ 4单击(toggle breakpoint)工具条,或按f9。选择空白区指示断点已经设○ 置(红色图标); 5window,在ccs窗口的右下角出现单个区域,同时,这○ 量的值; 6选择debug/go main; ○ 7或按f5; ○ 9达式图标,键入要观察的变量名dataio; ○ 10中的白色区域,保存更改。这个值将立即出现在下面的例○ 11over)或按f10,跨过对dataio()的调用; ○ 12(remove all breakpoints)。○ 的watch window 的值,也可以观察一个结构的元素的值。 2表达式图标,键入要观察表达式名称str; ○ 3的白色空间,保存更改。数值将立即出现在下面的例子○ 4source code调出 volume.c中全局申明、并初始化的○ 构。volume.h定义了parms的结构类型; 5ccs将结构中所有元素和元素值。双击结构中元素的○ value选择view/watch 个区域显示观察变如果不在主程序,选择debug/run,选择watch1; ○ 单击name栏中表单击观察窗口子中; 单击(step 完成后,单击(10)使用带结构除了观察简单变量选择watch1; ○ 单击name栏中的单击观察窗口中中; 从reviewing the 类型为parms的结单击str上的+号,编辑元素的值; 6在watch window 中value栏,更改变量的值。注意:watch window中○ 数值的更改,数值也变为红色,表示已经手动修改; 7选择watch window中str变量,按delete 键。其他变量同理; ○ 8选择debug/breakpoints,在breakpoints中,单击delete all,然后○ 单击ok。 (11)添加探针probe point(为了文件i/o) 可以添加探针(probe point),从pc机中的文件读数据。 按照下面的步骤使用探针: 从主pc中传递输入数据,到算法所使用的目标的缓冲器中; 从目标的缓冲器中传递输出数据,到主pc中; 用数据修改窗口。 下面将学习如何使用probe point,将pc文件中的内容,作为测试数据,传递到目标dsp中。另外,也可以使用断点修改所有打开的窗口。1选择file/load program,选中volume1.out,单击open; ○ 2双击project view中的volume.c; ○ 3将光标放到主程序中dataio(); ○ 4单击(toggle probe point)。选择空白区域指示探针已经设置(兰色图○ 标),如果废止 选择区,此行为兰色显亮; 5从file菜单,选择file i/o。出现file i/o对话框,因此可以选择输○ 入输出文件; 6在file input,单击add file; ○ 7浏览volume1工程文件夹,选中sine.dat,单击open。sine.dat文件是○ 正弦波的十六进制数值,出现sine.dat文件的控制窗口。再后,当运行程序时,可以在数据文件中使用此窗口启动、停止、返回、或快进; 8在file i/o对话框,更改address 为inp_buffer,length为100,在○ wrap around中可以添加选中符号; 9单击add probe point。出现 break/probe points对话框中的 probe ○ points; 10在 probe point列表中,显亮行为:volume.c line 61--> no ○ connection; 11区域中,单击下箭头,从列表中选中sine.dat; ○ 12probe point列表改向显示这个probe point连接到○ sine.dat 13i/o对话框显示文件现在连接到probe point; ○ 14file i/o对话框。○ 以查看关于时间的信号图形。 在connect to单击 replace。文件; 单击ok。file 单击ok,关闭(12)显示图形 在这个例子中,可第二篇:DSP技术实验指导书
第三篇:DSP实验指导书完全版正文_图文(精)
第四篇:DSP实验5
第五篇:DSP实验心得体会