DSP第二次实验报告
DSP实验报告
DSP技术及应用实验报告(第二次)实验名称:1、CMD文件和Gel文件的编写2、正弦信号发生器班级:08级通信工程二班姓名:周卫星学号:2008550726指导老师:姚志强实验三、CMD文件和Gel文件的编写一、实验目的1. 掌握Gel文件的编写,2. 熟悉Code Composer Studio的使用二、实验设备1. 集成开发环境CCS2. 实验代码ccs_gel.s54、ccs_gel.cmd和ccs_gel.gel三、实验内容及结果1、建立项目并添加相应文件,连接编译(步骤同实验二一样),双击打开CMD 文件,对照教材理解CMD文件的编写结构,改变其中的内容,增加自定义段,保存并重新编译,比对前后两次编译得到的Map文件的异同。
/*Memory Directive,是对用户目标DSP储存空间说明。
用户可配置储存空间的页数、长度、起始点、名称等*/MEMORY {PAGE 0:VECS: org=0x0080, len=0x80PROM: org=0x1000, len=0x1000 /* 4k words */PAGE 1:STACK: o rg=0x100, len=0x400 /* 1k words */DARAM: org=0x2000, len=0x1000 /* 4k words */}/*以下为Sections Directive,是对程序中段的配置说明,也就是将程序中所用到的段配置到用户在Memory Directive所定义的memory单元。
*/SECTIONS{ .text:> PROM PAGE 0vectors :> VECS PAGE 0.bss :> DARAM PAGE 1.data :> DARAM PAGE 1}修改,在SECTIONS中最后一行加入了如下行:.lab :> DARAM PAGE1通过比较,修改后相对修改前多出了如下行:.lab 1 00002000 00000000 UNINITIALIZED2、了解GEL文件的功能。
DSP实验报告定时器2
实验二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实验报告
DSP实验报告⼀、综合实验内容和要求1. 实验⽬的(1) 学习掌握CCS3.3编译器的使⽤;(2) 通过实验学习掌握TMS320F28335的GPIO ,浮点计算; (3) 学习并掌握A/D 模块的使⽤⽅法;(4) 学习并掌握中断⽅式和查询⽅式的串⼝通信; (5) 学习并掌握28335DSP 的定时器相关的设置与运⽤; (6) 学习信号时域分析的⽅法,了解相关波形参数的计算⽅法; (7) 了解数字滤波的⼀些基本⽅法; (8) 学习数码管的驱动及运⽤。
(9) 学习MATLAB 串⼝以及画图的运⽤。
2. 实验设计内容与要求:(1) 对给定的周期波形信号采⽤TI 公司的TMS320F28335DSP ,利⽤试验箱上的相关资源计算出波形的周期T ,波形的有效值rms V ,平均值avg V 。
其中,有效值和平均值的计算公式(数字量的离散公式)如下:rms V =1()NavgiV u i N=∑式中N 为⼀个周期采样点数,()u i 为采样序列中的第i 个采样点。
(2) 通过算法计算出波形的有效值和平均值,利⽤串⼝通信把测得的数据发送到串⼝助⼿查看,或者在MATLAB 上编写上位机程序,把发送的数据在MATLAB 上画出来。
(3) 把测得的数据实时显⽰在数码管上。
⼆、硬件电路图1为试验系统的硬件图,硬件电路主要包括TMS320F28335DSP 实验箱,SEED-XDS510仿真器,数码管,SCI,信号发⽣器,电脑,串⼝线等。
图1 硬件电路图三、实验原理本试验主要是通过程序去测量⼀个周期波形的有效值、平均值、峰值等相关参数。
计算离散数据的有效值可⽤公式rms V =平均值可⽤公式1()N avgiV u i N=∑。
所以⾸先需要测出波形的周期,然后确定每个周期需要采样的点数N ,最后去计算平均值和有效值。
v mv 1图2 理想输⼊采样波形如图2所⽰为⼀个正弦输⼊波形,m V 为输⼊波形的峰值,1V 是介于0~ m V 的⼀个值。
DSP实验二 拨码开关实验
《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第二次实验报告
void IDFT(float xx[],float yx[],int m,float RX[],float CX[])/*IDFT*/ { int k,n; for(k=0;k<=m-1;k++) { RX[k]=0;CX[k]=0; {for(n=0;n<=m-1;n++) { RX[k]=RX[k]+xx[n]*(cos(2*3.14159265359798*n*k/m))yx[n]*(sin(2*3.14159265359798*n*k/m)); CX[k]=CX[k]+xx[n]*(sin(2*3.14159265359798*n*k/m))+ yx[n]*(cos(2*3.14159265359798*n*k/m)); } } RX[k]=RX[k]/m; CX[k]=CX[k]/m; } }
电子 1401 班
张鹏辉
20142192
实验感悟:
这次实验从实践中验证了以下若干理论推导和编程所要注意的问题: 逆变换验证时的补点问题:因为两个长都为为 32 的时域序列进行卷积产 生的结果是 63 位的序列。如果两个时域序列先进行 DFT 变换到频域,应该也都 为长 32 的序列,相乘后是一长度为 32 的序列。为了在长度上满足还原条件,所 以要在乘积序列的结果后补充 63-32=31 长度的 0 序列。 定义 DFT 和 IDFT 函数乘积问题:为了用 C 来定义 DFT 和 IDFT 从两者定 义出发,分别用循环判断嵌套的结构完成 N 点的计算,具体解释在上代码后书 写。 另,在这次试验中,一方面提高了自己 C 语言函数编写水平,使自己更深 一步了解 C 中关于图像绘制和逻辑嵌套的相关知识。 另一方面, 在实际操作中证 实了 DSP 课程所提出的相关理论,加深了有关离散傅里叶变换及其逆变换的理 解。
DSP实验报告(二)
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(数字信号处理)实验报告2
本科学生实验报告学号124090314 姓名何胜金学院物电学院专业、班级12电子实验课程名称数字信号处理(实验)教师及职称杨卫平开课学期第三至第四学年下学期填报时间2015 年 3 月 1 9 日云南师范大学教务处编印2.产生幅度调制信号x[t]=cos(2t)cos(200t),推导其频率特性,确定抽样频率,并会出波形。
程序: clc,clear,close all t=[0:0.01:5];x=cos(2*pi*t).*cos(200*pi*t); plot(t,x);clc,clear,close allt0=0:0.001:0.1;x0=0.5*(cos(202*pi*t0)+cos(198*pi*t0)); plot(t0,x0,'r') hold on fs=202;t=0:1/fs:0.1;x=0.5*(cos(202*pi*t)+cos(198*pi*t)); stem(t,x);3.对连续信号x[t]=cos(4t)进行抽样以得到离散序列,并进行重建。
(1)生成信号x(t),时间为t=0:0.001:4,画出x(t)的波形。
程序clc,clear,close all t0=0:0.001:3; x0=cos(4*pi*t0); plot(t0 ,x0,'r');(2)以faam=10HZ对信号进行抽样,画出在0≤t≤1范围内的抽样序列,x[k],利用抽样内插函数恢复连续时间信号,画出重逢信号的波形。
程序:clc,clear,close all t0=0:0.001:3; x0=cos(4*pi*t0); plot(t0,x0); hold onfs=10;t=0:1/fs:3; x=cos(4*pi*t); stem(t,x);4.若x[k]是对连续信号x(t)=cos(0.5t)以samf=2Hz抽样得到的离散序列,如何通过在抽样点之间内插,恢复原连续时间信号x(t)?程序:clc,clear,close all t=0:0.0001:4; x=cos(0.5*pi*t); plot(t,x); Figure1:clc,clear,close allt=0:0.0001:4; x=cos(0.5*pi*t); subplot(2,1,1); plot(t,x);t0=0:0.5:4;x0=cos(0.5*pi*t0); subplot(2,1,2); stem(t0,x0);5.已知序列x[k]={1,3,2,-5;k=0,1,2,3},分别取N=2,3,4,5对其频谱X(e j)进行抽样,再由频域抽样点恢复时域序列,观察时域序列是否存在混叠,有何规律?k=[0,1,2,3]; x=[1,3,2,-5]; n=100;omega=[0:n-1]*2*pi/n;X0=1+3*exp(-j*omega)+2*exp(-2*j*omega)-5*exp(-3*j*omega); subplot(3,4,1);stem(k,x);title('原序列');subplot(3,4,2);plot(omega./pi,abs(X0));title('序列的频谱 N=100');N=2;omega=[0:N-1]*2*pi/N;X1=1+3*exp(-j*omega)+2*exp(-2*j*omega)-5*exp(-3*j*omega); subplot(3,4,5);stem(omega./pi,abs(X1));title('频域抽样 N=2');rx1=real(ifft(X1)); subplot(3,4,9);stem(rx1);title('时域恢复');N=3;omega=[0:N-1]*2*pi/N;X2=1+3*exp(-j*omega)+2*exp(-2*j*omega)-5*exp(-3*j*omega); subplot(3,4,6);stem(omega./pi,abs(X2));title('频域抽样 N=3');rx2=real(ifft(X2)); subplot(3,4,10);stem(rx2);title('时域恢复');N=4;omega=[0:N-1]*2*pi/N;X3=1+3*exp(-j*omega)+2*exp(-2*j*omega)-5*exp(-3*j*omega); subplot(3,4,7);stem(omega./pi,abs(X3));title('频域抽样 N=4');rx3=real(ifft(X3)); subplot(3,4,11);stem(rx3);title('时域恢复');。
dsp实验报告总结【精品】
我不应把我的作品全归功于自己的智慧,还应归功于我以外向我提供素材的成千成万的事情和人物!——采于网,整于己,用于民2021年5月12日dsp实验报告总结篇一:dsp课程设计实验报告总结DSP课程设计总结(XX-XX学年第2学期)题目:专业班级:电子1103 学生姓名:万蒙学号:指导教师:设计成绩:XX 年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 软件总体流程-----------------------------------------------------74.2 核心模块及实现代码---------------------------------------8五课程设计总结-----------------------------------------------------14一、设计目的设计一个功能完备,能够独立运行的精简DSP硬件系统,并设计简单的DSP控制程序。
DSP技术 实验二报告模板
《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这地址允许读写操作,这次的试验箱改变以往地址低位在后的设计应该是别出心裁的,目的应该是考验学生对地址的理解。
DSP实验报告2
实验报告课程名称DSP原理与应用实验项目FIR算法的DSP实现指导教师王勇学院光电信息与通信工程_专业电子信息工程班级/学号电信0901/2009010525 学生姓名王明坤实验日期___2011年12月___成绩______________________实验2 FIR算法的DSP实现一、实验目的1.掌握汇编语言的编程方法。
2.掌握C语言和汇编语言的混合编程。
3.利用MA TLAB设计FIR滤波器。
4.编写以浮点和Q15格式产生混合波形数据的函数。
5.编写C语言浮点实现FIR滤波算法函数。
6.编写C可调用汇编语言定点实现FIR滤波器算法函数。
7.使用CCS图形显示窗口观察和分析信号波形及其频谱。
8.进行代码性能测评。
二、实验仪器及工具计算机,安装Windows XP 操作系统、MATLAB 7.0.1、TI 的TMS320C5000 DSP 的开发软件CCS2.21;ICETEK-VC5509教学实验箱。
三、实验内容1.利用MA TLAB设计FIR滤波器,以浮点和Q15格式导出滤波器系数。
2.FIR算法的TMS320C55x DSP的C语言浮点及汇编语言定点实现。
四、实验步骤1.编写MATLAB程序,利用MATLAB设计FIR低通或高通滤波器,以浮点和Q15格式导出滤波器系数。
例:利用kaiser窗设计一个低通FIR数字滤波器,通带的范围是0Hz到1100Hz, 阻带的范围是1600 Hz到4000 Hz,通带的波纹最大为0.03,阻带的波纹最大为0.03 。
信号的抽样频率为8000 Hz。
可根据信号的频率更改滤波器的频率。
2.设置CCS为“C55x Cycle Accurate Simulator”软件仿真模式,打开CCS,创建项目,编写.cmd文件,编写主程序文件。
编写以浮点和Q15格式产生混合波形数据的函数。
如产生抽样频率为8000 Hz,600Hz、2000 Hz、2800 Hz的三种频率的混合波形数据,其中混合频率可以自行确定。
DSP实验报告2-数字信号处理
23 系 2012 级 丛松宇 PB12210075
3. clear; n=1:8; for i=1:4 x(i)=i; end for i=5:8 x(i)=9-i; end close all; subplot(2,4,1); stem(x);grid on; title('8 点三角波序列'); subplot(2,4,2); stem(abs(fft(x,8)));grid on; n=1:16; for i=9:16 x(i)=0; end subplot(2,4,3); stem(x);grid on; title('16 点三角波序列'); subplot(2,4,4); stem(abs(fft(x,16)));grid on; n=1:8; for i=1:4 x(i)=5-i; end
23 系 2012 级 丛松宇 PB12210075
1.② n=0:15; q=8;p=8; x=exp(-1*(n-p).^2/q); close all; subplot(3,2,1); stem(x),grid on title('q=8,p=8 的时域特性'); subplot(3,2,2); stem(abs(fft(x))),grid on;title('频域特性'); q=8;p=13; x=exp(-1*(n-p).^2/q); subplot(3,2,3); stem(x),grid on title('q=8,p=13 的时域特性'); subplot(3,2,4); stem(abs(fft(x))),grid on;title('频域特性'); q=8;p=14; x=exp(-1*(n-p).^2/q); subplot(3,2,5); stem(x),grid on title('q=8,p=14 的时域特性'); subplot(3,2,6); stem(abs(fft(x))),grid on;title('频域特性');
DSP实验报告2(精)
实验报告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课程实验报告
目录目录 (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第二次实验报告
DSP技术与应用实验报实验四、正弦信号发生器一、 实验目的1. 掌握利用DSP 产生正弦信号的原理2. 熟悉子程序调用的程序结构以及堆栈的使用3. 掌握CCS 的图形输出操作二、 实验设备1. 集成开发环境Code Composer Studio (简称CCS )2. 实验代码Sin.s54、Lab.cmd 和Lab.gel三、实验内容1. 阅读理解多项式逼近正弦的文档2. 阅读和理解Sin.s543. 调试正弦波发生器4. 加入断点,并选取图形观测,利用动画及时更新5. 试利用迭代的方法来实现正弦信号发生器四、实验结果和提示1. 2345sin()= 3.140625 + 0.02026367 - 5.325196 + 0.5446778 + 1.800293x x x x x x ,x为第一象限内的弧度值。
因为sin()sin(),sin()sin()x x x x π-=-=-,所以只需将第二,三,四象限内的弧度值转换到第一象限即可计算出相应的正弦函数值。
由于有限精度,规定弧度值从~ππ-,其中π=0x7FFF ,π/2=0x4000,π-=0x8000。
利用级数展开产生正弦波,必须在调用计算子程序之前备份好累加器A 中的当前弧度值,以 便计算结束后实现x 增量。
正弦波的频率可以通过增幅的大小来进行控制,如果假定程序循环一次为一个时间单位,则正弦波的周期为65536/步长,频率为周期倒数。
x 自动增长时要注意当x 超过π后必须调整到~ππ-的范围内才能调用计算子程序,即若,2x x x ππ>=-则。
2. 需要使用临时数据时,必须用frame 语句留出所需空间,使用结束后要将堆栈指针还原以防堆栈内存泄漏。
要注意的是frame 的下一条指令不能使用直接寻址。
3. 注意事项:利用累加器写乘法寄存器T (stlm )之后的下一条指令不能使用T ;条件转移指令xc 在指令访问阶段判断条件,该条件必须在先于xc 指令的2个指令之前产生;条件转移指令bc 是在指令执行阶段判断条件,不存在这方面的问题。
DSP实验报告,2
DSP实验报告,2DSP 实验报告班班级:学学号:姓姓名:指导教师:实验一常用指令实验 1 1 .实验目的了解 P DSP 系统的组成和结构 2 2 .实验设备 3 3 .实验内容及步骤 4 4 .实验结果及分析 5 5 .实验体会实验七 D A/D 转换实验一、实验目的 1.熟悉 A/D 转换的根本原理; 2.掌握 AD7822 的技术指标和常用方法; 3.掌握并熟悉使用DSP 和 AD7822BN 的接口及其操作。
二、实验设备计算机,CCS2.0 软件,DSP 仿真器,试验箱三、实验步骤和内容 1、拨码开关设置 2、运行 CCS 软件,加载示范程序; 3、观察采样报告; 4、填写实验报告。
5、样例程序实验操作说明6、开关 K9 拨到右边,即选择连接右边的 CPU:CPU2;启动 CCS 2.0,在Project->Open->菜单翻开exp06cpu2 目录下面的工程文件“exp06.pjt”。
用下拉菜单中Project->Open,翻开“exp06cpu2/exp06.pjt”,双击“Sour ”,可查看源程序。
在 File->Load Program 菜单下加载 exp06cpu2\debug 目录下的 exp06.out 文件。
在“782254.c”中如以下图“i=0;”处,设置断点。
单击“Run”运行程序,程序运行到断点处停止:7、用下拉菜单中的 View/Grap 的“Time/Frequen ”翻开一个图形观察窗口; 8、单击“Ani te”运行程序,调节源 1 的频率、幅值、波形调节旋钮,在图形观察窗口观察 A/D 转换后的数据波形变化; 9、单击“Halt”暂停程序运行,用“View”的下拉菜单中“Memory”翻开存储器数据观察窗口;设置该存储器数据观察窗口的参数,选择地址为 databuff,数据格式 C 格式 16进制; 10、单击“Ani te”运行程序,调整存储器数据观察窗口,并在该窗口中观察数据变化,A/D 转换后的数据存储地址为 databuff 单元开始的 256 个单元内,变化数据将变为红色; 11、单击“Halt”停止程序运行;12、关闭“exp06.pjt”工程文件,关闭个窗口,本实验完毕。
DSP实验报告2
一、实验目的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实验报告2
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实验报告(完美版)
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实验报告
实验报告实验名称_实验一:采样、系统性质及滤波实验二:数字系统频率响应和样本处理_实验三:数字滤波器设计 __实验四:信号处理算法的应用课程名称数字信号处理A(双语)班级学号________________姓名开课时间 2012/2013学年,第二学期实验一: 采样、系统性质及滤波一、 实验目的(1)熟悉MA TLAB 的主要操作命令。
(2)学会简单的矩阵输入和数据读写。
(3)掌握简单的绘图命令。
(4)用MATLAB 编程并学会创建函数。
(5)观察离散系统的频率响应。
二、 实验内容(一)、观察采样引起的混叠设模拟信号为)3sin()2sin(4)5cos()(t t t t x πππ⋅+=,t 的单位为毫秒(ms)。
1. 设采样频率为3kHz ,确定与)(t x 混叠的采样重建信号)(t x a 。
2. 画出)(t x 和)(t x a 在)(60ms t ≤≤范围内的连续波形。
(因数字计算机无法真正画出连续波形,可用较密的离散点的连线来近似。
) 3. 分别用"" 和""⨯在两信号波形上标记出3kHz 采样点。
两信号波形是否相同?采样后的两序列是否相同?参考程序:% ============= % problem 1% =============%作用与汇编中的;以及C++编程中的//作用一样,起注释作用Clear%清屏% estimate x(t) and xa(t) with a much higher sampling freq. 'fs1'%因数字计算机无法真正画出连续波形,可用较密的离散点的连线来近似。
%因此,为画出x(n)与xa(t)的波形,取fs1=50KHZ 。
time_period=6; % unit: ms fs1=50; % unit: kHz T1=1/fs1; % unit: ms n1=0:fix(time_period/T1);%用两个冒号组成等增量语句,其格式为:t=[初值:增量:终值]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP实验报告(第二次实验)实验四、正弦信号发生器验四、正弦信号发生器一、实验目的1. 掌握利用DSP产生正弦信号的原理2. 熟悉子程序调用的程序结构以及堆栈的使用3.掌握CCS的图形输出操作二、实验设备1. 集成开发环境Code Composer Studio(简称CCS)2. 实验代码Sin.s54、Lab.cmd和Lab.gel三、实验内容1. 阅读理解多项式逼近正弦的文档2. 阅读和理解Sin.s543. 调试正弦波发生器4. 加入断点,并选取图形观测,利用动画及时更新5. 试利用迭代的方法来实现正弦信号发生器四、实验结果和提示1.2345sin()= 3.140625 + 0.02026367 - 5.325196 + 0.5446778 + 1.800293x x x x x x ,x 为第一象限内的弧度值。
因为sin()sin(),sin()sin()x x x x π-=-=-,所以只需将第二,三,四象限内的弧度值转换到第一象限即可计算出相应的正弦函数值。
由于有限精度,规定弧度值从~ππ-,其中π=0x7FFF ,π/2=0x4000,π-=0x8000。
利用级数展开产生正弦波,必须在调用计算子程序之前备份好累加器A 中的当前弧度值,以便计算结束后实现x 增量。
正弦波的频率可以通过增幅的大小来进行控制,如果假定程序循环一次为一个时间单位,则正弦波的周期为65536/步长,频率为周期倒数。
x 自动增长时要注意当x 超过π后必须调整到~ππ-的范围内才能调用计算子程序,即若,2x x x ππ>=-则。
2. 需要使用临时数据时,必须用frame 语句留出所需空间,使用结束后要将堆栈指针还原以防堆栈内存泄漏。
要注意的是frame 的下一条指令不能使用直接寻址。
3. 注意事项:利用累加器写乘法寄存器T (stlm )之后的下一条指令不能使用T ;条件转移指令xc 在指令访问阶段判断条件,该条件必须在先于xc 指令的2个指令之前产生;条件转移指令bc 是在指令执行阶段判断条件,不存在这方面的问题。
具体细节请参见《数字信号处理系统的应用和设计》3.6节和4.5节。
4. 图形观测时选择菜单View->Graph->Time/Frequency ,然后设置如下图:确定并设置好断点后(断点位置要设置对,几个地方都可以,可多尝试几次) 我自己设置的断点如图所示:使用Debug->Animate就可以观察到动画输出的结果如图:从图中可以观察到正弦波的周期。
使用Debug->Run 就可以观察动画输出的结果如下图所示:从两种运行方式可以看出:用Animate 方式是动态动画输出,而用Run 方式是单步运行,动画输出不连续。
5.{[(1)]}{[(1)]}2[(1)]()sin n T T sin n T T sin n T cos T ωθωωθωωθω-+++-+-=-+⨯得到正弦信号迭代公式:()2()[(s i n nT c o sT s i nnωθωωθωθ+=⨯-+--+,因为T ω为常数所以2()cos T ω为常数,则利用此公式迭代计算每次只需一次乘法和一次加法。
6. 尝试不用断点,而用探针Probe Point 的方式显示并观察图形。
同样需要比较两种运行方式在探针形式下有无区别。
设置探针如下:在Animate 方式下图形输出如下图所示:在Run方式下:从动画输出结果看,设置探针在两种方式下没有什么区别,都是动态运行。
7. 在断点及动画运行方式实现正弦波显示的情况下,查找到存储器中对应存储正弦波数据实时更新的数据单元。
五、实验心得通过此次实验我掌握利用DSP产生正弦信号的原理,熟悉子程序调用的程序结构以及堆栈的使用,掌握CCS的图形输出操作,本次实验内容有阅读和理解Sin.s54;调试正弦波发生器;加入断点,并选取图形观测,利用动画及时更新;对比前两次实验,难度有所增加,但是在老师和助教的精心指导下,顺利完成实验,几次实验之后,我认识到实验之前预习的必要性,所以以后的实验中,我会争取做到每一次实验都提前预习。
附录:实验程序;****************************************************************************** ; SJTU DSP Tech. Center; Copyright (c) 2003 SJTU DSP Tech. Center. All Rights Reserved.;; Description:; TMS320C54x Program for Students Experiment;; History:; Date Authors Changes; 2003/08/01 Fu Xuan Created.;******************************************************************************STACK_ADDR .set 0x0500STEP .set 0x0900 ;delta x (must be positive), the more the higher frequency;T=65536/STEP, f=1/T.bss sin_out, 1.mmregs.global main.textmain:stm #STACK_ADDR, SPstm #0x00A8, PMST ;IPTR=0x0080stm #0x0000, SWWSR ;software wait status registersub Assbx CPL ;direct address using SPssbx FRCT ;fraction modessbx OVM ;overflow modessbx SXM ;sign extensionstm #sin_out, AR6sin_loop:pshm AG ;save current x ;ddian OKpshm AH ;ddian OKpshm AL ;ddian OKcall calculate_sin ;-pi <= x <= pi ;ddian OKsth A, *AR6 ;store sin(x), add probe point ;ddian OKpopm AL ;ddian OKpopm AH ;ddian OKpopm AG ;ddian OKadd #STEP, A ;add delta ;ddian OKsub #0x7fff, A, B ;test if x>pi, B=A-pi ;ddian OKbc normal_increase, BLT;ddian OKld #0x8000, A ;A=-piadd B, A ;A=B+(-pi)=x - 2*pinormal_increase:b sin_loop ;ddian OKdead_loop:nopnopnopnopb dead_loop;****************************************************************************** sign .set 0 ;local variablecalculate_sin:frame -1 ;allocate signnop ;no direct addressing next framest #0, @sign ;decide sign, 0 for 1st and 2nd quadrant, 1 for 3rd and 4th quadrantxc 2, ALTst #1, @signabs A ;change to 1st and 2nd quadrantsub #0x4000, A, B ;test for 1st quadrantbc first_quadrant, BLEQ;if not change to 1st quadrantsub #0x7fff, A ;As sin(pi-x)=sinx, let x=pi-xneg Afirst_quadrant:stm #coef, AR2stlm A, T ;T=xld *AR2+, 16, A ;AH=C5ld *AR2+, 16, B ;BH=C4rpt #5-1 ;AH=C5*x^5+C4*x^4+C3*x^3+C2*x^2+C1*x+0poly *AR2+ld @sign, B ;pick out signsfta A, 3 ;make Q15 formatnop ;nop for B condition test by xcxc 1, BNEQ ;test signneg A ;sin(-x)=-sinxframe 1ret;****************************************************************************** .sect "vectors"int_RESET:b mainnopnop.space 124*16;sin(x)=0 + 3.140625x + 0.02026367x^2 - 5.325196x^3 + 0.5446778x^4 + 1.800293x^5 .datacoef: ;As the max value is -5.325196, so Q12 is used .word 0x1cce ;1.800293 * 4096.word 0x08b7 ;0.5446778 * 4096.word 0xaacc ;-5.325196 * 4096.word 0x0053 ;0.02026367 * 4096.word 0x3240 ;3.140625 * 4096.word 0x0000 ;0.end;end of Sin.s54。