DSP实验三和实验四
DSP技术与应用实验报告精品
实验名称:实验三向量文件的编写及多个文件的链接实验四汇编语言程序设计实验时间:2015年5月14日下午实验人:谢兴轮2012141451129实验三向量文件的编写及多个文件的链接一、实验目的1、编写复位向量文件vectors。
Asm2、多个文件的链接3、编写复位和中断向量文件4、仿真外部中断二、实验条件Lab3.asm和lab3.cmd文件三、实验内容1、打开桌面CCS2(‘5000)图标,启动CCS集成开发环境。
2 、创建一个新工程;并将lab3.sam和lab3cmd添加入工程3、编写复位向量文件,vectors.asm并将文件添加到工程中。
4、为了将lab3和vectors 两个文件相连接,参看3.6.4节的说明,对lab3.sam和lab3.cmd文件进行必要的修改5、用工程文件对工程中所有文件进行汇编编译链接生成输出文件6、加载程序并单步执行lab3.out文件,仔细观察复位向量的作用7、参看教材4.4中内容,仿真外部中断INT2:①在lab3.asm中,增加一段中断服务子程序INT2,其内容是将累加器A 变为负。
②修改lab3.sam,开放INT2中断③修改vecotrs.asm增加INT2中断向量④编写仿真外部中断用的数据文件:文件名为INT2.dat,每隔5个时钟周期向CPU发出一次中断请求,直到仿真结束。
⑤对工程中所有文件进行重新汇编,链接生成新的输出文件。
⑥执行前,从Tool菜单中选择,用鼠标要链接pin name 再按connect按钮,选择输入文件INT2与INT2引脚相连,单击打开按钮⑦加载程序并利用单步执行程序,注意观察中断向量在中断执行中的作用。
四、实验分析源程序分析************************************************* lab3.asm y= a1*x1+a2*x2+a3*x3+a4*x4 *************************************************.title "lab3.asm".mmregsSTACK .usect "STACK",10h ;allocate space for stack.bss x,4 ;allocate 9 word for variates.bss a,4.bss y,1.def start.def INT_2.data.mmregstable: .word 1,2,3,4 ;data follows ....word 8,6,4,2.text ;code follows ...start: STM #STACK+10h,SP ;set stack pointerSTM #table,AR1 ;AR1 point to tableSTM #x,AR2 ;AR2 point to xSTM #7,AR0LD #40h,ASTM #0,SWWSRRSBX INTMSTM #04h,IMRloop: LD *AR1+,A ;move 8 valuesSTL A,*AR2+ ;from program memoryBANZ loop,*AR0- ;into data memoryCALL SUM ;call SUM subrotine end: B endSUM: STM #a,AR3 ;The subrotine lmplememt STM #x,AR4 ;multiply--accumulateRPTZ A,#3MAC *AR3+,*AR4+,ASTL A,*AR2RETINT_2: NEG ARETE.end***************** vectors.asm ** Reset vector *****************.title "vectors.asm".ref start.sect ".vecs"B start.ref INT_2.sect ".vecs1"B INT_2.end(+100) rpt EOS ;中断时钟为100个周期。
DSP实验
1.6 实验步骤
1. 设置 Code Composer Studio 在软件仿真(Simulator)方式下运行
(1) 双击桌面上“Setup CCS 3(‘C5000’)”,启动“Code Composer Studio Setup”。 (2) 在“Import Configuration”对话框中单击“Clear”按钮,在接下来的对话框中选择
“是”,清除原先的系统设置;观察窗口“Code Composer Studio Setup”中左侧 “System Configuration”栏中“My System”项被清空。 (3) 单击“Close”按钮,退出“Import Configuration”对话框。 (4) 选择“Code Composer Studio Setup”窗口“File”菜单中“Exit”项退出,并在接下 来显示的对话框中选择“是”,保存设置;再选择“否”,不启动CCS。
下面我们使用 CC 的图形功能检验上一节的结果。 (1) 执行View→Graph→Time/Frequency 打开Graph Property Dialog 窗口。 (2) 修改属性为如下值并确定。
在弹出的图形窗口中单击鼠标右键,选择“Clear Display”。 (3) 按F12运行程序,观察input窗口的内容。
程文件一般包含以下几种文件:
源程序文件: 汇编语言文件或C语言(*.ASM 或*.C)
头文件:
(*.H)
命令文件:
(*.CMD)
库文件:
(*.LIB,*.OBJ)
CCS软件安装的操作一般包括几个步骤:CCS软件的安装、配置和启动,工程文件的
创建、编译和调试。调试手段有很多,要掌握常用按键F10、F8等的基本使用,掌握观
dsp实验4
实验四IIR滤波器的DSP实现思考题:对照参考程序,编写实现四阶或更高阶数的低通、高通、带通、带阻IIR 数字滤波器的DSP程序并仿真。
提示:滤波器系数一般通过MATLAB仿真得到。
4阶低通:.title "IIR.asm".mmregs.def startx4 .usect "x",1x3 .usect "x",1x2 .usect "x",1x1 .usect "x",1x0 .usect "x",1COEF .usect "COEF",9Indata .usect "buffer",1outdata .usect "buffer",1*PA0 .set 10*PA1 .set 1.datatable.word 0 ;x(n-1).word 0 ;x(n-2).word 0;x(n-3).word 0;x(n-4).word 0 ;分子系数B3=0.word 15*32768/10000;B3=0.0015.word 78*32768/10000;分子系数B2=0.0078.word 25*32768/10000 ;分子系数B1=0.0025.word 0;分子系数B0=0.word 3783*32768/10000;分母系数A4=0.3783.word -6258*32768/10000 ;分母系数A3=-1.8776/3.word 88705*32768/100000 ;分母系数A2=3.5482/4.word -826775*32768/1000000;分母系数A1=-3.0372/4.textstart: SSBX FRCTSTM #x4,AR1RPT #3MVPD #table,*AR1+STM #indata,AR5STM #outdata,AR2STM #COEF,AR1RPT #8MVPD #table+2,*AR1+STM #x2,AR3STM #COEF+9,AR4;AR4-->A1MVMM AR4,AR1 ;保存地址值在AR1中STM #5,BK ;设置循环缓冲区长度STM #-1,AR0 ;设置变址寻址步长IIR2: ;PORTR PA1,*AR3;从PA1口输入数据x(n)MVDD *AR5,*AR3 ;在这里设置断点与探针LD *AR3+0%,16,A;计算反馈通道,A=x(n)MAC *AR3,*AR4,A;A=x(n)+A1*x1MAC *AR3,*AR4,A;A=x(n)+2A1*x1MAC *AR3,*AR4,A;A=x(n)+3A1*x1MAC *AR3+0%,*AR4-,A;A=x(n)+3*A1*x1+A1*x1MAC *AR3+0%,*AR4-,A ;A=x(n)+4*A1*x1+A2*x2MAC *AR3,*AR4,A;A=x(n)+4*A1*x1 +2*A2*x2MAC *AR3,*AR4,A;A=x(n)+4*A1*x1 +3*A2*x2MAC *AR3+0%,*AR4-,A ;A=x(n)+4*A1*x1+4*A2*x2MAC *AR3+0%,*AR4-,A;A=x(n)+4*A1*x1+4*A2*x2+A3*x3MAC *AR3,*AR4,A;A=x(n)+4*A1*x1+4*A2*x2+2*A3*x3MAC *AR3+0%,*AR4-,A ;A=x(n)+4*A1*x1+4*A2*x2+3*A3*x3MAC *AR3+0%,*AR4-,A ;A=x(n)+4*A1*x1+4*A2*x2+2*A3*x3+A4*x4 STH A,*AR3 ;保存x0MPY *AR3+0%,*AR4-,A;计算前向通道,A=B0*x0MAC *AR3+0%,*AR4-,A;A=B0*x0+B1*x1MAC *AR3+0%,*AR4-,A ;A=B0*x0+B1*x1+B2*x2MAC *AR3,*AR4-,A;B=B0*x0+B1*x1+B2*x2+B3*x3=y(n)STH A,*AR3 ;保存y(n)MVMM AR1,AR4 ;AR4重新指向A1BD IIR2 ;循环; PORTW *AR3,PA0;向PA0口输出数据MVDD *AR3,*AR2 ;在这里设置断点与探针nop.end高通:*用双操作数指令实现二阶高通IIR滤波器**反馈通道:x0=w(n)=x(n)+A1*x1+A2*x2+A3*x3+A4*x4 前向通道:y(n)=B0*x0+B1*x1+B2*x2+B3*x3+B4*x4 *.title "IIR2.asm".mmregs.def startx4 .usect "x",1x3 .usect "x",1x2 .usect "x",1x1 .usect "x",1x0 .usect "x",1COEF .usect "COEF",9indata .usect "buffer",1outdata .usect "buffer",1*PA0 .set 10*PA1 .set 1.datatable .word 0.word 0.word 0.word 0.word 0.word 2754*32768/10000 ;分子系数B4=0.2754.word -551*32768/1000;分子系数B3/2=-0.551.word 413*32768/1000 ;分子系数B2/4=0.413.word -551*32768/1000;分子系数B1/2=-0.551.word 2754*32768/10000 ;分子系数B0=0.2754.word -762*32768/10000;分母系数A4=-0.0762.word 7415*32768/10000 ;分母系数A3=0.4844.word -319*32768/1000;分母系数A2/4=-0.319.word 3925*32768/10000 ;分母系数A1/4=0.3925.textstart: SSBX FRCTSTM #x4,AR1RPT #4MVPD #table,*AR1+STM #indata,AR5STM #outdata,AR2STM #COEF,AR1RPT #8MVPD #table+5,*AR1+STM #COEF+8,AR4;AR4-->A1MVMM AR4,AR1 ;保存地址值在AR1中STM #5,BK ;设置循环缓冲区长度STM #-1,AR0 ;设置变址寻址步长STM #x4,AR3IIR2: ;PORTR PA1,*AR3 ;从PA1口输入数据x(n) MVDD *AR5,*AR3 ;在这里设置断点与探针LD *AR3+0%,16,A;计算反馈通道,A=x(n)RPT #2MAC *AR3,*AR4,A;3*A1*x1 ???MAC *AR3+0%,*AR4-,A ;A=x(n)+4*A1*x1RPT #2MAC *AR3,*AR4,A;4*A2*x2 ???MAC *AR3+0%,*AR4-,A ;A=x(n)+4*A1*x1+5*A2*x2MAC *AR3+0%,*AR4-,A;A=x(n)+4*A1*x1+5*A2*x2+4*A3*x3MAC *AR3+0%,*AR4-,A;A=x(n)+4*A1*x1+5*A2*x2+4*A3*x3+A4*x4STH A,*AR3 ;保存x0MPY *AR3+0%,*AR4-,A;计算前向通道,A=B0*x0MAC *AR3,*AR4,A ;3*B1*x1MAC *AR3+0%,*AR4-,A ;A=B0*x0+4*B1*x1RPT #2MAC *AR3,*AR4,A;4*A2*x2 ???MAC *AR3+0%,*AR4-,A ;A=B0*x0+4*B1*x1+5*B2*x2MAC *AR3,*AR4,A ;3*B3*x3MAC *AR3+0%,*AR4-,A;A=B0*x0+4*B1*x1+5*B2*x2+4*B3*x3MAC *AR3,*AR4,A;B=A=B0*x0+4*B1*x1+5*B2*x2+4*B3*x3+B4*x4=y(n)STH A,*AR3 ;保存y(n)MVMM AR1,AR4 ;AR4重新指向A1BD IIR2 ;循环; PORTW *AR3,PA0;向PA0口输出数据MVDD *AR3,*AR2 ;在这里设置断点与探针nop.end带阻:.title "IIR2.asm".mmregs.def startx4 .usect "x",1x3 .usect "x",1x2 .usect "x",1x1 .usect "x",1x0 .usect "x",1COEF .usect "COEF",9indata .usect "buffer",1outdata .usect "buffer",1*PA0 .set 10*PA1 .set 1.datatable .word 0.word 0.word 0.word 0.word 0.word 8004*32768/10000 ;分子系数B4=0.8004.word -6475*32768/10000;分子系数B3/4=-0.6475.word 924*32768/1000 ;分子系数B2/4=0.924.word -6475*32768/10000;分子系数B1/4=-0.6475.word 8004*32768/10000 ;分子系数B0=0.8004.word -6411*32768/10000;分母系数A4=-0.6411.word 575*32768/1000 ;分母系数A3/4=0.575.word -914*32768/1000;分母系数A2/4=-0.914.word 7202*32768/10000 ;分母系数A1/4=0.7202.textstart: SSBX FRCTSTM #x4,AR1RPT #4MVPD #table,*AR1+STM #indata,AR5STM #outdata,AR2STM #COEF,AR1RPT #8MVPD #table+5,*AR1+STM #COEF+8,AR4;AR4-->A1MVMM AR4,AR1 ;保存地址值在AR1中STM #5,BK ;设置循环缓冲区长度STM #-1,AR0 ;设置变址寻址步长STM #x4,AR3IIR2: ;PORTR PA1,*AR3;从PA1口输入数据x(n)MVDD *AR5,*AR3 ;在这里设置断点与探针LD *AR3+0%,16,A;计算反馈通道,A=x(n)RPT #2MAC *AR3,*AR4,A;3*A1*x1MAC *AR3+0%,*AR4-,A ;A=x(n)+4*A1*x1RPT #2MAC *AR3,*AR4,A;3*A2*x2 ???MAC *AR3+0%,*AR4-,A ;A=x(n)+4*A1*x1+4*A2*x2 RPT #2MAC *AR3,*AR4,A;3*A3*x3 ???MAC *AR3+0%,*AR4-,A ;A=x(n)+A1*x1+4*A2*x2+4*A3*x3MAC *AR3+0%,*AR4-,A;A=x(n)+A1*x1+4*A2*x2+4*A3*x3+A4*x4STH A,*AR3 ;保存x0MPY *AR3+0%,*AR4-,A;计算前向通道,A=B0*x0RPT #2MAC *AR3,*AR4,A;3*B1*x1 ???MAC *AR3+0%,*AR4-,A ;A=B0*x0+4*B1*x1RPT #2MAC *AR3,*AR4,A;3*B2*x2 ???MAC *AR3+0%,*AR4-,A ;A=B0*x0+4*B1*x1+4*B2*x2 RPT #2MAC *AR3,*AR4,A;3*B3*x3 ???MAC *AR3+0%,*AR4-,A;A=B0*x0+4*B1*x1+4*B2*x2+4*B3*x3MAC *AR3,*AR4,A;B=A=B0*x0+B1*x1+B2*x2+B3*x3+B4*x4=y(n)STH A,*AR3 ;保存y(n)MVMM AR1,AR4 ;AR4重新指向A1BD IIR2 ;循环; PORTW *AR3,PA0;向PA0口输出数据MVDD *AR3,*AR2 ;在这里设置断点与探针nop.end带通:.title "IIR2.asm".mmregs.def startx4 .usect "x",1x3 .usect "x",1x2 .usect "x",1x1 .usect "x",1x0 .usect "x",1 COEF .usect "COEF",9 indata .usect "buffer",1 outdata .usect "buffer",1 *PA0 .set 10*PA1 .set 1.datatable .word 0.word 0.word 0.word 0.word 0.word 201*32768/10000 ;分子系数B4=0.0201.word 0*32768/10000;分子系数B3=0.word -402*32768/10000 ;分子系数B2=-0.0402.word 0*32768/10000;分子系数B1=0.word 201*32768/10000 ;分子系数B0=0.0201.word -6411*32768/10000;分母系数A4=-0.6411.word 575*32768/10000 ;分母系数A3/4=0.575.word -914*32768/1000;分母系数A2/4=-0.914.word 7202*32768/10000 ;分母系数A1=0.7202.textstart: SSBX FRCTSTM #x4,AR1RPT #4MVPD #table,*AR1+STM #indata,AR5STM #outdata,AR2STM #COEF,AR1RPT #8MVPD #table+5,*AR1+STM #COEF+8,AR4;AR4-->A1MVMM AR4,AR1 ;保存地址值在AR1中STM #5,BK ;设置循环缓冲区长度STM #-1,AR0 ;设置变址寻址步长STM #x4,AR3IIR2: ;PORTR PA1,*AR3;从PA1口输入数据x(n)MVDD *AR5,*AR3 ;在这里设置断点与探针LD *AR3+0%,16,A;计算反馈通道,A=x(n)MAC *AR3+0%,*AR4-,A ;A=x(n)+A1*x1RPT #2MAC *AR3,*AR4,A;3*A2*x2 ???MAC *AR3+0%,*AR4-,A;A=x(n)+4*A1*x1+4*A2*x2RPT #2MAC *AR3,*AR4,A ;3*A3*x3MAC *AR3+0%,*AR4-,A;A=x(n)+A1*x1+4*A2*x2+4*A3*x3MAC *AR3+0%,*AR4-,A;A=x(n)+A1*x1+4*A2*x2+4*A3*x3+A4*x4STH A,*AR3 ;保存x0MPY *AR3+0%,*AR4-,A ;计算前向通道,A=B0*x0MAC *AR3+0%,*AR4-,A ;A=B0*x0+B1*x1MAC *AR3+0%,*AR4-,A ;A=B0*x0+B1*x1+B2*x2MAC *AR3+0%,*AR4-,A;A=B0*x0+B1*x1+B2*x2+B3*x3MAC *AR3,*AR4,A;B=A=B0*x0+B1*x1+B2*x2+B3*x3+B4*x4=y(n)STH A,*AR3 ;保存y(n)MVMM AR1,AR4 ;AR4重新指向A1BD IIR2 ;循环; PORTW *AR3,PA0;向PA0口输出数据MVDD *AR3,*AR2 ;在这里设置断点与探针nop.end。
DSP实验指导书
DSP实验指导书DSP原理与应⽤实验指导书张卫宁王晓东⼆零⼀零年四⽉⽬录第⼀部分软件仿真(Simulator)实验实验⼀集成开发环境CCS应⽤基础实验⼆寻址⽅式实验三定点定标运算实验四浮点运算实验五汇编程序的优化实验六C语⾔编程与优化(乘法—累加运算程序设计)实验七混合编程实验实验⼋FIR滤波器的实现实验九基于DSP的数字图像处理算法的实现第⼆部分硬件(Emulator)实验实验⼗⽚内定时器实验实验⼗⼀数字I/O⼝的应⽤实验⼗⼆同步串⼝与A/D转换实验⼗三基于DSP的数字⾳频处理系统第三部分部分实验程序参考清单实验⼀参考程序实验⼆参考程序实验三参考程序实验四参考程序实验五参考程序第四部分参考资料⼀、C54xCPU的存储器映像寄存器及其地址⼆、C54xCPU的状态和控制寄存器ST0、ST1三、TMS320C5416DSP的存储区映像四、C54xCPU的处理器模式状态寄存器PMST五、C54x的⽚内定时器控制寄存器TCR六、TMS320C5416的中断⽮量表参考⽂献第⼀部分软件仿真(Simulator)实验实验⼀集成开发环境CCS应⽤基础⼀、⽬的1. 通过创建⼀个简单的应⽤⼯程,初步熟悉Code Composer Studio(简称CCS)的集成开发环境(IDE)及其⼯具的使⽤。
2. 掌握汇编语⾔源程序的基本框架和编写⽅法,了解CCS的⼯程结构以及编译、汇编、连接、运⾏和调试的基本过程。
3. 了解ST0、ST1的控制位对计算过程的控制以及计算结果对状态位的影响。
⼆、内容1. 学习使⽤CCS集成开发环境(IDE)的各种⼯具。
包括下列内容:(1)编辑、汇编和连接。
(2)查看和修改存储器映像寄存器的内容。
(3)查看和修改ST0、ST1及PMST的有关位。
(4)查看和修改程序存储器和数据存储器的内容。
(5)断点操作。
(6)运⾏程序(单步运⾏、连续运⾏和断点运⾏)。
2. 观察并理解COFF段结构的划分及存储空间的分配。
dsp实验报告
dsp实验报告实验一:CCS入门实验实验目的:1. 熟悉CCS集成开发环境,掌握工程的生成方法;熟悉SEED-DEC643实验环境; 掌握CCS集成开发环境的调试方法。
2.学习用标准C 语言编写程序;了解TI CCS开发平台下的C 语言程序设计方法和步骤; 熟悉使用软件仿真方式调试程序。
3. 学习用汇编语言编写程序; 了解汇编语言与 C 语言程序的区别和在设置上的不同;了解TMS320C6000 汇编语言程序结果和一些简单的汇编语句用法学习在CCS 环境中调试汇编代码。
4. 在了解纯C 语言程序工程和汇编语言程序工程结构的基础上,学习在C 工程中加入汇编编程的混合编程方法; 了解混合编程的注意事项;理解混合编程的必要性和在什么情况下要采用混合编程5. 熟悉CCS集成开发环境,掌握工程的生成方法; 熟悉SEED-DEC643实验环境;掌握CCS集成开发环境的调试方法。
实验原理:CCS 提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。
CCS 提供了基本的代码生成工具,它们具有一系列的调试、分析能力序。
使用此命令后,要重新装载.out 文件后,再执行程序。
使用 CCS常遇见文件简介1. program.c: C 程序源文件;2. program.asm: 汇编程序源文件;3. filename.h: C 程序的头文件,包含DSP/BIOS API模块的头文件;4. filename.lib: 库文件;5. project.cmd: 连接命令文件;6. program.obj: 由源文件编译或汇编而得的目标文件;7. program.out: 经完整的编译、汇编以及连接后生成可执行文件; 8. program.map: 经完整的编译、汇编以及连接后生成空间分配文件; 9.project.wks: 存储环境设置信息的工作区文件。
P.S(CMD文件中常用的程序段名与含义1. .cinit 存放C程序中的变量初值和常量;2. .const 存放C程序中的字符常量、浮点常量和用const声明的常量;3. .text 存放C程序的代码;4. .bss 为C 程序中的全局和静态变量保留存储空间;5. .far 为C 程序中用far声明的全局和静态变量保留空间;6. .stack 为 C 程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果;7. .sysmem 用于 C 程序中malloc、calloc 和 realloc 函数动态分配存储空间。
DSP实验报告
课程设计(实验)报告课程DSP专业电子信息工程技术学号姓名指导教师机械与电子信息工程学部2011年6月目录实验一熟悉HK-EP型DSP实验箱和CCS软件的使用实验二编写程序实现y= ∑ax,其中x、a的值自设实验三编写程序将数组X[5]初始化为1,2,3,4,5,再把每个元素乘以2实验四编写程序产生正弦波实验五编写程序,使实验箱控制核心板上的指示灯XFD1闪烁频率为2Hz实验六编写程序,使实验箱上的点阵循环显示汉字“中国”实验一一、实验内容:熟悉HK-EP型DSP实验箱和CCS软件的使用二、实验目的:熟练运用实验箱和CCS软件的使用三、实验设备:HK-EP型DSP数字信号处理实验仪四、实验步骤:(一)、不连接实验箱的配置首先双击CCS软件出现界面关闭当前窗口,然后移除MY SYSTEM 下面的所有项目,然后点击IMPORT A CONFIGURILATION,再出现的窗口中选择第二项,点击IMPORT和SA VE AND QUIT,再出现的界面上点击“是”,即可进入不连接试验箱的CCS程序(二)、连接实验箱的配置(1)硬件仿真器设备驱动安装①连接硬件USB数据线后,计算机提示找到新的硬件,请选择新硬件的软件,单击“下一步”出现设备驱动窗口。
②点击“浏览”后,找到仿真器所配光盘根目录下的“tdsjtag.sys”或“tddjtag.inf”打开。
③单击下一步,完成安装。
点击“完成”,则在硬件设备管理中可看到所添加的新设备情况。
如下图:(2)运行光盘根目录下的“setup.exe”(仿真器的运行链接文件)(3)CCS(CC)动态连接库的安装双击进入“SETUP CCS5000”界面,点击“C54x XDS(Texas instruments)”或按住鼠标的左键拖到“My system”下。
点击“auto-generate board data file”的下拉箭头,选中“auto-genrate board data filewith extra config”,点击“Browse”,添加安装在C:\TI\CC\BIN\wintech.cfg;添加完成后,点击“NEXT”继续下一步;修改I/O口地址,将0X240改为0X0,选中“TMS320C5400”,点击“Add single”,继续点击“NEXT”添加“GEL”文件(注:此GEL文件可以不需添加),点击“Finish”。
DSP实验报告(四)
实验四 用窗函数设计FIR 滤波器一、实验目的1、熟悉FIR 滤波器设计的基本方法。
2、掌握用窗函数设计FIR 数字滤波器的原理及方法,熟悉相应的计算机高级语言编程。
3、熟悉线性相位FIR 滤波器的幅频特性和相位特性。
4、了解各种不同窗函数对滤波器性能的响应二、实验原理和方法(一)FIR 滤波器的设计IIR 滤波器的优异幅度响应,一般是以相位的非线性为代价的,非线性相位会引起频率色散。
FIR 滤波器具有严格的相位特性,这对于语音信号处理和数据传输是和重要的。
目前FIR 滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。
常用的是窗函数法和切比雪夫等波纹逼近的最优化设计方法。
窗函数法是从时域出发,用一个窗函数截取理想的hd(n)得到h(n),以有限长序列h(n)近似理想的hd(n);如果从频域出发,用理想的()j d H e ω在单位圆上等角度取样得到H(k),根据h(k)得到H(z)将逼近理想的hd(z),这就是频率取样法。
(二)窗函数设计法用窗函数设计滤波器首先要对滤波器提出性能指标。
一般是给定一个理想的频率响应()j d H e ω,使所设计的FIR 滤波器的频率响应()j H e ω去逼近所要求的理性的滤波器的响应()j d H e ω。
窗函数法设计的任务在于寻找一个可实现(有限长单位脉冲响应)h(n )的传递函数()()j j n n H e h n e ωω+∞-==∑去逼近理想的幅频响应。
一个理想的频率响应的傅立叶反变换201()()2j j n d d H n H e e d πωωωπ=⎰(1)所得到的理想单位脉冲响应h 往往是一个无限长序列。
对经过适当的加权、截断处理才能得到一个所需要的有限长脉冲响应序列。
对应不同的加权、截断,就有不同的窗函数。
所要寻找的滤波器脉冲响应就等于理想脉冲响应和窗函数的乘积,即()()()d h n h n w n = (2)由此可见,窗函数的性质就决定了滤波器的品质。
dsp实验报告3
§2.1 基础实验一、实验目的1. 掌握CCS3.3实验环境的使用;2. 掌握用C语言编写DSP程序的方法。
二、实验设备1. 一台装有CCS3.3软件的计算机;2. DSP实验箱的TMS320F2812主控板;3. DSP硬件仿真器。
三、实验原理浮点数的表达和计算是进行数字信号处理的基本知识;产生正弦信号是数字信号处理中经常用到的运算;C语言是现代数字信号处理表达的基础语言和通用语言。
写实现程序时需要注意两点:(1)浮点数的范围及存储格式;(2)DSP的C语言与ANSI C语言的区别。
四、实验步骤1.打开CCS3.3 并熟悉其界面;2.在CCS3.3环境中打开本实验的工程(Example_bASe.pjt)[位置为:/ Example_2812/ Example_math/ Example_base],编译并重建.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.修改输入序列的长度或初始值,重复上述过程。
五.实验注意事项1.把代码载入硬件时注意操作顺序,要操作规范,以免烧坏硬件2.只有添加了可视窗口才可以看到图形3.读懂程序以后再按要求修改,才能完成要求4.注意观察修改程序的图形变化与之前的比较六.实验程序/** Program for convolve **/#include <math.h>int N1,N2; /*输入数组长度*/int n; /*输出数组长度*/int m,i,k;float x[20];float h[20];float y[20]; /*输出数组*/main(){N1=10; /* x 长度*/N2=10; /* h 长度*/n=N1+N2-1; /* 输出y 的长度*/ for(i=0;i<20;i++) /* 初始化数组*/{x[i]=0;h[i]=0;y[i]=0;}for(i=0;i<n;i++) /* 给x数组赋值*/{if(i<N1){x[i]=i;}else{x[i]=0;}}for(i=0;i<=n;i++) /* 给h数组赋值*/{if(i<N2){h[i]=1;}else{h[i]=0;}}for(i=0;i<n;i++) /* 计算卷积*/{for (k=0;k<=i;k++)y[i]=y[i]+h[k]*x[i-k];}while(1);七.实验结果八.实验小结通过本实验熟悉和使用CCS3.3实验环境,虽然还不是充分解读CCS3.3技巧,但有了这次自己动手,掌握其基本技巧。
DSP课程实验报告
目录目录 (1)实验一试验名称:RGB转灰度,添加噪声实验 (2)实验二试验名称:图像平滑,中值滤波实验 (7)实验三试验名称:图像锐化实验 (9)实验四试验名称:灰度变换实验 (11)实验五试验名称:灰度直方图,直方图均衡实验 (13)实验六试验名称:边沿提取,灰度反转,二值化实验 (16)实验七试验名称:熟悉imgLib的使用实验 (18)实验一试验名称:RGB转灰度,添加噪声实验一、试验目的1、熟悉CCS,学会运用CCS导入图像,并仿真DSP处理图像2、掌握如何将目标图像由彩色转为灰色3、掌握如何给目标图像添加各类噪声二、试验设备1、PC机一台,windows操作系统2、CCS编程环境三、试验原理(1)彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255个中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。
而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其中一个像素点的变化范围为255种,所以在数字图像处理中一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。
灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。
在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫做灰度值。
因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。
图像的灰度化处理,一般有以下三种处理方法:方法一:加权平均法根据重要性及其它指标,将R、G、B三个分量以不同的权值进行加权平均。
由于人眼对绿色的敏感度最高,对蓝色敏感度最低。
因此,在MATLAB中我们可以按下式系统函数,对RGB三分量进行加权平均能得到较合理的灰度图像。
f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j))方法二:平均值法将彩色图像中的R、G、B三个分量的亮度求简单的平均值,将得到均值作为灰度值输出而得到灰度图。
DSP实验4实验报告
实验4 C54xDSP定时器及中断使用一、实验目的1、学会通过TI公司的片上支持库来调用片上外围设备;2、学会使用C54x系列DSP的定时器;3、学会使用C54x系列DSP的中断系统;二、实验原理C54xDSP片上支持库CSL的详细使用方法及步骤见“TMS320C54x CSL.pdf”。
1、定时器的使用(a)C语言部分(1)在预编译处包含CSL库及对应的定时器库;#include<stdio.h>#include<csl.h>#include<csl_timer.h>#include<csl_irq.h>(2)定义定时器的配置结构及句柄;TIMER_Config timerCfg1={0x0000,0x0080u};TIMER_Handle hTimer1;(3)在运行程序的开始调用“CSL初始化函数”;CSL_init();(4)在运行程序内调用“定时器打开函数”和“定时器配置函数”;hTimer1=TIMER_open(TIMER_DEV0,TIMER_OPEN_RESET);TIMER_config(hTimer1,&timerCfg1);(5)在需要开始计时的时候调用“定时器开始函数”;TIMER_start(hTimer1);(6)不再需要计时的时候调用“定时器停止函数”;TIMER_stop (hTimer1);(b)CCS Project Build Option部分(1)Compiler 下 Preprocessor 设置;(2)Linker 下 Libraries 设置;三、实验内容1、利用TI公司已定义的片上支持库,正确配置及使用定时器和中断,使能定时器中断;#include<stdio.h>#include<csl.h>#include<csl_timer.h>#include<csl_irq.h>TIMER_Config timerCfg1={0x0000,0x0080u};TIMER_Handle hTimer1;interrupt void timerIsr();int temp,timer_int_cnt;void main(){int temp=0;CSL_init();IRQ_plug (IRQ_EVT_TINT0,&timerIsr);IRQ_enable(IRQ_EVT_TINT0);IRQ_globalEnable();hTimer1=TIMER_open(TIMER_DEV0,TIMER_OPEN_RESET);TIMER_config(hTimer1,&timerCfg1);TIMER_start(hTimer1);while(1){};TIMER_stop (hTimer1);}interrupt void timerIsr(void){TIMER_stop (hTimer1);timer_int_cnt=timer_int_cnt+1;if(timer_int_cnt<20){TIMER_start(hTimer1);}printf("Now Enter a Timer interupt!\n");}2、编写相应的定时器中断服务函数,运行程序,把断点设置在中断服务函数内,并使程序在该断点处停下,并在CCS软件调试窗口上打印相应的提示。
DSP实验报告_百度文库(精)
实验0 实验设备安装才CCS调试环境实验目的:按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。
实验步骤:以演示实验一为例:1.使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源;2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStart\sinewave\”下打开工程文件sinewave.pjt,然后点击主菜单“Project->Build”编译,然后点击主菜单“File->Load Program”装载debug目录下的程序sinewave.out;3.打开源文件exer3.asm,在注释行“set breakpoint in CCS !!!”语句的NOP处单击右键弹出菜单,选择“Toggle breakpoint”加入红色的断点,如下图所示;4.点击主菜单“View->Graph->Time/Frequency…”,屏幕会出现图形窗口设置对话框5.双击Start Address,将其改为y0;双击Acquisition Buffer Size,将其改为1;DSP Data Type设置成16-bit signed integer,如下图所示;6.点击主菜单“Windows->Tile Horizontally”,排列好窗口,便于观察7.点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果:心得体会:通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。
熟悉了DSP实验箱基本模块。
让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。
实验二基本算数运算2.1 实验目的和要求加、减、乘、除是数字信号处理中最基本的算术运算。
东南大学DSP实验报告
东南大学DSP实验报告DSP实验报告实验三:快速傅里叶变换及其应用【一】观察高斯序列的时域和幅频特性,固定信号Xa(n)中参数p = 8,改变q的值,使p分别等于2、4、8,观察他们的时域和幅频特性,了解当q取不同的值是,对信号序列的时域和幅频特性的影响;固定q = 8,改变p,使p分别等于8、13、14,观察参数p变化对信号序列的时域和幅频特性的影响,注意p等于多少是,会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。
1、P = 8,q =2、4、8的高斯序列的时域及幅频特性为程序代码:>> n = 0:15;p1 = 8;p2 = 13;p3 = 14;q1 = 2;q2 = 4;q3 = 8;x1 = exp(-(n-p1).*(n-p1)/q1);x2 = exp(-(n-p1).*(n-p1)/q2);x3 = exp(-(n-p1).*(n-p1)/q3);x1w = fft(x1);x2w = fft(x2);x3w = fft(x3);subplot(3,2,1);stem(x1);subplot(3,2,2);stem(abs(x1w));subplot(3,2,3);stem(x2);subplot(3,2,4);stem(abs(x2w));subplot(3,2,5);stem(x3);subplot(3,2,6);stem(abs(x3w));结果分析:当P不变时,随着Q的增大,信号时域波形变化变缓,波形变“胖”,信号频域低频分量增加,泄漏减小。
2、q = 8,p = 8、13、14时的高斯序列时域及幅频特性程序代码为:>> n = 0:15;p1 = 8;p2 = 13;p3 = 14;q1 = 2;q2 = 4;q3 = 8;x1 = exp(-(n-p1).*(n-p1)/q3); x2 = exp(-(n-p2).*(n-p2)/q3); x3 = exp(-(n-p3).*(n-p3)/q3); x1w = fft(x1);x2w = fft(x2);x3w = fft(x3);subplot(3,2,1);stem(x1);subplot(3,2,2);stem(abs(x1w));subplot(3,2,3);stem(x2);subplot(3,2,4);stem(abs(x2w));stem(x3);subplot(3,2,6);stem(abs(x3w));结果分析:Q不变,P增大时,信号时域波形形状不变,在时间上产生了平移,当P = 13时产生明显泄漏。
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:\ti\myprojects中建立文件夹volume1(如果CCS安装在其他d:\ti ,则在d:\ti\myprojects中);○2将c:\ti\tutorial\target\volume1拷贝到c:\ti\myprojects\ 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 对话框中选择 Linker Command File (*.cmd),选择volume.cmd,单击Open。
DSP实验报告李志刚(精)
实验报告实验课程:TMS320X281XDSP原理及C程序开发学生姓名:李志刚学号: 6101206014专业班级:自动化0612009年 12 月 12 日目录一、实验一CCS应用及DSPC程序设计 (3)二、实验二DSP定时器及GPIO应用试验 (7)三、实验三DSP模数(AD)转换实验 (10)四.实验四DSP数模(DA)转换实验 (14)五.实验五PWM输出及电机控制实验 (16)六、实验六DSP串行通信实验 (27)南昌大学实验报告学生姓名:李志刚学号: 6101206014 专业班级:自动化061实验类型:□ 验证□ 综合□ 设计□ 创新实验日期: 2009.9.23实验成绩:实验一 CCS应用及DSP C程序设计一.实验目的1.掌握Code Composer Studio 2.21 的安装和配置步骤过程。
2.了解DSP 开发系统和计算机与目标系统的连接方法。
3. 学习创建工程和管理工程的方法。
4. 了解基本的编译和调试功能。
5. 学习使用观察窗口。
二.实验设备PC 兼容机一台、ICETEK-VC5509-S60(6.1实验箱一台、USB 连接电缆一条三.实验原理1.开发TMS320C55xx 应用系统一般需要以下几个调试工具来完成:a.软件集成开发环境(Code Composer Studio 2.21:完成系统的软件开发,进行软件和硬件仿真调试。
它也是硬件调试的辅助手段。
b.开发系统(ICETEK 5100-USB 或ICETEK 5100-PP:实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。
c.评估模块(ICETEK VC5509-A 或ICETEK VC5509-C 等:提供软件运行和调试的平台和用户系统开发的参照。
2.Code Composer Studio 2.21主要完成系统的软件开发和调试。
它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C 语言程序编译连接生成COFF (公共目标文件格式的可执行文件,并能将程序下载到目标DSP 上运行调试。
dsp实验报告 3
实验三PWM实验:一、实验目的了解TMS320F28335 的PWM 模块原理二、实验设备(1)装有Windows 的PC 机一台;(2) XDS510 仿真器一套;(3) YX-F28335 开发板一套;(4) 示波器一台;三、实验步骤(1) 首先按照实验一配置CCS4.1.2 软件并打开;(2) 接着把仿真器的USB 与电脑进行连接,将仿真器的另一端JATG 端插到YX-F28335 开发板的JATG 针处;(3) Target->Launch TI Debug 后,点击Target->Connect Target。
(4) 由于工程已经是一个可烧写的可执行文件,所以直接在CCS 中点击Target->LoadProgram……命令,在文件lab24-PWM 下加载Debug 目录下的.out 可执行文件;(5) 在CCS 菜单栏点击Target->Run,之后用户打开示波器,将示波器的地线接到开发板的地线端,另一端接到YX-F28335 开发板J4的第1 脚。
四、实验原理脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
PWM 的控制方法:采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。
PWM 控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形。
按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。
五、实验过程1、测量波形(电路连接)并在示波器上显示:的转动情况。
DSP实验报告完美版
DSP实验报告班级:学号:姓名:指导教师:实验一、二 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:\ti\myprojects中建立文件夹volume1(如果CCS安装在其他d:\ti ,则在d:\ti\myprojects中);○2将c:\ti\tutorial\target\volume1拷贝到c:\ti\myprojects\ 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 对话框中选择 Linker Command File (*.cmd),选择volume.cmd,单击Open。
DSP技术与应用实验报告
DSP实验报告姓名:年级:专业:学号:任课教师:目录实验一、CCS入门实验实验二、编写一个以C语言为基础的DSP程序实验三、异步串口通信实验四、A/D及D/A转换实验五、PID算法控制实验实验六、快速傅里叶变换(FFT)算法实验一、CCS入门实验Project/new;输入:volume,按Finish;Project/add files to project;查找范围:C:\CCStudio_v3.3\tutorial\dsk2812\volume1;文件类型:all files;分别添加:Volume.c、Load.asm、Vectors.asm、Volume.cmd;在C:\CCStudio_v3.3\C2000\cgtools\lib中添加:rts2800_ml.lib;将C:\CCStudio_v3.3\tutorial\dsk2812\volume1\volume.h复制到:C:\CCStudio_v3.3\C2000\cgtools\include文件夹中;Project/rebuild all;File/load program;打开C:\CCStudio_v3.3\MyProjects\volume\Debug\volume.out;鼠标双击:volume.c,找到dataIO(),右击,运行toggle software breakpoint;File/data,查找范围:C:\CCStudio_v3.3\tutorial\dsk2812\volume1;文件类型:all files,打开:sina.dat,输入:0x8000、0x2000;View/memory,0x8000;View/graph/time\frequency;如下图波形:频谱实验二、编写一个以C语言为基础的DSP程序一.实验目的1.学习用标准C语言编制程序;了解常用的C语言程序设计方法和组成部分。
2.学习编制连接命令文件,并用来控制代码的连接。
DSP技术及应用实验报告 实验四
实验四 FIR 数字滤波器一、实验目的:1.学习数字滤波器的DSP 实现原理和C54X 编程技巧;2.通过CCS 的图形显示工具观察输入/输出信号波形以及频谱的变化。
二、实验原理:在数字信号处理中,滤波占有极其重要的作用。
数字滤波是谱分析、通信信号处理等应用中的基本处理算法,数字滤波是DSP 最基本的应用领域。
1. FIR 滤波器的基本原理数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。
一个线性位移不变系统的输出序列[]y n 和输入序列[]x n 之间的关系,应满足常系数线性差分方程。
FIR 滤波器的差分方程为:10()()N i i y n b x n i -==-∑FIR 滤波器的传递函数为: 10()()()N i i i Y z H z b z X z --===∑由上面的公式可知,FIR 滤波算法实际上是一种乘法累加运算。
它不断地从输入端读入样本值x [n ],经延时(1z -)后做乘法累加,输出滤波结果y [n ]。
2. FIR 滤波器的设计FIR 滤波器的设计方法主要有窗函数法和频率采样法,其中,窗函数法是最基本的方法。
具体设计方法可参见《数字信号处理》。
DSP 设计者可以利用功能强大的MATLAB 工具很方便的设计出逼近理想特性的FIR 滤波器,然后将此FIR 系数放入DSP 程序中。
3. FIR 滤波器的DSP 实现FIR 滤波器的输出表达式为011[][][1][1]n-y n b x n b x n b x n N =+-++-+式中,i b 为滤波器系数;[]x n 为滤波器在n 时刻的输入;[]y n 为n 时刻的输出。
可见,FIR 滤波器不断地对输入样本[]x n 进行n -1延时后,再进行乘法累加,最后输出滤波结果[]y n ,因此FIR 滤波器实际上是一种乘法累加运算。
在DSP 中FIR 是将待滤波的数据序列与滤波系数序列相乘后再相加,同时要模仿FIR 结构中的延迟线将数据在存储器中滑动。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三离散时间系统及响应[实验目的]1、熟悉离散时间系统的时域和频域分析方法。
2、掌握稳定系统性的判别。
3、掌握利用MATLAB求解零极状态、差分方程和频率响应的方法。
[实验仪器]计算机、Matlab6.5(或更高版本)软件[实验参考书] :自编实验指导书与本实验有关的MA TLAB函数:1. conv.m用来实现两个离散序列的线性卷积。
其调用格式是:y=conv(x,h)2.filter.m求离散系统的输出y(n) 。
若系统的h(n) 已知,可用conv.m文件可求出y(n) ;若系统的H(z) 已知,可用filter可求出y(n),调用格式是:y=filter(b, a, x);%其中x, y, a 和b都是向量。
3.impz.m在H(z) 已知情况下, 求系统的单位抽样响应h(n)。
调用格式是:h = impz(b, a, N)或[h,t]=impz(b,a,N)N是所需的的长度。
前者绘图时n从1开始,而后者从0开始。
4.freqz.m在H(z) 已知情况下, 求系统的频率响应。
基本的调用格式是:[H,w]=freqz(b,a,N,'whole',Fs)N是频率轴的分点数,建议N为2的整次幂;w是返回频率轴座标向量,绘图用;Fs是抽样频率,若Fs=1,频率轴给出归一化频率;’whole’指定计算的频率范围是从0~FS,缺省时是从0~FS/2.5.zplane.m文件可用来显示离散系统的极-零图。
其调用格式是:zplane(z,p), 或zplane(b,a),前者是在已知系统零点的列向量z和极点的列向量p的情况下画出极-零图,后者是在仅已知H(Z)的A(z)、B(z) 的情况下画出极-零图。
[实验内容]1、序列的卷积运算。
下例是一个指数函数的卷积,结果如图所示。
clear all;fs=20;n =0:49;x=exp(-n/fs);subplot(211),stem(x)y=conv(x,x);subplot(212);stem(y);grid;05101520253035404550仿照上例,现在假设存在两个序列,()[,,,,,,]h n=54321,利用计x n=9121041215()[,,,,]算出两者的卷积,并画出图形。
2、时域离散系统和系统响应分析。
输入下列程序,观察实验结果。
N=16; n=0:N-1; %定义抽样的长度x=sin(2*pi*n/64)+sin(20*pi*n/64);%输入序列a=[1 -0.25]; b=[0.5 0.45 0.35]; %b 和a 分别是系统函数分子和分母多项式系数 subplot(221); zplane(b,a);%画出系统的零极点图 y=filter(b,a,x); %求系统的响应subplot(222 );stem(n,y) ; %画出系统响应的火柴杆图 [H,w]=freqz(b,a) ; %求出系统的频率响应H MagH=abs(H); %系统的幅频特性Subplot(223);plot(w/pi,MagH); %画出系统的幅频特性 PhaseH=angle(H); %系统的相频特性Subplot(224);plot(w/pi,PhaseH); %画出系统的相频特性 仿照此程序,完成下面问题的编程。
(1) 已知描述两个系统的系统函数分别为-1-2-3-4-1-2-3-40.001836+0.007344z +0.011016z +0.007374z +0.001836z ()1-3.0544+3.8291z -2.2925z +0.55075z H z =1-1-2-3-4-1-2-3-40.001836+0.007344z +0.011016z +0.007374z +0.001836z ()0.4-3.0544+3.8291z -2.2925z +0.55075z H z =1a. 确定系统的稳定性提示:零极点是分析系统频率响应的有力工具之一,在MALAB 中用zplane( )函数画出零点极点图,对于本例,利用零极点图分析系统是否稳定(分别画出两个系统的零极点图,说明其是否稳定)。
b. 假定输入为长度为100的矩形序列,试求出其对两系统的输出,绘出相应的图形。
进一步说明输入有界,输出是否有界。
提示:对于系统求解,在MATLAB 中可以调用filter( )函数完成。
(2)一个特定的线性和时不变系统,描述它的差分方程如下:)3()1(2)()2(25.0)1(5.0)(-+-+=-+--n x n x n x n y n y n ya. 如果此系统的输入为)()]6.0sin(4)2.0cos(35[)(n u n n n x ππ++=。
在1000≤≤n 间求出)(n y 的响应。
b. 图示系统的频率特性提示:使用freqz()函数求解系统的频率特性,幅度响应A=abs(H),相位响应P=angle(H) 3、求下列两个序列的频谱,包括幅度谱和相位谱,分别画出相应的图形。
比较这两者的区别和联系()[,,,,,,,]()[,,,,,,,]h n h n ==124321123412344321提示:本题按离散傅立叶变换(DFT )实现,DFT 是数字信号处理中最重要的变换之一。
其MATLAB 实现方法可以根据其定义式实现,也可以采用其矩阵形式式实现(实际中均以快速算法FFT 方法实现)。
下面给出其两种实现的MATLA 文件。
①、以定义形式实现%在此输入时域序列,可以采用直接输入的形式,也可采用在运行M 文件后在交互窗口输 %入的形式:xn=input(‘请输入序列x(n):’); N=length(xn);%获得输入序列的长度X=zeros(1,N);%定义信号谱序列X及长度for k=0:N-1for n=0:N-1X(k+1)=X(k+1)+xn(n+1)*exp(-j*2*pi*n*k/N);%按定义式计算序列的DFTend;end;②、以矩阵形式实现x n=input(‘请输入序列x(n):’);N=length(xn);n=0:N-1;k=n;nk=n’*k;WN= exp(-j*2*pi/N).^nk;Xk=xn*WN;[思考题]1、对于一个离散时间系统,如何利用零极点图分析系统是否稳定?2、试说明DTFT的理论分析与实验运算上的区别。
3、实验2中,信号的DTFT一个周期为7个点,相当于单位圆上多远距离取一个值?如果要修改一个周期内的抽样点数,怎么实现?实验四利用FFT和CZT对信号进行频谱分析[实验目的]1、加深对离散傅立叶变换(DFT)算法原理和性质的理解2、掌握离散傅立叶变换DFT的MATLAB实现,理解DFT的频谱泄漏和分辨率问题。
3、熟悉FFT算法原理和FFT子程序的应用4、掌握应用FFT对典型信号进行频谱分析的方法。
5、掌握应用FFT实现两个序列的线性卷积的方法。
[实验仪器]计算机、Matlab6.5(或更高版本)软件[实验参考书] :自编实验指导书[原理简介]本实验是对信号的频谱或功率谱进行分析。
为了了解信号的特点和频谱分布,可以通过对信号进行谱分析,计算出信号的幅度谱、相位谱和功率谱来实现。
信号的谱分析可以用DFT(FFT)来实现。
在运用DFT进行频谱分析的过程中可能产生三种误差:(1)混叠序列的频谱时被采样信号的周期延拓,当采样速率不满足Nyquist定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。
避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。
谱分析中的参数选择;A 若已知信号的最高频率c f ,为防止混叠,选定采样频率s f :c s f f 2≥ (1) B 根据实际需要,选定频率分辨f ∆,一但选定后,即可确定FFT 所需的点数Nf f N s ∆=/ (2)我们希望f ∆越小越好,但f ∆越小,N 越大,计算量、存储量也随之增大。
一般取N 为2的整次幂,以便用FFT 计算,若已给定N ,可用补零方法便N 为2的整次幂。
C s f 和N 确定后,即可确定所需相应模拟信号)(t x 的长度s s NT f N T ==/ (3) 分辨率f ∆反比于T ,而不是N ,在给定的T 的情况下,靠减小s T 来增加N 是不能提高分辨率的,因为s NT T =为常数。
(2) 泄漏实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT 来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。
泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。
为了减少泄漏的影响,可以选择适当的窗函数使频谱的扩散减至最小。
(3) 栅栏效应DFT 是对单位圆上Z 变换的均匀采样,所以它不可能将频谱视为一个连续函数,就一定意义上看,用DFT 来观察频谱就好像通过一个栅栏来观看一个图景一样,只能在离散点上看到真实的频谱,这样就有可能发生一些频谱的峰点或谷点被“尖桩的栅栏”所拦住,不能别我们观察到。
减小栅栏效应的一个方法就是借助于在原序列的末端填补一些零值,从而变动DFT 的点数,这一方法实际上是人为地改变了对真实频谱采样的点数和位置,相当于搬动了每一根“尖桩栅栏”的位置,从而使得频谱的峰点或谷点暴露出来。
用FFT 计算线性卷积用FFT 可以实现两个序列的圆周卷积。
在一定的条件下,可以使圆周卷积等于线性卷积。
一般情况,设两个序列的长度分别为N1和N2,要使圆周卷积等于线性卷积的充要条件是FFT 的长度:N ≥N1+N2-1对于长度不足N 的两个序列,分别将他们补零延长到N 。
当两个序列中有一个序列比较长的时候,我们可以采用分段卷积的方法。
有两种方法: ✧ 重叠相加法。
将长序列分成与短序列相仿的片段,分别用FFT 对它们作线性卷积,再将分段卷积各段重叠的部分相加构成总的卷积输出。
✧ 重叠保留法。
这种方法在长序列分段时,段与段之间保留有互相重叠的部分,在构成总的卷积输出时只需将各段线性卷积部分直接连接起来,省掉了输出段的直接相加。
[实验内容]实验中用到的信号序列a) Gaussian 序列2(),015()0n p q d e n x n --⎧⎪≤≤=⎨⎪⎩b) 衰减正弦序列s i n (2),0()0an b e fnn x n π⎧≤≤⎪=⎨⎪⎩c) 三角波序列1,03()8470c n n x n n n ⎧+≤≤⎪=-≤≤⎨⎪⎩d) 反三角波序列403()3470d n n x n n n -≤≤⎧⎪=-≤≤⎨⎪⎩e )余弦序列和()cos(0.48)cos(0.52)e x n n n ππ=+实验例程:1、设x(n)是由两个正弦信号及白噪声叠加而成,试用 快速傅立叶变换(FFT )对其进行频谱分析。