通信原理仿真实验讲义.doc_第1页
通信原理仿真实验讲义.doc_第2页
通信原理仿真实验讲义.doc_第3页
通信原理仿真实验讲义.doc_第4页
通信原理仿真实验讲义.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通信原理MATLAB仿真实验讲义单位:物理与信息工程系编写:宋 庆 恒 2012.10目 录一、实验目的3二、实验题目3三、实验项目3实验一、单极性与双极性、归零码与不归零码31.单极性不归零码32.双极性不归零码43.单极性归零码54.双极性归零码65.实验内容6实验二、进制数字调制ASK、PSK、FSK71.二进制数字幅度调制72.二进制数字频率调制83.二进制数字相位调制114.实验内容12实验三 HDB3编码仿真131设计原理及设计思路132程序流程图143参考程序源代码144.实验内容16一、 实验目的n 学会MATLAB软件的最基本运用。MATLAB是一种很实用的数学软件,它易学易用。MATLAB对于许多的通信仿真类问题来说是很合适的。n 了解计算机仿真的基本原理及方法,知道怎样通过仿真的方法去研究通信问题。n 加深对通信原理课程有关内容的理解。二、 实验题目1) 单极性与双极性、归零码与不归零码2) 2进制数字调制ASK、PSK、FSK3) HDB3编码仿真三、 实验项目实验一、单极性与双极性、归零码与不归零码1.单极性不归零码 单极性不归零码是一种最简单、 最常用的基带信号形式。这种信号脉冲的零电平和正电平分别对应着二进制代码0和1,或者说,它在一个码元时间内用脉冲的有或无来对应表示0或1码。其特点是极性单一,有直流分量,脉冲之间无间隔。另外位同步信息包含在电平的转换之中,但是当出现连0或连1序列时没有位同步信息。 生成单极性不归零码的流程图如图7-1所示 。MATLAB实现程序如下: function y=snrz(x) %本函数实现将输入的一段二进制代码编为相应的单极性不归零码输出%输入x为二进制码,输出y为编好的码t0=200;t=0:1/t0:length(x); %给出相应的时间序列for i=1:length(x) %计算码元的值 if x(i)=1 %如果输入信息为1 for j=1:t0 %该码元对应的点值取1 y(i-1)*t0+j)=1; end else for j=1:t0 %如果输入信息为0,码元对应的点值取0y(i-1)*t0+j)=0; end end endy=y,x(i);plot(t,y); %采用title命令来实现标记出各码元对应的二元信息title(1 0 1 1 0 0 1 0); grid on;axis(0,i, -0.1,1.1); 在命令窗口中键入x的二进制代码和函数名,就可以得到所对应的单极性不归零码输出,如输入以下指令,将出现图7-2所示结果。x=1 0 1 1 0 0 1 0;snrz(x)图7-2 单极性不归零码2.双极性不归零码 在双极性不归零码中,脉冲的正、负电平分别对应于二进制代码1、0,由于它是幅度相等极性相反的双极性波形,故当0、 1符号等可能出现时无直流分量。 这样,恢复信号的判决电平为 0,因而不受信道特性变化的影响,抗干扰能力也较强。故双极性码较单极性码更有利于在信道中传输。 双极性非归零码的实现同单极性基本一样,只需将snrz.m中的判断得到0信息后的语句y(i-1)*t0+j)=0;中的0改为-1即可,所以就不再给出MATLAB函数文件了,波形图如图7-3所示。 3.单极性归零码 单极性归零码与单极性不归零码的区别是电脉冲宽度小于码元宽度,每个电脉冲在小于码元长度内总要回到零电平,即输入信息为1时给出的码元前半时间为1,后半时间为0,输入为0时与不归零码则完全相同。单极性归零码可以直接提取定时信息,是其他波形提取位定时信号时需要采用的一种过渡波形。 其MATLAB实现如下:(函数文件srz.m) function y=srz(x)%本函数实现将输入的一段二进制代码编为相应的单极性归零码输出 %输入x为二进制码,输出y为编好的码t0=200;t=0:1/t0:length(x); %给出相应的时间序列for i=1:length(x) %计算码元的值 if x(i)=1 %如果输入信息为1 for j=1:t0/2 y(2*i-2)*t0/2+j)=1; %定义前半段时间值为1 y(2*i-1)*t0/2+j)=0; %定义后半段时间值为0 endelse for j=1:t0 %如果输入信息为0 y(i-1)*t0+j)=0; %定义所有时间值为0 end endendy=y,x(i);plot(t,y);title(1 0 1 1 0 0 1 0);grid on;axis(0,i, -0.1,1.1); 同理,在命令窗口中键入x的二进制代码和函数名,就可以得到所对应的单极性归零码输出,如输入以下指令,将出现图7-4所示结果。 x=1 0 1 1 0 0 1 0; srz(x)4.双极性归零码 它是双极性不归零码的归零形式,每个码元内的脉冲都回到零点平,表示信息1时前半时间为1后半时间为0,表示信息0时前半时间为-1后半时间为0,相邻脉冲之间必定留有零电位的间隔。它除了具有双极性不归零码的特点外,还有利于同步脉冲的提取。 双极性归零码的MATLAB实现同单极性也基本一样,只需将srz.m中的判断得到0信息后的语句for j=1:t0 y(i-1)*t0+j)=0;改为for j=1:t0/2 y(2*i-2)*t0/2+j)=-1; y(2*i-1)*t0/2+j)=0;即可,所以也就不再给出MATLAB函数文件了,其波形图如图7-5所示。 图7-5 双极性归零码5.实验内容求伪随机码x=1 1 1 1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 0的单极性不归零码、双极性不归零码、单极性归零码、双极性归零码。实验二、进制数字调制ASK、PSK、FSK1.二进制数字幅度调制一、一般原理与实现方法数字幅度调制又称幅度键控(ASK),二进制幅度键控记作2ASK。2ASK是利用代表数字信息“0”或“1”的基带矩形脉冲去键控一个连续的载波,使载波时断时续地输出。有载波输出时表示发送“1”,无载波输出时表示发送“0”。根据幅度调制的原理,2ASK信号可表示为:2ASK信号的产生方法(调制方法)有两种,如图所示。图(a)是一般的模拟幅度调制方法,这里的由式(8-2)规定;图(b)是一种键控方法,这里的开关电路受控制。图(c)给出了及的波形示例。二进制幅度键控信号,由于一个信号状态始终为0,相当于处于断开状态,故又常称为通断键控信号(OOK信号)二、MATLAB实现 以数字信号序列10110010为例,给出产生2ASK信号的MATLAB程序如下(函数文件askdigital.m),流程图如图所示。%本函数实现将输入的一段二进制代码调制成相应的ask信号输出%s为输入二进制码,f为载波频率,ask为调制后输出信号t=0:2*pi/99:2*pi; m1=;c1=;s=1 0 1 1 0 0 1 0;f=2;for n=1:length(s)if s(n)=0; m=zeros(1,100);else s(n)=1; m=ones(1,100);endc=sin(f*t);m1=m1 m;c1=c1 cendask=c1.*m1;subplot(211);plot(m1)title(原始信号);axis(0 100*length(s) -0.1 1.1);subplot(212);plot(ask)title(ASK信号);如输入以下指令: Ask 2.二进制数字频率调制 数字频率调制又称频移键控(FSK),二进制频移键控记作2FSK。数字频移键控是用载波的频率来传送数字消息,即用所传送的数字消息控制载波的频率。2FSK信号便是符号“1”对应于载频f1,而符号“0”对应于载频f2(与f1不同的另一载频)的已调波形,而且f1与f2之间的改变是瞬间完成的。 从原理上讲,数字调频可用模拟调频法来实现,也可用键控法来实现。模拟调频法是利用一个矩形脉冲序列对一个载波进行调频,是频移键控通信方式早期采用的实现方法。2FSK键控法则是利用受矩形脉冲序列控制的开关电路对两个不同的独立频率源进行选通。键控法的特点是转换速度快、波形好、稳定度高且易于实现,故应用广泛。 2FSK信号的产生方法及波形示例如图8-7所示。图中s(t)为代表信息的二进制矩形脉冲序列, e0(t)即是2FSK信号。 图8-8给出的是用键控法实现2FSK信号的电路框图,两个独立的载波发生器的输出受控于输入的二进制信号,按“1”或“0”分别选择一个载波作为输出。 二、MATLAB实现 以数字信号序列10110010为例,给出产生2FSK信号的MATLAB程序如下(函数文件fskdigital.m): function fskdigital(s,f1,f2)%本函数实现将输入的一段二进制代码调制成相应的fsk信号输出%s为输入二进制码,f1、f2分别为代码0、1对应的载波频率,fsk为调制后输出信号t=0:2*pi/99:2*pi;m1=;c1=;b1=;s=1 0 1 1 0 0 1 0;f1=200;f2=100;for n=1:length(s) if s(n)=0; m=ones(1,100); c=sin(f2*t); b=zeros(1,100)else s(n)=1; m=ones(1,100); c=sin(f1*t); b=ones(1,100) end m1=m1 m; c1=c1 c; b1=b1 b;end fsk=c1.*m1; subplot(211); plot(b1,r) title(原始信号); axis(0 100*length(s) -0.1 1.1); grid on; subplot(212); plot(fsk) title(2FSK信号);grid on;如输入以下指令:fskdigital 输出波形如图8-9所示,其中0信号所对应的载波频率与码元速率相同,1信号所对应的载波频率为码元速率的两倍。 图8-9 2FSK信号波形3.二进制数字相位调制 一、一般原理及实现方法 绝对相移是利用载波的相位(指初相)直接表示数字信号的相移方式。二进制相移键控中,通常用相位0和180度来分别表示“0”或“1”。2PSK已调信号的时域表达式为 当码元宽度为载波周期的整数倍时,2PSK信号的典型波形如图8-15所示。 图8-152PSK信号的典型波形 图8-162PSK调制器框图 2PSK信号的调制方框图如图8-16示。图(a)是产生2PSK信号的模拟调制法框图;图(b)是产生2PSK信号的键控法框图。 二、MATLAB实现 以数字信号序列10110010为例,给出产生2PSK信号的MATLAB程序如下(函数文件pskdigital.m): function pskdigital(s,f)%本函数实现将输入的一段二进制代码调制成相应的psk信号输出%s为输入二进制码,f为载波频率,psk为调制后输出信号t=0:2*pi/99:2*pi;m1=;c1=;b1=;s=1 0 1 1 0 0 1 0;f=100;for n=1:length(s) if s(n)=0;m=-ones(1,100); b=zeros(1,100) else s(n)=1; m=ones(1,100); b=ones(1,100) end c=sin(f*t); m1=m1 m; c1=c1 c b1=b1 b;endpsk=c1.*m1;subplot(211);plot(b1)title(原始信号);axis(0 100*length(s) -0.2 1.1);subplot(212);plot(psk);title(PSK信号);grid on;如输入以下指令: pskdigital输出波形如图8-17所示,其中载波频率与码元速率相同。 图8-17 2PSK信号波形 4.实验内容分别求伪随机码x=1 1 1 1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 0的ASK、PSK、FSK调制。实验三 HDB3编码仿真1设计原理及设计思路在实际的传输系统中,并不是所有的代码电气波形都可以信道中传输。含有直流分量和较丰富的单极性基带波形就不适宜在低频传输特性差的信道中传输,因为它有可能造成信号的严重的畸变。在传输码(或称线路吗)的结构将取决于实际信道特性和系统的工作条件。通常,传输码的结构应具有以下的特性:(1) 相应的基带信号无直流分理,且低频分量少:(2) 便于从信号中提取定时信息:(3) 信号中高频分应尽量少以节省传输频带并减少码间串扰。(4) 不受信号源统计特性影响,即能适应于信息源变化:(5) 具有内在的检错能力,传输的码型应具有一定的规律性,以便利用这一规律性进行宏观监测:(6) 编译码设备要尽可能简单,等等。满足以上特性的传输码型种类繁多,这里使用HDB3。要了解HDB3码的编码规则,首先要知道AMI码的构成规则,AMI码就是把单极性脉冲序列中相邻的“1”码(即正脉冲)变为极性交替的正、负脉冲。将“0”码保持不变,把“1”码变为+1、-1交替的脉冲。如:AMI码:-10000 +10000-1 +10000-1 +1HBD3码(3nd Order High Density Bipolar)的全称是三阶高密度双极性码,它是AMI码的一种改进型,改进目的是为了保持AMI码的优点而克服其缺点,使连“0”个数不超过3个。其编码规则: (1)检查消息码中连“0”的个数。当连“0”数目小于等于3时,HBD3码与AMI码一样(“1”交替的变换为“+1”和“-1”,“0”保持不变)。 (2)当连“0”数目超过3时,将每4个连“0”化作一小节,定义为“B00V称为破坏节,其中V称为破坏脉冲,而B称为调节脉冲; (3)V与前一个相邻的非“0”脉冲的极性相同(这破坏了极性交替的规则,所以V称破坏脉冲),并且要求相邻的V码之间极性必须交替。V的取值为“+1”或“-1”; (4)B的取值可选0、+1或-1,以使V同时满足(3)中的两个要求; (5)V码后面的传号码极性也要交替。例如:消息码: 1 000 0 1 000 0 1 1 000 0 000 0 1 1AMI码: -1 000 0 +1 000 0 -1+1 000 0 000 0 -1+1HDB3码:-1 000-V +1 000+V -1+1-B00-V +B00+V -1+1其中的B脉冲和V脉冲与1脉冲波形相同,用V或B表示的目的是为了示意其中的该非“0”码是由原信码的“0”变换而来的。当相邻两个V码之间有奇数个“1”码时,能保证V码满足(3)的要求,B取“0”;当相邻两个V码之间有偶数个“1”码时,不能保证V码极性交替,B取“+1”或“-1”,B码的符号与前相邻“1”相反,而其后面的V码与B码极性相同。2程序流程图 实验编码原理框图如下所示:(1) 编码框图 译码规则: 在接收端,将接收到的HDB3码序列恢复为原输入二进制数字信息序列的过程称为译码。 对HDB3码而言,译码就是找到编码时插入的特殊序列并将它恢复为0000。根据编码原则,HDB3的译码可分为三个步骤:(1)根据“V”的极性特点,找出特殊序列。由于编码时,每个“V”的极性都与其前一个“1”码的极性相同,所以,在接收序列中一旦出现连续两个同极性码时,两个同极性码的后一个即为“V”,此“V”与其前的三位码就是一个特殊序列;(2)将所有的特殊序列都恢复为“0000”;(3)将正、负脉冲都恢复为“1”码,零电平恢复为“0”码。下图是译码的框图: (4)译码框图3参考程序源代码xn= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;% 输入单极性码yn=xn;% 输出yn初始化num=0;% 计数器初始化for k=1:length(xn) if xn(k)=1 num=num+1; % 1计数器 if num/2 = fix(num/2) % 奇数个1时输出-1,进行极性交替 yn(k)=1; else yn(k)=-1; end endend % HDB3编码num=0;% 连零计数器初始化yh=yn;% 输出初始化sign=0; % 极性标志初始化为0V=zeros(1,length(yn);% V脉冲位置记录变量 B=zeros(1,length(yn);% B脉冲位置记录变量for k=1:length(yn) if yn(k)=0 num=num+1;% 连“0”个数计数 if num=4 % 如果4连“0” num=0; % 计数器清零 yh(k)=1*yh(k-4); % 让0000的最后一个0改变为与前一个非零符号相同极性的符号 V(k)=yh(k); % V脉冲位置记录 if yh(k)=sign % 如果当前V符号与前一个V符号的极性相同 yh(k)=-1*yh(k); % 则让当前V符号极性反转,以满足V符号间相互极性反转要求 yh(k-3)=yh(k);% 添加B符号,与V符号同极性 B(k-3)=yh(k); % B脉冲位置记录 V(k)=yh(k); % V脉冲位置记录

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论