EDN首页   博客首页

最新日志

发表于:2008-2-17 22:28:31
标签:DSB-AM  

0

DSB-AM的MATLAB仿真

DSB-AM调制

 

一.     原理与分析

 

DSB-AM系统中,已调信号的幅度正比与消息信号。这种调制通过使用乘法器完成,将消息信号吗m(t)与载波Accos(2πfct),如图1所示,表示为:

u(t)=Acm(t)cos(2πfct)                                      1

 

 

1 DSB-AM调制原理结构框图

 

其中

c(t)=Accos(2πfct)                                                     2

 

是载波,而m(t)是消息信号。若以单频正弦信号调制为例,那么典型波形如图3所示。

2 DSB-AM典型信号

 

现取u(t)的傅立叶变换,可以得到DSB-AM信号的频域表示为:

                                      3

 

其中M(f)是m(t)的傅立叶变换。很明显可以看出,这种调制方式将消息信号的频谱进行了搬移,并在幅度上乘以Ac/2,传输带宽Br是消息信号带宽的两倍,也就是说:

Br=2W                                                              4

 

3显示了一个典型的消息信号的频谱及其相对应的DSB-AM已调信号的频谱。

 

3 消息信号与DSB-AM已调信号的频谱

 

已调信号的功率为

                                                          5

 

其中Pm是消息信号的功率。在DSB-AM通信系统中,信噪比SNR等于基带的SNR,也就是:

                                                     6

 

其中PR是接收到的功率(在接收端已调信号的功率),N0是噪声功率谱密度(假定为白噪声),W是信号噪声的带宽。

 

二.     MATLAB示例

 

例子1

    定义一个消息信号m(t)为:

该消息使用DSB-AM方式进行传输,调制载波为c(t)=Accos(2πfct),调制后得到的信号为u(t)假设t0=0.15,fc=250HZ

(1)    m(t),c(t)u(t)信号的时域波形图与频谱图。

(2)    现在调制过程中又噪声加在已调信号上,所得到的SNR20dB,求出噪声信号的时域与频域图和得到的调制信号时域与频域图。

 

解:

本题的MATLAB脚本语言如下:

 

 

%DSB_AM调制

%1求解

clear all;

clc;

echo on

t0 = 0.15;                               %定义信号持续时间

ts = 0.0001;                           %定义仿真时的信号采样率

fc = 250;                                %定义载波信号

snr = 20;                                %定义信噪比,单位dB

fs = 1/ts;                                 %采样频率

df = 0.2;                                 %定义频谱分辩力

t = [0:ts:t0];                             %时间矢量

snr_lin = 10^(snr/10);              %线性的信噪比

%传输的信号

m = [ones(1,ceil(t0/(3*ts))),-2*ones(1,ceil(t0/(3*ts))),zeros(1,ceil(t0/(3*ts)+1))]; 

c = cos(2*pi*fc.*t);                 %载波

u = m.*c;                                %调制

[M,m,df1]=fftseq(m,ts,df);       %传输的信号的频谱

M = M/fs;                               %频谱采样

[U,u,df1]=fftseq(u,ts,df);          %调制信号频谱

U=U/fs;                                   %频谱采样

[C,c,df]=fftseq(c,ts,df);            %载波信号频谱

C = C/fs;                                 %频率采样

%频谱矢量

f = [0:df1:df1*(length(m)-1)]-fs/2;

%信号的功率

signal_power=spower(u(1:length(t)));

%噪声的功率

noise_power=signal_power/snr_lin;

%噪声的标准差

noise_std=sqrt(noise_power);

%产生最后的噪声

n=noise_std*randn(1,length(u));

r=u+n;                                     %将信号加到噪声上

[N,n,df1]=fftseq(n,ts,df);          %对噪声进行fft

N = N/fs;                                 %频率采样

[R,r,df1]=fftseq(r,ts,df);            %对最后的信号进行fft

R = R/fs;                                  %进行采样

 

%显示出没有噪声的情况

figure                                       %显示第一张图片(第一题解)

subplot(3,2,1)                          %消息信号时域显示

plot(t,m(1:length(t)))

title('原始信号')

axis([0 0.15 -3 3])

subplot(3,2,2)                           %消息信号频域显示

plot(f,abs(fftshift(M)))

title('原始信号的频率')

axis([-500 500 0 0.15])

subplot(3,2,3)                           %调制载波时域显示

plot(t,c(1:length(t)))

title('载波信号')

axis([0 0.15 -3 3])

subplot(3,2,4)                           %调制载波频域显示

plot(f,abs(fftshift(C)))

title('载波的频率')

axis([-500 500 0 0.15])

subplot(3,2,5)                           %调制信号时域显示

