天天范文

大学dsp实验心得体会(通用3篇)

大学dsp实验心得体会 篇1

实验报告

大学dsp实验心得体会(通用3篇)

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

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

三、实验原理:

1、基本离散时间信号

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

(1).单位采样序列

⎧1n=0δ(n)=⎨ 0⎩n≠0

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

x=zeros(1,N);

x(1)=1;

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

δ(n-k)=⎨

(2).单位阶跃序列 ⎧1n=k ⎩0n≠0

⎧1n≥0u(n)=⎨ 0n<0⎩

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

x=ones(1,N);

(3).正弦序列

x(n)=Asin(2πfn+ϕ)

采用MATLAB的实现方法,如:

n=0:N-1

x=A*sin(2*pi*f*n+ϕ)

(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信号)。二进制频域键控已调信号的时域表达式为: ⎡⎤⎡⎤S2FSK(t)=⎢∑ang(t-nTS)⎥cosω1t+⎢∑ng(t-nTS)⎥cosω2t ⎣n⎦⎣n⎦这里,ω1=2πf1,ω2=2πf2,an是an的反码。

an

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

2FSK信号 t

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

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

⎡⎤

S2PSK(t)=⎢∑ang(t-nTS)⎥cos(ωct+φi),φi=0或π

⎣n⎦

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

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

⎡⎤

S2PSK(t)=⎢∑ang(t-nTS)⎥cos(ωct+φi),φi=0或π

⎣n⎦

因此,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内的波形。 ⎛πn⎫x3[n]=sin ⎪⎝16⎭

⎛n⎫x4[n]=sin ⎪⎝2⎭

⎛πn⎫⎛3πn⎫x5[n]=cos ⎪+cos ⎪⎝12⎭⎝8⎭

观察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('x1'),axis([-20,20,0,1]);

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

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

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

figure(2)

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

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

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

figure(3)

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

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

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

figure(4)

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

subplot(4,1,2),stem(n3,angle(x7)),title('x7相角'),axis([0,30,min(angle(x7)),max(angle(x7))]); subplot(4,1,3),stem(n3,imag(x7)),title('x7虚部'),axis([0,30,min(imag(x7)),max(imag(x7))]); subplot(4,1,4),stem(n3,real(x7)),title('x7实部'),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('序列An'),axis([0,0.6,0,1]),xlabel('s');

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

subplot(4,1,3),plot(t,cos(2*pi*Fc_A*t)),title('mt'),axis([0,0.6,-1.2,1.2]),title('载波信号'),xlabel('s'); subplot(4,1,4),plot(t,S_ask),title('mt'),axis([0,0.6,-1.2,1.2]),title('2ASK调制信号'),xlabel('s'); %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('mt'),xlabel('s');

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

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

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

%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('mt'),xlabel('s');

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

%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('X2');

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

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

%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('Hz'),title('X3频谱'),xlabel('频率Hz'),axis([-100,100,1.2*min(y3),1.2*max(y3)]);

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

subplot(3,1,3),plot(fre,y5),xlabel('Hz'),title('X5频谱'),xlabel('频率Hz'),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

//EnablePWMpins;=0;=0;EDIS;;//rallinterrup;//DisableCPUinterrupts;DINT;;//InitializethePIEcontro;//ThedefaultstateisallPI;//ar

// Enable PWM pins

= 0x00FF; // EVA PWM 1-6 pins

= 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;

6 = 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

= 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

= 0x1042;

// Setup T1PWM and T2PWM

// Drive T1/T2 PWM by compare logic

OE = 1;

// Polarity of GP Timer 1 Compare = Active low

.T1PIN = 1;

// Polarity of GP Timer 2 Compare = Active high

.T2PIN = 2;

// Enable compare for PWM1-PWM6

//1 = 0x0C00;

//2 = 0x3C00;

3 = 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

= 0x0666;

= 0x0000; // Disable deadband

= 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

= 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

= 0x1042;

// Setup T3PWM and T4PWM

// Drive T3/T4 PWM by compare logic

OE = 1;

// Polarity of GP Timer 3 Compare = Active low

.T3PIN = 1;

// Polarity of GP Timer 4 Compare = Active high

.T4PIN = 2;

// Enable compare for PWM7-PWM12

4 = 0x0C00;

5 = 0x3C00;

6 = 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

= 0x0666;

= 0x0000; // Disable deadband

= 0xA600;

}

龙 岩 学 院

实 验 报 告

班 级 07电本(1)班 学号 20xx050344 姓 名 杨宝辉 同组人 独立 实验日期 20xx-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的参考电压,要实现内部参考电压仅需要通过外部的简单连线即可。

大学dsp实验心得体会 篇3

基础实验

一、实验目的

二、实验设备

三、实验原理

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

四、实验步骤

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

2. 在CCS环境中打开本实验的工程(Example_),编译并重建 输出文件,然后通过仿真器把执行代码下载到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程序设计。

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