实验  2ASK和2FSK调制解调仿真

一、实验目的

1.熟悉2ASK和2FSK调制解调原理。

2.掌握编写2ASK和2FSK调制解调程序的要点。

3.掌握使用Matlab调制解调仿真的要点。

二、实验内容

1.根据2ASK和2FSK调制解调原理,设计源程序代码。

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”码。当本实验为简化设计电路,在调制的输出端没有加带通滤波器,并且假设信道时理想的,所以在解调部分也没有加带通滤波器。

2. 2FSK调制原理

二进制频移键控(2FSK)信号码元的“1”和“0”分别用两个不同频率的正弦波形来传送,而其振幅和初始相位不变。故其表达式为;

式中,假设码元的初始相位分别为Φ1和Φ0;w1 =2πf1和w0 =2πf0为两个不同频率码元的角频率;A为一常数,表明码元的包络是矩形脉冲。

2FSK信号的调制方法主要有两种。第一种是用二进制基带矩形脉冲信号去调制一个调频器,使其能够输出两个不同频率的码元。第二种方法是用一个受基带脉冲控制的开关电路去选择两个独立频率源的振荡作为输出。

.2FSK解调原理

2FSK信号的解调也分为相关和非相关解调两类。  相关接收根据已调信号由两个载波f1、f2调制而成,则先用两个分别对f1、f2带通的滤波器对已调信号进行滤波,然后再分别将滤波后的信号与相应的载波f1、f2相乘进行相干解调,再分别低通滤波、用抽样信号进行抽样判决器即可。

原理图如下:

图5 二进制移频键控相干解调原理方框图

非相关接收经过调制后的2FSK数字信号通过两个频率不同的带通滤波器f1、f2滤出不需要的信号,然后再将这两种经过滤波的信号分别通过包络检波器检波,最后将两种信号同时输入到抽样判决器同时外加抽样脉冲,最后解调出来的信号就是调制前的输入信号。其原理图如下图所示:

图6 二进制移频键控非相干解调原理方框图

四、程序设计

1. 首先给定一组输入信号序列,如m=[1 1 1 0 0 0 1 0 1 1 0 1]。也可以利用rand随机产生一组元素为10的数字序列。

2. 根据2ASK和2FSK调制原理,需要对输入信号序列中的每个元素进行判断,假设判断元素为“1”,则在一个周期内,2ASK图像中对应一个正弦波,2FSK图像中也对应一个正弦波;假设判断元素为“0”,则在一个周期内,2ASK图像中对应零输出,2FSK图像中对应两个正弦波;假设判断元素非上述两者,则在图中均无图像输出。

3. 在Matlab当中进行操作时,首先要画出输入信号序列的图像,然后再画2ASK和2FSK的图像。在输入信号序列元素进行判断时,先要运用length函数得出序列的长度,然后运用循环语句和判断语句对序列每个元素逐一判断,对应元素画出相应图像。

4. 根据2ASK和2FSK的相干解调法,画出解调信号的波形。

五、设计流程

1. 输入信号序列,并通过length函数得到序列长度。

2. 通过循环语句,对序列元素进行判断。符合判断条件的,对应2ASK和2FSK得出输出函数,画出图像。然后返回判断条件,进入下一元素和周期当中,重复上述判断步骤,画出图像。

3.根据相干解调法,经调制信号先过经过带通滤波器,再和余弦信号乘,再经过低通滤波器,最后进行抽样判决,画出解调后的波形,与原始信号波形进行比较。

六、源程序代码

2ASK代码

%2ASK的调制和调解

m = [ 1 1 1 0 0 0 1 0 1 1 0 1 ];

Lm =length(m);    %数字信号的带宽

F =200;      %正弦载波信号频率

f=800;     %载波幅度

A=1;

Q=f/F;   %频率比,即一个吗元宽度中的正弦周期个数,为适配下面滤波器参数选取,推荐将Q设为

if Q >= 3

M=500;     %一个正弦周期内的采样点数

t=(0:M)/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));    %一个数字信号'1'