plot(t,u(1:length(t)))

title('调制信号')

axis([0 0.15 -3 3])

subplot(3,2,6)                           %调制信号频域显示

plot(f,abs(fftshift(U)))

title('调制信号的频率')

axis([-500 500 0 0.15])

 

%噪声分析

figure                                        %显示第二章图片(第二题解)

subplot(2,2,1)                          %噪声时域显示

plot(t,n(1:length(t)))

title('采样的噪声')

axis([0 0.15 -1 1])

subplot(2,2,2)                           %噪声频域显示

plot(f,abs(fftshift(N)))

axis([-500 500 0 0.05])

title('信号频谱')

subplot(2,2,3)                           %加噪调制信号时域显示

plot(t,r(1:length(t)))

title('信号与噪声')

axis([0 0.15 -3 3])

subplot(2,2,4)                           %加噪调制信号频域显示

plot(f,abs(fftshift(R)))

title('信号与噪声')

axis([-500 500 0 0.15])

 

 

    最后得到的MATLAB图显示了题解:

 

4 没有噪声情况下的信号图示(题1解)

 

5 在噪声情况(SNR20)下,信号图示(题2解)

 

 

 

 本文的程序与PDF文档如下rar

系统分类: 通信网络   |    用户分类:    |    来源: 原创

评论(0) | 阅读(641)
发表于:2008-2-13 19:10:58
标签:通信基础理论  

0

压控振荡器的MATLAB仿真

压控振荡器

 

一.原理与分析

    压控振荡器VCOVoltage-Controlled Oscillator)是一种输出信号的频率随着输入信号幅度的变化而发生变化的设备。其的工作原理可以通过式1来描述。

                              1

    其中,u(t)表示输入信号,y(t)表示输出信号。由于输入信号的频率取决与输入信号的电压的变化,因此称为“压控振荡器”。其他影响压控振荡器输出信号的参数还有信号的幅度Ac,振荡频率fc,输入信号灵敏度kc,以及初始相位

 

二.MATLAB仿真

例子

定义一个锯齿波信号,频率是20HZ,幅度范围在0V1V之间。现在用此信号作为压控振荡器的输入控制信号,该压控振荡器的振荡频率fc=20HZ, 输入信号灵敏度,初始相位。使用MATLAB求得输出的压控振荡信号。

 

MATLB脚本语言:

 

 

%MATLAB实现压控振荡器

clear all;

clc;

t0 = 0.15;                          %定义压控信号持续时间

ts = 0.0001;                        %定义信号采样率

fc = 50;                            %定义振荡频率

t = [0:ts:t0];                      %时间矢量

u0 = 20*t(1:length(t)/3);           %定义压控信号(单周期)

u = [u0,u0,u0,0];                   %定义压控信号(3个周期)

Ac = 1;                             %定义振幅

kc = 0.1;                           %定义输入信号灵敏度

fi = 0;                             %定义初始相位

%对压控信号进行积分

u_int(1) = 0;                       %定义压控信号积分初值

for i = 1:length(u)-1               %进行离散积分

        u_int(i+1) = u(i)+u_int(i);

end

%压控振荡信号

y = Ac*cos(2*pi*fc*t+2*pi*kc*u_int+fi);

   

%作图

subplot(2,1,1)                      %显示压控信号

plot(t,u)

axis([0 t0 -1.5 1.5])

title('控制信号')

subplot(2,1,2)                      %显示振荡信号

plot(t,y)

axis([0 t0 -1.5 1.5])

title('压控振荡信号')

 

 MATLAB得到的最后结果:

1 压控振荡器输出

 

 

    上文的PDF文档和MATLAB文件在如下的压缩包中。

rar

系统分类: 通信网络   |    用户分类:    |    来源: 原创

评论(0) | 阅读(470)
发表于:2008-1-13 20:07:58
标签:单片机仿真例子  

1

单片机开发板的实验内容

目前拟定了一些实验,计划至少20个,现在能够明确列出的有10个。所以说这个只是初步的,后面还是要改的。

 

1 闪烁灯实验  2 走马灯实验  3 按键控制LED实验 4 音乐演奏实验(蜂鸣器) 5 定时器实验,输出PWM  6 串并转换实验 7 数码管静态显示实验 8 数码管动态显示实验 9 液晶显示(字符型)10 EEPROM实验

 

说明:

1.闪烁灯实验 —— 使用软件延迟的方式控制LED的闪烁;

2.走马灯实验 —— 软件延迟与移位相结合完成;

3.按键控制LED实验 —— 加入按键控制,完成对IO口的读写,按键按下后LED灯亮,再按下后LED灯灭;

proteus仿真结果: