最新范文网 > 心得体会 > 大学dsp实验心得体会

大学dsp实验心得体会

时间: 小龙 心得体会

通过本次大学dsp实验,加深了我对DSP的认识,使我对DSP实验的操作有了更进一步的理解。基本掌握了CCS实验环境的使用,并能够使用C语言进行简单的DSP程序设计。下面是小编为大家收集整理的大学dsp实验心得体会,欢迎大家阅读。

大学dsp实验心得体会篇1

实验报告

一、实验室名称:数字信号处理实验室

二、实验项目名称:多种离散时间信号的产生

三、实验原理:

1、基本离散时间信号

利用MATLAB强大的数值处理工具来实现信号的分析和处理,首先就是要学会应用MATLAB函数来构成信号。常见的基本信号可以简要归纳如下:

(1).单位采样序列

&9127;1n=0δ(n)=&9128; 0&9129;n≠0

在MATLAB中可以利用zeros()函数实现。

x=zeros(1,N);

x(1)=1;

如果δ(n)在时间轴上延迟了k个单位,得到δ(n-k)即:

δ(n-k)=&9128;

(2).单位阶跃序列 &9127;1n=k &9129;0n≠0

&9127;1n≥0u(n)=&9128; 0n<0&9129;

在MATLAB中可以利用ones()函数实现。

x=ones(1,N);

(3).正弦序列

x(n)=Asin(2πfn+&981;)

采用MATLAB的实现方法,如:

n=0:N-1

x=A*sin(2*pi*f*n+&981;)

(4).实指数序列

x(n)=A⋅an

其中,A、a为实数。采用MATLAB的实现方法,如:

n=0:N-1

x=a.^n

(5).复指数序列

x(n)=A⋅e n=0:N-1 采用MATLAB的实现方法,如: x=A*exp((σ+j*ω0)*n)

为了画出复数信号x[n],必须要分别画出实部和虚部,或者幅值和相角。MATLAB函数real、imag、abs和angle可以逐次计算出一个复数向量的这些函数。

2、基本数字调制信号

(1).二进制振幅键控(2ASK)

最简单的数字调制技术是振幅键控(ASK),即二进制信息信号直接调制模拟载波的振幅。二进制幅度键控信号的时域表达式:SASK(t)=[∑ang(t-nTs)]cosωct

其中,an为要调制的二进制信号,gn(t)是单极性脉冲信号的时间波形,Ts表示调制的信号间隔。 (σ+jω0)n 典型波形如下:

图1 – 1二进制振幅键控信号时间波形

(2).二进制频移键控(2FSK)

在二进制数字调制中,若正弦载波的频率随二进制基带信号在f1和f2两个频率点间变化,则产生

二进制移频键控信号(2FSK信号)。二进制频域键控已调信号的时域表达式为: &9121;&9124;&9121;&9124;S2FSK(t)=&9122;∑ang(t-nTS)&9125;cosω1t+&9122;∑ng(t-nTS)&9125;cosω2t &9123;n&9126;&9123;n&9126;这里,ω1=2πf1,ω2=2πf2,an是an的反码。

an

载波信号1 t 载波信号2 t

2FSK信号 t

(3).二进制相移键控(2PSK或BPSK)

在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控(2PSK)信号。通常用已调信号载波的0°和 180°分别表示二进制数字基带信号的 1 和 0。二进制移相键控信号的时域表达式为:

&9121;&9124;

S2PSK(t)=&9122;∑ang(t-nTS)&9125;cos(ωct+φi),φi=0或π

&9123;n&9126;

(3).二进制相移键控(2PSK或BPSK)

在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控(2PSK)信号。通常用已调信号载波的0°和 180°分别表示二进制数字基带信号的 1 和 0。二进制移相键控信号的时域表达式为:

&9121;&9124;

S2PSK(t)=&9122;∑ang(t-nTS)&9125;cos(ωct+φi),φi=0或π

&9123;n&9126;

因此,DTMF信号可以看作两个有限长度的正弦序列相加,正弦信号的频率由按键数字或字母符号对应的频率决定。如,数字“8”由行频852Hz和列频1336Hz决定。

四、实验目的:

1、 掌握几种基本的离散时间信号(包括单位采样序列,单位阶跃序列,单频正弦序列,单频复指

数序列,实指数序列等)。

