DSP实验二.
- 格式:doc
- 大小:196.50 KB
- 文档页数:27
dsp原理与应用实验报告总结DSP(Digital Signal Processing)数字信号处理是利用数字技术对信号进行处理和分析的一种方法。
在本次实验中,我们探索了DSP的原理和应用,并进行了一系列实验以验证其在实际应用中的效果。
以下是对实验结果的总结与分析。
实验一:数字滤波器设计与性能测试在本实验中,我们设计了数字滤波器,并通过性能测试来评估其滤波效果。
通过对不同类型的滤波器进行设计和实现,我们了解到数字滤波器在信号处理中的重要性和应用。
实验二:数字信号调制与解调本实验旨在通过数字信号调制与解调的过程,了解数字信号的传输原理与方法。
通过模拟调制与解调过程,我们成功实现了数字信号的传输与还原,验证了调制与解调的可行性。
实验三:数字信号的傅里叶变换与频谱分析傅里叶变换是一种重要的信号分析方法,可以将信号从时域转换到频域,揭示信号的频谱特性。
本实验中,我们学习了傅里叶变换的原理,并通过实验掌握了频谱分析的方法与技巧。
实验四:数字信号的陷波滤波与去噪处理陷波滤波是一种常用的去除特定频率噪声的方法,本实验中我们学习了数字信号的陷波滤波原理,并通过实验验证了其在去噪处理中的有效性。
实验五:DSP在音频处理中的应用音频处理是DSP的一个重要应用领域,本实验中我们探索了DSP在音频处理中的应用。
通过实验,我们成功实现了音频信号的降噪、均衡和混响处理,并对其效果进行了评估。
实验六:DSP在图像处理中的应用图像处理是另一个重要的DSP应用领域,本实验中我们了解了DSP在图像处理中的一些基本原理和方法。
通过实验,我们实现了图像的滤波、边缘检测和图像增强等处理,并观察到了不同算法对图像质量的影响。
通过以上一系列实验,我们深入了解了DSP的原理与应用,并对不同领域下的信号处理方法有了更深刻的认识。
本次实验不仅加深了我们对数字信号处理的理解,也为日后在相关领域的研究与实践提供了基础。
通过实验的结果和总结,我们可以得出结论:DSP作为一种数字信号处理的方法,具有广泛的应用前景和重要的实际意义。
DSP实验实验一存储器访问实验修改程序中指针room和room2指向的地址,分别改为0x0080、0x008F,0x0100、0x010F,0x0400、0x040F,查看view-memory 中结果如何?并思考为什么?答:将程序中0x0060; 0x006F; 分别改为0x0080、0x008F,0x0100、0x010F,0x0400、0x040F即可。
观察view-memory发现:1)改成0x0080、0x008F时,view-memory 中从0x0080开始的地址没有变化,因为从0x0080到0x00FF之间属于非法区域,不可以读写数据。
2)改成0x0100、0x010F时,view-memory 中从0x0100开始的地址没有变化,而是会跳到0x0200到0x020F,即从0x0200到0x020F的数据都显示0xAAAA,因为x0200到0x020F属于保留区域。
3)改成0x0400、0x040F时,view-memory 中从0x0400开始的地址没有变化,而是会跳到0x0300到0x030F,即从0x0300到0x030F的数据都显示0xAAAA,因为0x0400到0x040F属于保留区域。
程序如下:/*;***********************************************************************;* 北京达盛科技有限公司;* 研发部;*;* ;*;*--------------------------------------------- 文件信息---------------*文件名称:mem.c*文件标示:*摘要:本文件内容为tms320lf2407 dsp的存贮器操作练习程序把* 数据空间从0x0060开始的8个地址空间,填写入0xAAAA的* 数值,然后读出,并存储到0X0068开始的8个地址空间**************************************************************//************************文件预处理***************************/#include "e100_2407.h"/*************************************************************//********************全局变量定义与初始化*********************//*************************************************************//*******************函数、子程序声明与定义********************/void sys_ini() //系统初始化子程序{/*关总中断*/asm(" setc INTM");/*抑制符号位扩展*/asm(" clrc SXM");/*累加器中结果正常溢出*/asm(" clrc OVM");/*禁止看门狗*/* WDCR=0x00E8;/*CLKIN=15M,CLKOUT=30M*/* SCSR1=0x0200;}/*************************************************************//*****************中断服务子程序声明与定义********************/ interrupt void nothing() //哑中断子程序{return;}/*************************************************************//**************************主程序*****************************/void main(void){int i;volatile unsigned int *room = (volatile unsigned int *)0x0060;volatile unsigned int *room2= (volatile unsigned int *)0x006F;sys_ini();/*将0xAAAA写入从数据空间的地址0x0060开始的8个单元中*/for(i=0;i<8;i++){*room=0xAAAA;room++;}/*从0x0060开始的8个空间读出数据依次写入从0x0068开始的8个单元中*/ for(i=0;i<8;i++){*room2=*(room-1);room--;room2--;}}/***************************结束******************************/实验二I/O端口控制实验1)将提供的实验程序运行,并观察实验结果2)修改程序使得可以将开关的状态保存到数据存储空间0x0060单元3)让数据存储空间0x0061单元的低八位来控制发光二极管的显示答:1)实验结果:八个开关控制的发光二极管亮灭为:0x00AA=10101010(1代表亮,0代表灭)2)在sys_ini();的前面加上一段程序:volatile unsigned int *room = (volatile unsigned int *)0x0060; 并将port0004=port0004;改成*room=port0004;3)在sys_ini();的前面加上一段程序:volatile unsigned int *room = (volatile unsigned int *)0x0061; 并将port0004=port0004;改成port0004=*room;程序如下:/*;***********************************************************************;* 北京达盛科技有限公司;* 研发部;*;* ;*;*--------------------------------------------- 文件信息---------------*文件名称:io.c*文件标示:*摘要:本文件内容为tms320lf2407 dsp的IO空间操作练习程序*************************************************************//************************文件预处理***************************/#include "e100_2407.h"/*************************************************************//********************全局变量定义与初始化*********************/ioport short port0004; //输入端口地址定义/*************************************************************//*******************函数、子程序声明与定义********************/void sys_ini() //系统初始化子程序{/*关总中断*/asm(" setc INTM");/*抑制符号位扩展*/asm(" clrc SXM");/*累加器中结果正常溢出*/asm(" clrc OVM");/*禁止看门狗*/* WDCR=0x00E8;/*CLKIN=15M,CLKOUT=30M*/* SCSR1=0x0200;}/*************************************************************/ /*****************中断服务子程序声明与定义********************/ interrupt void nothing() //哑中断子程序{return;}/*************************************************************/ /**************************主程序*****************************/ void main(void){sys_ini();for(;;){/*将io空间的0004地址的值赋予io空间的0004地址*/port0004=port0004;}}/***************************结束******************************/实验三定时器实验1)阅读程序,理解程序,预测实验结果。
继续我的第二个实验;实现按键控制LED亮灭:功能描述:上电默认LD3亮;触动一次按键SW12,LD3灭再按一次按键SW12,LD3亮再触动一次按键SW12,LD3灭再按一次按键SW12,LD3亮。
实现每触动一次按键,LED执行一次由亮到灭,或者由灭到亮,也就是实现一次状态反转。
电路连接说明:LD3 设置为通用GPIO 上拉输出初始化后默认为输出LD3亮状态;LD3控制LED灯的负极,如下图;SW12 设置为通用GPIO 上拉输入该引脚应用滤波功能,且仅在按键抬起时控制LD3状态发生变化。
按键电路如上图,GPIO53须输出0,当按键按下时,读取GPIO50端口值,为0,当按键未按下时,GPIO50因为上上拉作用,其端口值为1。
程序设计说明:按键的读取采用实时扫描的方式(非中断方式),功能要求在按键抬起后发生LED状态翻转;所以要记录上一次按键值,并且将当前值==0&&上一次值==1时,做为按键抬起有效,控制LED发生状态翻转。
主要程序如下:while(1){EALLOW;last_Key_SW12 = new_Key_SW12; //保存旧值new_Key_SW12 = Key_SW12();//读取新值if( last_Key_SW12==0 && new_Key_SW12==1)LD3_TOGGLE();EDIS;}经实际测试,上述程序可以实现LD3的翻转,基本达到设计要求。
但是在测试过程中,时好时坏,有时能够看见LED快速翻转,说明按键有抖动的情况,这里可以考虑IO口滤波,即在初始化时,设置IO采样周期以及量化串口,设置如下:采样周期设置为200时,不再出现抖动现象,按键稳定操作。
源程序如下:#include"DSP2833x_Device.h"// DSP2833x Headerfile Include File#include"DSP2833x_Examples.h"// DSP2833x Examples Include File#define LD3_ON() GpioDataRegs.GPACLEAR.bit.GPIO0 = 1#define LD3_OFF() GpioDataRegs.GPASET.bit.GPIO0 = 1#define LD3_TOGGLE() GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1#define LD4_ON() GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1#define LD4_OFF() GpioDataRegs.GPBSET.bit.GPIO34 = 1#define Key_SW12() GpioDataRegs.GPBDAT.bit.GPIO50/** main.c*/int main(void) {unsigned char last_Key_SW12=1;//保留上一次扫描结果,上电默认为未按下状态unsigned char new_Key_SW12=1;//保留当前扫描结果,上电默认为未按下状态InitSysCtrl();DINT;IER = 0x0000;IFR = 0x0000;InitPieCtrl();InitPieVectTable();InitGpio();EALLOW;//GPIO0 LD3 控制LED负极GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;//0 gpio modeGpioCtrlRegs.GPADIR.bit.GPIO0 = 1;//1 output 0 inputGpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;//1 enable pullup 0 disable pullup//GPIO34 LD4 控制LED负极GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit.GPIO34 = 0;//1 enable pullup 0 disable pullup//GPIO50 按键矩阵SW12输入端GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit. GPIO50 = 0;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit. GPIO50 = 0;//1 enable pullup 0 disable pullup GpioCtrlRegs.GPBCTRL.bit.QUALPRD2= 200;//采样周期=2*Tsysclkout*200GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 2;//采样窗内3次采样结构相同//GPIO53 按键矩阵负极输出0GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit. GPIO53 = 1;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit. GPIO53 = 0;//1 enable pullup 0 disable pullup GpioDataRegs.GPBCLEAR.bit.GPIO53 = 1;LD3_ON();//默认输出亮状态LD4_OFF();EDIS;while(1){EALLOW;last_Key_SW12 = new_Key_SW12; //保存旧值new_Key_SW12 = Key_SW12();//读取新值if( last_Key_SW12==0 && new_Key_SW12==1) LD3_TOGGLE();EDIS;}}。
实验二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技术》课程实验报告学生姓名:所在班级:指导教师:记分及评价:项目满分5分得分一、实验名称拨码开关实验二、实验目的1.了解DSP开发系统的组成和结构2.了解IO的基本编程方法三、实验内容1. 2812CPU板的JUMP1的1和2脚短接,拨码开关SW1的第二位置ON。
2.E300板上的开关SW4的第二位置ON,其余OFF;SW5开关全部置ON;其余开关全部置OFF。
3.运行Code Composer Studio (CCS)(CCS3.3需要“DEBUG→Connect”)4. 用“Project\open”打开系统项目文件路径为“c:\DSP_examep\DSP281X_examples\e300_02_switch\Example_281x_switch.pjt”双击该文件5、输入主要程序。
6、编译程序并装载。
7.单击“Debug-GoMain”跳到主程序的开始;8. 单击“Debug\RUN”运行程序。
需要判断是高电平亮,还是低电平亮,可以使用中断调试。
在运行状态,在需要设置断点的位置的右边,双击,就可以产生红点。
表明设置了断点。
在view目录下,(如右边图所示:)打开watch window,(此项是用来检查和编辑变量或C表达式可以不同格式显示变量值,还可以显示数值、结构或指针等包含多个元素的变量),在本实验中观察temp变量的变化。
步骤:在debug目录下点run,在断点处,程序会停下来,可以观察temp变量的值。
(也可按“F10”单步运行程序,观察temp变量的值。
)9. 任意拨动E300底板上的拨动开关,观察LED和拨动开关的对应情况。
(LED1-LED7分别对应DSP数据总线的D0-D7)10.单击“Debug \ Halt”暂停持续运行,开关将对灯失去控制.11.关闭所有窗口,本实验完毕.四、实验程序与结果分析实验程序:#include "DSP281x_Device.h" // DSP281x Headerfile Include File#include "DSP281x_Examples.h" // DSP281x Examples Include Filevoid main(void){unsigned int temp;temp = 0;DINT;InitSysCtrl();InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable();for(;;){asm(" nop ");temp = *(int *)0x2200&0x00ff;if(temp!=0x80){temp=(temp<<1)&0x00ff;asm(" nop ");* (int *)0x2200 = temp;}else * (int *)0x2200 =0x01;asm(" nop ");}}结果分析:多次拨动E300底板上的拨码开关,观察LED亮灭后,我们发现拨动开关的对LED1-LED7分别对应DSP数据总线的D0-D7,并且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变换在单位圆上的等距采样,或者说是序列傅立叶变换的等距采样。
装订线实验报告课程名称:微机原理及其应用指导老师:徐习东成绩:实验名称:实验一二三综合实验报告实验类型:同组学生姓名:一、实验目的和要求(必填)二、实验内容和原理(必填)三、主要仪器设备(必填)四、操作方法和实验步骤五、实验数据记录和处理六、实验结果与分析(必填)七、讨论、心得一、实验目的和要求1、了解DSP的基本原理和实验过程。
完成实验一、二、三。
完成4段程序的运行过程。
2、了解DSP的编程方法,学习TI资源文件的使用方法,3、认识中断、GPIO、定时器等的编程使用方法。
二、实验内容和原理实验一LED绿灯的控制:共阳极发光二极管原理图如下图1 发光二极管原理图通过GPIO控制发光二极管DS20~DS25的亮灭。
当GPIOFx=0时,对应的发光二极管被点亮。
GPIO端口:GPIOF13~GPIOF8实验二实验名称:DSP实验综合报告姓名:学号:装订线利用CPU定时器和中断实现点亮了4盏规定的绿灯,同时控制灯分别以1s,100ms,10ms,1ms为周期交替亮灭。
通过设置CPU定时器,使1ms产生1个中断输出,再通过循环计数控制当分别产生1ms、10ms、100ms、1s的时间间隔进入中断,控制相应LED亮灭。
实验三分别用两种TI资源的方法编程,实现控制绿灯和红灯的要求。
方法一是仅仅使用TI规定的变量编程,方法二是使用TI资源的内置文件,初始化文件和.c文件等中的自带函数。
把6盏绿灯及16盏红灯有规律地控制点亮。
红灯的控制:LED接口如图:1、一端接电源高电平红灯的控制:2、一端接锁存器的输出;3、由两个锁存器控制16盏灯;两个锁存器:1、输入数据为实验名称:DSP实验综合报告姓名:学号:装订线GPIOB8 ~GPIOB15;2、锁存信号由GPIOE0 ~GPIOE2 控制;点灯控制:1、先确定第几组,第几盏;2、GPIOE输出组号,GPIOB输出位号;3、延时,GPIOE输出锁存信号三、主要仪器设备TMS实验板、PC机、程序烧写器四、操作方法和实验步骤1、实验一(1)学习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实验报告一、引言数字信号处理(Digital Signal Processing,DSP)是一种对数字信号进行处理和分析的技术。
它在许多领域中被广泛应用,如通信、音频处理、图像处理等。
本实验旨在通过实际操作,探索和理解DSP的基本原理和应用。
二、实验目的1. 理解数字信号处理的基本概念和原理;2. 掌握DSP实验平台的使用方法;3. 进行一系列DSP实验,加深对DSP技术的理解。
三、实验器材和软件1. DSP开发板;2. 电脑;3. DSP开发软件。
四、实验内容1. 实验一:信号采集与重构在此实验中,我们将通过DSP开发板采集模拟信号,并将其转换为数字信号进行处理。
首先,我们需要连接信号源和开发板,然后设置采样频率和采样时间。
接下来,我们将对采集到的信号进行重构,还原出原始模拟信号,并进行观察和分析。
2. 实验二:滤波器设计与实现滤波器是DSP中常用的模块,用于去除或增强信号中的特定频率成分。
在此实验中,我们将学习滤波器的设计和实现方法。
首先,我们将选择合适的滤波器类型和参数,然后使用DSP开发软件进行滤波器设计。
最后,我们将将设计好的滤波器加载到DSP开发板上,并进行实时滤波处理。
3. 实验三:频谱分析与频域处理频谱分析是DSP中常用的方法,用于分析信号的频率成分和能量分布。
在此实验中,我们将学习频谱分析的基本原理和方法,并进行实际操作。
我们将采集一个包含多个频率成分的信号,并使用FFT算法进行频谱分析。
然后,我们将对频谱进行处理,如频率选择、频率域滤波等,并观察处理后的效果。
4. 实验四:音频处理与效果实现音频处理是DSP中的重要应用之一。
在此实验中,我们将学习音频信号的处理方法,并实现一些常见的音频效果。
例如,均衡器、混响、合唱等。
我们将使用DSP开发软件进行算法设计,并将设计好的算法加载到DSP开发板上进行实时处理。
五、实验结果与分析通过以上实验,我们成功完成了信号采集与重构、滤波器设计与实现、频谱分析与频域处理以及音频处理与效果实现等一系列实验。
实验二拨码开关实验—、实验目的二、实验设备运算机,版本软件,DSP仿真器,E300实验箱,2812CPU板。
三、实验原理8位的数字量输入(由拨码开关产生),当拨码打到靠近LED时为低。
相反为高。
通过74LS244(可读)缓冲连接到DSP的数据总线的低8位。
CPU通过读指令读取到拨码开关产生的8位输出的数字量,然后CPU通过写指令把读出的8位数字量写入(0x2200)单元内,使连接到DSP的数据总线的低8位的74LS273的输出端产生高低信号,现在LED灯产生亮灭。
当对应LED灯点亮时说明输出为低,熄灭时为高。
(器件74LS244和74LS273详细的介绍请参看数据手册)数字量输入输出单元的资源分派如下:基地址:2000h(当CS1为0时分派有效)数字量分派空间为数据空间地址:基地址+0x2200(低8位,只读)拨码开关扩展工作原理说明:74LS244片选号、74LS273片选信号和74LS273复位信号由E300上CPLD译码产生。
本实验利用DSP数据总线的低8位。
实验任务一:一、编写程序完成将拨码开关的信息读入DSP,然后再将该信息回写,操纵led灯。
调整"数字输入输出单元"的开关K1~K8,观看LED1~LED8灯亮灭的转变。
2、本实验的程序流程框图如下:3、输入要紧程序#include "" 2812CPU板的JUMP1的1和2脚短接,拨码开关SW1的第二位置ON。
2.E300板上的开关SW4的第二位置ON,其余OFF;SW5开关全数置ON;其余开关全数置OFF。
3.运行Code Composer Studio (CCS)(需要“DEBUG→Connect”)4. 用“Project\open”打开系统项目文件途径为“c:\DSP_examep\DSP281X_examples\e300_02_switch\”双击该文件5、输入要紧程序。
六、编译程序并装载。
实验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原理与应用
实验序号实验2
实验项目DSP 数据存取实验实验地点
实验学时实验类型
指导教师实验员
专业班级
学号姓名
年月日
1、装载程序memory.out,进行调试。
运行到main 函数入口:
2、修改程序区的存储单元:
修改前:
此时入口地址为10801200,数据地址为01BCD4F6
修改中:
注意:修改前面的入口地址之后,一定要重新设置数据存储地址修改后:
当前语句被改成了“NOP”。
将地址0x10801200 上的数据改回0x01BCD4F6,程序又恢
复成原样。
3、断点调试:
(1)、运行到第一个断点:
我们可以memory 窗口中从0x80000080 开始的16 个单元的值被写入0x00000000 到0x0000000。
(2)、运行到第二个断点:
我们可观察到memory 窗口中从0x80000100 开始分16 个单元中的值被均被写入0x00001234。
(3)、运行到第三个断点:
我们可以观察到0x80000080 开始的16 个单元的值复制到以0x80000100 开始的16 个单元,数据发送了变化,因此数据颜色变为红色。
数字信号处理实验报告实验二时域采样和频域采样班级: 电子信息工程16 姓名:**学号: ********** 2018年 10 月 17 日一、实验目的时域采样理论与频域采样理论是数字信号处理中的重要理论。
要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;要求掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。
二、实验原理与方法1、时域采样定理的要点a) 对模拟信号)(t x a 以间隔T 进行时域等间隔理想采样,形成的采样信号的频谱)(ˆΩj X 是原模拟信号频谱()aX j Ω以采样角频率s Ω(T s /2π=Ω)为周期进行周期延拓。
公式为:)](ˆ[)(ˆt xFT j X a a =Ω )(1∑∞-∞=Ω-Ω=n s a jn j X T b) 采样频率s Ω必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的频谱不产生频谱混叠。
利用计算机计算上式并不方便,下面我们导出另外一个公式,以便用计算机上进行实验。
理想采样信号)(ˆt x a 和模拟信号)(t x a 之间的关系为: ∑∞-∞=-=n a a nT t t x t x)()()(ˆδ对上式进行傅立叶变换,得到:dt e nT t t x j X t j n a a Ω-∞∞-∞-∞=⎰∑-=Ω])()([)(ˆδ dt e nT t t x t j n a Ω-∞-∞=∞∞-∑⎰-)()( δ=在上式的积分号内只有当nT t =时,才有非零值,因此:∑∞-∞=Ω-=Ωn nT j aae nT xj X )()(ˆ上式中,在数值上)(nT x a =)(n x ,再将T Ω=ω代入,得到:∑∞-∞=-=Ωn nj aen x j X ω)()(ˆ上式的右边就是序列的傅立叶变换)(ωj eX ,即T j a e X j X Ω==Ωωω)()(ˆ上式说明理想采样信号的傅立叶变换可用相应的采样序列的傅立叶变换得到,只要将自变量ω用T Ω代替即可。
实验一算法:dot_product实验目的针对ADSP-Blacfin609DSP,利用简单的C程序实现矩阵的相乘,熟悉CCES编程环境实验装置计算机,电源,信号发生器,开发板,仿真器,示波器。
和debug调试功能。
实验步骤启动CCES,建立一个工程(Project);添加文件,编写程序,编译程序,如有错误,进行调整修改;用调试器来评估用C语言所编写代码的性能。
实验效果在console窗口可以看到两个矩阵相乘的结果。
实验心得通过本次试验让我掌握了利用简单的C程序实现俩个矩阵相乘的详细操作过程以及从中发现了自己还存在的一些问题。
实验过程中,在实验老师和同学的帮助下克服了许多困难,从中也有了自己的收获。
实验加深了我对CCES编程环境的熟悉度同时让我熟练掌握debug调试功能的操作方法。
总之,这是一次非常有意义有价值的实验,在实验中我获益良多。
下次如果有机会希望多参加这样的试验,尤其是实验老师很耐心很负责,不厌其烦的给我们讲解实验过程中不懂的细节。
实验二算法:fir滤波实验目的加深对fir滤波这种滤波方法的理解。
实验装置计算机,电源,信号发生器,开发板,仿真器,示波器。
实验任务1对信号的采集和输出2对信号进行滤波处理实验步骤1启动CCES,建立一个工程(Project),编写程序;2对给定的数据文件dsp2.dat数据文件(带噪声)并调用已给的fir相关函数进行fir滤波;3滤波结束后生成新的dsp2New.dat文件,在matlab中进行plot操作可看到滤波效果是否实现。
实验原理1,Fir滤波器原理Fir滤波器又叫有限长单位冲击响应滤波器。
输入序列X(n),输出序列Y(n),fir 滤波器的实现在于序列的卷积算法:Y(n)=h(n)*X(n)2,Fir滤波器的设计方法设计方法有俩种:窗函数设计法和频率抽样设计法实验结果正确连接器件之后,启动CCES,建立一个工程后,加入实验程序,然后进行调试,确定没有错误之后运行程序,利用信号发生器产生输入信号,并对所得图像进行采集,调用已给的fir相关函数进行fir滤波,滤波之后得到一个新的数据文件。
实验三 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 型滤波器设计带通滤波器,并分别绘制所设计滤波器的幅频和相频特性图。