dsig = kron(m,T);       %数字信号波形

figure

subplot(3,1,1);   %子图分割

plot(tau,dsig);    %画出数字信号的波形图

title('数字信号');

axis([Tmin Tmax -0.2 1.2])      %设置坐标范围

subplot(3,1,2);             %子图分割

plot (tau,carry2);           %画出载波图形

title('载波波形');

axis([Tmin Tmax -1.2*A 1.2*A])     %设置坐标范围

subplot(3,1,3);           %子图分割

plot (tau,ask);           %画出调制后的波形

title('经过2ASK调制后的波形');

grid on

axis([Tmin Tmax -1.2*A 1.2*A])     %设置坐标范围

sig_mul = ask.*carry2;          %已调制信号与载波信号相乘

figure

subplot(4,1,1);         %子图分割

plot(tau,sig_mul);       %画出信号相乘后的波形

title('信号相乘后的波形')

axis([Tmin Tmax -0.2 1.2])

[Ord,omega_c]=buttord(4*pi*f*0.6,4*pi*f*0.8,2,30,'s');%胡德 Butterworth 模拟低通原型滤波器的阶数及3dB截止频率

[num,den] = butter(Ord,omega_c,'s');%由原型滤波器向实际滤波器转换,获得滤波器分子,分母系数

h=tf(num,den);

x=lsim(h,sig_mul,tau);      %获得滤波器传递函数 % 滤波

subplot(4,1,2);        %子图分割

plot(tau,x);           %画出滤波后的滤形

title('滤波后的波形')

axis([Tmin Tmax -0.3 0.8]);     %设置坐标范围

th=0.25;     %抽样判决的阈值设置

t_judge=(0:Lm-1)*Lcarry1+Lcarry1/2;       %抽样判决点的选取

y=(x(t_judge))';       %抽样判决时刻的信号值

y_judge=1*(y>=th)+0*(y<=th);     %抽样判决信号值的 0 阶保持

y_value=kron(y_judge,ones(size(carry1)));    %抽样判决后的数字信号波形

n_tau=tau+0.5/F;     %抽样判决后的信号对应的时间

subplot(4,1,3);     %子图分割

plot(n_tau,y_value);    %画出抽样判决后的数字信号波形

title('抽样判决后的数字信号波形')

axis([min(n_tau) max(n_tau) -0.2 1.2])      %设置坐标范围

subplot(4,1,4);     %子图分割

plot(tau,dsig);        %画出原始信号波形与解调后的信号做对比

title('原始信号波形与2ASK解调后的信号作对比')

axis([Tmin Tmax -0.2 1.2])     %设置坐标范围

end

2FSK代码

fs = 2000;          %采样频率

dt = 1/fs; f1 = 5; f2=150;    %两个信号的频率

a = round(rand(1,10));        %产生原始数字随机信号

g1 = a ; g2 = ~a;

g11 = (ones(1,2000))' * g1;   %将原始数字信号反转与g1反向

g1a = g11(:)';                %进行抽样

g21 = (ones(1,2000))' * g2;   %将数字序列变成列向量

g2a = g21(:)';

t = 0:dt: 10-dt;

t1 = length(t);

fsk1=g1a.*cos(2 * pi * f1.*t);     %得到频率f1的fsk1已调信号

fsk2=g2a.*cos(2 * pi * f2.*t);     %得到频率f2的fsk2已调信号

fsk = fsk1 + fsk2 ;                %已产生2FSK信号

figure(1)

no = 0.01 * randn(1,t1);          %产生的随机噪声

sn = fsk + no;

subplot(3,1,1);

plot(t,no)                          %产生的随机波形

title('噪声变形')

ylabel('幅度');subplot(3,1,2)

plot(t,fsk)                         %2FSK信号的波形

title('2fsk信号波形')

ylabel('幅度');subplot(3,1,3)

plot(t,sn)

title('经过信道后的2fsk 波形')

ylabel('幅度的大小');xlabel('t');

figure(2)    % fsk的解调

