人人范文网 范文大全

通信原理课程设计报告

发布时间:2020-03-03 07:14:59 来源:范文大全 收藏本文 下载本文 手机版

课 题 学 院 专 业 学生姓名学 号 班级 指导教师

通信原理 课程设计报告

基于MATLAB的2FSK仿真 电子信息工程学院 通信工程

二〇一五年一月

基于MATLAB的基带传输系统的研究与仿真

—— 码型变换

摘 要

HDB3码编码规则

首先将消息代码变换成AMI码;然后检查AMI码中的连0情况,当无4个或4个以上的连0串时,则保持AMI的形式不变;若出现4个或4个以上连0串时,则将1后的第4个0变为与前一非0符号(+1或-1)同极性的符号,用V表示(+1记为+V,-1记为-V);最后检查相邻V符号间的非0符号的个数是否为偶数,若为偶数,则再将当前的V符号的前一非0符号后的第1个0变为+B或-B符号,且B的极性与前一非0符号的极性相反,并使后面的非0符号从V符号开始再交替变化

关键词: HDB3码 MATLAB编码原则 V码 B码

一、背景知识

二、MATLAB仿真软件介绍

三、仿真的系统的模型框图

四、使用MATLAB编程(m文件)完成系统的仿真

五、仿真结果

六、结果分析

七、心得、参考文献

正文部分

一、背景知识

在实际的传输系统中,并不是所有的代码电气波形都可以信道中传输。含有直流分量和较丰富的单极性基带波形就不适宜在低频传输特性差的信道中传输,因为它有可能造成信号的严重的畸变。

在传输码(或称线路吗)的结构将取决于实际信道特性和系统的工作条件。通常,传输码的结构应具有以下的特性:

(1)相应的基带信号无直流分理,且低频分量少 (2)便于从信号中提取定时信息

(3)信号中高频分应尽量少以节省传输频带并减少码间串扰 (4)不受信号源统计特性影响,即能适应于信息源变化

(5)具有内在的检错能力,传输的码型应具有一定的规律性,以便利用这一规律性进行宏观监测

(6)编译码设备要尽可能简单

满足以上特性的传输码型种类繁多,这里使用HDB3。

要了解HDB3码的编码规则,首先要知道AMI码的构成规则,AMI码就是把单极性脉冲序列中相邻的“1”码(即正脉冲)变为极性交替的正、负脉冲。将“0”码保持不变,把“1”码变为+

1、-1交替的脉冲。如: NRZ码:1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 AMI码:-1 0 0 0 0 +1 0 0 0 0 -1 +1 0 0 0 0 -1 +1 HBD3码(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 1 AMI码: -1 000 0 +1 000 0 -1+1 000 0 000 0 -1+1 HDB3码:-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码极性相同。

二、MATLAB简介

美国MATHWORK公司于1967年推出了“Matrix Laboratory”(缩写为MATLAB)软件包,不断更新和扩充。它是一种功能强、效率高便于进行科学和工程计算的交互式软件包。其中包括:一般数值分析、矩阵运算、数字信号处理、建模和系统控制和优化等应用程序。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。在新的版本中也加入了对C,FORTRAN,c++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用,非常的方便。

MATLAB的基础是矩阵计算,但是由于他的开放性,并且mathwork也吸收了像maple等软件的优点,使MATLAB成为一个强大的数学软件。

当前流行的MATLAB 6.5/7.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox)。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。

开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。

Matlab的优势和特点:

(1)友好的工作平台和编程环境

MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

(2)简单易用的程序语言

Matlab一个高级的距阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

(3)强大的科学计算机数据处理能力

MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如距阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。

(4)出色的图形处理功能

MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和距阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使他不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。

(5)应用广泛的模块集合工具箱

MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,他们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。

(6)实用的程序接口和发布平台

新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。

MATLAB的一个重要特色就是他有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。

(7)应用软件开发(包括用户界面)

在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5。

三、仿真的系统的模型框图

(1)实验编码原理框图如下所示 :

(2)以下是V码以及B码产生的框图:

(3)V码产生单元的工作流程图

(4)B码产生单元的工作流程图 译码规则: 在接收端,将接收到的HDB3码序列恢复为原输入二进制数字信息序列的过程称为译码。

对HDB3码而言,译码就是找到编码时插入的特殊序列并将它恢复为0000。根据编码原则,HDB3的译码可分为三个步骤:

(1)根据“V”的极性特点,找出特殊序列。由于编码时,每个“V”的极性 都与其前一个“1”码的极性相同,所以,在接收序列中一旦出现连续两个同极性码时,两个同极性码的后一个即为“V”,此“V”与其前的三位码就是一个特殊序列;

(2)将所有的特殊序列都恢复为“0000”;

(3)将正、负脉冲都恢复为“1”码,零电平恢复为“0”码。 下图是译码的框图:

四、使用MATLAB编程(m文件)完成系统的仿真

程序源代码

global dt df t f N close all

N=2^13;

%采样点数

L=8;

%每码元的采样点数

M=N/L;

%码元数

Rb=2; Ts=0.5;

%码元宽度是0.5us dt=Ts/L;

df=1/(N*dt);

%MHz RT=0.5;

%占空比 T=N*dt ;

%截短

Bs=N*df/2;

%系统带宽

t=[-T/2+dt/2:dt:T/2];

%时域横坐标

f=[-Bs+df/2:df:Bs];

%频域横坐标 figure(1)