2、 能够熟练利用MATLAB产生这些基本的离散时间信号。

3、 理解双音多频DTMF信号、ASK、FSK、BPSK等信号的产生原理。

4、 学习并运用MATLAB产生各种通信中的调制信号及双音多频信号。

五、实验内容:

1、对几种基本离散时间信号(包括单位采样序列,单位阶跃序列,正弦序列,复指数序列,实指数序列等)在MATLAB中编程产生。

2、(拓展要求)利用MATLAB编程产生2ASK,2FSK,2PSK等数字调制信号。

3、(拓展要求)利用MATLAB编程产生理解双音多频DTFM信号。

4、(拓展要求)利用MATLAB编程产生高斯白噪声序列。

5、(拓展要求)利用MATLAB中的谱分析函数对正弦信号的频谱进行分析。

6、通过硬件(DSP)实验箱演示上述信号的时域(示波器)波形与频域波形(计算结果)。

六、实验器材(设备、元器件):

安装MATLAB软件的PC机一台,DSP实验演示系统一套。

七、实验步骤:

1、在-20≤n≤20内,画出单位下列信号:

(a).单位采样序列x1[n]=δ[n]和单位阶跃序列x2[n]=u[n]的时域波形图。

(b).y1[n]=x1[n+5]、y2[n]=x2[n-8]的波形。说明x1[n]与y1[n]、x2[n]与y2[n]之间的关系。

2、画出下列信号在0≤n≤100内的波形。 &9115;πn&9131;x3[n]=sin &9130;&9117;16&9133;

&9115;n&9131;x4[n]=sin &9130;&9117;2&9133;

&9115;πn&9131;&9115;3πn&9131;x5[n]=cos &9130;+cos &9130;&9117;12&9133;&9117;8&9133;

观察x3[n]、x4[n]、x5[n]是否周期信号。如果是周期信号,信号的基波周期是什么?如果不是

周期信号,说明原因。

3、在0≤n≤30内,画出下列信号: nx6[n]=0.2(0.8) (-1/12+jπ/6)nx7[n]=e对于复数序列,要求分别画出实部和虚部;幅值和相角。若把x6[n]中的底数0.8分别改为1.2、

-0.8,讨论产生的时域波形有何变化。总结指数序列的底数对序列变化的影响。

4、(拓展要求)设计产生数字二进制序列:1 0 1 0 1 0 的2ASK、2FSK、2PSK调制信号。已

知符号速率Fd=10Hz(即时间间隔Ts为0.1),输出信号的采样频率为20Hz。

(a).2ASK信号的载波频率Fc=5Hz,

(b).2FSK信号载波1频率F1=5Hz,载波2频率F2=1Hz。

(c).2PSK载波频率Fc=1Hz。

分别画出以上信号调制前后的时域波形图。

5、(拓展要求)利用MATLAB产生DTMF双音多频信号。画出数字“0”的时域波形图。

6、(拓展要求)MATLAB函数randn(1,N)可以产生均值为0,方差为1的高斯随机序列,也就是

白噪声序列。试利用randn函数产生均值为0.15,方差为0.1的高斯白噪声序列x8[n],要求序列时域范围为0≤n≤100。画出时域波形图。同时将实验步骤2中产生的信号x2[n]与x8[n]相加,将得到的波形与x2[n]的波形做比较。

7、(拓展要求)利用MATLAB中的谱分析函数画出x3[n]、x4[n]、x5[n]的频谱。与理论上根据傅

立叶变换的定义计算出的x3[n]、x4[n]、x5[n]的频谱进行比较。

8、通过硬件(DSP)实验箱演示上述信号的时域(示波器)波形与频域波形(计算结果)。

八、实验数据及结果分析:

程序:

(1)产生x1[n]、x2[n]、y1[n]、y2[n]、x3[n]、x4[n]、x5[n]、x6[n]、x7[n]序列的程序

(2)产生2ASK、2FSK、2PSK调制信号的程序(拓展要求)

(3)产生DTMF信号的程序(拓展要求)

(4)高斯白噪声序列的产生程序(扩展要求)

(4)正弦信号频谱分析的程序(扩展要求)

clear all;

clc;

n=101;