b1 = fir1(101, [3/ 1000 8/ 1000]);  %设置带通滤波器的参数

b2 = fir1(101, [145/ 1000 155/ 1000]) ;

H1 =filter(b1, 1,sn);       %经过带通滤波器后的信号

H2 = filter(b2, 1, sn);

subplot(2, 1, 1); plot(t, H1)    %经过带通滤波器1的波形

title('经过带通滤波器f1后的波形');

ylabel('幅度');

subplot(2, 1, 2)                %经过带通滤波器2的波形

plot(t, H2)

title('经过带通滤波器2后的波形')

ylabel('幅度');xlabel('t');

sw1 = H1.* H1;  %经过相乘器1的信号

sw2 = H2.* H2;  %经过相乘器2的信号

figure(3)

subplot(2,1,1)

plot(t,sw1)

title('经过相乘器hl后的波形')

ylabel('幅度');

subplot(2,1,2)

plot(t,sw2)

title('经过相乘器h2后的波形')

ylabel('幅度');

xlabel('t');

bn =fir1(101,[1/ 1000 8/ 1000]);    %设置低通滤波器的参数

figure(4)

st1 =filter(bn,1,sw1);

st2 = filter( bn,1,sw2);

subplot(2,1,1)

plot(t,st1)                            %经过低通滤波器1的波形

title('经过低通滤波器sw1后的波形')

ylabel('幅度');

subplot(2,1,2)

plot(t,st2)                            %经过低通滤波器2的波形

title('经过低通滤波器sw2后的波形')

ylabel('幅度')

st=zeros(1,length(t));

for i =1: length(t)

if(st1(i) >=st2(i))

st(i) =1;

else

st(i) =0;

end

end

figure(5)

subplot(2,1, 1);

plot(t, st);                      %经过抽样判决器后解调出的波形

title('经过抽样判决器后解调出的波形')

ylabel('幅度');

subplot(2, 1, 2);

plot(t,g1a);                        %原始的数字序列波形

title('原始数字序列的波形')

ylabel('幅度');

xlabel('t');

 七、MATLAB绘制波形

      2ASK图形

2FSK图形

  八、实验总结和心得

通过本次实验掌握了Matlab的基本功能和使用方法,对数字基带传输系统有了一定的了解,加深了对2ASK和2FSK的调制原理和解调原理的认识。理解了如何通过使用Matlab仿真,对各个调制和解调电路中各元件的特性有了全面的理解,在使用代码实现的过程了,遇到了很多困难,但是经过老师所给的源码进行调试,最终得出了实验结果,这个过程是很宝贵的,不仅学到了新的知识,还收获了很多解决问题的方法。加强了自己的动手能力,提高了自己的解决问题的能力。