set(1,\'Position\',[10,50,300,200])

%设定窗口位置及大小

figure(2)

set(2,\'Position\',[350,50,300,200])

%设定窗口位置及大小

EPAMI=zeros(size(f)); EPHDB=zeros(size(f)); for ii=1:8 ami=zeros(1,M); hdb=zeros(1,M); a=round(rand(1,M));

b=3;

%表示0000之间循环个数

c=-1;

%记载相邻V之间的1元素个数

sign1=-1;

%标志前一个信号

sign2=-1;

%标志前一个信号

for ii=1:M

if a(ii)==1

sign1=0-sign1; ami(ii)=sign1;

end End for ii=1:M

if b==3

%表示非0000

if a(ii)==1

sign2=0-sign2; hdb(ii)=sign2;

if c>=0

%表示不是第一个0000

c=c+1;

%用来计算相邻v之间的非0元素个数

end

elseif ii

if mod(c,2)==1

%000V hdb(ii+3)=sign2;

else

%B00V

sign2=0-sign2; hdb(ii)=sign2;

hdb(ii+3)=sign2;

end

c=0;

b=0;

end

elseif b

%对0000的循环

b=b+1;

End end

for i=[1:L] ami1(i+[0:M-1]*L)=ami; hdb1(i+[0:M-1]*L)=hdb; end

AMI=T2F*(ami1);

PAMI=AMI.*conj(AMI)/T; HDB=T2F*(hdb1);

PHDB=HDB.*conj(HDB)/T; EPAMI=(EPAMI*(ii-1)+PAMI)/ii; EPHDB=(EPHDB*(ii-1)+PHDB)/ii; figure(1)

aa=30+10*log10(EPAMI+eps);

%加eps以避免除以零

bb=30+10*log10(EPHDB+eps); plot(f,aa,\'g\'); grid

axis([-8,+8,-80,80]) xlabel(\'f (MHz)\')

ylabel(\'AMIPs(f)

(dBm/MHz)\') figure(2) plot(f,bb,\'b\'); grid

axis([-8,+8,-80,80]) xlabel(\'f (MHz)\')

ylabel(\'HDBPs(f)

(dBm/MHz)\') figure(3) subplot(3,1,1) tt=[1:40];

stem(tt,a(1:40),\'g\') title(\'原始RNZ信号\') s ubplot(3,1,2)

stem(tt,ami(1:40),\'g\') title(\'AMI信号\') subplot(3,1,3)

stem(tt,hdb(1:40),\'g\') title(\'HDB码\') end

%将下面的代码保存在t2f.m文件中

function X=t2f(x) global dt df N t f T

%X=t2f(x)

%x为时域的取样值矢量 %X为x的傅氏变换

%X与x长度相同,并为2的整幂。

%本函数需要一个全局变量dt(时域取样间隔) H=fft(x);

X=[H(N/2+1:N),H(1:N/2)]*dt; end

五、仿真结果

六、结果分析和心得

HDB3(High DensityBinary-3)码的全称是3阶高密度双极性码。它是AMI码的一种改进型,主要是为了克服AMI码中连“0”时所带来的提取定时信息的困难。HDB3编码规则是:先把消息代码中的“1”交替变成“+1”和“-1” ,“0”仍然保持“0”不变的AMI码 ,然后去检查AMI码的连“0”的情况 ,当没有4个和4个以上连“0”串时 ,这样的AMI码就是HDB3码 ;当出现4个和4个以上连“0”串时,则将每4个连“0”的小段的第4个“0”变换成与其前一个非零符号相同极型的符号,并用“+V”和“-V”表示.若此“V”使后面的序列破坏了“极性交替反转” 的原则,则将出现直流分量。故需要保证相邻“V”的符号也是极性相反,所以,当不满足V也极性相反时,将这个连“0” 码无串的等一个“0” 变成“-B”和“+B” 。“B”的符号与前一个非“0”码的符号相反,并且让后面的非“0” 码元符号从“V” 码开始再交替变化。

HDB3码译码比较容易,从收到的符号序列中可以容易地找到破坏点V,于是也断定V符号及其前面3 个符号必是连0 符号,从而恢复4个连0码,再将所有的-1变成+1后便得到原消息代码。

下面用例题来进一步说明编码与译码的原理: 例:求序列101100000100000000对应的HDB3码。 编码译码步骤如下: 找出四连0序列; 用特殊序列代替连0序列,第一个特殊序列可任意选择如选择100V。

将“1”和“V”标上极性“+1”或“-1”。输入数据中的“1”和特殊序列中的“1”作为一个整体极性交替,第一个“1”的极性可任意选择如选择“-1”。第一个特殊序列中的“V“与其前第一个“1”的极性相同,后面的“V”依次极性交替。

根据上面步骤列出系列各式以及画图,实现HDB3码的编码。

通过译码原理可知:V码与B码的极性相同,我们可以对这个输出码从后开始译码,自然而然的可以得到原输入的序列,此时,编码与译码就完成了。

另外说明:1.由于第一个特殊序和第一个“1”的极性均可任意选择,所以同一数字信息序列的HDB3可有四种不同的形式。2.当编码的序列足够长时,我们的编码与译码过程中更容易得到规律。

以上的程序便是综合了HDB3的编码译码以及对于其仿真的全部过程,此是经过了本组成员的反复修改最终制作而成,对于HDB3的编译码有了更加深入的了解。

七、参考文献

1.郭文彬,桑林编著,通信原理-基于Matlab的计算机仿真,北京邮电大学出版社,2006 2.曹志刚,钱亚生,现代通信原理,清华大学出版社,2002年

3.郭仕剑等,《MATLAB 7.x数字信号处理》,人民邮电出版社,2006年

4.樊昌信,曹丽娜编著,通信原理学习指导,西安电子科技大学,2003

通信原理课程设计报告

通信原理课程设计报告

通信原理课程设计报告

通信原理课程设计报告

通信原理课程设计报告

通信原理课程设计报告

通信原理课程设计

通信原理课程设计

通信原理课程设计

通信原理课程设计

通信原理课程设计报告
《通信原理课程设计报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档