数据通信原理
MATLAB 仿真实验指导书
福建农林大学金山学院
信息与机电工程系计电教研室 吴浩 270324602@qq.com
2014 年 11 月
数据通信原理 Matlab 仿真实验指导书
目 录
实验 1:MATLAB基础...............................................2
实验 2:MATLAB SIMULINK 的建模仿真 ...............................9
实验 3:单极性码与双极性码眼图仿真 ..............................15
实验 4:2ASK 调制与解调仿真 .....................................18
实验 5:2FSK 调制与解调仿真......................................24
实验 6:2PSK 调制与解调仿真......................................31
实验 7:循环码的差错控制系统仿真 ................................36
综合实验:CDMA 通信系统的 MATLAB 仿真 ...........................42
附录:MATLAB 程序设计 ...........................................54
第 1 页
1.熟悉 MATLAB 开发环境
2.掌握矩阵、变量、表达式的各种基本运算
数据通信原理 Matlab 仿真实验指导书
实验 1:MATLAB 基础
一、实验目的:
3.熟悉和了解 MATLAB 图形绘制程序编辑的基本指令;
4.熟悉掌握利用 MATLAB 图形编辑窗口编辑和修改图形界面,并添加图形的各种标注; 5.掌握 plot、subplot 等指令格式和语法。
二、实验原理:
1.MATLAB基础知识
1.1 MATLAB 程序设计语言简介
MATLAB,Matrix Laboratory 的缩写,是由 MathWorks 公司开发的一套用于科学工程计 算的可视化高性能语言,具有强大的矩阵运算能力。与大家常用的 Fortran 和 C 等高级语言 相比,MATLAB 的语法规则更简单,更贴近人的思维方方式,被称为“草稿纸式的语言”。MATLAB 软件主要由主包、仿真系统(simulink)和工具箱(toolbox)三大部分组成。 1.2 MATLAB 界面及帮助
MATLAB 基本界面如图 1-1 所示,命令窗口包含标题栏、菜单栏、工具栏、命令行区、 状态栏、垂直和水平波动条等区域。
图 1-1 MATLAB 基本界面
第 2 页
数据通信原理 Matlab 仿真实验指导书
(1)菜单栏
在 MATLAB 主窗口的菜单栏,共包含 File、Edit、View、Web、Window 和 Help 6 个菜单项。
File 菜单项:File 菜单项实现有关文件的操作。 Edit 菜单项:Edit 菜单项用于命令窗口的编辑操作。
View 菜单项:View 菜单项用于设置 MATLAB 集成环境的显示方式。 Web 菜单项:Web 菜单项用于设置 MATLAB 的 Web 操作。
Window 菜单项:主窗口菜单栏上的 Window 菜单,只包含一个子菜单 Close all,用于 关闭所有打开的编辑器窗口,包括 M-file、Figure、Model 和 GUI 窗口。
Help 菜单项:Help 菜单项用于提供帮助信息。 (2)工具栏
MATLAB 主窗口的工具栏共提供了 10 个命令按钮。这些命令按钮均有对应的菜单命令,但 比菜单命令使用起来更快捷、方便。 (3)命令行区
MATLAB 按以下顺序对输入命令进行解释:
检查它是否是工作空间中的变量,实则显示变量内容。
检查它是否是嵌入函数,是则运行之。 检查它是否是子函数。 检查它是否是私有函数。
检查它是否是位于 MATLAB 搜索路径范围内的函数文件或脚本文件。 MATLAB 里有以下几种方法可获得帮助:
(1)帮助命令(help)是查询函数相关信息的最直接方式,信息会直接显示在命令窗口中。 键入 help sin,会显示 sin 相关信息。
(2)lookfor 命令可以从键入的关键字列出所有相关的题材,和 help 相比,lookfor 覆盖范 围更广,可查找到某个主题所有词组或短语。
(3)帮助窗口(help window)提供与帮助命令相同的信息,但帮助窗口界面更为方便直接。 (4)帮助桌面( help desk)通过在命令窗口中选择帮助菜单的“help desk”选项或键入 helpdesk 命令即可进入帮助桌面。
(5)在线帮助页是帮助桌面的在线帮助均有相应的 PDF 格式文件。
( 6 ) Mathworks 网 站 , 对 于 连 接 入 Internet 的 用 户 通 过 Mathworks 公 司 的 网 站 www.mathworks.com 询问有关问题。 2.熟悉 MATLAB 环境:
MATLAB 桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器 文件和搜索路径浏览器。
3.掌握 MATLAB 常用命令 clc clear help lookfor who 清除命令窗口中内容 清除工作空间中变量 对所选函数的功能、调用格式及相关函数给出说明 查找具有某种功能的函数但却不知道该函数的准确名称 查询工作空间中的变量信息 4.MATLAB变量与运算符 变量命名规则如下:
(1) 变量名可以由英语字母、数字和下划线组成
第 3 页
数据通信原理 Matlab 仿真实验指导书
(2) 变量名应以英文字母开头 (3) 长度不大于 31 个 (4) 区分大小写
MATLAB中设置了一些特殊的变量与常量,列于下表。
表1 MATLAB的特殊变量与常量
变量名 ANS i或j pi eps realmax 功能说明 默认变量名,以应答 最近一次操作运算结果 虚数单位 圆周率 浮点数的相对误差 最大的正实数 变量名 realmin INF(inf) NAN(nan) nargin nargout 功能说明 最小的正实数 无穷大 不定值(0/0) 函数实际输入 参数个数 函数实际输出 参数个数 MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符
表 2 MATLAB 算术运算符
操作符 + - * .* ^ .^ 功能说明 加 减 矩阵乘 数组乘 矩阵乘方 数组乘方 表 3 MATLAB 关系运算符
操作符 == ~= > < >= <= 表 4 MATLAB 逻辑运算符
逻辑运算符 & | ~ Xor
操作符 \\ .\\ / ./ ' .' 功能说明 矩阵左除 数组左除 矩阵右除 数组右除 矩阵转置 数组转置 功能说明 等于 不等于 大于 小于 大于等于 小于等于
逻辑运算 And Or Not
第 4 页
说明 逻辑与 逻辑或 逻辑非 逻辑异或
数据通信原理 Matlab 仿真实验指导书
表 5 MATLAB 特殊运算
符号 : ; , () [] {} 5.MATLAB的一维、二维数组的寻访
表6 子数组访问与赋值常用的相关指令格式
指令格式 指令功能 构成向量、矩阵 构成单元数组 功能说明示例 1:1:4;1:2:11 分隔行 分隔列 符号 . .. ? % ! = 功能说明 示例 注释 调用操作 系统命令 用于赋值 A(r,c) A(r,:) A(:,c) A(:) A(i) A(r,c)=Sa A(:)=D(:) 数组A中r指定行、c指定列之元素组成的子数组 数组A中r指定行对应的所有列之元素组成的子数组 数组A中c指定列对应的所有行之元素组成的子数组 数组A中各列元素首尾相连组成的“一维长列”子数组 \一维长列\子数组中的第i个元素 数组A中r指定行、c指定列之元素组成的子数组的赋值 数组全元素赋值,保持A的行宽、列长不变,A、D两组元素 总合应相同 6.MATLAB的基本运算
表 7 两种运算指令形式和实质内涵的异同表
数组运算 指令 A.' 含义 非共轭转置 把标量s赋给A的每个元素 标量s分别与B元素之和 标量s分别与B元素之差 标量s分别与A元素之积 标量s分别被B的元素除 A的每个元素自乘n次 对A各元素分别求非整数幂 对应元素相加 对应元素相减
A=s s+B s-B,B-s s.*A s./B,B.\\s A.^n A.^p A+B A-B
矩阵运算 指令 A’ s*A S*inv(B) A^n A^p A+B A-B
第 5 页
含义 共轭转置 标量s分别与A每个元 素之积 B阵的逆乘s A阵为方阵,自乘n次 方阵A的非整数乘方 矩阵相加 矩阵相减
数据通信原理 Matlab 仿真实验指导书
A.*B A./B B.\\A exp(A) log(A) sqrt(A) 对应元素相乘 A的元素别B的对应元素除 与上相同 以自然数e为底,分别以A的元素为 指数,求幂 对A的各元素求对数 对A的各元素求平方根 A*B A/B B\\A expm(A) logm(A) sqrtm(A) 内维相同矩阵相乘 A右除B A左除B A的矩阵指数函数 A的矩阵对数函数 A的矩阵平方根函数 7.MATLAB的常用函数
表8 标准数组生成函数
指令 diag eye magic ones 指令 diag flipud fliplr reshape 含义 产生对角形数组(对高维不适用) 产生单位数组(对高维不适用) 产生魔方数组(对高维不适用) 产生全1数组 指令 rand randn zeros size() 含义 产生均匀分布随机数组 产生正态分布随机数组 产生全0数组 返回指定矩阵的行数和列 数 表9 数组操作函数
含义 提取对角线元素,或生成对角阵 以数组“水平中线”为对称轴,交换上下对称位置上的 数组元素 以数组“垂直中线”为对称轴,交换左右对称位置上的 数组元素 在总元素数不变的前提下,改变数组的“行数、列数” 矩阵逆时针旋转90度 方阵的行列式值 矩阵的秩 rot90 det rank 三、实验内容:
1.学习使用help命令:
例如在命令窗口输入help eye,然后根据帮助说明,学习使用指令eye(其它不会用的指令, 依照此方法类推) 2.学习使用clc、clear:
观察command window、command history和workspace等窗口的变化结果。 3.初步程序的编写练习:
新建M-file,保存(自己设定文件名,例如exerc1、exerc2、 exerc3??),学习使用MATLAB 的基本运算符、数组寻访指令、标准数组生成函数和数组操作函数。 注意:每一次M-file的修改后,都要存盘。 4.二维曲线绘图基本指令演示。
本例运作后,再试验plot(t), plot(Y), plot(Y,t) ,以观察产生图形的不同。 t=(0:pi/50:2*pi)';
第 6 页
数据通信原理 Matlab 仿真实验指导书
k=0.4:0.1:1; Y=cos(t)*k; plot(t,Y)
plot指令基本操作演示
5.用图形表示连续调制波形Y=sin(t)sin(9t) 及其包络线。 t=(0:pi/100:pi)'; y1=sin(t)*[1,-1]; y2=sin(t).*sin(9*t); t3=pi*(0:9)/9;
y3=sin(t3).*sin(9*t3);plot(t,y1,'r:',t,y2,'b',t3,y3,'bo') axis([0,pi,-1,1])
6. 绘制标准三维曲面。
sphere 函数的调用格式为:
cylinder 函数的调用格式为: clear all; t=0:pi/20:2*pi; [x,y,z]= cylinder(2+sin(t),30); [x,y,z]=sphere(n) [x,y,z]= cylinder(R,n)
MATLAB 还有一个 peaks 函数,称为多峰函数,常用于三维曲面的演示。
subplot(2,2,1); surf(x,y,z);
title('[x,y,z]= cylinder(2+sin(t),30)') subplot(2,2,2); [x,y,z]=sphere; X20 surf(x,y,z); title('[x,y,z]=sphere') subplot(2,1,2);
[x,y,z]=peaks(30); 0X30 surf(x,y,z);
title('[x,y,z]=peaks(30)')
第7页
1 0.5 0 5 图像如下:
数据通信原理 Matlab 仿真实验指导书
[x,y,z]= cylinder(2+sin(t),30)
1
0 -5 -5 0
10 0 -10 4 0 [x,y,z]=peaks(30)
2
0
四、实验报告要求:
1.本次实验遇到了哪些问题?你是怎么解决的? 如何避免下次实验再遇到同样的问题? 2.如何在帮助窗口,帮助命令,帮助演示中查找plot的相关命令和演示程序? 3.MATLAB软件由几部分组成?各有什么作用?
第 8 页
数据通信原理 Matlab 仿真实验指导书
实验 2:MATLAB SIMULINK 的建模仿真
1.熟悉SIMULINK 工作环境及特点
2.掌握线性系统仿真常用基本模块的用法 3.掌握SIMULINK 的建模与仿真方法
一、实验目的:
二、实验原理:
1.SIMULINK 简介
Simulink 是 Matlab 提供的用于对动态系统进行建模、仿真和分析的工具包。Simulink 提供了专门用于显示输出信号的模块,可以在仿真过程中随时观察仿真结果。同时,通过 Simulink 的存储模块,仿真数据可以方便地以各种形式保存到工作区或文件中,供用户在 仿真结束之后对数据进行分析和处理。另外,sl Simulink 把具有特定功能的代码组织成模 块的方式,并且这些模块可以组织成具有等级结构的子系统,因此具有内在的模块化设计要 求。基于上述优点,Simulink 成为一种通用的仿真建模工具,广泛应用于通信仿真、数字 信号处理、模糊逻辑、神经网络.机械控制和虚拟现实等领域。 Simulink 它使用户把精力从编程转向模型的构造。随着实验的不断深入,你们会发现 它为用户省去了许多重复的代码编写工作,用户就不必一步一步地从最底层开始编写。
如果把动态系统建模仿真过程比作建造房子,那么用高级语言或 Matlab 语言编写的仿 真程序的方式就如同是从一堆沙子开始造房子。这不但麻烦,而且有许多重复操作,建造者 的精力会大量地浪费在一些相同地例如把沙子变成成砖块酌事情上,以及如何把它们组在一 起变成房子这些技术性的事情.而不能把更多的精力集力用到房子的设计上,这在计算机仿 真里,就等于是把精力厦多地投入到某一个具体的算法的设计上,而不是用到模型的设计构 造本身,Simulink 的目的就是让用户能化更多的精力投入到模型型设计不身。它首先提供 了一些基本模块,这些模块就放在上面的库浏览器里.用户可以调用这些模块,而不必再从 最基本的做起。Simulink 的每个模块对用户而言都是透明的,用户只需知道模块的输入输 出以及模块的功能,而不必管模块内部是怎么实现。于是,留给用户的事情就是如何连接这 些模块来完成自己的仿真任务。连接的方式在 Simulink 里是很简单的,例如要连接两个摸 块,只需要将一个模块的输入和另一个模块的输出用一根直线连起来就行了。模型构造好之 后,用户可以进行仿真、等待结果、或者改变参数,再运行。至于像各个模块在运行时如何
执行,时间是如何采样(离散系统),事件足如何驱动等等细节性问题,用户可以根本不用去 关心,Simulink 都替你做好了。总之,Simulink 把那些最没有意思、最烦人的细节都屏蔽 掉了,而留绐用户的是一个友好的环境,让用户以最轻松、最有效的万式完成他们感兴趣的 东西。
启动 Simulink 的方法有很多种,按照 Matlab 的传统方式,只要在 Matlab 的命令窗口 中键入:
>>Simulink
一个称为 Simulink Library Browser 的窗口就会弹出,如下图所示:
第 9 页
数据通信原理 Matlab 仿真实验指导书
Simulink Browser 窗口左边子窗口下的各个模块库是按照应用进行分类的。在通信仿 真用应用到的模块,除了 Simulink 基本模块库之外,还包括 Communication Blockset、DSP Blockset 等。
在 Simulink Browser 界面下,选择“File”菜单下的“New”中的“Model”选项,弹 出如图所示的模型窗口,用户就可以 Simulink Browser 中选择不同的模块来建立自己的模 型。
在建立完自己的模型后,保存模型,开始仿真。Simulink 的仿真主要就是针对浏览器窗 口和模型窗口进行操作的。
2.了解SIMULINK模块库中各子模块基本功能
第 10 页
数据通信原理 Matlab 仿真实验指导书
第 11 页
数据通信原理 Matlab 仿真实验指导书
3. SIMULINK 的建模与仿真方法
(1)建立数学模型:根据通信系统的基本原理,将整个系统简化到源系统,确定总的系统 功能,并将各部分功能模块化,找出各部分之间的关系,画出系统流程框图模型。
(2)仿真系统:根据建立的模型,从simulink 通信模型库的各个子库中,将所需要的单元 功能模块拷贝到Untitled 窗口,按系统流程框图模型连接,组建要仿真的通信系统模型。 (3)设置、调整参数:参数设置包括运行系统参数设置(如系统运行时间、采样速率等) 和功能模块运行参数设置(正弦信号的频率、幅度、初相;低通滤波器的截至频率、通带增 益、阻带衰减等)。
(4)分析仿真数据和波形:在系统模型的关键点处设置观测输出模块,用于观测仿真系统 的运行情况,以便及时调整参数,分析结果。
三、实验内容:
1.用信号发生器产生1MHz,幅度为15mV 的正弦波和方波信号,并通过示波器观察波形。 注意设置仿真参数和示波器的扫描参数和幅度显示参数。使得示波器能够显示10 个正 弦波周期。如图:
第 12 页
数据通信原理 Matlab 仿真实验指导书
2.SIMULINK 仿真实际应用.
建立一个很小的系统,用示波器观察正弦信号的平方的波形,如图所示系统中所需的模 块:正弦波模块,示波器模块。正弦波仿真电路和参数如下:
第 13 页
数据通信原理 Matlab 仿真实验指导书
系统内的示波器显示的波形如图:
图 单正弦波与平方波的对比
结论:两正弦波相乘之后的周期是原周期的 1/2,频度是原频度的 2 倍。
四、实验报告要求:
1.本次实验遇到了哪些问题?你是怎么解决的? 如何避免下次实验再遇到同样的问题? 2.怎么利用Matlab Simulink建模仿真?有几个步骤?
3.请用MatlabSimulink仿真两路正弦波信号相加后的结果,用示波器观察叠加后信号的周期
和频率有何变化?
第 14 页
实验 3:单极性码与双极性码眼图仿真
一、实验目的:
1.掌握单极性码眼图原理和 Matlab Simulink 仿真方法 2.掌握双极性码眼图原理和 Matlab Simulink 仿真方法
二、实验原理:
1.单极性码与双极性码眼图原理详细见教材介绍
三、实验内容:
1. 单极性码眼图 %yantu 单极性码 close all clear all Ts=1; eyenum=10; codenum=2000; tsample=4; dt=0.2;
t=-eyenum/2:dt:eyenum/2; %ht=1/Ts*sinc(t/Ts);
%定义基带传输脉冲为升余弦alpha=0.4
alpha=input('输入滚降系数alpha=(缺省为1)'); if isempty(alpha) alpha=1; end
pp=cos(alpha*pi*t/Ts);
pp1=1./(1-4*t.*t*alpha*alpha/Ts/Ts); ht=1/Ts*sinc(t/Ts).*pp.*pp1;
%ht=1/Ts*sinc(t/Ts)+1/Ts*sinc((t-Ts)/Ts); %产生+1、0的数字信号
%code=(sign(randn(1,codenum))+1)/2+0.1*randn(1,codenum); code=sign(randn(1,codenum))+0.05*randn(1,codenum); %画眼图 figure(1) hold on
第15页
xlabel('Ts'); ylabel('rt');
title('升余弦成形眼图'); grid
for n=1:codenum/eyenum
ss=zeros(1,length(ht)+Ts/dt); for m=1:eyenum
tmp=code((n-1)*eyenum+m)*ht;
tmp1=ss((m*Ts/dt+1):length(ss))+tmp; ss =[ss(1:(m*Ts/dt)) tmp1 zeros(1,Ts/dt)]; end drawnow
kk=1:length(ss);
plot(kk*dt-dt,ss);hold on clear ss;
axis([5 15 -3 3]); %pause end
2. 双极性NRZ眼图 【主程序】
%示意双极性NRZ基带信号经过带宽受限信号造成的码间干扰影响及其眼图 clear all; close all; N =1000;
N_sample=8; %每码元抽样点数 Ts=1;
第16页
dt = Ts/N_sample;
t=0:dt:(N*N_sample-1)*dt;
gt = ones(1,N_sample); %数字基带波形 d = sign(randn(1,N)); %输入数字序列 a = sigexpand(d,N_sample); st = conv(a,gt); %数字基带信号 ht1 = 5*sinc(5*(t-5)/Ts); rt1 = conv(st,ht1); ht2 = sinc((t-5)/Ts); rt2 = conv(st,ht2);
eyediagram(rt1+j*rt2,40,5); %调用Matlab画眼图的函数,行40点,表示5只眼 function [out]=sigexpand(d,M)
%将输入的序列扩展成间隔为M-1个0的序列 N = length(d); out = zeros(M,N); out(1,:) = d;
out = reshape(out,1,M*N);
四、实验报告要求:
1.本次实验遇到了哪些问题?你是怎么解决的? 如何避免下次实验再遇到同样的问题?
2.什么是眼图?眼图有何作用?观察仿真结果得到的眼图,标出最佳抽样时刻,判决门限电平和噪声容 限。
第17页
实验 4:2ASK 调制与解调仿真
一、实验目的:
1.掌握 2ASK 的调制原理和 Matlab Simulink 仿真方法 2.掌握 2ASK 的解调原理和 Matlab Simulink 仿真方法
二、实验原理:
1.2ASK调制和解调原理详细见教材
三、实验内容:
1.2ASK 的调制仿真
1) 建立 Matlab Simulink 模型方框图
2ASK 信号调制的模型方框图由 DSP 模块中的 sinwave 信号源、方波信号源、相乘器等模块组成, Simulink 模型图如下所示:
图 1 2ASK 信号调制的模型方框图
其中正玄信是载波信号,方波代表 S(t)序列的信号塬,正玄信号和方波相乘后就得到键控 2ASK 信号。
第18页
2) 参数设置
建立好模型之后就要设置系统参数,以达到系统的最佳仿真。从正玄信号源开始依次的仿真参数设置如 下:
正玄信号参数设置
图 2
第19页
其中 sin 函数是幅度为 2 频率为 1Hz 采样周期为 0.002 的双精度 DSP 信号。
图 3 方波信号源的参数设置
方波信号是基于采样的,其幅度设置为 2,周期为 3,占 1 比为 2/3。
系统仿真及各点波形图:经过上面参数的设置后,就可以进行系统的仿真下面是示波器显示的各点的波 形图:
图 4 各点的时间波形图
由上图可以看出信息源和载波信号相乘之后就产生了受幅度控制的 2ASK 信号。
第20页
2. 2ASK 解调仿真
2ASK 的解调分为相干解调和非相干解调法,下面采用相干解调法对 2ASK 信号进行解调 (1) 建立 simulink 模型方框图
相干解调也叫同步解调,就是用已调信号恢复出载波——既同步载波。再用载波和已调信号相乘,经过 低通滤波器和抽样判决器恢复出 S(t)信号,simulink 模型图如下:
图 5 2ASK 相干解调的 simulink 模型方框图
(2) 参数设置
建立好模型之后,开始设置各点的参数,由于低通滤波器是滤去高频的载波,才能恢复出原始信号, 所以为了使已调信号的频谱有明显的搬移,就要使载波和信息源的频率有明显的差别,所以载波的频率 设置为 100Hz.为了更好的恢复出信源信号,所以在此直接使用原载波信号作为同步载波信号。
下面是低通滤波器的参数设置:
图 6
第21页
(3) 系统仿真及各点时间波形图
图 7
由上图可以看出由于载波频率的提高使的示波器在波形显示上出现了一定的困难,不过要想显示调制部 分的理想波形只要调整示波器的显示范围即可。
第22页
(4)误码率分析
由于在解调过程中没有信道和噪声,所以误码率相对较小,一般是由于码间串扰或是参数设置的问题, 由图 5 可以看出此系统的误码率为 0.3636。
四、实验报告要求:
1.本次实验遇到了哪些问题?你是怎么解决的? 如何避免下次实验再遇到同样的问题?
2.观察2ASK调制仿真,对比调制前后信号的幅度、相位和频率发生了哪些变化?什么叫数字调制? 3.观察2ASK解调仿真,对比解调前后信号的幅度、相位和频率发生了哪些变化?什么叫数字解调? 4.请尝试用Matlab语言来设计2ASK的调制仿真和解调仿真的程序,并把仿真结果保存下来。(选做题)
第23页
实验 5:2FSK 调制与解调仿真
一、实验目的:
1.掌握 2FSK 的调制原理和 Matlab Simulink 仿真方法 2.掌握 2FSK 的解调原理和 Matlab Simulink 仿真方法
二、实验原理:
1.2FSK调制和解调原理详细见教材
三、实验内容:
1.2FSK 调制仿真
2FSK 信号是由频率分别为 f1 和 f2 的两个载波对信号源进行频率上的控制而形成的,其中 f1 和 f2 是两 个频率有明显差别的且都远大于信号源频率的载波信号,2FSK 信号产生的 simulink 仿真模型图如下所 示:
图 1 2FSK 信号的 simulink 模型方框图
第24页
其中 sin wave 和 sin wave1 是两个频率分别为 f1 和 f2 的载波,Pulse Generator 模块是信号源,NOT 实现方波的反相,最后经过相乘器和相加器生成 2FSK 信号,各参数设置如下: 载波 f1 的参数设置:
图 2
其中幅度为 2,f1=1Hz,采样时间为 0.002s 在此选择载波为单精度信号 f2 的参数设置:
第25页
图 3 载波 sin wave1 的参数设置
载波是幅度为 2,f2=2,采样时间.为 0.002 的单精度信号。
本来信号源 s(t)序列是用随机的 0 1 信号产生,在此为了方便仿真就选择了基于采样的 Pulse Generator 信号模块其参数设置如下:
第26页
图 4 Pulse Generator 信号模块参数设置
其中方波是幅度为 1,周期为 3,占 1 比为 1/3 的基于采样的信号。 经过以上参数的设置后就可以进行系统的仿真,其各点的时间波形如下:
图 5 2FSK 信号调制各点的时间波形
第27页
由上图可以看出经过 f1 和 f2 两个载波的调制,2FSK 信号有明显的频率上的差别。 2.2FSK 解调仿真 解调方框图如下所示:
图 6
其中 From File 是一个封装模块,就是 2FSK 信号的调制模块,两个带通滤波器分别将 2FSK 信号上下分 频 f1 和 f2 ,后面就和 2ASK 信号的解调过程相同,各参数设置如下:
图 7 2FSK 信号 f1 带通滤波器参数设置
第28页
经过系统仿真后的各点时间波形如下:
图 8 2FSK 信号 f2 带通滤波器参数设置
第29页
图 9
2FSK 信号解调各点时间波形
经过系统的仿真可以观察出系统的误码率为 0.7273,如下图所示:
图 10 2FSK 相干解调误码率
四、实验报告要求:
1.本次实验遇到了哪些问题?你是怎么解决的? 如何避免下次实验再遇到同样的问题? 2.观察2FSK调制仿真,对比调制前后信号的幅度、相位和频率发生了哪些变化? 3.观察2FSK解调仿真,对比解调前后信号的幅度、相位和频率发生了哪些变化?
4.请尝试用Matlab语言来设计2FSK的调制仿真和解调仿真的程序,并把仿真结果保存下来。(选做题)
第30页
实验 6:2PSK 调制与解调仿真
一、实验目的:
1.掌握 2PSK 的调制原理和 Matlab Simulink 仿真方法 2.掌握 2PSK 的解调原理和 Matlab Simulink 仿真方法
二、实验原理:
1.2PSK调制和解调原理详细见教材
三、实验内容:
1.2PSK 调制仿真
在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控 (2PSK)信号. 在此用已调信号载波的 0°和 180°分别表示二进制数字基带信号的 1 和 0.用两个反相 的载波信号进行调制,其方框图如下:
图 1 2PSK 信号调制的 simulink 的模型图
其中 Sin wave 和 Sin wave1 是反相的载波,正玄脉冲作为信号源,各个参数设置如下:
第31页
图 2 Sin wave 信号参数设置
图 3 Sin wave1 信号的参数设置
由上面两个图可以看出两个载波是幅度为 3 频率为 4Hz 采样时间为 0.002s 的反相信号。
第32页
图 4 脉冲信号的参数设置 脉冲信号是幅度为 2 周期为 1 占空比为 50%的基于时间的信号。
图 5
第33页
2. 2PSK 解调仿真
(1)建立 simulink 模型方框图如下:
图 6 2PSK 解调框图
(2)各点的时间波形如下所示:
图 7 2PSK 解调各点的时间波形
第34页
(3)结果分析
由 6 图可以看出其误码率为 0.6667,由于没有噪声的影响所以误码率一般在 0.5,由于系统的 不 准确 性和码间影响所以误码率稍微偏大。
四、实验报告要求:
1.本次实验遇到了哪些问题?你是怎么解决的? 如何避免下次实验再遇到同样的问题? 2.观察2PSK调制仿真,对比调制前后信号的幅度、相位和频率发生了哪些变化? 3.观察2PSK解调仿真,对比解调前后信号的幅度、相位和频率发生了哪些变化?
4.请尝试用Matlab语言来设计2PSK的调制仿真和解调仿真的程序,并把仿真结果保存下来。(选做题) 5.请尝试用Matlab语言来设计比较2ASK,2PSK和2FSK抗噪声性能的程序,并把仿真结果保存下来。(选做 题)
第35页
实验 7:循环码的差错控制系统仿真
一、实验目的:
1.掌握差错控制系统的基本原理;
2.掌握循环码的编码解码原理和 Matlab Simulink 仿真方法
二、实验原理:
1.循环码的编码解码原理详细见教材
三、实验内容:
1.循环码差错控制编码系统仿真模型
图 1 所示是循环码的仿真系统。信号源是伯努利二进制信号发生器,产生采样时间为 0.01 的二进制 信号,传输环境是二进制平衡信道。在发射端和接收端分别设置了循环码编码和解码器。为了对比(7, 4)循环码差错控制的效率,同时设计了没有经过循环码校验的系统仿真框图,如图 2 所示。虽然循环 码因为信道编码的结果使得传输效率变为了 4/7,即发送的 7 个码元中进传送了 4 个码元的有效信息, 但是使得差错率从 5%降为了 2%。
图 1 (7,4)循环码进行差错控制仿真系统
第36页
图 2 无循环码的差错控制仿真系统
2. 主要功能模块及参数设置
图 3 伯努利二进制信号发生器参数
第37页
图 6 二进制均衡信道参数 图 4 二进制循环码编码器参数
图 5 二进制循环码译码器参数
第38页
图 7 误码率计算参数
3.循环码的误码率与差错率的关系
为了得到循环码仿真系统信号误码率与信道差错概率之间的曲线图,可以编写如下 M 文件,对图 1 循环码的仿真模型进行仿真,此时二进制均衡信道的差错概率设置为 errB,M 源文件和曲线图如下。 程序 1: clear all; close all; er=0:0.01:0.05; for n=1:length(er)
errB=er(n) sim('Cyclic_1') S(n)=[mean(ss)]' end plot(er,S)
xlabel('ErrorPorbability') ylabel('Probability of Error Pe') grid
第39页
0.025
循环码的性能曲线图如下:
0.02
Probability of Error Pe 0.015
0.01
0.005
0
ErrorPorbability
图 8 循环码的误码率曲线图
同时编写 M 文件对图 2 无循环码的仿真系统绘出信号误码率与差错概率之间的关系曲线图,此时二进制 均衡信道的差错概率设置为 errB。源文件和曲线图如下。 程序 2: clear all; close all; er=0:0.01:0.05; for n=1:length(er)
errB=er(n) sim('Cyclic_3') S1(n)=[mean(sss)]' end
plot(er,S1)
xlabel('ErrorPorbability') ylabel('Probability of Error Pe') grid
无循环码的性能曲线图如下:
第40页
Probability of Error Pe 0.06
0.05
0.04
0.03
0.02
0.01
0
ErrorPorbability
图 9 无循环码的误码率曲线图
通过对循环码信道编码条件下的误码率与差错概率之间的关系(图 8)和无信道编码条件下的关系曲线
图(图 9)比较可以看出,当差错概率为 0.05 时,未编码的误码率为 0.052,而编码后,无码率仅为 0.021。 因此,采用了循环码编码差错控制后,系统的码误码率得到了明显的改善,其误码率明显下降。
四、实验报告要求:
1.本次实验遇到了哪些问题?你是怎么解决的? 如何避免下次实验再遇到同样的问题? 2.在数字通信系统中,差错控制有什么作用?有哪些常用方法? 3.什么是循环码? 请简要画出循环码的编码器和解码器框图。
第41页
综合实验:CDMA 通信系统的 MATLAB 仿真
一、实验目的:
1.掌握 CDMA 通信系统的基本原理和 Matlab Simulink 仿真方法;
2. 掌握信道、扩频/解扩、QPSK 调制解调原理和 Matlab Simulink 仿真方法
二、实验原理:
CDMA(Code Division Multiple Access)是在扩频通信的基础上发展起来的。所谓扩频,是将原 信号频谱扩展到宽带中进行传输的一种技术。它主要利用相互正交(或尽可能正交)的不同随机码 区分用户,实现多用户同时使用同一频率接入系统和网络。经过几种网络的实现和发展,CDMA 已经逐渐成熟起来。我国的CDMA发展十分迅速,现在由中国电信运营,网络构架已具规模,在 整个通信业起到举足轻重的作用。DS-CDMA系统更详细的原理请见《移动通信》教材。
在研究DS-CDMA系统理论的基础上,利用SIMULINK对其进行仿真,根据系统功能和指标
要求,对信道、扩频/解扩、QPSK(Quadrature Reference Phase Shift Keying,四相相移键控)调制/ 解调等模块进行了设计,并设置了相对应的参数。
三、实验内容:
第42页
整个DS-CDMA系统仿真框图,如上图3-1。
1. DS-CDMA系统各模块设计
1.1 信源
设计中,信源采用二进制贝努利序列产生器(Bernoulli Binary Generator)产生二进制序列。模块如图 3-2 所示,参数设置如表 3-1 所示。
产生的序列中,1 和 0 出现的概率都是 0.5,随机种子为 61。抽样时间表示输出序列中每个二进制符号 的持续时间,设为 1/19200。 1.2 扩频
PN 序列生成器的模块框图如图 3-3。I、Q 两路的参数设置分别如图 3-4、3-5 所示。
第43页
扩频模块的部分截图如图 3-6 所示。分别用示波器和频谱示波器观察结果。
1.3 QPSK 调制
扩频模块产生 I、Q 两路扩频信号,作为 QPSK 调制的输入信号。采用库中的 QPSK 基带调制模块,如 图 3-7 所示,参数设置如图 3-8 所示。
第44页
1.4 信道
本设计采用加性高斯白噪声信道进行分析。加性高斯白噪声信道是最简单的一种噪声,它表现为信 号围绕平均值的一种随机波动过程。加性高斯白噪声信道的均值为 0,方差表现为噪声功率的大小。一
般情况下,噪声功率越大,信号的波动幅度越大,接收端接收到的信号的误比特率就越高。在研究通信 系统的误码率与信道质量的关系时,一般先研究它在加性高斯白噪声信道的性能,然后再把它推广到具 有快衰落的复杂情况。
图 3-9 所示为加性高斯白噪声信道(AWGN Channel)模块,表 3-2 为属性设置
1.5 误码计算
输入信号经过一定延迟,与输出信号进入一个误码率统计模块(Error Rate Calculation),如图 3-10
第45页
所示,以统计接收信号的误码率。
2. SIMULINK 仿真结果及分析
根据前面介绍的理论和系统仿真框图,本节对得到的仿真结果进行分析。设置系统仿真时间为 1s,通过 示波器等观察和分析结果。
第46页
第47页
第48页
第49页