预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验二2ASK调制解调仿真 学院(院、系)专业班通信原理课程 学号姓名实验日期教师评定 一、实验目的1.熟悉2ASK调制解调原理。 2.掌握编写2ASK调制解调程序的要点。 3.掌握使用Matlab调制解调仿真的要点。 二、实验内容 1.根据2ASK调制解调原理,设计源程序代码。 2.通过Matlab软件仿真给定信号的调制波形。 3.对比给定信号的理论调制波形和仿真解制波形。 三、实验原理 1.2ASK 二进制振幅键控(2ASK)信号码元为: S(t)=A(t)cos(w0t+θ)0﹤t≤T 式中w0=2πf0为载波的角频率;A(t)是随基带调制信号变化的时变振幅,即 ╱A当发送“1”时 A(t)= ╲0当发送“0”时 在式中给出的基带信号码元A(t)的波形是矩形脉冲。 产生2ASK的调制方法,主要有两种。第一种方法采用相乘电路如图1,用基带信号A(t)和载波cosw0t相乘就得到已调信号输出。第二种方法是采用开关电路如图2,开关由输入基带信号A(t)控制,用这种方法可以得到同样的输出波形。 相乘法开关法 图1相乘法原理图图2开关法原理图 2ASK信号有两种基本的解调方法:非相干解调(包络检波法)和相干解调(同步检测法),相应的接收系统如图3和图4所示。 图3包络检波法(非相干解调) 图4相干解调原理图 抽样判决器的作用是:信号经过抽样判决器,即可确定接收码元是“1”还是“0”。假设抽样判决门限为b,当信号抽样值大于b时,判为“1”码;信号抽样值小于b时,判为“0”码。当本实验为简化设计电路,在调制的输出端没有加带通滤波器,并且假设信道时理想的,所以在解调部分也没有加带通滤波器。 四、程序设计 1.首先给定一组输入信号序列,如m=[111000101101]。 2.根据2ASK调制原理,需要对输入信号序列中的每个元素进行判断,假设判断元素为“1”,则在一个周期内,2ASK图像中对应一个正弦波,假设判断元素为“0”,则在一个周期内,2ASK图像中对应零输出,假设判断元素非上述两者,则在图中均无图像输出。 3.在Matlab当中进行操作时,首先要画出输入信号序列的图像,然后再画2ASK的图像。在输入信号序列元素进行判断时,先要运用length函数得出序列的长度,然后运用循环语句和判断语句对序列每个元素逐一判断,对应元素画出相应图像。 4.根据2ASK的相干解调法,画出解调信号的波形。 五、设计流程 1.输入信号序列,并通过length函数得到序列长度。 2.通过循环语句,对序列元素进行判断。符合判断条件的,对应2ASK得出输出函数,画出图像。然后返回判断条件,进入下一元素和周期当中,重复上述判断步骤,画出图像。 3.根据相干解调法,经调制信号先过经过带通滤波器,再和余弦信号乘,再经过低通滤波器,最后进行抽样判决,画出解调后的波形,与原始信号波形进行比较。 六、源程序代码 clear; m=[111000101101]; Lm=length(m); F=200; f=800; A=1; Q=f/F; ifQ>=3 M=500; t=(0:M-1)/M/f; carry1=repmat(A*sin(2*pi*f*t),1,Q); Lcarry1=length(carry1); carry2=kron(ones(size(m)),carry1); ask=kron(m,carry1); N=length(ask); tau=(0:N-1)/(M-1)/f; Tmin=min(tau); Tmax=max(tau); T=ones(size(carry1)); dsig=kron(m,T); figure subplot(3,1,1); plot(tau,dsig); title('Êý×ÖÐźÅ') axis([TminTmax-0.21.2]) subplot(3,1,2); plot(tau,carry2); title('ÔØÐͲ¨ÐÎ') axis([TminTmax-1.2*A1.2*A]) subplot(3,1,3); plot(tau,ask); title('¾­¹ý2ASKµ÷ÖÆºóµÄ²¨ÐÎ') gridon axis([TminTmax-1.2*A1.2*A]) sig_mul=ask.*carry2; figure subplot(4,1,1); plot(tau,sig_mul); title('ÐźÅÏà³ËºóµÄ²¨ÐÎ') axis([TminTmax-0.21.2]) [Ord,omega_c]=buttord(4*pi*f*0.6,4*pi*f*0.8,2,30,'s'); [num,den]=butter(Ord,omega_c,'s'); h=tf(num,de