%单位采样序列

x1=zeros(1,n);

x1(1)=1;

x1=[zeros(1,100),x1];

%单位阶跃序列

x2=ones(1,n);

x2=[zeros(1,100),x2];

%

n1=0:n-1;

yn1=n1-5;

yn2=n1+8;

%100;

Fs=1000;

n2=0:100;

%正弦序列

x3=sin(2*pi*n2/32);

x4=sin(n2/2);

x5=sin(pi*n2/12)+cos(3*pi*n2/8);

%指数序列

n3=0:30;

x61=0.2*(0.8.^n3);%实指数序列

x62=0.2*(1.2.^n3);

x63=0.2*((-0.8).^n3);

x7=exp((-1/12+1i*pi/6)*n3);%复指数序列

%画出图形

figure(1)

subplot(2,2,1),stem(n1,x1),title(&39;x1&39;),axis([-20,20,0,1]);

subplot(2,2,2),stem(n1,x2),title(&39;x2&39;),axis([-20,20,0,1]);

subplot(2,2,3),stem(yn1,x1),title(&39;y1&39;),axis([-20,20,0,1]);

subplot(2,2,4),stem(yn2,x2),title(&39;y2&39;),axis([-20,20,0,1]);

figure(2)

subplot(3,1,1),stem(n2,x3),title(&39;x3&39;),axis([0,100,-1,1]);

subplot(3,1,2),stem(n2,x4),title(&39;x4&39;),axis([0,100,-1,1]);

subplot(3,1,3),stem(n2,x5),title(&39;x5&39;),axis([0,100,min(x5),max(x5)]);

figure(3)

subplot(3,1,1),stem(n3,x61),title(&39;x6 a=0.8&39;),axis([0,30,min(x61),max(x61)]);

subplot(3,1,2),stem(n3,x62),title(&39;x6 a=1.2&39;),axis([0,30,min(x62),max(x62)]);

subplot(3,1,3),stem(n3,x63),title(&39;x6 a=-0.8&39;),axis([0,30,min(x63),max(x63)]);

figure(4)

subplot(4,1,1),stem(n3,abs(x7)),title(&39;x7幅值&39;),axis([0,30,min(abs(x7)),max(abs(x7))]);

subplot(4,1,2),stem(n3,angle(x7)),title(&39;x7相角&39;),axis([0,30,min(angle(x7)),max(angle(x7))]); subplot(4,1,3),stem(n3,imag(x7)),title(&39;x7虚部&39;),axis([0,30,min(imag(x7)),max(imag(x7))]); subplot(4,1,4),stem(n3,real(x7)),title(&39;x7实部&39;),axis([0,30,min(real(x7)),max(real(x7))]); %调制

x_base=[1,0,1,0,1,0];

Fd=10000;

t=linspace(0,0.6,6*Fd);

if(x_base(1)==1)

m=ones(1,Fd);

elseif(x_base(1)==0)

m=zeros(1,Fd);

end

for i=2:6

if(x_base(i)==1)

m=[m,ones(1,Fd)];

elseif(x_base(i)==0)

m=[m,zeros(1,Fd)];

end

end

%2ASK

Fc_A=5;

S_ask=m.*cos(2*pi*Fc_A*t);

%

figure(5)

subplot(4,1,1),stem(0:0.1:0.5,x_base),title(&39;序列An&39;),axis([0,0.6,0,1]),xlabel(&39;s&39;);

subplot(4,1,2),plot(t,m),title(&39;mt&39;),axis([0,0.6,0,1.5]),title(&39;mt&39;),xlabel(&39;s&39;);

subplot(4,1,3),plot(t,cos(2*pi*Fc_A*t)),title(&39;mt&39;),axis([0,0.6,-1.2,1.2]),title(&39;载波信号&39;),xlabel(&39;s&39;); subplot(4,1,4),plot(t,S_ask),title(&39;mt&39;),axis([0,0.6,-1.2,1.2]),title(&39;2ASK调制信号&39;),xlabel(&39;s&39;); %2FSK

F1=5;F2=1;

s1=m.*cos(2*pi*F1*t);

s2=(1-m).*cos(2*pi*F2*t);

S_fsk=s1+s2;

figure(6)

