DSP实验二要点
- 格式:doc
- 大小:196.50 KB
- 文档页数:27
实验报告2 ——DSP汇编语言编程基础一.实验目的1、了解DSP 的寻址方式;2、了解DSP 的汇编语言与C 语言混合编程。
二、实验器材1、安装有CCS 的PC 机一台;三、实验内容1、建立一个工程;2、用汇编语言编程实现一个可被C 程序调用的例程。
四、实验步骤1、汇编语言和C 语言混合编程:①运行CCS ,建立一个工程,取名exp2a ,并保存到c:\ti\myprojects\xxx\Experiment2 \目录下。
②编辑如下C 文件,取名exp2a.c 并保存到c:\ti\myprojects\xxx\Experiment2\exp2a\目录。
/* Assembly routine */extern int sum(int *);/* define x[] as global array */int x[2]={0x1234,0x4321};/* define result s as global variable */int s;void main(){s = sum (x); /* return sum product */}③编辑如下汇编文件,取名exp2_sum.asm 并保存到c:\ti\myprojects\xxx\Experiment2\ exp2a\目录。
* * * * * * * * * * * * * * * * * * * * * * * * * * * * ** exp2_sum.asm SUM subroutine* called by exp2a.c* Input: Array pointer* Output: Return sum result in T0* * * * * * * * * * * * * * * * * * * * * * * * * * * * *.global _sum_summov *AR0+,AC0 ; AC0 = x[1]add *AR0+,AC0 ; AC0 = x[1]+x[2]mov AC0,T0ret ; Return T0.end④编辑如下链接命令文件,取名link.cmd 并保存到c:\ti\myprojects\xxx\Experiment2 \exp2a\目录。
DSP原理及应用实验指导书电气与电子工程学院实验六QDMA 读写实验一、实验目的:1.了解QDMA原理;2.熟悉QDMA的接口的配置;3.掌握QDMA的操作.二、实验内容:1.DSP 初始化;2.QDMA 配置;三、实验背景知识:QDMA 控制器可以在没有CPU参与的情况下完成存储器影射空间中的数据传输. 这些数据的传输可以是在片内存储器、片内外设或是外部器件之间,而且是在CPU操作后台进行的.QDMA 控制器的主要特点:1.后台操作:DMA 控制器可以独立于CPU工作.2.高吞吐率:可以以CPU时钟的速度进行数据吞吐.3.6个通道:DMA 控制器可以控制6 个独立通道的传输.4.辅助通道:该通道允许主机口向CPU的存储器空间进行请求.辅助通道与其他通道间的优先级可以设置.5.通道分割〔即Split-channel〕操作:利用单个通道就可以与一个外设间同时进行数据的读取和写入,与存在两个DMA 通道的效果一样.6.多帧〔Multiframe〕传输:传送的每个数据块可以含有多个数据帧.7.优先级可编程:每一个通道对于CPU的优先级是可编程确定的.8.可编程的地址产生方式:每个通道的源地址寄存器和目标地址寄存器对于每次读和写传输都是可配置的.地址可以是常量、递增、递减,或是设定地址索引值.9.自动初始化:每传送完一块数据,DMA 通道会自动重新为下一个数据块的传送做好准备.10.事件同步:读、写和帧操作都可以由指定的事件触发.11.中断反馈:当一帧或一块数据传送完毕,或是出现错误情况时,每一个通道都可以向CPU发送中断.四、实验要求:通过本实验,了解QDMA接口的配置及应用.五、实验程序功能与结构说明:➢QDMA 实验包含文件本次实验我们使用Test2011里面的0502的QDMA工程文件.1.main.c:实验的主程序,包含了系统初始化,系统时钟设置,QDMA通道CACHE 以及定时器设置,运行DMA 转移函数等;2.C6x.c:对SEED-DEC6713 各项资源操作的函数集,主要包含系统初始化函数,对CPLD 的各个控制函数.3.vecs.asm:包含定时器中断的中断向量表.4.linkd:声明了系统的存储器配置与程序各段的连接关系.➢程序流程图六、实验准备:1.将DSP 仿真器与计算机连接好;2.将DSP 仿真器的JTAG插头与SEED-DEC6713 单元的J2 相连接;3.打开SEED-DEC6713 的电源.观察SEED-DTK_MBoard单元的+5V,+3.3V,+15V, -15V 的电源指示灯以及SEED_DEC6713的电源指示灯D1、D3 是否均亮;若有不亮的,请断开电源,检查电源.七、实验步骤:1.打开CCS,进入CCS 的操作环境.2.装入QDMA.pjt 工程文件.3.打开main.c 程序,运行并下载程序.4. 设置断点,打开0x20000和0x21000开始的存储空间,运行程序.5.观察相关存储单元值的变化,验证QDMA相关原理.大家可以通过设置不同QDMA_S_OPT寄存器的值来观察其他的数据搬移效果实验七定时器控制实验一、实验目的:1.了解TMS320VC6713 的定时器;2.熟悉定时器各寄存器的配置;3.掌握TMS320VC6713 的中断结构和对中断的处理流程;4.学会C 语言中断程序设计,以及运用中断程序控制程序流程二、实验内容:1.系统初始化;2.定时器中断初始化;三、实验背景知识:TMS320C6713 片内集成了2 个32BIT 的通用TIMER,TIMER的原理框如下图.这些时钟有两种信号模式,可以用内部或外部时钟源做为时钟计数.这些时钟有两个PIN 脚:输入和输出PIN脚,可以用做时钟输入和时钟输出;也可以用做GPIO.在SEED-DEC6713 中,2 个TIMER配置为:z TIMER0 配置为外部扩展空间或内部使用;z TIMER1 配置为外部扩展空间或内部使用;本实验采用的定时器是TIMER1.四、实验要求:通过本实验,熟悉中断的结构及用中断程序控制程序流程,掌握定时器的应用.五、实验程序功能与结构说明:➢LED实验包含文件1.DEC6713_Timer.c:实验的主程序,包含了系统初始化,定时器中断初始化,定时器中断程序等.2.DEC6713.c:对SEED-DEC6713 各项资源操作的函数集,主要包含系统初始化函数,对CPLD 的各个控制函数.3.vecs.asm: 包含定时器中断的中断向量表.4.SEED_DEC6713d: 声明了系统的存储器配置与程序各段的连接关系.5.DEC6713.gel:系统初始化程序➢程序流程图Main 程序流程图定时器中断流程图六、实验准备:首先将光盘下03. Examples of Program \ 04. SEED_DTK-EPD实验程序目录下的3.2.7 Timer的文件夹拷贝到D:盘根目录下.1.将DSP 仿真器与计算机连接好;2.将DSP 仿真器的JTAG插头与SEED-DEC6713 单元的J2 相连接;3.打开SEED-DTK6713 的电源.观察SEED-DTK_MBoard 单元的+5V,+3.3V,+15V,-15V 的电源指示灯以及SEED_DEC6713 的电源指示灯D1、D3 是否均亮;若有不亮的,请断开电源,检查电源.七、实验步骤:1.打开CCS,进入CCS 的操作环境.2.装入time.pjt 工程文件, 添加DEC6713.gel 文件.3.装载time.out 文件,进行调试.4.打开DEC6713_Timer.c,在程序的第163行"TimerEventHandler<>;"处设置断点.5.运行程序,程序会停在断点处,表明已进入定时器中断.此时观察CCS 下方的"Stdout"窗口,会看到"Count:1".继续运行程序,程序每次都会停在断点处,连续进入中断60次后,退出主程序.如下图所示:提示:实验者可根据自己的需要改变周期寄存器的值,从而控制每次进中断的时间.实验八PLL锁相环实验一、实验目的:1.了解TMS320VC6713 的PLL锁相环;2.熟悉锁相环各寄存器的配置;3.掌握锁相环初始化的过程操作二、实验内容:1.系统初始化2.锁相环初始化3.改变锁相环的相关寄存器的值观察实验结果的变化情况三、实验背景知识:1.锁相环由锁相环乘法器<PLLM>、分频器<OSCDIV1、D0、D1、D2、D3>和复位控制器等部分组成,可通过软件进行配置,见图8-1.锁相环的输入参考时钟为来自CLKIN引脚的外部晶体振荡器的输入信号<CLKMODE0 = 1>,通过使用可配置的乘法器和分频器,在DSP内部,锁相环可灵活方便地修改输入的时钟信号,最后生成的时钟被传送到DSP内核、外围设备和其它的DSP内部模块2.锁相环模式<PLLEN=1>,当系统要使用分频器D0和乘法器的时候,进行此初始化过程.•在PLLCSR寄存器中,设置PLLEN=0<禁用模式>•等待最慢的PLLOUT信号或者参考时钟源<CLKIN>四个周期•在PLLCSR寄存器中,设置PLLRST=1<PLL被复位>•如果有必要,对PLLDIV0和PLLM编程•如果有必要,对PLLDIV1-n编程,必须执行此操作来使分频器更新比例系数•等待锁相环正确地复位•在PLLCSR寄存器中,设置PLLRST=0,使锁相环退出复位状态•等待锁相环锁定•在PLLCSR寄存器中,设置PLLEN=1来使能锁相环模式四、实验要求:通过本实验,熟悉锁相环的结构和功能及初始化过程中相关寄存器的配置,掌握锁相环的应用.五、实验程序功能与结构说明:实验中通过软件对锁相环和锁相环控制寄存器进行初始化,通过对锁相环和其相关寄存器的正确配置,产生DSP各个模块或者外围设备所需要的时钟信号.六、实验准备:1.将DSP 仿真器与计算机连接好;2.将DSP 仿真器的JTAG插头与SEED-DEC6713 单元的J2 相连接;3.打开SEED-DTK6713 的电源.观察SEED-DTK_MBoard 单元的+5V,+3.3V,+15V,-15V 的电源指示灯以及SEED_DEC6713 的电源指示灯D1、D3 是否均亮;若有不亮的,请断开电源,检查电源.七、实验步骤::1.打开CCS,进入CCS操作环境2.打开Test2001文件里面的SpeedUSB.pjt工程文件3.编译、下载main.c文件4.结合上节定时器实验,修改相关寄存器,观察输出的快慢变化。
实验二DSP系统定时器的使用一、实验目的:1、掌握5402 DSP片上定时器的初始化设置及应用;2、掌握DSP系统中实现定时的原理及方法;3、了解5402 DSP中断寄存器IMR、IFR的结构和使用;4、掌握5402 DSP系统中断的初始化设置过程和方法;5、掌握在C语言中嵌入汇编语句实现数字I/O的方法。
二、实验原理:1、定时器及其初始化在5402内部包括两个完全相同的定时器:定时器0和定时器1。
每个定时器分别包括3个寄存器:定时器周期寄存器PRD、定时器寄存器TIM、定时器控制寄存器TCR,其中TCR 寄存器中包括定时器分频系数TDDR、定时器预分频计数器PSC两个功能寄存器。
通过PRD 和TDDR可以设置定时器的初始值,TIM(16bits)和PSC(4bits)是用于定时的减法计数器。
CLKOUT是定时器的输入时钟,最大频率为100Mhz。
定时器相当于20bit的减法计数器。
定时器的结构如图1所示。
图1 定时器的组成框图定时器的定时周期为:CLKOUT×(TDDR+1)×(PRD+1)其中,CLKOUT为时钟周期,TDDR和PRD分别为定时器的分频系数和时间常数。
在正常工作情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。
当系统复位或者定时器单独复位时,PRD中的时间常数重新加载到TIM。
同样地,每当复位或PSC减到0后,定时器分频系数TDDR自动地加载到PSC。
PSC在CLKOUT作用下,作减1计数。
当PSC 减到0时,产生一个借位信号,令TIM作减l计数。
TIM减到0后,产生定时中断信号TINT,传送至CPU和定时器输出引脚TOUT。
例如:欲设置定时器0的定时周期为1ms,当DSP工作频率为100Mhz时,通过上式计算可得出:TDDR=15,PRD=6520。
2、定时器的使用下面是一段定时器应用程序,每检测到一次中断,ms+1,利用查询方式每计500个数就令XF引脚的电平翻转一次,在XF引脚输出一矩形波信号,因定时器1ms中断一次,故500ms就使LED翻转一次,这样LED指示灯就不停地闪烁。
实验一: 闪灯实验熟悉DSP 软硬件测试系统实验目的1.了解SHARC 系列高性能数字信号处理器的程序开发过程和编程语言;2.熟悉集成开发工具VisualDSP++, 学会使用VisualDSP++进行SHARC 系列ADSP 的程序开发、编译与调试;3.掌握SHARC 系列ADSP 的程序加载设计和加载过程。
实验内容利用波形产生信号板, 结合FPGA 编程技术和程序编程器, 编写测试ADSP21065L 和FPGA 之间硬件连接的应用程序, 同时完成应用程序的加载和脱机操作, 在信号指示灯“HL2”上产生可调周期的脉冲信号, “点亮”与“熄灭”指示灯HL2。
实验要求通过DSP 编程, 在其FLAG11引脚上模拟如下波形的周期信号:要求:(1) 500H T ms >,500L T ms >. (2) 并用示波器查看波形, 测量信号周期。
实验步骤1. 熟悉电路图, 清楚波形产生电路板ADSP21065L 与可编程FPGA 器件之间的连接关系;2. 编写FPGA 程序。
在FPGA 内部将ADSP21065L 的标志引脚FLAG11(引脚号26)设置为输出, 作为FPGA 的输入信号, 在FPGA 内部编程将该信号直接输出在发FPGA 的37引脚号上, 设置37引脚为输出信号, 驱动板上的HL2 LED 指示灯;3. 启动VisualDsp++4.5,选择project 工程选项菜单, 创建一个名称为Test.dpj 的工程文件, 选择处理器的型号为ADSP-21065L ;4.弹出一个对话框, 选择是否需要加入VDSP kernel ,选择“NO ”;5. 在工程中加入以下参考源文件:\exp1\test(boot)\ boot1.asm 和boot1.ldf 6.编译, 链接调试, 生成可执行文件。
7.运行程序, 可以看到波形发生电路板上的指示灯“HL2”不断闪动。
8. 利用示波器观测系统时钟,并测量产生信号的波形和周期。
DSP实验报告(二)实验二应用FFT对信号进行频谱分析一、实验目的1、在理论学习的基础上,通过本次实验,加深对快速傅里叶变换的理解,熟悉FFT算法及其程序的编写。
2、熟悉应用FFT对典型信号进行频谱分析的方法。
3、了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。
二、实验原理与方法①一个连续信号的频谱可以用它的傅立叶变换表示为+ Xa(jW)=-jWtx(t)edtòa-如果对该信号进行理想采样,可以得到采样序列x(n)=xa(nT)同样可以对该序列进行z变换,其中T为采样周期X(z)=+ x(n)z-n+ -令z为ejw,则序列的傅立叶变换X(ejw)=x(n)ejwn-其中ω为数字频率,它和模拟域频率的关系为w=WT=W/fs式中的是采样频率。
上式说明数字频率是模拟频率对采样率的归一化。
同模拟域的情况相似。
数字频率代表了序列值变化的速率,而序列的傅立叶变换称为序列的频谱。
序列的傅立叶变换和对应的采样信号频谱具有下式的对应关系。
1X(e)=Tjw+ - w-2pXa(j)T即序列的频谱是采样信号频谱的周期延拓。
从式可以看出,只要分析采样序列的谱,就可以得到相应的连续信号的频谱。
注意:这里的信号必须是带限信号,采样也必须满足Nyquist定理。
在各种信号序列中,有限长序列在数字信号处理中占有很重要的地位。
无限长的序列也往往可以用有限长序列来逼近。
有限长的序列可以使用离散傅立叶变换。
当序列的长度是N时,定义离散傅立叶变换为:X(k)=DFT[x(n)]=其中W=e2pj-NN-1n=0WNkn它的反变换定义为:1x(n)=IDFT[X(k)]=N根据式和,则有N-1n=0X(k)WNknX(z)|z=Wnk=NN-1n=0x(n)WNnk=DFT[x(n)]j2pN可以得到X(k)2pk的点,就NN是将单位圆进行N等分以后第k个点。
所以,X(k)是z变换在单位圆上的等距采样,或者说是序列傅立叶变换的等距采样。
《DSP技术》课程实验报告学生姓名:所在班级:指导教师:记分及评价:一、实验名称:拨码开关实验二、实验目的了解DSP开发系统的组成和结构;了解IO的基本编程方法三、实验内容修改例子程序,实现以下功能:(1)调试例子程序,理解程序设计思想;(2)修改例子程序,实现每个拨码开关控制一种不同的LED花样显示。
(3)实现LED流水灯的功能,并且实现由拨码开关键值控制LED流水灯的频率(按键值与LED流水灯频率关系自定义,至少提供两种不同的LED流水灯变化的频率)(加分)四、实验程序与结果分析void Delay(int n){int i=0,j;for(j=0; j<n; j++)for(i=0;i<1000;i++);}void main(void){unsigned int temp,m;unsigned int temp1[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};temp = 0;InitSysCtrl();//初始化PLL,WatchDog,使能外围时钟,该初始化文件在"DSP281x_SysCtrl.c"中DINT;//关闭CPU中断// Initialize PIE control registers to their default state.// The default state is all PIE interrupts disabled and flags// are cleared.InitPieCtrl();IER = 0x0000;//关闭中断和清除所有中断标志IFR = 0x0000;// Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines (ISR).InitPieVectTable();for(;;){asm(" nop ");temp = *(int *)0x2200&0x00ff;switch(temp){case 0xfe: * (int *)0x2200 = temp1[0];break;case 0xfd: * (int *)0x2200 = temp1[1];break;case 0xfb: * (int *)0x2200 = temp1[2];break;case 0xf7: * (int *)0x2200 = temp1[3];break;case 0xef: * (int *)0x2200 = temp1[4];break;case 0xdf: * (int *)0x2200 = temp1[5];break;case 0xbf: * (int *)0x2200 = temp1[6];break;case 0x7f: * (int *)0x2200 = temp1[7];break;}asm(" nop ");if(temp==1){for(m=0; m<8; m++){Delay(1200);* (int *)0x2200 = ~(1<<m);Delay(200);}}if(temp==3){for(m=0; m<8; m++){Delay(800);* (int *)0x2200 = ~(1<<m);Delay(100);}}//temp值输出0x2200地址的LED灯asm(" nop ");}}五、小结通过这次试验让我明白不同模块可以共用同一个地址,这应该是时分复用的功劳吧,其次0x200这地址允许读写操作,这次的试验箱改变以往地址低位在后的设计应该是别出心裁的,目的应该是考验学生对地址的理解。
实验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)是一种将连续信号转换为离散信号,并对其进行处理和分析的技术。
在现代通信、音频处理、图像处理等领域中,DSP技术被广泛应用。
本实验旨在通过对DSP信号处理的实践,加深对该技术的理解与应用。
二、实验目的本实验旨在通过对DSP信号处理的实践,掌握以下内容:1. 学习使用DSP芯片进行信号采集和处理;2. 理解离散信号的采样和重构过程;3. 掌握常见的DSP信号处理算法和方法。
三、实验原理1. 信号采集与重构在DSP信号处理中,首先需要对模拟信号进行采样,将连续信号转换为离散信号。
采样过程中需要注意采样频率的选择,以避免混叠现象的发生。
采样完成后,需要对离散信号进行重构,恢复为连续信号。
2. DSP信号处理算法DSP信号处理涉及到多种算法和方法,如滤波、频谱分析、时域分析等。
其中,滤波是一种常见的信号处理方法,可以通过滤波器对信号进行去噪、增强等处理。
频谱分析可以将信号在频域上进行分析,了解信号的频率成分和能量分布。
时域分析则关注信号的时序特征,如幅值、相位等。
四、实验步骤1. 信号采集与重构在实验中,我们使用DSP芯片进行信号采集与重构。
将模拟信号输入DSP芯片的模拟输入端口,通过ADC(模数转换器)将模拟信号转换为数字信号。
然后,通过DAC(数模转换器)将数字信号转换为模拟信号输出。
2. 滤波处理为了演示滤波处理的效果,我们选择了一个含有噪声的信号进行处理。
首先,使用FIR滤波器对信号进行低通滤波,去除高频噪声。
然后,使用IIR滤波器对信号进行高通滤波,增强低频成分。
3. 频谱分析为了对信号的频率成分和能量分布进行分析,我们使用FFT(快速傅里叶变换)算法对信号进行频谱分析。
通过观察频谱图,可以了解信号的频率特性。
4. 时域分析为了对信号的时序特征进行分析,我们使用时域分析方法对信号进行处理。
通过计算信号的均值、方差、峰值等指标,可以了解信号的幅值、相位等特性。
目录目录 (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实验报告实验⼀信号、系统及响应⼀、实验⽬的1.熟悉理想采样的性质,了解信号采样前后的频谱变化,加深对采样定理的理解。
2.熟悉离散信号和系统的时域特性。
3.熟悉线性卷积的计算编程⽅法:利⽤卷积的⽅法,观察分析系统响应的时域特性。
4.掌握序列傅⽒变换的计算机实现⽅法,利⽤序列的傅⽒变换对离散信号,系统及系统响应进⾏频域分析。
⼆、实验内容在编制以上各部分程序以后,编制主程序调⽤各个功能模块实现对信号,系统和系统响应的时域,频域分析,完成以下实验内容。
1.分析理想采样信号序列的特性。
产⽣理想采样信号序列()a x n ,使A =444.128,α=,0Ω= a.⾸先选⽤采样频率为1000Hz,T =1/1000,观察所得理想采样信号的幅频特性,在折叠频率以内和给定的理想幅频特性⽆明显差异,并做记录。
b.改变采样频率为300Hz,T=1/300,观察所得到的幅频特性曲线的变化,并做记录c.进⼀步减少采样频率为200Hz,T=1/200,观察频谱“混淆”现象是否明显存在,说明原因,并记录幅频特性曲线。
2.离散信号,系统和系统响应的分析(1).观察信号()b x n 和系统()b h n 的时域和幅频特性,利⽤线性卷积求信号通过系统以后的响应。
⽐较系统响应和系统()b h n 的时域和幅频特性,注意它们之间有⽆差异,并绘出曲线。
(2).观察信号()c x n 和系统()a h n 的时域和幅频特性,利⽤线性卷积求系统响应。
判断响应序列图形及序列⾮零值长度是否与理论结果⼀致,说出⼀种定性判断响应序列图形正确与否的⽅法(提⽰:10()()()c a x n h n R n ==)。
利⽤系统的傅⽴叶变换数值计算⼦程序求出()k j Y e ω,观察响应序列的幅频特性。
定性判断结果正确与否,改变信号()c x n 的脉冲宽度,使N =5,重复以上动作,观察变化,记录改变参数前后的差异。
(3)将实验步骤2-(2)中信号变换为()a x n ,其中A=1,α =0.4,0Ω=2.0734,T=1。
一、实验目的1、掌握TMS320系列DSP的性能、结构原理、指令系统及编程方法;2、熟练掌握CCS集成开发环境的常用开发、调试功能;3、利用MATLAB语言与开发环境进行FIR滤波器的高级语言设计与仿真;4、根据MATLAB仿真结果,进行基于CCS的高级语言和汇编语言仿真;5、在DSP实验板上实时实现该滤波器。
二、试验设备1、TMS320C5402DSP实验开发板1块,JTAG仿真探头1个,5V 交流适配器1个;2、音频信号源1个,耳机1对;3、微型计算机1台。
三、试验内容1、试验硬件简介:本试验的板子采用南京航空航天大学DSP实验室自己开发的试验板子,它有以下几个特点:1)试验板子的核心处理器是TMS320VC5402;2)外部单5V电源供电;3)提供了与计算机串行口的数据通信功能,可以与计算机交换数据;4)提供了语音输入和语音输出的街口,可以进行语音信号的分析与处理;5)提供了可与外部相连接的EHPI8、并口、McBSP口等VC5402片上外设接口。
通过这些接口,可以方便的对该试验板子进行功能扩展;6)该试验板子提供大容量的外部程序和数据RAM以及FLASH存储空间,方便学生开发和使用;7)试验板子集成了一块ALTERA公司CPLD(EPM7128S),可以通过该CPLD实现对试验板子上各种逻辑的控制管理;8)试验板子提供了必要的复位,测试和开关插销,为用户调试和测试提供了方便。
本试验用到了试验板子辅助器件为语音处理部分的硬件SRAM、闪烁灯器件等等。
2、在Matlab实现算法仿真试验目的是设计一个64阶FIR数字低通滤波器,其参数如下:截至频率为3000Hz,采样频率为2000Hz。
利用Matlab工具箱设计FIR数字滤波器,其设计语言如下:>>c=fir1(63,0.3);>>freqz(c,1,4096);>>plot(c);得到数字滤波器系数如下:-0.00079887, -0.00039007, 0.0004368, 0.0011085, 0.00095091,-0.00025572, -0.0017797, -0.002173, -0.00046388, 0.0025341,0.0042491, 0.0023285, -0.0027578, -0.0070632, -0.005921, 0.0015267,0.010096, 0.011687, 0.0023706, -0.012368, -0.019945, -0.010603,0.012305, 0.031247, 0.026339, -0.0069494, -0.048111, -0.060186,-0.01384, 0.088797, 0.20863, 0.289, 0.289, 0.20863,0.088797, -0.01384, -0.060186, -0.048111, -0.0069494, 0.026339,0.031247, 0.012305, -0.010603, -0.019945, -0.012368, 0.0023706,0.011687, 0.010096, 0.0015267, -0.005921, -0.0070632, -0.0027578,0.0023285, 0.0042491, 0.0025341, -0.00046388, -0.002173, -0.0017797,-0.00025572, 0.00095091, 0.0011085, 0.0004368, -0.00039007, -0.00079887得到数字滤波器的时域与频域图如下:图一数字滤波器时域图图二数字滤波器的幅频相频图设计一正弦函数进行仿真:sin(2*Pi*10000*t)+sin(2*Pi*3000*t)其中10000与3000为频率,仿真结果看能否过滤高频10000。
实验一DSP的常用指令实验一、实验目的和任务1、熟悉CCS编程环境及TMS320C54xDSP的基本算术运算指令。
2、了解TMS320C5402的存储空间分配。
3、进行DSP的基本编程调试。
二、实验内容用CCS编程环境进行DSP的基本算术运算指令的编程调试。
三、实验仪器、设备及材料安装有WINDOWS98以上操作系统和CCS2.0(`C5000)的计算机。
四、实验原理借用计算机的资源仿真DSP的内部结构,以学习DSP的基本编程。
五、主要技术重点、难点主要技术重点:CCS编程环境,TMS320C5402的存储空间分配,DSP的基本算术运算指令。
主要技术难点:DSP的基本算术运算指令的运用。
六、实验步骤1、鼠标左键双击桌面“Setup CCS 2 ('C5000)”图标启动CCS Setup,鼠标左键依次单击“C5402Simulator”,“Import”,“Save and Quit”,“是(Y)”启动CCS,在[Project]-[Open]菜单中打开ex1.pjt;2、在左边树状列表框内双击[Project]展开目录树,双击[ex1.asm]打开源程序文件,参考程序中的注释仔细阅读源程序;3、在[Project]-[Build]菜单中编译项目文件,编译成功后在下端的状态窗口中显示Build Complete,0Errors,0 Warnings;4、在[File]-[Load Programm]中加载输出执行代码文件ex1.out,选择[View]-[ [Disassembly ]。
此时,反汇编(Disassembly)窗口将显示在前端,当前PC指针为0000:2080(黄色箭头指示),指令代码将以汇编语言方式显示,可以在反汇编窗口中点击鼠标右键,在弹出菜单中选择[Properties]-[Disassembly Options]打开反汇编选项对话框,在[Disassembly Style]选项中选择[Algebraic],以算术语言方式显示指令代码(注意:此时可能标号显示异常,按PageUP再按PageDown即可刷新显示);5、选择[View]-[CPU Registers]-[CPU Register](或点击左边工具栏的快捷按钮)打开处理器映射寄存器窗口;6、选择[View]-[Memory](或点击左边工具栏的快捷按钮),在弹出的[Windows Memory Options]对话框的Address文本框中输入0x0260,Page下拉框中选中Data,确定后将打开数据存储器查询窗口,此时数据存储器地址0x0260~0x0263将对应ex1.asm 中声明的标号DAT0~DAT3;7、调整[Disassembly][memory][CPU Registers]三个窗口的大小,以便于观察;8、依次把光标移动到反汇编(Disassembly)窗口中标号为bk?(?表示从0开始的整数)的标号行下的指令处,点击鼠标右键,在弹出菜单选择 [Toggle breakpoint](或者点击快捷按钮)设置断点,断点设置后,该行前显示红色圆点;9、选择[Debug]-[Run](也可以按快捷键F5或点击快捷按钮)执行程序;10、程序将在第一个断点bk0处停止,在处理器映射寄存器窗口和数据存储器查询窗口中双击相应操作数的内容,即可进行修改(注意:如步骤6所述,DA T0~DAT3对应地址为0X0260~0X0263),试修改下一条指令操作数的内容,然后按F10单步执行程序,再在处理器映射寄存器窗口中或数据存储器查询窗口中观察指令执行结果;11、重复执行9步骤,依次观察并记录加法指令(结果: A )、减法指令(结果: A )、乘法指令(结果:A )、除法指令(结果: DAT2:商; DAT3:余数)、平方指令(结果:A )以及3数累加宏指令(结果: DA T3)的执行结果;12、以上指令执行完毕后,程序转到bk0处,可再次进行熟悉运算控制的实验。
D S P 实验报告班级:姓名:学号:实验一 快速傅立叶变换(FFT )的实现一、 实验目的在数字信号处理系统中,FFT 作为一个非常重要的工具经常使用,甚至成为 DSP 运算能力的一个考核因素。
FFT 是一种高效实现离散付氏变换的算法。
离散付氏变换的目的是把信号由时域变换到频域,从而可以在频域分析处理信息,得到的结果再由付氏逆变换到时域。
本实验的目的在于学习FFT 算法, 及其在TMS320C54X 上的实现, 并通过编程掌握C54X 的存储器管理、辅助寄存器的使用、位倒序寻址方式等技巧,同时练习使用 CCS 的探针和图形工具。
另外在 BIOS 子目录下是一个使用 DSP/BIOS 工具实现 FFT 的程序。
通过该程序,你可以使用 DSP/BIOS 提供的分析工具评估 FFT 代码执行情况。
二、 实验原理1) 基 2 按时间抽取 FFT 算法对于有限长离散数字信号{x[n]},0 ≤ n ≤ N -1,其离散谱{x[k]}可以由离散付氏变换(DFT )求得。
DFT 的定义为:1,...,1,0][)()2(10-==--=∑N k en x k X nk N j N n可以方便的把它改写为如下形式:1,...,1,0][)(10-==∑-=N k n x k X W nk N N n不难看出,WN 是周期性的,且周期为 N ,即...2,1,0,))((±±==-++l m W W nk N lN k mN n NWN 的周期性是 DFT 的关键性质之一。
为了强调起见,常用表达式 WN 取代 W 以便明确其周期是 N 。
2) 实数 FFT 运算对于离散傅立叶变换(DFT )的数字计算,FFT 是一种有效的方法。
一般假定输入序列是复数。
当实际输入是实数时,利用对称性质可以使计算 DFT 非常有效。
一个优化的实数 FFT 算法是一个组合以后的算法。
原始的 2N 个点的实输入序列组合成一个 N 点的复序列,之后对复序列进行 N 点的 FFT 运算,最后再由 N 点的复数输出拆散成 2N 点的复数序列, 这 2N 点的复数序列与原始的 2N 点的实数输入序列的 DFT 输出一致。
哈尔滨工程大学信息与通信工程学院实验名称:DSP原理与应用实验班级:20100813学号:**********学生姓名:**实验一自相关函数实验一.实验目的:熟悉C语言编程和VDSP编译环境。
学会用C语言编程实现自相关函数对正弦信号的应用。
二.实验要求:用VDSP集成环境产生一个正弦信号,然后用自相关函数对其进行处理,观察自相关函数运算后的波形。
自相关函数:自相关函数是信号在时域中特性的平均度量,它用来描述信号在一个时刻的取值与另一时刻取值的依赖关系,其定义式为对于周期信号,积分平均时间T为信号周期。
对于有限时间内的信号,例如单个脉冲,当T趋于无穷大时,该平均值将趋于零,这时自相关函数可用下式计算自相关函数就是信号x(t)和它的时移信号x(t+τ)乘积的平均值,它是时移变量τ的函数。
例如信号的自相关函数为由此可见,正弦(余弦)信号的自相关函数同样是一个余弦函数。
它保留了原信号的频率成分,其频率不变,幅值等于原幅值平方的一半,即等于该频率分量的平均功率,但丢失了相角的信息。
三.实验结果:正弦信号经过自相关后的波形四.实验结论:自相关函数应用在检测信号回声(反射)。
若在宽带信号中存在着带时间延迟的回声,那么该信号的自相关函数将在处也达到峰值(另一峰值在处),这样可根据确定反射体的位置,同时自相关系数在处的值将给出反射信号相对强度的度量。
实验二 包络检波实验一.实验目的:熟悉C 语言编程和VDSP 编译环境。
学会用C 语言编程实现对信号进行包络提取。
二.实验要求:一个低频信号a(t)调制在一个高频信号t 0cos ω上,如图所示,这个信号表示为t t a t y 0cos )()(ω⋅= 低频信号和高频载波是相乘关系,将低频信号a(t)提取出来的过程就是求解包络.1) 将y(t)平方处理, t t a t a t t a t 02202222cos )()(cos )()(y ωω⋅+=⋅=平方后可以看到,变成了低频信号平方分量和一个高频信号之和.这样将信号通过一个低通滤波器就可以得到低频分量了.2) Hilbert变换3) 模拟电容充放电的方法三.实验结果:原始的包络信号:包络检波后的信号:四.实验结论:包络检波的应用在于从调幅波包络中提取调制信号的过程:先对调幅波进行整流,得到波包络变化的脉动电流,再以低通滤波器滤除去高频分量,便得到调制信号。
DSP上机实验:DTMF信号的编码一、实验要求设计作业:双音多频(DTMF)信号的编码:把自己的电话号码DTMF编码生成为一个.wav文件。
【wavwrite()】技术指标:根据ITU Q.23建议,DTMF信号的技术指标是:传送/接收率为每秒10个号码,或每个号码100ms。
每个号码传送过程中,信号存在时间至少45ms,且不多于55ms,100ms的其余时间是静音。
在每个频率点上允许有不超过±1.5%的频率误差。
任何超过给定频率±3.5%的信号,均被认为是无效的,拒绝接收。
二、实验思想:1、编码:DTMF拨号键盘由一个4*4行列构成,每列代表一个高频信号,每行代表一个低频信号,每当按下一个键时,产生高、低频率的两个正弦信号,代表一个特定的数字或符号,根据ITU Q.23颁布的国际标准,DTMF传送或接受每个号码的时间为100ms,其中每个号码传送的过程中,信号存在时间至少45ms,其余时间静音。
用一个字符串变量来接受输入的电话号码,并将各个数字和符号的ASCII码用一个4*4矩阵表示,每接收到一个数字就对应两个频率,并产生由两个正弦波叠加的信号,完成DTMF编码,利用matlab提供的fft函数画出其频谱,用sound函数发出声音。
2、解码:采用Goertzel算法来检测DTMF信号,它是用IIR滤波器实现DFT算法的一种特殊方法,在实际DTMF解码中,只需要知道输入信号即DTMF信号的离散傅里叶变换X(k)的幅度信息,忽略相位信息,因为只要能得到8个特定频率点的幅度值,看哪两个频率对应的幅度最大,就能知道对应的是哪个数字,达到解码的目的,可以利用matlab提供的goertzel函数来对信号解码。
三、实验代码:d=input('请键入电话号码: ','s');sum=length(d);total_x=[];sum_x=[];sum_x=[sum_x,zeros(1,800)];for a=1:sumsymbol=abs(d(a));tm=[49,50,51,65;52,53,54,66;55,56,57,67;42,48,35,68]; for p=1:4;for q=1:4;if tm(p,q)==abs(d(a));break,endendif tm(p,q)==abs(d(a));break,endendf1=[697,770,852,941];f2=[1209,1336,1477,1633];n=1:400;x=sin(2*pi*n*f1(p)/8000)+sin(2*pi*n*f2(q)/8000); x=[x,zeros(1,400)]; sum_x=sum_x+x;total_x=[total_x,x];endwavwrite(total_x,'soundwave')sound(total_x);t=(1:8800)/8000;subplot(2,1,1);plot(t,total_x);axis([0,1.2,-2,2]);xlabel('时间/s')title('DTMF信号时域波形')xk=fft(x); mxk=abs(xk);subplot(2,1,2);k=(1:800)*sum*8000/800;plot(k,mxk); xlabel('频率');title('DTMF信号频谱');disp('双频信号已生成并发出')四、实验结果图:请键入电话号码: 130xxxxxxxx。
实验三 IIR 滤波器设计一、实验目的:1.认真复习滤波器幅度平方函数的特性,模拟低通滤波器的巴特沃思逼近、切比雪夫型逼近方法;复习从模拟低通到模拟高通、带通、带阻的频率变换法;从模拟滤波器到数字滤波器的脉冲响应不变法、双线性变换法的基本概念、基本理论和基本方法。
2掌握巴特沃思、切比雪夫模拟低通滤波器的设计方法;利用模拟域频率变换设计模拟高通、带通、带阻滤波器的方法.。
3.掌握利用脉冲响应不变法、双线性变换法设计数字滤波器的基本方法;能熟练设计巴特沃思、切比雪夫低通、带通、高通、带阻数字滤波器。
4.熟悉利用MATLAB 直接进行各类数字滤波器的设计方法。
二、实验内容a. 设计模拟低通滤波器,通带截止频率为10KHz,阻带截止频率为16KHz,通带最大衰减1dB,阻带最小衰减20dB。
(1) 分别用巴特沃思、切比雪夫I、切比雪夫II 型、椭圆型滤波器分别进行设计,并绘制所设计滤波器的幅频和相频特性图。
(2) 在通带截止频率不变的情况下,分别用n=3,4,5,6 阶贝塞尔滤波器设计所需的低通滤波器,并绘制其相应的幅频响应和相频响应图。
%%%%%%%%%----巴特沃思-----%%%%%%%clc;clear all;omegap=10000*2*pi;omegas=16*10^3*2*pi;Rp=1;As=20;[N,omegac]=buttord(omegap,omegas,Rp,As,'s');%低通的节次[b,a]=butter(N,omegac,'s');[H,w]=freqs(b,a);%设计滤波器的幅频和相频特性图subplot(211)plot(w/2*pi/1000,20*log10(abs(H)))title('巴特沃思幅频特性')Angle=angle(H);%相频subplot(212)plot(w/2*pi/1000,Angle)title('相频特性')%%%%%%%%%----切比雪夫I-----%%%%%%%[NI,omegacI]=cheb1ord(omegap,omegas,Rp,As,'s');%低通的节次[b1,a1]=cheby1(NI,Rp,omegacI,'s');%切比雪夫I模拟低通滤波器[H1,w1]=freqs(b1,a1);figuresubplot(211)plot(w1/2*pi/1000,20*log10(abs(H1)))title('切比雪夫I幅频特性')Angle1=angle(H1);%相频subplot(212)plot(w1/2*pi/1000,Angle1)title('相频特性')%%%%%%%%%----切比雪夫II-----%%%%%%%[NII,omegacII]=cheb2ord(omegap,omegas,Rp,As,'s');%低通的节次[b2,a2]=cheby2(NII,As,omegacII,'s');%切比雪夫II模拟低通滤波器%w0=[omegap,omegas];[H2,w2]=freqs(b2,a2);figuresubplot(211)plot(w2/2*pi/1000,20*log10(abs(H2)))title('切比雪夫II幅频特性')Angle2=angle(H2);%相频subplot(212)plot(w2/2*pi/1000,Angle2)title('相频特性')%%%%%%%%%----椭圆型滤波器-----%%%%%%%[Nt,omegact]=ellipord(omegap,omegas,Rp,As,'s');%低通的节次[bt,at]=ellip(Nt,Rp,As,omegact,'s');%椭圆型滤波器模拟低通滤波器%w0=[omegap,omegas];[H3,w3]=freqs(bt,at);figuresubplot(211)plot(w3/2*pi/1000,20*log10(abs(H3)))title('椭圆型滤波器幅频特性')Angle3=angle(H3);%相频subplot(212)plot(w2/2*pi/1000,Angle3)title('相频特性')(2)%%%%%%%%%----贝塞尔滤波器n=3、4、5、6-----%%%%%%% clc;clear all;omegap=10000*2*pi;Rp=1;As=20;for n=3:6[b,a]=besself(n,omegap);%低通的节次[H,w]=freqs(b,a);%设计滤波器的幅频和相频特性图figuresubplot(211)plot(w/2*pi/1000,20*log10(abs(H)))title('幅频特性')Angle=angle(H);%相频subplot(212)plot(w/2*pi/1000,Angle)title('相频特性')Endb. 设计模拟高通滤波器,通带截止频率为2000Hz,阻带截止频率1500Hz,通带最大衰减为3dB,阻带最小衰减为15dB。
(1) 分别用巴特沃思、切比雪夫I 型滤波器首先设计模拟低通滤波器,再通过频率转换成高通滤波器,并分别绘制所设计滤波器的幅频和相频特性图。
%%%%%%%%%----巴特沃思低通转化为高通-----%%%%%%%clc;clear all;omegap=2000*2*pi;omegas=1500*2*pi;Rp=3;As=15;[N,omegac]=buttord(omegap,omegas,Rp,As,'s');%低通的节次[b,a]=butter(N,omegac,'s');[bt,at]=lp2hp(b,a,omegac);%巴特沃思低通转化为高通[H,w]=freqs(bt,at);%设计滤波器的幅频和相频特性图subplot(211)plot(w/2*pi/1000,20*log10(abs(H)))title('巴特沃思幅频特性')Angle=angle(H);%相频subplot(212)plot(w/2*pi/1000,Angle)title('相频特性')%%%%%%%%%----切比雪夫I低通转化为高通-----%%%%%%% [NI,omegacI]=cheb1ord(omegap,omegas,Rp,As,'s');%低通的节次[b1,a1]=cheby1(NI,Rp,omegacI,'s');%切比雪夫I模拟低通滤波器[bg,ag]=lp2hp(b1,a1,omegacI);%切比雪夫I低通转化为高通w0=[omegap,omegas];[H1,w1]=freqs(bg,ag);figuresubplot(211)plot(w1/2*pi/1000,20*log10(abs(H1)))title('切比雪夫I幅频特性')Angle1=angle(H1);%相频subplot(212)plot(w/2*pi/1000,Angle1)title('相频特性')(2) 直接用巴特沃思、切比雪夫I 型滤波器设计高通滤波器,并分别绘制所设计滤波器的幅频和相频特性图。
%%%%%%%%%----巴特沃思高通滤波器-----%%%%%%%clc;clear all;omegap=2000*2*pi;omegas=1500*2*pi;Rp=3;As=15;[N,omegac]=buttord(omegap,omegas,Rp,As,'s');%低通的节次[b,a]=butter(N,omegac,'high','s');%直接高通系数[H,w]=freqs(b,a);%设计滤波器的幅频和相频特性图subplot(211)plot(w/2*pi/1000,20*log10(abs(H)))title('巴特沃思幅频特性')Angle=angle(H);%相频subplot(212)plot(w/2*pi/1000,Angle)title('相频特性')%%%%%%%%%----切比雪夫I低通转化为高通-----%%%%%%%[NI,omegacI]=cheb1ord(omegap,omegas,Rp,As,'s');%低通的节次[b1,a1]=cheby1(NI,Rp,omegacI,'high','s');%切比雪夫I%直接高通系数[H1,w1]=freqs(b1,a1);figuresubplot(211)plot(w1/2*pi/1000,20*log10(abs(H1)))title('切比雪夫I幅频特性')Angle1=angle(H1);%相频subplot(212)plot(w/2*pi/1000,Angle1);tille(‘相频特性’)c. 设计模拟带通滤波器,其通带带宽为B=2π×200rad/s,中心频率Ω0=2π×1000rad/s,通带内最大衰减为δ1=3dB,阻带Ωs1=2π×830rad/s,而Ωs2=2π×1200rad/s,阻带最小衰减δ2=15dB。
(1) 分别用巴特沃思、切比雪夫I 型滤波器首先设计模拟低通滤波器,再通过频率转换成带通滤波器,并分别绘制所设计滤波器的幅频和相频特性图。
%%%%%%%%%----巴特沃思低通转化为带通滤波器-----%%%%%%%clc;clear all;omegap1=900*2*pi;omegap2=2*pi*1100;omegas1=830*2*pi;omegas2=2*pi*1200;Rp=3;As=15;B=2*pi*200;omega0=2*pi*1000;omegap=[omegap1,omegap2];omegas=[omegas1,omegas2];[N,omegac]=buttord(omegap,omegas,Rp,As,'s');%低通的节次[z,p,k]=buttap(N);%零极点b=k*real(poly(z));a=real(poly(p));[b1,a1]=lp2bp(b,a,omega0,B);[H,w]=freqs(b1,a1);subplot(211)plot(w,abs(H))title('幅频特性')Angle=angle(H);%相频subplot(212)plot(w/2*pi/1000,Angle)title('相频特性')%%%%%%%%%----切比雪夫I低通转化为带通滤波器-----%%%%%%% clc;clear all;omegap1=900*2*pi;omegap2=2*pi*1100;omegas1=830*2*pi;omegas2=2*pi*1200;Rp=3;As=15;B=2*pi*200;omega0=2*pi*1000;omegap=[omegap1,omegap2];omegas=[omegas1,omegas2];[N,omegac]=cheb1ord(omegap,omegas,Rp,As,'s');%低通的节次[z,p,k]=cheb1ap(N,Rp);%零极点b=k*real(poly(z));a=real(poly(p));[b1,a1]=lp2bp(b,a,omega0,B);[H,w]=freqs(b1,a1);figuresubplot(211)plot(w,abs(H))title('幅频特性')Angle=angle(H);%相频subplot(212)plot(w/2*pi/1000,Angle)title('相频特性')(2) 直接用巴特沃思、切比雪夫I 型滤波器设计带通滤波器,并分别绘制所设计滤波器的幅频和相频特性图。