通信原理实验报告2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信原理
实验报告
课程名称:通信原理
实验三:二进制数字信号调制仿真实验实验四:模拟信号数字传输仿真实验姓名:
学号:
班级:
2012年12 月
实验三二进制数字信号调制仿真实验
一、实验目的
1.加深对数字调制的原理与实现方法;
2.掌握OOK、2FSK、2PSK功率谱密度函数的求法;
3.掌握OOK、2FSK、2PSK功率谱密度函数的特点及其比较;
4.进一步掌握MATLAB中M文件的调试、子函数的定义和调用方法。
二、实验内容
1. 复习二进制数字信号幅度调制的原理
2. 编写MATLAB程序实现OOK调制;
3. 编写MATLAB程序实现2FSK调制;
4. 编写MATLAB程序实现2PSK调制;
5. 编写MATLAB程序实现数字调制信号功率谱函数的求解。
三、实验原理
在数字通信系统中,需要将输入的数字序列映射为信号波形在信道中传输,此时信源输出数字序列,经过信号映射后成为适于信道传输的数字调制信号。数字序列中每个数字产生的时间间隔称为码元间隔,单位时间内产生的符号数称为符号速率,它反映了数字符号产生的快慢程度。由于数字符号是按码元间隔不断产生的,经过将数字符号一一映射为响应的信号波形后,就形成了数字调制信号。根据映射后信号的频谱特性,可以分为基带信号和频带信号。
通常基带信号指信号的频谱为低通型,而频带信号的频谱为带通型。
调制信号为二进制数字基带信号时,对应的调制称为二进制调制。在二进制数字调制中,载波的幅度、频率和相位只有两种变化状态。相应的调制方式有二进制振幅键控(OOK/2ASK)、二进制频移键控(2FSK)和二进制相移键控(2PSK)。
下面分别介绍以上三种调制方法的原理,及其MATLAB实现:
本实验研究的基带信号是二进制数字信号,所以应该首先设计MATLAB程序生成二进制数字序列。根据实验一的实践和第一部分的介绍,可以很容易的得到二进制数字序列生成的MATLAB程序。
假定要设计程序产生一组长度为500的二进制单极性不归零信号,以之作为后续调制的信源,并求出它的功率谱密度,以方便后面对已调信号频域特性和基带信号频域特性的比较。整个过程可用如下程序段实现:
%定义相关参数
clear all;
close all;
A=1
fc=2; %2Hz;
N_sample=8;
N=500; %码元数
Ts=1; %1 Baud/s
dt=Ts/fc/N_sample; %波形采样间隔
t=0:dt:N*Ts-dt;
Lt=length(t);
%产生二进制信源 d=sign(randn(1,N));
%dd=sigexpand((d+1)/2,fc*N_sample); N1=length((d+1)/2);
dd=zeros(fc*N_sample,N1); dd(1,:)=(d+1)/2;
dd=reshape(dd,1,fc*N_sample*N1); gt=ones(1,fc*N_sample);%NRZ 波形 figure(1)
subplot(221);%输入NRZ 信号波形(单极性) d_NRZ=conv(dd,gt);
plot(t,d_NRZ(1:length(t)));
axis([0 10 0 1.2]); ylabel ('输入信号'); subplot(222);%输入NRZ 频谱 dt=t(2)-t(1); T=t(end); df=1/T;
N=length(d_NRZ(1:length(t))); f=-N/2*df:df:N/2*df-df;
d_NRZf=fft(d_NRZ(1:length(t))); d_NRZf=T/N*fftshift(d_NRZf);
plot(f,10*log10(abs(d_NRZf).^2/T));
axis([-2 2 -50 10]);ylabel('输入信号功率谱密度(dB/Hz)');
3.2 OOK 调制
二进制振幅键控(OOK/2ASK)是利用载波的幅度变化来传递数字信息的,而其频率和初始相位保持不变。在2ASK 中,载波的幅度只有两种变化状态,分别对应二进制信息“0”和“1”。2ASK 信号的一般表达式为:
()t t s t e c ωcos )(2ASK =
其中,∑-=n s n nT t g a t s )
()(。
所以,要进行OOK 调制,定义完二进制数字序列和载波参量后,将之相乘即可。 相关的MATLAB 指令如下:
ht=A*cos(2*pi*fc*t); s_2ask=d_NRZ(1:Lt).*ht; subplot(223) plot(t,s_2ask);
axis([0 10 -1.2 1.2]); ylabel('OOK');
要对OOK 调制之前与之后信号的频域特性进行比较,可以通过比较两者的功率谱密度曲线来实现。也就是求出OOK 调制信号s_2ask 的功率谱密度函数,并将之与3.1中求得的基带信号的功率谱密度函数进行比较。
根据《通信原理》的学习,可以知道,求解某信号功率谱密度的过程就是先求出该信号
的傅立叶变换,再求该傅立叶变换的幅值的绝对值的平方的过程。如何求功率谱密度函数在实验二中已经详细介绍过了,本处不再赘述。根据前面的介绍,我们已经知道要求得某信号的傅立叶变换,可以通过调用实验一附录中的T2F 子函数实现,也可以直接编程实现。实验二中使用的都是子函数调用的方式,下面给出直接编程实现傅立叶变换的MATLAB 程序:
dt=t(2)-t(1); T=t(end); df=1/T;
N=length(s_2ask);
f=-N/2*df:df:N/2*df-df; s_2askf=fft(s_2ask);
s_2askf=T/N*fftshift(s_2askf); subplot(224)
plot(f,10*log10(abs(s_2askf).^2/T)); axis([-fc-4 fc+4 -50 10]);
ylabel('OOK 功率谱密度(dB/Hz )');
通过以上程序,我们将基带信号波形及其功率谱密度曲线,OOK 调制信号及其功率谱密度曲线分别画在了同一个图的四个子图中,以方便对调制前后信号的频域特性进行比较。 3.3 2FSK 调制
频移键控是利用载波的频率的变化来传递数字信息的。在2FSK 中,载波的频率随二进制基带信号在f 1和f 2两个频率点间变化。故其表达式为:
⎩⎨
⎧++=”时
发送“”时发送“0),
cos(A 1),
cos(A )(212FSK n n t t t e θωϕω
《通信原理》中已经介绍过,2FSK 信号的调制可通过两个方法实现,一是将2FSK 信号理解为两路不同频率的ASK 信号相加的结果;二是将2FSK 信号表示成如下的形式:
()cos(22())C n S n s t A f t h a g t nT ππ∞
=-∞
=+-∑
第一种方法实现起来相当简单,直接参照3.2中ASK 信号的产生方法,产生两路不同频率的ASK 信号,将之相加即可得到2FSK 信号,这种方法留待同学们课后自己实现。
下面我们介绍用第二种方法产生2FSK 信号的MATLAB 程序设计过程。
首先,为了使2FSK 信号不至覆盖了前面产生的信号,新建一个图,其指令为: figure(2)
然后,在这个图上画2FSK 信号的波形,及其功率谱密度曲线波形。 %2FSK
%s_2fsk=A*cos(2*pi*fc*t+int(2*d_NRZ-1)); sd_2fsk=2*d_NRZ-1;
s_2fsk=A*cos(2*pi*fc*t+2*pi*sd_2fsk(1:length(t)).*t); subplot(223) plot(t,s_2fsk);
axis([0 10 -1.2 1.2 ]); xlabel('t'); ylabel('2FSK') subplot(224)