subplot(4,1,1),plot(t,m),axis([0,0.6,0,1.5]),title(&39;mt&39;),xlabel(&39;s&39;);

subplot(4,1,2),plot(t,s1),axis([0,0.6,-1.2,1.2]),title(&39;载波信号1 F=5Hz)&39;),xlabel(&39;s&39;);

subplot(4,1,3),plot(t,s2),axis([0,0.6,-1.2,1.2]),title(&39;载波信号2 F=1Hz&39;),xlabel(&39;s&39;);

subplot(4,1,4),plot(t,S_fsk),axis([0,0.6,-1.2,1.2]),title(&39;2FSK调制信号&39;),xlabel(&39;s&39;);

%2PSK

Fc_P=1;

S_psk=(2*m-1).*cos(2*pi*Fc_P*t+pi);

figure(7)

subplot(4,1,1),plot(t,2*m-1),axis([0,0.6,-1.5,1.5]),title(&39;mt&39;),xlabel(&39;s&39;);

subplot(4,1,2),plot(t,cos(2*pi*Fc_P*t+pi)),axis([0,0.6,-1.2,1.2]),title(&39;正相载波信号&39;),xlabel(&39;s&39;); subplot(4,1,3),plot(t,-cos(2*pi*Fc_P*t+pi)),axis([0,0.6,-1.2,1.2]),title(&39;反相载波信号&39;),xlabel(&39;s&39;); subplot(4,1,4),plot(t,S_psk),axis([0,0.6,-1.2,1.2]),title(&39;2PSK调制信号&39;),xlabel(&39;s&39;);

%DTFM

t_dt=linspace(0,0.02,10000);

x_dtfm=cos(2*pi*941*t_dt)+cos(2*pi*1366*t_dt);

plot(t_dt,x_dtfm);

%rand

N=201;

x8=sqrt(0.1)*randn(1,N)+0.15;

x_rnd=x2+x8;

figure(8)

subplot(3,1,1),stem(n1,x2),title(&39;X2&39;);

subplot(3,1,2),stem(n1,x8),title(&39;高斯信号&39;);

subplot(3,1,3),stem(n1,x_rnd),title(&39;加噪声后X2&39;);

%FFT

N_smp=length(n2);

fre=linspace(-1,1,N_smp)*Fs/2;

y3=abs(fftshift(fft(x3)));

y4=abs(fftshift(fft(x4)));

y5=abs(fftshift(fft(x5)));

figure(9)

subplot(3,1,1),plot(fre,y3),xlabel(&39;Hz&39;),title(&39;X3频谱&39;),xlabel(&39;频率Hz&39;),axis([-100,100,1.2*min(y3),1.2*max(y3)]);

subplot(3,1,2),plot(fre,y4),xlabel(&39;Hz&39;),title(&39;X4频谱&39;),xlabel(&39;频率Hz&39;),axis([-200,200,1.2*min(y4),1.2*max(y4)]);

subplot(3,1,3),plot(fre,y5),xlabel(&39;Hz&39;),title(&39;X5频谱&39;),xlabel(&39;频率Hz&39;),axis([-300,300,1.2*min(y5),1.2*max(y5)]);

结果:

(1)x1[n]、x2[n]、y1[n]、y2[n]、x3[n]、x4[n]、x5[n]、x6[n]、x7[n]的时域波形

(2)信号的时移:x1[n]与y1[n]、x2[n]与y2[n]之间的关系。 答:y1[n]相当于x1[n]向左平移5个单位,y2[n]相当于将x2[n]向右平移8个单位

大学dsp实验心得体会篇2

基础实验

一、实验目的

二、实验设备

三、实验原理

浮点数的表达和计算是进行数字信号处理的基本知识;产生正弦信号是数字信号处理1. 一台装有CCS软件的计算机; 2. DSP实验箱的TMS320F2812主控板; 3. DSP硬件仿真器。 1. 掌握CCS实验环境的使用; 2. 掌握用C语言编写DSP程序的方法。 中经常用到的运算;C语言是现代数字信号处理表达的基础语言和通用语言。写实现程序时需要注意两点:(1)浮点数的范围及存储格式;(2)DSP的C语言与ANSI C语言的区别。

四、实验步骤

1. 打开CCS 并熟悉其界面;

2. 在CCS环境中打开本实验的工程(Example_base.pjt),编译并重建 .out 输出文件,然后通过仿真器把执行代码下载到DSP芯片中;

3. 把X0 , Y0 和Z0添加到Watch窗口中作为观察对象(选中变量名,单击鼠标右键,在弹出菜单中选择“Add Watch Window”命令);

4. 选择view->graph->time/frequency… 。 设置对话框中的参数: 其中“Start Address”

设为“sin_value”,“Acquisition buffer size”和“Display Data size”都设为“100”,并且把“DSP Data Type”设为“32-bit floating point”,

设置好后观察信号序列的波形(sin函数,如图);

5. 单击运行;

6. 观察三个变量从初始化到运算结束整个过程中的变化;观察正弦波形从初始化到运算结束整个过程中的变化;

7. 修改输入序列的长度或初始值,重复上述过程。

五、实验心得体会

通过本次实验,加深了我对DSP的认识,使我对DSP实验的操作有了更进一步的理解。基本掌握了CCS实验环境的使用,并能够使用C语言进行简单的DSP程序设计。

从软件的安装到使用软件进行程序设计与仿真,锻炼了自己的动手能力,也遇到了不少的坎坷,例如芯片的选择,不能因为麻烦而省略该步骤,否则将会运行出错。

大学dsp实验心得体会篇3

//EnablePWMpins;GpioMuxRegs.GPAMUX.all=0;GpioMuxRegs.GPBMUX.all=0;EDIS;;//Step3.Clearallinterrup;//DisableCPUinterrupts;DINT;;//InitializethePIEcontro;//ThedefaultstateisallPI;//ar

// Enable PWM pins

GpioMuxRegs.GPAMUX.all = 0x00FF; // EVA PWM 1-6 pins

GpioMuxRegs.GPBMUX.all = 0x00FF; // EVB PWM 7-12 pins

EDIS;

// Step 3. Clear all interrupts and initialize PIE vector table:

// Disable CPU interrupts

DINT;

// Initialize the PIE control registers to their default state.

// The default state is all PIE interrupts disabled and flags

// are cleared.

// This function is found in the DSP281x_PieCtrl.c file.

InitPieCtrl();

// Disable CPU interrupts and clear all CPU interrupt flags:

IER = 0x0000;

IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt

// Service Routines (ISR).

// This will populate the entire table, even if the interrupt

// is not used in this example. This is useful for debug purposes.

// The shell ISR routines are found in DSP281x_DefaultIsr.c.

// This function is found in DSP281x_PieVect.c.

InitPieVectTable();

// Step 4. Initialize all the Device Peripherals:

// This function is found in DSP281x_InitPeripherals.c

// InitPeripherals(); // Not required for this example

InitXintf(); // For this example, init the Xintf

// Step 5. User specific code, enable interrupts:

init_eva();

//init_evb();

while(1)

{

for(i=0;i<65535;i+=1000)

{

Reg06=0;

EvbRegs.CMPR6 = i;

delay_loop();

}

}

}

void delay_loop()

{ short i,j;

for (i = 0; i < 1000; i++)

{for (j = 0; j < 10; j++);}

}

void init_eva()

{

// EVA Configure T1PWM, T2PWM, PWM1-PWM6

// Initalize the timers

// Initalize EVA Timer1

EvaRegs.T1PR = 0xFFFF; // Timer1 period

EvaRegs.T1CMPR = 0x3C00; // Timer1 compare

EvaRegs.T1CNT = 0x0000; // Timer1 counter

// TMODE = continuous up/down

// Timer enable

// Timer compare enable

EvaRegs.T1CON.all = 0x1042;

// Initalize EVA Timer2

EvaRegs.T2PR = 0x0FFF; // Timer2 period

EvaRegs.T2CMPR = 0x03C0; // Timer2 compare

EvaRegs.T2CNT = 0x0000; // Timer2 counter

// TMODE = continuous up/down

// Timer enable

// Timer compare enable

EvaRegs.T2CON.all = 0x1042;

// Setup T1PWM and T2PWM

// Drive T1/T2 PWM by compare logic

EvaRegs.GPTCONA.bit.TCMPOE = 1;

// Polarity of GP Timer 1 Compare = Active low

EvaRegs.GPTCONA.bit.T1PIN = 1;

// Polarity of GP Timer 2 Compare = Active high

EvaRegs.GPTCONA.bit.T2PIN = 2;

// Enable compare for PWM1-PWM6

//EvaRegs.CMPR1 = 0x0C00;

//EvaRegs.CMPR2 = 0x3C00;

EvaRegs.CMPR3 = 0xFC00;

// Compare action control. Action that takes place

// on a cmpare event

// output pin 1 CMPR1 - active high

// output pin 2 CMPR1 - active low

// output pin 3 CMPR2 - active high

// output pin 4 CMPR2 - active low

// output pin 5 CMPR3 - active high

// output pin 6 CMPR3 - active low

EvaRegs.ACTRA.all = 0x0666;

EvaRegs.DBTCONA.all = 0x0000; // Disable deadband

EvaRegs.COMCONA.all = 0xA600;

}

void init_evb()

{

// EVB Configure T3PWM, T4PWM and PWM7-PWM12

// Step 1 - Initialize the Timers

// Initialize EVB Timer3

// Timer3 controls T3PWM and PWM7-12

EvbRegs.T3PR = 0xFFFF; // Timer3 period

EvbRegs.T3CMPR = 0x3C00; // Timer3 compare

EvbRegs.T3CNT = 0x0000; // Timer3 counter

// TMODE = continuous up/down

// Timer enable

// Timer compare enable

EvbRegs.T3CON.all = 0x1042;

// Initialize EVB Timer4

// Timer4 controls T4PWM

EvbRegs.T4PR = 0x00FF; // Timer4 period

EvbRegs.T4CMPR = 0x0030; // Timer4 compare

EvbRegs.T4CNT = 0x0000; // Timer4 counter

// TMODE = continuous up/down

// Timer enable

// Timer compare enable

EvbRegs.T4CON.all = 0x1042;

// Setup T3PWM and T4PWM

// Drive T3/T4 PWM by compare logic

EvbRegs.GPTCONB.bit.TCMPOE = 1;

// Polarity of GP Timer 3 Compare = Active low

EvbRegs.GPTCONB.bit.T3PIN = 1;

// Polarity of GP Timer 4 Compare = Active high

EvbRegs.GPTCONB.bit.T4PIN = 2;

// Enable compare for PWM7-PWM12

EvbRegs.CMPR4 = 0x0C00;

EvbRegs.CMPR5 = 0x3C00;

EvbRegs.CMPR6 = 0xFC00;

// Compare action control. Action that takes place

// on a cmpare event

// output pin 1 CMPR4 - active high

// output pin 2 CMPR4 - active low

// output pin 3 CMPR5 - active high

// output pin 4 CMPR5 - active low

// output pin 5 CMPR6 - active high

// output pin 6 CMPR6 - active low

EvbRegs.ACTRB.all = 0x0666;

EvbRegs.DBTCONB.all = 0x0000; // Disable deadband

EvbRegs.COMCONB.all = 0xA600;

}

龙 岩 学 院

实 验 报 告

班 级 07电本(1)班 学号 050344 姓 名 杨宝辉 同组人 独立 实验日期 -6-3 室温 大气压 成 绩

高速A/D转换实验

一、实验目的

1.了解高速 AD工作的基本原理。

2.了解如果通过软件正确的控制高速AD。

3.掌握对高速 AD正确操作的过程

二、实验设备

1. 一台装有CCS软件的计算机;

2. DSP实验箱;

3. DSP硬件仿真器;

三、实验原理

实验箱用的高速 AD 为 TLC5510,它是一个 CMOS 结构的、具有高达20MSPS 的8位模数转换器。TLC5510 采用单5V 供电,功耗仅为 130mW。TLC5510 内部包含有一个采样保持电路、具有高阻输出的并行接口以及内部参考电压等。

TLC5510 采用半 FlASh 结构,与 FlASh 结构相比,它不仅减少了功耗,而且提高了芯片的集成度。TLC5510 采用两步转换实现一次完整的转换,这样就大大减少了内部比较器的个数,其输出数据的延迟为2.5个时钟周期。TLC5510 采用 3 个内部参考电阻产生一个标准2V的参考电压,要实现内部参考电压仅需要通过外部的简单连线即可。

311715