DSP实验报告一
- 格式:docx
- 大小:524.64 KB
- 文档页数:7
dsp原理与应用实验报告总结DSP(Digital Signal Processing)数字信号处理是利用数字技术对信号进行处理和分析的一种方法。
在本次实验中,我们探索了DSP的原理和应用,并进行了一系列实验以验证其在实际应用中的效果。
以下是对实验结果的总结与分析。
实验一:数字滤波器设计与性能测试在本实验中,我们设计了数字滤波器,并通过性能测试来评估其滤波效果。
通过对不同类型的滤波器进行设计和实现,我们了解到数字滤波器在信号处理中的重要性和应用。
实验二:数字信号调制与解调本实验旨在通过数字信号调制与解调的过程,了解数字信号的传输原理与方法。
通过模拟调制与解调过程,我们成功实现了数字信号的传输与还原,验证了调制与解调的可行性。
实验三:数字信号的傅里叶变换与频谱分析傅里叶变换是一种重要的信号分析方法,可以将信号从时域转换到频域,揭示信号的频谱特性。
本实验中,我们学习了傅里叶变换的原理,并通过实验掌握了频谱分析的方法与技巧。
实验四:数字信号的陷波滤波与去噪处理陷波滤波是一种常用的去除特定频率噪声的方法,本实验中我们学习了数字信号的陷波滤波原理,并通过实验验证了其在去噪处理中的有效性。
实验五:DSP在音频处理中的应用音频处理是DSP的一个重要应用领域,本实验中我们探索了DSP在音频处理中的应用。
通过实验,我们成功实现了音频信号的降噪、均衡和混响处理,并对其效果进行了评估。
实验六:DSP在图像处理中的应用图像处理是另一个重要的DSP应用领域,本实验中我们了解了DSP在图像处理中的一些基本原理和方法。
通过实验,我们实现了图像的滤波、边缘检测和图像增强等处理,并观察到了不同算法对图像质量的影响。
通过以上一系列实验,我们深入了解了DSP的原理与应用,并对不同领域下的信号处理方法有了更深刻的认识。
本次实验不仅加深了我们对数字信号处理的理解,也为日后在相关领域的研究与实践提供了基础。
通过实验的结果和总结,我们可以得出结论:DSP作为一种数字信号处理的方法,具有广泛的应用前景和重要的实际意义。
实验一:CPU 定时器实验一:实验目的1、熟悉F2812 的CPU 定时器;2、掌握F2812 的CPU 定时器的控制方法;3、学会使用CPU 定时器中断方式控制程序流程。
二:实验设备计算机,CCS 3.1 版软件,DSP 硬件仿真器,E300 实验箱,2812CPU 板。
三:实验原理样例实验是采用CPU 定时器来定时使LED 亮灭的。
F2812 的CPU 定时器不同于事件管理器模块(EVA、EVB)中的通用定时器(GP)。
F2812 的CPU共有三个定时器,其中,CPU 定时器 1 和 2 被保留用作实时操作系统OS(例如DSPBIOS),CPU 定时器0 可以供用户使用。
定时器的一般操作如下:将周期寄存器PRDH:PRD 中的值装入32 为计数器寄存器TIMH:TIM。
然后计数器寄存器以F281x 的SYSCLKOUT 速率递减。
当计数器减到0 时,就会产生一个定时器中断输出信号(一个中断脉冲)。
下图为CPU 定时器的内部结构:四:实验步骤1 、F2812CPU 板的JUMP1 的1 和2 脚短接,拨码开关SW1 的第二位置ON;其余置OFF。
2 、E300 底板的开关SW4 的第2 位置ON,其余位置OFF。
其余开关设置为OFF。
3 、运行CCS 软件,调入样例程序,装载并运行;(进入CCS 界面后需要点“Debug--Connect”)4 、加载“..\ e300_03_cpu_timer\Debug\Example_281x_cpu_timer.out”;5 、单击“Debug \ Animate”运行,可观察到灯LED1~LED8 的变化规律:6 、单击“Debug \ Halt”,暂停程序运行,LED 灯停止闪烁;单击“Debug \ Run”,运行程序,LED 灯又开始按上述规律变化;五:实验程序及结果修改后程序如下:/*;**************************************************************;* 北京达盛科技有限公司;* 研发部;*;* ;*************************************************************//*----------------------- 文件信息----------------------------;*;* 文件名称: Example_DSP281x_e300_switch.c;* 适用平台: DSP E300 实验箱;;* CPU类型: DSP TMS320F2812;* 软件环境: CCS3.1;* 试验接线: 1、F2812CPU板上:JUMP1的1和2脚短接,拨码开关SW1的第二位置ON;;* 2、E300底板的开关SW4的第2位置ON,其余置OFF。
实验一 信号系统及系统响应一、实验目的1、 熟悉理想采样的性质,了解信号采样前后的频谱变化,加深对采样定理的理解。
2、 熟悉离散信号和系统的时域特性。
3、 熟悉线性卷积的计算编程方法:利用卷积的方法,观察、分析系统响应的时域特性。
4、 掌握序列傅氏变换的计算机实现方法,利用序列的傅氏变换对离散信号、系统及系统响应进行频域分析。
二、实验原理(一)连续时间信号的采样采样是指按一定的频率从模拟信号抽样获得数字信号。
采样是从连续时间信号到离散时间信号的过渡桥梁。
对一个连续时间信号进行理想采样的过程可以表示为该信号的一个周期冲激脉冲的乘积,即()()()ˆa a x t x t M t =(1)其中连续信号的理想采样,是周期冲激脉冲()()n M t t n T d +=-=-å(2)它也可以用傅立叶级数表示为:1()s jm tn M t eT+W =-=å(3)其中T 为采样周期,Ω是采样角频率。
设是连续时间信号的双边拉氏变换,即有:()()ata a X s x t edt+--=ò(4)此时理想采样信号的拉氏变换为()ˆˆ()()1ˆ()1ˆ()1()s s ataa jm tsta m s jm ta m a s m X s x t e dtxt ee dtTxt e dtT X s jm T+--++W -=--++--W =- -++=--====-W òåòåòåò(5)作为拉氏变换的一种特例,信号理想采样的傅立叶变换1ˆ()[()]aa s m X j X j m T+=-W =W-W å(6)由式(5)和式(6)可知,信号理想采样后的频谱是原信号频谱的周期延拓,其延拓周期等于采样频率。
根据Shannon 取样定理,如果原信号是带限信号,且采样频率高于原信号最高频率分量的2倍,则采样以后不会发生频谱混淆现象。
DSP实验报告实验1 循环操作和双操作数乘法⼀、实验⽬的1. 掌握循环操作指令和双操作数指令的运⽤;2. 掌握⽤汇编语⾔编写DSP 程序的⽅法。
⼆、实验设备1.⼀台装有CCS 软件的计算机;2. DSP 实验箱的TMS320C5410 主控板;3. DSP 硬件仿真器。
三、实验原理1.循环操作指令TMS320C54x 具有丰富的程序控制与转移指令,利⽤这些指令可以执⾏分⽀转移、循环控制以及⼦程序操作。
本实验要求编写⼀程序完成),然后通过仿真器把执⾏代码下载到DSP 芯⽚中;3. 在“end:B end”代码⾏设置断点(当光标置于该⾏时,单击⼯具条上的ToggleBreakpoint图标,此时该⾏代码左端会出现⼀个⼩红点),单击运⾏);6. 改变对变量的初始赋值,重复上述3~5 步过程.7. 增加变量数⽬,重复上述3~5 步过程.(⼆)双操作数乘法1. 在CCS 环境中打开本实验的⼯程(Ex4_2.pjt),阅读源程序;2. 编译并重建.out 输出⽂件,然后通过仿真器把执⾏代码下载到DSP 芯⽚中;3. 在“end:B end”代码⾏设置断点(当光标置于改⾏时,单击⼯具条上的ToggleBreakpoint图标,此时该⾏代码左端会出现⼀个⼩红点),单击运⾏);6. 改变对变量的初始赋值,重复上述过程.实验2 卷积运算和相关运算⼀. 实验⽬的1. 掌握卷积运算的原理;2. 掌握相关系数的估计⽅法3. 掌握⽤C 语⾔编写DSP 程序的⽅法.⼆. 实验设备1. ⼀台装有CCS 软件的计算机;2. DSP 实验箱的TMS320C5410主控板;3. DSP 硬件仿真器.三.实验原理1. 卷积运算卷积的基本表达式为:∑=?=n m m n x m h n y 0)()()( 写程序时要注意两点:(1) 三个序列数组长度的分配;(2) 循环体中变量的位置,即n 和m 的关系. 2. 相关运算相关系数是信号处理中的⼀个重要概念,包括⾃相关系数和互相关系数.它们的定义分别为: ⾃相关系数12()[()()]()()(,;,)xx n kExnxnkxnxnkpxxnnk ?∞=?∞=+=++∑ 互相关系数 )]()([)(k n y n x E k xy +=γ k为相关系数的阶数实际应⽤时,我们可以⽤下式来估计两个平稳信号的互相关系数: 有偏估计 ∑??=+=10)()(1)(?k N n xy k n y n x N k γ⽆偏估计: ∑??=+?=10)()(1)(?k N n xy k n y n x k N k γ当x(n)和y(n)相等即为⾃相关系数的估值..所谓⽆偏估计就是该估计的数学期望等于被估计的参数值.四.实验步骤(⼀) 卷积运算1.在CCS 环境中打开本实验的⼯程(Ex5_1.pjt),编译并重建.out 输出⽂件,然后通过仿真器把执⾏代码下载到DSP 芯⽚中.2.把x, h和y添加到窗⼝中作为观察对象.3.单击运⾏键. 观察三个数组从初始化到卷积运算结束整个过程中的变化;记录卷积结果.(可单击变量名前的“+”号把数组展开);4.修改输⼊序列的长度和初始值,重复上述过程,观察并记录卷积结果.(⼆) 相关运算1.在CCS环境中打开本实验的⼯程(Ex5_2.pjt),编译并重建.out输出⽂件,然后通过仿真器把执⾏代码下载到DSP芯⽚中.2.把x, y和r添加到窗⼝中作为观察对象(选中变量名,单击⿏标右键,在弹出菜单中选择“Add Watch Window”命令).3.单击运⾏键, 观察并记录结果.4.修改估计模式mode,重复上述过程.分析有偏估计和⽆偏估计的差别.5.选定模式,修改输⼊数组的长度,重复上述过程,观察并分析结果与3或4有何不同.6.修改代码,实现x(n)的⾃相关系数的⽆偏估计.五.思考题1.分析阶数对相关系数的影响.实验3 快速傅⾥叶变换FFT⼀. 实验⽬的1.掌握FFT 算法的基本原理2.掌握⽤C 语⾔编写DSP 程序的⽅法.⼆.实验设备1.⼀台装有CCS 软件的计算机;2.DSP 实验箱的TMS320C5410主控板;3.DSP 硬件仿真器.三.实验原理包括两部分内容:1.FFT 按时间抽取的算法;)()()(21k X W k X k Y k N +=)()(2(21k X W k X N k Y k N ?=+ 式中X 1(k)和X 2(k)分别是输⼊序列x(n)的偶数序号部分x(2l)和奇数序号部分x(2l+1). 以上讨论中k=0,1,2,…N/2-1, n=0,1,2,…N-1, l=0,1,2,…N/2-1 .2.雷德算法.即,将输⼊序列按下列⽅式倒序.四.实验步骤1.在CCS 环境中打开本实验的⼯程(Ex5_3.pjt),编译并重建.out 输出⽂件,然后通过仿真器把执⾏代码下载到DSP 芯⽚中.2.单击运⾏键.3.选择view>graph>time/frequency … 观察并画出输⼊波形.(设置对话框中的参数: “start address ”设为 “x_re ”, “ acquisition buffer size ” 和 “display data size ”设为 “64”,“DSP data type ”设为 “32-bit floating point ”.)4.同样⽅法观察并画出输出波形(注意: “start address ”要设为 “y_re ”).5.在Watch 窗⼝中添加i, j, k, m, n, a, b ,c 等变量,在Debug 菜单中先“Restart ” x (0)x (1)x (2)x (3)x (4)x (5)x (6)x (7)x (0)x (4)x (2)x (6)x (1)x (5)x (3)x (7)然后“Go main”,单步运⾏程序,跟踪并记录FFT 算法的过程;(可以跳过程序开始部分对各个数组的赋值代码,⽅法是在雷德算法的第⼀⾏代码前设置断点,然后先单击运⾏)后⾯的代码,见下图。
《DSP技术》课程实验报告学生姓名:所在班级:指导教师:记分及评价:一、实验名称:数据存储实验二、实验目的掌握TMS320F2812的内部结构;熟悉CCS软件的使用三、实验内容修改例子程序,实现以下功能:(1)往0x003F9020地址开始的八个存储单元依次写入0,1,2,……,7八个数;读取0x003F9020地址开始的八个存储单元内容依次写入0x003F9028地址开始的八个存储单元内;(2)从0x003F9020地址开始的八个存储单元的内容依次与0x003F9028地址开始的八个存储单元内容相乘,运算结果依次存入0x003F9030地址开始的八个存储单元内;从0x003F9020地址开始的八个存储单元的内容依次与0x003F9028地址开始的八个存储单元内容相加,运算结果依次存入0x003F9038地址开始的八个存储单元内;(3)将0x003F9020地址开始的32个存储单元的数据从小到大排序,排序后的结果依次存入0x003F9040地址开始的32个存储单元内四、实验程序与结果分析程序:void main(void){int i,n;volatile unsigned int *room = (volatile unsigned int *)0x3f9020;volatile unsigned int *room2= (volatile unsigned int *)0x3f9030;volatile unsigned int *room3= (volatile unsigned int *)0x3f9040;volatile unsigned int *room4= (volatile unsigned int *)0x3f9090;volatile unsigned int *room5= (volatile unsigned int *)0x3f90A0;volatile unsigned int *temp= (volatile unsigned int *)0x3f9090;unsigned int max;// Initialize System Control:// PLL, WatchDog, enable Peripheral ClocksInitSysCtrl();// Disable CPU interruptsDINT;// Disable CPU interrupts and clear all CPU interrupt flags: IER = 0x0000;IFR = 0x0000;/*对相应的内存空间赋值*/for(i=0;i<8;i++){* room=i;*room4=i;*(room+8)=i;*(room4+8)=i;*room2=(* room)*(*(room+8));*room5=(* room)*(*(room+8));*(room2+8)=(* room)+(*(room+8));*(room5+8)=(* room)+(*(room+8));room++;room2++;room4++;room5++;}/*从小到大排序并将32个数存在room3中*/for(i=0;i<31;i++){for(n=i+1;n<32;n++){if(temp[i]>=temp[n]){max= temp[i];temp[i]=temp[n];temp[n]=max;}}room3[i]=temp[i];}room3[i]=temp[31];}结果:五、小结通过本次对DSP的初次编程,感觉对C语言要求较高,进一步了解了DSP的内存分布情况,基本掌握了CSS的使用。
实验报告实验一、1、A=[1.2,3,5.1,-1.5,2.4],n=[-2,-1,0,1,2];B=0.5m,m=0~10;请编程完成下面操作并画图表示结果A×B,A-B,A.*B,A(n-2)程序A=[1.2,3,5.1,-1.5,2.4];ns1=[-2,-1,0,1,2];m=0:10;B=(0.5).^m;nf1=-2+length(A)-1;nf2=0+length(B)-1;n1=-2:nf1;n2=0:nf2;n=min(ns1,0):max(nf1,nf2);y1=zeros(1,length(n));y2=y1;y1(find((n>=-2)&(n<=nf1)==1))=A; %给y1赋值Ay2(find((n>=0)&(n<=nf2)==1))=B;y3=y2';ya=y1-y2;ym=y1.*y2;ys=y1*y3;ny=ns1+2;y=A;subplot(321);stem(n1,A,'.');ylabel('A(n)');grid;subplot(322);stem(n2,B,'.');xlabel('n');ylabel('B(n)');grid; subplot(323);stem(n,ya,'.');ylabel('A-B');grid;subplot(324);stem(n,ym,'.');xlabel('n');ylabel('A.*B');grid;subplot(325);stem(ny,y,'.');xlabel('ny');ylabel('A(n-2)');grid; subplot(326);stem(1,ys,'.');xlabel('n');ylabel('A*B');grid;2、p138 2.28n=0:50;x1=0.9.^(abs(n));x2=3*cos(0.5*pi*n+0.25*pi)+2*sin(0.3*pi*n);a=1;N=1000;[X,w]=freqz(x1,a,N);magX=abs(X);angX=angle(X);%subplot(251);stem(n,x1);grid;%title('原序列');ylabel('h(n)');subplot(241);plot(w/pi,magX);grid;title('幅频特性');ylabel('模值');subplot(242);plot(w/pi,angX);grid;title('相频特性');ylabel('弧度');%输入xn,求输出ynny1=n(1)+n(1);ny2=n(end)+n(end);ny=ny1:ny2;y1=conv(x1,x2);subplot(243);stem(n,x2);grid;title('输入序列x(n)');ylabel('y(n)');subplot(244);stem(ny,y1);grid;title('h2(n)*x(n)');ylabel('y(n)');n=0:50;x3=0.3.^n+0.5.^n;x2=3*cos(0.5*pi*n+0.25*pi)+2*sin(0.3*pi*n);a=1;N=1000;[X,w]=freqz(x3,a,N);magX=abs(X);angX=angle(X);%subplot(256);stem(n,x3);grid;%title('原序列');ylabel('h(n)'); subplot(245);plot(w/pi,magX);grid; title('幅频特性');ylabel('模值'); subplot(246);plot(w/pi,angX);grid; title('相频特性');ylabel('弧度');%输入xn,求输出ynny1=n(1)+n(1);ny2=n(end)+n(end);ny=ny1:ny2;y2=conv(x3,x2);subplot(247);stem(n,x2);grid;title('输入序列x(n)');ylabel('y(n)'); subplot(248);stem(ny,y2);grid;title('h2(n)*x(n)');ylabel('y(n)');2.34.clear all;n=0:0.5:39;x=2*cos(pi*n/5);subplot(331);stem(n,x);B1=[1,1];A1=[1,-0.6];y1=filter(B1,A1,x);subplot(332);stem(n,y1);subplot(333);zplane(B1,A1);subplot(334);stem(n,x);B2=[1,1,1];A2=[1,0.5,-0.25]; y2=filter(B2,A2,x);subplot(335);stem(n,y2);subplot(336);zplane(B2,A2);subplot(337);stem(n,x);B3=[1,0,1];A3=[1,-6,9];y3=filter(B3,A3,x);subplot(338);stem(n,y3);subplot(339);zplane(B3,A3);实验二、p211 3.6clc; clear all;n=0:4;x=[2,1,4,2,3];[H, w]=freqz(x,1,'whole'); figure(1);plot(abs(H));hold on;[Y]=fft(x);stem(n*512/5,abs(Y)); grid;n=0:7;x=[2,1,4,2,3,0,0,0];[H, w]=freqz(x,1,'whole'); figure(2);plot(abs(H));hold on;[Y]=fft(x);stem(n*512/8,abs(Y)); grid;Xk =Columns 1 through 77.3223 + 0.0000i -2.3347 - 0.4963i 0.4792 + 0.2134i -0.2926 - 0.2126i 0.1167 + 0.1296i -0.0806 - 0.1397i 0.0357 + 0.1100iColumns 8 through 14-0.0120 - 0.1139i -0.0120 + 0.1139i 0.0357 - 0.1100i -0.0806 + 0.1397i 0.1167 - 0.1296i -0.2926 + 0.2126i 0.4792 - 0.2134iColumn 15-2.3347 + 0.4963i程序:N=8;n=0:1:N-1;xn=3*cos(0.25*pi*n);[Xk]=fft(xn,N);magXk=abs(Xk);angXk=angle(Xk);subplot(221);stem(n,magXk,'.');grid;xlabel('n');title('幅频特性');ylabel('模值');subplot(222);stem(n,angXk,'.');grid;xlabel('n');title('相频特性');ylabel('模值');N=15;n=-7:1:7;for i=1:1:Nxn(i)=0.8.^(abs(i-8));[Xk]=fft(xn,N)magXk=abs(Xk);angXk=angle(Xk);subplot(223);stem(n,magXk,'.');grid;xlabel('n');title('幅频特性');ylabel('模值');subplot(224);stem(n,angXk,'.');grid;xlabel('n');title('相频特性');ylabel('模值');3.32N=11;n=0:1:N-1;k=0:1:N-1;xn=cos(0.48*pi*n)+cos(0.52*pi*n);WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;subplot(221);plot(k,abs(Xk));gridxlabel('k');title('频谱曲线');ylabel('x(k)');N=101;n=0:1:N-1;k=0:1:N-1;n1=0:1:10;xn=cos(0.48*pi*n1)+cos(0.52*pi*n1);xn=[xn,zeros(1,N-length(n1))];%将序列补90个0所需长度WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;subplot(222);plot(k,abs(Xk));gridxlabel('k');title('频谱曲线');ylabel('x(k)');N=101;n=0:1:N-1;k=0:1:N-1;xn=cos(0.48*pi*n)+cos(0.52*pi*n);WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;subplot(223);plot(k,abs(Xk));grid;xlabel('k');title('幅频特性曲线');ylabel('|x(k)|');实验三、5.18 (1)(2)(3)(4)b =1.0000 1.6667 1.3333 1.3333 0.3333 -0.3333a =1.0000 -1.2500 1.2400 -0.8465 0.3675 -0.1147C =8.0587 - 2.9703i8.0587 + 2.9703i31.6073 + 0.0000i-29.5838 -10.1490i-29.5838 +10.1490iB =-0.0000 + 0.7000i-0.0000 - 0.7000i0.6500 + 0.0000i0.3000 + 0.5196i0.3000 - 0.5196iA =17.4429程序:sos=[1,0,1,1,-0.6,0.36;1,-1/3,0,1,-0.65,0;1,2,1,1,0,0.49]; [b,a]=sos2tf(sos)%级联型到直接型的转换[C,B,A]=residuez(6*b,a)%直接型到并联型的转换直接I型直接II型级联型:实验四、P464 7.17椭圆函数数字带通滤波器程序clear,clcFs=25000;wp1=2*5000/Fs;wp2=2*7000/Fs;ws1=2*3500/Fs;ws2=2*8500/Fs; wp=[wp1,wp2];ws=[ws1,ws2];Rp=0.5;As=45;[N,wc]=ellipord(wp,ws,Rp,As);[b,a]=ellip(N,Rp,As,wc);hn=dimpulse(b,a);w0=[ws1*pi,wp1*pi,wp2*pi,ws2*pi];Hx=freqz(b,a,w0);[H,w]=freqz(b,a);dbHx=-20*log10(abs(H)/max(abs(H)));[db,mag,pha,grd,w]=freqz_m(b,a);subplot(2,1,1),plot(12.5*w/pi,db,'linewidth',2);title('椭圆函数数字带通幅度响应(dB)');xlabel('f(KHz)');ylabel('dB');axis([0,12.5,-50,3]);set(gca,'xtickmode','manual','xtick',[1.25,3.5,5,7,8.5,10,12.5]); set(gca,'ytickmode','manual','ytick',[-50,-As,-10,0]);grid; subplot(2,1,2),plot(w/pi,pha,'linewidth',2);title('椭圆函数数字带通相位响应');xlabel('\omega/\pi');ylabel('rad');grid;axis([0,1,-4,4]);figure(2),stem(hn,'.','linewidth',2);title('系统冲激响应');xlabel('n');axis([0,121,-0.15,0.15]);N=4;切比雪夫I型带通滤波器clear,clcFs=25000;wp1=2*5000/Fs;wp2=2*7000/Fs;ws1=2*3500/Fs;ws2=2*8500/Fs; wp=[wp1,wp2];ws=[ws1,ws2];Rp=0.5;As=45;[N,wc]=cheb1ord(wp,ws,Rp,As);[b,a]=cheby1(N,Rp,wc)hn=dimpulse(b,a)w0=[ws1*pi,wp1*pi,wp2*pi,ws2*pi];Hx=freqz(b,a,w0);[H,w]=freqz(b,a);dbHx=-20*log10(abs(H)/max(abs(H)));[db,mag,pha,grd,w]=freqz_m(b,a);subplot(2,1,1),plot(12.5*w/pi,db,'linewidth',2);title('切比雪夫I型数字带通幅度响应(dB)');xlabel('f(KHz)');ylabel('dB');axis([0,12.5,-50,3]);set(gca,'xtickmode','manual','xtick',[1.25,3.5,5,7,8.5,10,12.5]); set(gca,'ytickmode','manual','ytick',[-50,-As,-10,0]);grid; subplot(2,1,2),plot(w/pi,pha,'linewidth',2);title('切比雪夫I型数字带通相位响应');xlabel('\omega/\pi');ylabel('rad');grid;axis([0,1,-4,4]);figure(2),stem(hn,'.','linewidth',2);title('系统冲激响应');xlabel('n');axis([0,151,-0.16,0.16]);N=5;切比雪夫II型带通滤波器clear,clcFs=25000;wp1=2*5000/Fs;wp2=2*7000/Fs;ws1=2*3500/Fs;ws2=2*8500/Fs; wp=[wp1,wp2];ws=[ws1,ws2];Rp=0.5;As=45;[N,wc]=cheb2ord(wp,ws,Rp,As);[b,a]=cheby2(N,As,wc);hn=dimpulse(b,a);w0=[ws1*pi,wp1*pi,wp2*pi,ws2*pi];Hx=freqz(b,a,w0);[H,w]=freqz(b,a);dbHx=-20*log10(abs(H)/max(abs(H)));[db,mag,pha,grd,w]=freqz_m(b,a);subplot(2,1,1),plot(12.5*w/pi,db,'linewidth',2);title('切比雪夫II型数字带通幅度响应(dB)');xlabel('f(KHz)');ylabel('dB');axis([0,12.5,-50,3]);set(gca,'xtickmode','manual','xtick',[1.25,3.5,5,7,8.5,10,12.5]); set(gca,'ytickmode','manual','ytick',[-50,-As,-10,0]);grid; subplot(2,1,2),plot(w/pi,pha,'linewidth',2);title('切比雪夫II型数字带通相位响应');xlabel('\omega/\pi');ylabel('rad');grid;axis([0,1,-4,4]);figure(2),stem(hn,'.','linewidth',2);title('系统冲激响应');xlabel('n');axis([0,60,-0.22,0.22]);N=5;巴特沃斯型带通滤波器clear,clcFs=25000;wp1=2*5000/Fs;wp2=2*7000/Fs;ws1=2*3500/Fs;ws2=2*8500/Fs; wp=[wp1,wp2];ws=[ws1,ws2];Rp=0.5;As=45;[N,wc]=buttord(wp,ws,Rp,As);[b,a]=butter(N,wc);hn=dimpulse(b,a);w0=[ws1*pi,wp1*pi,wp2*pi,ws2*pi];Hx=freqz(b,a,w0);[H,w]=freqz(b,a);dbHx=-20*log10(abs(H)/max(abs(H)));[db,mag,pha,grd,w]=freqz_m(b,a);subplot(2,1,1),plot(12.5*w/pi,db,'linewidth',2);title('巴特沃斯型数字带通幅度响应(dB)');xlabel('f(KHz)');ylabel('dB');axis([0,12.5,-50,3]);set(gca,'xtickmode','manual','xtick',[1.25,3.5,5,7,8.5,10,12.5]); set(gca,'ytickmode','manual','ytick',[-50,-As,-10,0]);grid; subplot(2,1,2),plot(w/pi,pha,'linewidth',2);title('巴特沃斯型数字带通相位响应');xlabel('\omega/\pi');ylabel('rad');grid;axis([0,1,-4,4]);figure(2),stem(hn,'.','linewidth',2);title('系统冲激响应');xlabel('n');axis([0,60,-0.2,0.2]);N=7;实验五、P561 8.11,设计线性相位FIR低通数字滤波器dev =0.0575 0.0002h =Columns 1 through 13-0.0028 -0.0087 -0.0086 0.0044 0.0153 0.0066 -0.0058 0.0032 0.0148 0.0005 -0.0126 0.0073 0.0194Columns 14 through 26-0.0096 -0.0201 0.0199 0.0253 -0.0309 -0.0268 0.0537 0.0302 -0.0991 -0.0307 0.3165 0.5320 0.3165Columns 27 through 39-0.0307 -0.0991 0.0302 0.0537 -0.0268 -0.0309 0.0253 0.0199 -0.0201 -0.0096 0.0194 0.0073 -0.0126Columns 40 through 490.0005 0.0148 0.0032 -0.0058 0.0066 0.0153 0.0044 -0.0086 -0.0087 -0.0028程序:clc,clear all;Rp=1;As=75;Fs=100*10^3;f=[25*10^3,30*10^3];a=[1,0];dev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)][M,f0,a0,weights]=firpmord(f,a,dev,Fs);h=firpm(M,f0,a0,weights)[H,f]=freqz(h,1,1024,Fs);subplot(211);plot(f/Fs,20*log10(abs(H)),'linewidth',2);title('幅度响应(dB)');xlabel('f/Fs');ylabel('20log|H(e^j^\omega)|(dB)');axis([0,0.5,-140,20]);set(gca,'xtickmode','manual','xtick',[0,0.1,0.2,0.25,0.3,0.4,0.5]); set(gca,'ytickmode','manual','ytick',[-140,-110,-70,-30,0,20]);grid; subplot(212);plot(f/Fs,angle(H),'linewidth',2);grid;title('相位响应');xlabel('f/Fs');ylabel('arg[H(e^j^\omega)]');8.18用firpm,firpmord设计一个FIR线性相位双带通滤波器M =36f0 =0.10000.20000.40000.50000.60000.70000.80000.90001.0000 a0 =11110 weights =17.19471.000017.19471.000017.1947h =Columns 1 through 130.0159 -0.0002 -0.0071 -0.0027 -0.0281 0.0135 -0.0019 -0.0273 -0.0010 0.0271 0.0458 -0.0003 0.0441Columns 14 through 26-0.0461 0.0363 0.0835 -0.2605 -0.0810 -0.0732 0.0333 0.4606 0.0333 -0.0732 -0.0810 -0.2605 0.0835Columns 27 through 390.0363 -0.0461 0.0441 -0.0003 0.0458 0.0271 -0.0010 -0.0273 -0.0019 0.0135 -0.0281 -0.0027 -0.0071Columns 40 through 41-0.0002 0.0159程序:clc,clear all;Rp=1;As=50;f=[0.1,0.2,0.4,0.5,0.6,0.7,0.8,0.9,];a=[0,1,0,1,0];delta1=(10^(Rp/20)-1)/(10^(Rp/20)+1);delta2=(1+delta1)*(10^(-As/20));dev=[delta2,delta1,delta2,delta1,delta2];[M,f0,a0,weights]=firpmord(f,a,dev)h=firpm(M+4,f0,a0,weights)[H,f]=freqz(h,1,1024);subplot(211);plot(f/pi,20*log10(abs(H)),'linewidth',2);grid;title('幅度响应(dB)');xlabel('\omega/\pi');ylabel('20log|H(e^j^\omega)|(dB)');axis([0,1,-100,10]);set(gca,'xtickmode','manual','xtick',[0:0.1:1]);grid on;set(gca,'ytickmode','manual','ytick',[-100,-50,-1,10]);grid onsubplot(212);plot(f/pi,angle(H),'linewidth',2);gridtitle('相位响应');xlabel('\omega/\pi');ylabel('arg[H(e^j^\omega)]'); figure(2),stem(h,'.','linewidth',2);title('系统冲激响应');xlabel('n');axis([0,40,-0.6,0.6]);grid;N=5;实验六频域抽样定理和音频信号的处理一、频域抽样定理的验证给定信号1, 013 ()27, 14260,n nx n n n+≤≤⎧⎪=-≤≤⎨⎪⎩其它。
DSP实验报告小组杜筱佳0904210204薛茜茜0904210215学院电子工程与光电技术学院班级0904210204指导老师刘明实验日期2012.11——2012.12实验一DSP开发基础一、实验目的1、了解DSP开发系统的基本配置2、掌握DSP集成开发环境(CCS)3、掌握C语言开发的基本流程4、熟悉代码调试的基本方法二、实验仪器计算机,C2000 DSP教学实验箱,XDS510USB仿真器,示波器三、实验内容建立工程,对工程进行编译、链接,载入可执行程序,在DSP硬件平台上进行实时调试,利用代码调试工具,查看程序运行结果四、实验要求及实验结果1、项目的编译、链接、调试2、dataIO()子程序入口地址0x003F81F5processing()子程序入口地址0x003F81DBcurrentBuffer.input所在存储器地址0x008480currentBuffer.output所在存储器地址:0x0085003、图形方式显示数据空间currentBuffer.input和current.Buffer.output缓冲存储区的波形currentBuffer.input:图1.1currentBuffer.output:图1.24、.map文件中,.text段在存储空间的地址003f8000长度0000012b;位于TMS320F2812 程序存储空间,物理存储块名称H0_PM.data段在存储空间的地址00000040长度00000001;位于TMS320F2812 数据存储空间,物理存储块名称M0_RAM.bss段在存储空间的地址00000000长度00000000;实验二任意信号发生器一、实验目的1、熟悉DSP硬件开发平台2、熟悉DSP集成开发环境(CCS)3、熟悉TMS320F2812的存储器配置表4、学习DMS320F2812的编程开发5、熟悉代码调试的基本方法二、实验仪器计算机,C2000 DSP教学实验箱,XDS510USB仿真器,示波器三、实验内容建立工程,编写DSP主程序,并对工程进行编译、链接,利用现有DSP 平台实现任一波的产生,通过示波器观察结果。
一、实验目的1、掌握TMS320系列DSP的性能、结构原理、指令系统及编程方法;2、熟练掌握CCS集成开发环境的常用开发、调试功能;3、利用MATLAB语言与开发环境进行函数信号发生器的高级语言设计与仿真;4、根据高级语言仿真结果,进行基于CCS的高级语言和汇编语言仿真;5、在DSP实验板上实现。
二、实验设备TMS320VC5402实验板一套,ICETEC_5100USB仿真器一套,电源一个。
三、算法简介1.多频率信号的检测利用FFT快速傅立叶算法,计算多频率信号的DFT变换,之后求出各点幅值,即求出功率谱,检测所有功率谱的谱线选取各个频域的峰值点,若大于门限,即认为信号中有此频率。
FFT能够快速实现DFT,其原理式如下:X(k)=X1(k)+W N k *X2(k)X(N/2+k)= X1(k)-W N k *X2(k)检测频谱峰值时,利用DSP的进位位(C)和检验位(TC),实现程序的跳转。
由f=k*f s/N,计算频率。
2.Fir滤波器使用以下时域乘法累加式进行计算。
3.正弦信号发生器使用泰勒展开式(取前5项进行近似)计算0.5度正、余弦值,利用下式求出所有0。
~360。
的正弦值:sin(2x)=2*sinx*cosx四、实验内容1.多频率信号的检测首先使用C语言编写正弦信号产生程序,直接产生可用探针FIFEIO的Input.dat数据文件,可以产生1个以下不同频率的正弦信号的加信号,为了能够满足FFT程序的输入格式,在每个信号值之间加入虚部0。
由于输入信号没有考虑到噪声的存在,所以无法验证程序是否能够在噪声中检验信号,但在编写程序时考虑到了噪声的问题。
将信号最大功率谱幅值的十分之一设定为噪声门限,小于此门限的信号一律视为噪声。
意即可检测信噪比为10的信号。
在这里采用硬判决。
以下是第一组实验数据输入产生的信号功率谱波形:输入信号采样频率4000hz,第一个信号频率200hz,第二个信号频率1000hz。
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 函数动态分配存储空间。
班级 021152 组别 9组学号 02115111 姓名赵典
实验一 VISUAL DSP++的使用入门
一、实验目的
1、熟悉VISUAL DSP++的开发环境。
针对ADSP-21065L SHARC DSP,利用几个用C、C++和汇编语言写成的简单例子来描述VISUAL DSP+十编程环境和调试器(debugger)的主要特征和功能。
2、对于运行在其它类型SHARC处理器的程序只需对其链接描述文件(.LDF)做一些小的变化,用于ADSP-21065L硬件仿真。
二、实验内容
实验一:启动Visual DSP++,建立一个用C源代码的工程(Project),同时用调试器来评估用C语言所编写代码的性能;
实验二:创立一个新的工程,修改源码来调用一个汇编(asm)程序,重新编译工程,用调试器来评估用汇编语言所写程序的性能;
实验三:利用调试器的绘图(plot)功能来图形显示一个卷积算法中的多个数据的波形;
实验四:利用调试器的性能统计功能(Statistical profile来检查练习三中卷积算法的效率。
利用所收集到的性能统计数据就能看出算法中最耗时的地方。
三、实验步骤及结果
实验一:
1、进入 Visual DSP++,显示Visual DSP++的集成开发和调试环境窗口。
选择菜单中的Session\New Session\SHARK\ADSP-21065L SHARK processing Simulator.此过程为将要编译运行的程序建立了一个Session.
2、选择菜单File 中Open 打开Project\E:\float\unit_1\dot_product_c \dotprodc.dpj。
(注:练习中将float压缩包解压与E盘)
3、在菜单 Project中选择 Build Project来对工程进行编译。
在本例子中,编译器会检测到一个未定义的错误,显示为:
“.\dotprod_main.c”,line 115:error #20:identifier“itn”is undefined itn i;双击该行文字,光标会自动定位出错行,再该行中将“itn”改为“int”,重新编译后没有错误。
这时工程已被成功编译,此时在菜单Debug中点击Run,则进入调试状态。
4、调试无误后,再菜单中选择Tool\Linear Profiling\New Profile,在弹出的对话框中,进行如下图的参数设置:
实验结果如下:
实验二:
1、从菜单Project Group中选取Add New Project项,在弹出的工程保存对话框中,将工程名定义为 Newproject,并保存在E:\float\unit_1\dot_product_asm目录下。
2、选取菜单Project\Add to Project\file(s)…项,按住Ctrl键来同时选中dotprod_main.c,dotprod.c,dotprod_func.asm和dotprodasm.ldf文件,点击“Add”将这几个文件加到工程中,然后进行编译,本例中有一个错误,此错误处于 dotprodam.ldf 源文件中,具体位置为INPUT_SECTIONS(dotprod.doj(seg_pmco)dotprod.doj(pm_codel)dotProd.doj(pm_code2)dotProd.doj(pm_code3)),将上语句改为INPUT_SECTIONS(dotprod.doj(seg_pmco)dotprod.doj(pm_codel)dotProd_func.doj(pm_co de2)dotprod.doj(pm_code3)),重新进行编译,无误后进行调试。
3、在菜单中选择Tool\Linear Profiling\New Profile,在弹出的对话框中,进行如下图的参数设置:
实验结果如下:
实验结果分析:
分析实验一和实验二的实验结果,发现对于完成同一种功能,相对于C语言,汇编语言运算效率更高。
实验三:
1、在菜单中选择File\E:\float\unit_1\convolution \debug\convolution.dxe。
并在随后的源文件对话框中选择文件convolution.cpp。
可以在C代码源文件中看到四个全局数组:Table、Input、Output和Impulse。
2、编译调试无误后,可以完成绘图工作,具体操作如下:View\Debug Windows\Plot\New 则可弹出绘图对话框,再本例中进行如下的参数设置:
实验结果如下:
实验四:
(1)在菜单中选择File\E:\float\unit_1\convolution \debug\convolution.dxe。
并在随后的源文件对话框中选择文件convolution.cpp。
(2)打开Liner Profiling窗口,然后对程序进行编译调试,则可在Liner Profiling窗口中展现出卷积程序的执行情况。
实验结果如下:。