2ASK和2FSK调制解调仿真相关推荐

  1. 【通信原理】实验五 基于Matlab的2ASK和2FSK调制解调

    目录 一.实验目的 二.实验器材 三.实验原理 1.二进制振幅键控(2ASK) 2.二进制频移键控(2FSK) 四.示例演示 1.2ASK的模拟调制程序如下: 2.2ASK的开关键控法,调制程序如下: ...

  2. matlab 2ask,(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实验报告)

    <(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实验报告)>由会员分享,可在线阅读,更多相关<(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实 ...

  3. matlab解调2fsk,2FSK调制解调系统的MATLAB实现

    第 34 卷 第 2 期 玉林师范学院学报(自然科学) Vol.34 No.2 2013 年 JOURNAL OF YULIN NORMAL UNIVERSITY (Natural Science) ...

  4. 2FSK调制解调实验

    一,2FSK原理 频移键控是利用载波的频率变化来传递数字信息.数字频率调制是数据通信中使用较 早的一种通信方式,由于这种调制解调方式容易实现,抗噪声和抗衰减性能较强,因此在 中低速数字通信系统中得到了 ...

  5. 基于锁相环的调制解调仿真实现

    基于锁相环的调制解调仿真实现 论文+代码+实验结果下载地址:下载地址 摘要 随着现代集成电路技术的发展,锁相环已经成为集成电路设计中非常重要的一个部分,所以对锁相环的研究具有积极的现实意义.锁相环电路 ...

  6. MATLAB BPSK通信系统调制解调仿真原理及代码(二)

    此仿真是瑞丽衰落信道与高斯信道的仿真对比,高斯信道的原理及仿真代码前文已有讲述. 高斯信道下的原理及代码请见 MATLAB BPSK通信系统调制解调仿真原理及代码(一)_惜洛-Jankin的博客-CS ...

  7. 16QAM调制解调仿真(matlab,详细介绍仿真方案的设计、结果及结论、完整代码及注释)

    16QAM调制解调仿真目录 一.仿真要求 二.仿真方案详细设计 三.仿真结果及结论 四.仿真代码 一.仿真要求 1.用基带等效的方式仿真16-QAM在AWGN信道下的误码率和误比特率性能,并与理论值相 ...

  8. matlab实现ofdm调制解调,基于MATLAB的OFDM调制解调仿真

    基于MATLAB的OFDM调制解调仿真 题目:基于 MATLAB的 OFDM调制解调仿真2009年 6 月 13 日目 录摘要 .IIAbstract IV第 1章 正交频分复用的来源 - 1 -1. ...

  9. 2ASK和2FSK相干解调误码率仿真matlab

    本文结构 2ASK误码率仿真 2FSK误码率仿真 2ASK误码率仿真 2ASK相干解调法: 图片来源:郭心悦 发送端发送信号经过信道:经过信道后的波形通过带通滤波器,带通滤波器会有输出波形y(t)y( ...

最新文章

  1. python高级数据结构_Python高级数据结构(二)
  2. 因子分析数据_Excel数据分析案例:用Excel做因子分析
  3. 六种方法实现CSS三栏布局
  4. CentOS 安装MySQL rpm方式安装
  5. try-with-resources引起的Socket关闭,产生java.net.SocketException: Socket is closed?
  6. 云+X案例展 | 传播类:南方报业数据中台建设,助力“智媒”飞跃发展
  7. brew安装指定版本mysql,Mac 系统为 Valet 开发环境安装指定版本 MySQL
  8. android 字体颜色选择,Android中颜色选择器和改变字体颜色的实例教程
  9. 某程序员10个月时间做了30个私活单子,纯收入40万?
  10. Mysql改写子查询SQL优化案例
  11. 创建MOSS网站下的新闻
  12. 别以透明的名义降低人工智能的能力
  13. 成功解决 MDK5中No ST-LINK detected的问题
  14. 网络爬虫技术是什么,网络爬虫的基本工作流程是什么?
  15. 背单词App开发日记0
  16. 解决Mybatis报错并分析原因:Invalid bound statement (not found): com.xxx.mapper.xxx
  17. 玩客云刷入armbian系统总结
  18. 不同长度的字符串/中文串相似度对比算法
  19. 小米5(mi5)开启-全面屏手势-详细步骤
  20. Python - 经典程序示例

热门文章

  1. html实现手风琴轮播图,jQuery手风琴轮播图
  2. vs 2022 下载了.net7.0预览版 还是提示当前.net sdk不支持将.net7.0设置为目标
  3. 关于微信公众号回复消息乱码的问题
  4. 「镁客早报」特斯拉标准版Model3正式上市,售价3.5万美元;百度被爆搜索小学和幼儿园会导向色情网站...
  5. fighter(1.0)
  6. 一:以理论结合实践方式梳理前端 CSS 3 ———真正了解样式表
  7. python爬虫库是什么意思_Python爬虫基础-两个实用库
  8. Electron-Vue + Element-UI 制作图片压缩工具实战
  9. Microsoft .NET Framework 3.5 sp1离线安装(DotNetFX35)
  10. IDEA 2020报“java:程序包XXXX不存在”或“java:找不到符号”,在idea中使用Tomcat部署项目报找不到包,Maven compile能过,idea build失败问题