DSP实验报告 (1)
- 格式:doc
- 大小:135.50 KB
- 文档页数:6
实验一 采样、系统性质及滤波一、实验目的和任务(1)熟悉MA TLAB 的主要操作命令。
(2)学会简单的矩阵输入和数据读写。
(3)掌握简单的绘图命令。
(4)用MATLAB 编程并学会创建函数。
(5)观察采样引起的混叠。
(6)判别离散时间系统的时不变性。
(7)卷积计算二、实验内容A 、观察采样引起的混叠设模拟信号为)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 采样点。
两信号波形是否相同?采样后的两序列是否相同?实验过程与结果:1)实验程序clear% estimate x(t) and xa(t) with a much higher sampling freq. 'fs1'time_period=6; % unit: msfs1=50; % unit: kHzT1=1/fs1; % unit: msn1=0:fix(time_period/T1);x=cos(5*pi*n1*T1)+4*sin(2*pi*n1*T1).*sin(3*pi*n1*T1);xa=cos(pi*n1*T1);% obtain x(nT) and xa(nT) with given sampling freq. 'fs'fs=3;T=1/fs;n=0:fix(time_period/T);x_sample=cos(5*pi*n*T)+4*sin(2*pi*n*T).*sin(3*pi*n*T);xa_sample=cos(pi*n*T);figure,plot(n1*T1,x,'r',n1*T1,xa,'b',n*T,x_sample,'ro'),hold on, stem(n*T,xa_sample,'b:x')legend('x(t)','xa(t)','x(nT)','xa(nT)'),xlabel('t(ms)')2) 运行结果分析与讨论:)(t x 和)(t x a 两信号波形不同。
DSP 实验课大作业实验报告题目:在DSP 上实现线性调频信号的脉冲压缩,动目标显示和动目标检测 (一)实验目的:(1)了解线性调频信号的脉冲压缩、动目标显示和动目标检测的原理,及其DSP 实现的整个流程;(2)掌握C 语言与汇编语言混合编程的基本方法。
(3)使用MATLAB 进行性能仿真,并将DSP 的处理结果与MATLAB 的仿真结果进行比较。
(二)实验内容: 1. MATLAB 仿真设定信号带宽为B= 62*10,脉宽-6=42.0*10τ,采样频率为62*10Fs =,脉冲重复周期为-4T=2.4*10,用MATLAB 产生16个脉冲的线性调频信号,每个脉冲包含三个目标,速度和距离如下表:对回波信号进行脉冲压缩,MTI ,MTD 。
并且将回波数据和频域脉压系数保存供DSP 使用。
2.DSP 实现在Visual Dsp 中,经MATLAB 保存的回波数据和脉压系数进行脉压,MTI 和MTD 。
(三)实验原理 1.脉冲压缩原理在雷达系统中,人们一直希望提高雷达的距离分辨力,而距离分辨力定义为:22c cR Bτ∆==。
其中,τ表示脉冲时宽,B 表示脉冲带宽。
从上式中我们可以看出高的雷达分辨率要求时宽τ小,而要求带宽B大。
但是时宽τ越小雷达的平均发射功率就会很小,这样就大大降低了雷达的作用距离。
因此雷达作用距离和雷达分辨力这两个重要的指标变得矛盾起来。
然而通过脉冲压缩技术就可以解决这个矛盾。
脉冲压缩技术能够保持雷达拥有较高平均发射功率的同时获得良好的距离分辨力。
在本实验中,雷达发射波形采用线性调频脉冲信号(LFM),其中频率与时延成正比关系,因此我们就可以将信号通过一个滤波器,该滤波器满足频率与时延成反比关系。
那么输入信号的低频分量就会得到一个较大的时延,而输入信号的高频分量就会得到一个较小的时延,中频分量就会按比例获得相应的时延,信号就被压缩成脉冲宽度为1/B的窄脉冲。
从以上原理我们可以看出,通过使用一个与输入信号时延频率特性规律相反的滤波器我们可以实现脉冲压缩,即该滤波器的相频特性与发射信号时共轭匹配的。
实验一: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技术》课程实验报告学生姓名:所在班级:指导教师:记分及评价:一、实验名称:数据存储实验二、实验目的掌握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的使用。
我们做的dsp实验是实验一,实验二,实验三!模板上只有1 3 !2要自己仿照实验一写!不要弄错了!实验题目在另外一个共享表格里!实验一数据存储实验一、实验目的1. 掌握ccs的使用2. 掌握 tms320c54x 程序空间的分配;3. 掌握 tms320c54x 数据空间的分配;4. 能够熟练运用tms320c54x 数据空间的指令。
二、实验设备计算机,ccs 3.1版软件,dsp仿真器,e300实验箱,dsp-54xp cpu板。
三、实验步骤与内容1. 在进行 dsp实验之前,需先连接好仿真器、实验箱及计算机,连接方法如下所示:2. e300 底板的开关sw4 的第1位置on,其余位置off。
其余开关设置为off。
sw5全部置on;其余开关不做设置要求3. 上电复位在硬件安装完成后,确认安装正确、各实验部件及电源连接无误后,启动计算机,接通仿真器电源,此时,仿真器上的“红色指示灯”应点亮,否则dsp开发系统与计算机连接存在问题。
4. 运行ccs程序1) 待计算机启动成功后,实验箱220v电源置“on”,实验箱上电 2) 启动ccs3.1,进入ccs界面后,点击“debug—connect”3) 此时仿真器上的“绿色指示灯”应点亮,ccs正常启动,表明系统连接正常;否则仿真器的连接、jtag 接口或ccs 相关设置存在问题,这时需掉电检查仿真器的连接、jtag 接口连接是否正确,或检查ccs相关设置是否存在问题。
5. 成功运行ccs 程序后,首先应熟悉ccs的用户界面;6. 学会在ccs环境下创建工程文件、添加程序文件、编写程序、编译、装载、调试,学习如何使用观察窗口等。
7. 用“project\open”打开“c:\ti5000\myprojects\01_mem\ mem.pjt”.编译并装载“\ 01_mem\debug\mem.out”8.用“edit”下拉菜单中的“memory/fill”编辑内存单元,参数设置如下图:单击“ok”此时以0x1000 为起始地址的16个内存单元被修改成:0x00099.用“view”下拉菜单“memory”观察内存单元变化,输入要查看的内存单元地址,本实验要查看0x1000h~0x100fh 单元的数值变化,输入地址0x1000h;单击“ok”如下图所示:10. 点击“debug\go main”进入主程序,在程序中“加软件断点1”和“加软件断点2”处施加软件断点。
实验报告实验一、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+≤≤⎧⎪=-≤≤⎨⎪⎩其它。
实验一代数汇编指令基础实验一、实验目的:1.通过调试目标代码,掌握指令的功能,熟悉指令;2.通过指令的熟悉,能够指令应用于实际项目中。
二、实验原理:Ti公司的代数汇编指令。
三、实验程序:.title"算术指令综合实验".mmregs.sect ".vect".copy "vectors.asm".text_Start:;AR7=#767 ;A=#38CAH ;DP=#08AH ;RSA=#0123H;DP=#188H ;ASM=#0AHAR7=AMMR(*AR7+)=#1234HDP=#04HA=#9876HAR6=#230H*AR6+=#9ACDHARP=#6;@38H=ANOPNOPAR0=#003AHA=*AR6+0T=#08HSXM=1B=*AR6-<<TSAR7=#0220H*AR7=#0E5D8HA=*AR7+0B<<-12@3AH=#665AHAR2=#023AHBK=#0A=*AR2-0%<<12BK=#002AHAR3=#0256H*AR3- =HI(B)<<8ASM=#-8*AR3+ =A<<ASMAR4=#0216H*AR4=#8775HB=#025AHA=B<<ASMMMR(*AR4+)=BA=MMR(13H)AR2=#0245H*AR2=A<<7@3AH=A<<ASM*AR2+0%=B<<4;*AR2=#1CHASM=*AR2T=*AR4+LTD(*AR2+)B=RND(*AR2+)*AR3=#0F57AHA=UNS(*AR3)B=*AR3+*AR3+0B=TTRN=#12ACHA=DBL(*AR4+)B=DUAL(*AR2-)DBL(*AR3-)=ADUAL(*AR4+)=B*AR3+=HI(A)<<ASM||B=*AR2-<<16 *AR2+=HI(B)<<ASM||T=*AR3+A=#3456HIF(AGT)*AR4+=HI(A)<<ASMB=#0F679HIF(BLEQ)*AR3-=HI(B)<<ASMA=#0F98DHIF(AGT)*AR2+ =BRCIF(ALT)*AR3- =TB=#0125CHIF(BGEQ)*AR2+ =BRCCMPS(A,*AR4-)CMPS(B,*AR2+);B=@20DP=#40A=#1234H@22=AA=A+@9AH@25=AAR3=#0236H*AR3=#0F775HAR5=#024AH*AR5=#09ACDH NEXT: NOPA=#9ABCH*AR5+ =AA=A+#1000HA=A+#08ADEHSXM=0A=#07AB8H<<16A=A+#04ADEHA=A-#08ADEH<<16SXM=1B=#0FF7CHA=#0889AHA=A-#09ACDH<<16B=A-*AR5-C=1B=B-A<<ASM*AR5=AC16=0A=DBL(*AR5-)-AB=B-*AR3+A=B+*AR5+<<16A=A-B<<ASMB=*AR3+<<16-*AR4-<<16A=A+*AR4<<12B=A+*AR5<<-12A=B-#06789H<<16B=B+*AR7+0B+CARRYA=A-*AR2--BORROWSUBC(@25,A)A=A-UNS(*AR7+)T=#9ACDHB=DADST(*AR4,T)A=DADST(*AR7,T)C16=1A=A+DBL(*AR5+)A=A-DBL(*AR5-)T=#7654HC16=0A=DADST(*AR5+,T)C16=1A=DSADT(*AR5-,T)A=DBL(*AR5+)-A*AR3+ =HI(B)||B=A+*AR5+0%<<16*AR4-=HI(A)||A=*AR3-<<16-BGOTO NEXT;SXM=0A=#89ABHA=A+#4567H<<16*AR3=#9999HA=A&*AR3-B=#8897HB=B+#079ADH<<16A=A|B<<-12A=#8897HA=A+#079ADH<<16A=B^#0567DH<<12DP=#04@7AH=@7AH�ACD6H.end四、实验步骤:1、输入以上程序,并进行编译;2、打开code Explore ,并把编译好的程序装载,并进行调试3、逐步调试,并观察各种特殊寄存器的值和预期值是否对应,着重了解各种寻址的特点,及相对应的指令。
实验1.1 : Code Composer Studio入门一.实验目的1.掌握Code Composer Studio 3.3的安装和配置步骤过程。
2.了解DSP开发系统和计算机与目标系统的连接方法。
3.了解Code Composer Studio3.3软件的操作环境和基本功能,了解TMS320C55xx软件开发过程,包括:⑴学习创建工程和管理工程的方法。
⑵了解基本的编译和调试功能。
⑶学习使用内存与变量观察窗口。
⑷了解图形功能的使用。
二.实验设备1.PC兼容机一台;操作系统为WindowsXP。
2.ICETEK-VC5509-A实验箱一台。
如无实验箱则配备ICETEK-USB仿真器和ICETEK –VC5509-A或ICETEK-VC5509-C评估板,+5V电源一只。
3.USB连接电缆一条。
三.实验原理*开发TMS320C55xx应用系统一般需要以下几个调试工具来完成:-软件集成开发环境(Code Composer Studio 3.3):完成系统的软件开发,进行软件和硬件仿真调试。
它也是硬件调试的辅助手段。
-开发系统(ICETEK 5100-USB):实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。
-评估模块(ICETEK VC5509-A或ICETEK VC5509-C等):提供软件运行和调试的平台和用户系统开发的参照。
*Code Composer Studio 3.3主要完成系统的软件开发和调试。
它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译连接生成COFF (公共目标文件)格式的可执行文件,并能将程序下载到目标DSP上运行调试。
*用户系统的软件部分可以由CCS建立的工程文件进行管理,工程一般包含以下几种文件:-源程序文件:C语言或汇编语言文件(*.C或*.ASM)-头文件(*.H)-链接命令文件(*.CMD) -库文件(*.LIB,*.OBJ)四.实验步骤1.实验准备连接实验设备:请参看本书第二部分、第一章、二.ICETEK 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。
汕 头 大 学 实 验 报 告
学院: 工学院 系: 电子系 专业: 电子信息工程 年级: 2009
姓名: 学号: 09141068 实验时间: 2012-5-5
实验六、 FIR 和IIR 滤波器的DSP 实现
(一)实验目的
FIR 滤波器:
1、熟悉CCS 开发环境;
2、掌握FIR 滤波器设计的方法;
3、理解FIR 滤波器的程序;
IIR 滤波器:
1、熟悉CCS 开发环境;
2、掌握IIR 滤波器设计的方法;
3、理解IIR 滤波器的程序;
(二)实验原理
FIR 滤波器:
● 系数对称的FIR 滤波器
● 循环缓冲区存储数据
IIR 滤波器:
● 传递函数H(z)为:()∑∑=-=--=N
1i 1
10
i 11
z a 1z b z M H ● 其对应差分方程:()()()∑∑==-+-=N
i M i i n y a i n x b n 1101y
● 编程时,开辟四个缓冲区,存放输入、输出变量和滤波器的系数
三、问题:
1、解释程序,并分析CCS 显示的实验结果。
FIR 滤波器:
.mmregs
.global start
.def start,_c_int00
KS .set 256 ;定义块重复次数,及输出的个数
N .set 16 ;定义卷积的阶次
COEF_FIR .sect "COEF_FIR"
.word 62,188,86,-764,-1453,625,6202,11439 ;定义滤波器系数
.data
INPUT .copy "FIRIN.INC" ;输入数据在数据区0x2400
OUTPUT .space 1024 ;输出数据在数据区0x2500
x_new .usect "DATA1",N/2
x_old .usect "DATA2",N/2
size .set N/2
.text
_c_int00
b start
nop
nop
start: SSBX FRCT ;设置FRCT(小数方式位)
STM #x_new,AR2 ;AR2指向New缓冲区第一个单元
STM #x_old+(size-1),AR3;AR3指向Old缓冲区最后一个单元
STM #-1,AR0
STM #INPUT,AR4 ;模拟输入数据指针AR4初始化
STM #OUTPUT,AR5 ;滤波器输出数据指针AR5初始化
STM #KS-1,BRC ;;//块重复次数
RPTBD LOOP-1
STM #size,BK ;循环缓冲区块大小BK=size
LD *AR4+,A
STL A,*AR2 ;输入样本值
FIR_FILTER: ADD *AR2+0%,*AR3+0%,A ;AH=x(n)+x(n-15)
RPTZ B,#size-1 ;;//重复执行下一条指令size次
firs *AR2+0%,*AR3+0%,COEF_FIR;B=B+AH*h(0),AH=x(n-1)+x(n-14)
STH B,*AR5+ ;保存滤波输出数据到AP5所指向单元
MAR *+AR2(2)% ;修正AR2,指向New缓冲区最老的数据替代
MAR *AR3+% ;修正AR3,指向OLD缓冲区最老的数据替代
MVDD *AR2,*AR3+0% ;用New缓冲区最老的数据替代Old缓冲区中最老的数据
LOOP:
EEND B EEND
.end
IIR滤波器:
.title "diir.asm"
.mmregs
.global start
.def start, _c_int00
N .set 6
INPUT .copy "iirin.inc"
table
.word 63, 0, -188, 0, 188, 0, -63
.word 0, 11675, 0, 9663, 0, 2948
.data
BN .usect "BN",N+1
AN .usect "AN",N+1
INBUF .usect "INBUF",256 OUTPUT .usect "OUTPUT",256
.text
.asg AR0, INDEX_P
.asg AR2, XN_P
.asg AR3, ACOEF_P
.asg AR4, YN_P
.asg AR5, BCOEF_P
_c_int00
b start
nop
nop
start: SSBX FRCT
SSBX OVM
SSBX SXM
STM #BN+N,AR1
RPT #N
MVPD #table,*AR1-
STM #AN+N-1,AR1
RPT #N-1
MVPD #table+N+1,*AR1-
STM #OUTPUT, AR1
RPTZ A, #255
STL A, *AR1+
STM #INBUF,AR1
RPT #255
MVPD #INPUT,*AR1+
STM #OUTPUT,YN_P
STM #INBUF,XN_P
STM #N-1,INDEX_P
STM #255,BRC
RPTB LOOP-1
IIR: SUB A,A
STM #BN,BCOEF_P
STM #AN,ACOEF_P
RPT #N-1
MAC *XN_P+,*BCOEF_P+,A
MAC *XN_P,*BCOEF_P,A
MAR *XN_P-0
RPT #N-1
MAC *YN_P+,*ACOEF_P+,A
STH A,*YN_P-0
LOOP:
EEND B EEND
.end
2、用MATLAB产生实验用的IIR和FIR滤波器,分析实验结果。
FIR滤波器:
说明:查看firinput.c文件可知,此低通滤波器的截止频率为:1000 Hz,采用频率为:8000 Hz;用matlab设计此低通滤波器方法如下:
Matlab程序:
>> b=fir1(16,1000/4000);
>> freqz(b,1,512)
仿真图:
IIR滤波器:
说明:查看iirinput.c文件可知,此低通滤波器的截止频率为:4000 Hz,采用频率为:16000 Hz;用matlab设计此低通滤波器方法如下:
Matlab程序:
>> [b,a]=butter(16,4000/8000);
>> freqz(b,a,512,16000)
仿真图(频率没有归一化):。