Matlab实现HDB3码的编解码过程_第1页
Matlab实现HDB3码的编解码过程_第2页
Matlab实现HDB3码的编解码过程_第3页
Matlab实现HDB3码的编解码过程_第4页
Matlab实现HDB3码的编解码过程_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、通信工程专业通信系统课程设计研究报告Matlab 实现HDB3码的编解码过程学生姓名: 学生学号: 指导教师: 所在学院: 专业班级:2018 年 7 月信息技术学院课程设计任务书电气与信息院 通信工程专业 通信 S17 级,学号姓名一、课程设计课题:Matlab 实现HDB3码的编解码过程二、课程设计工作日自2018 年 6 月 25 日至 2018 年 7 月 5 日三、课程设计进行地点:信息馆四、程设计任务要求:1. 课题来源:指定教师指定题目2. 目的意义:数字基带信号的传输是数字通信系统的重要组成部分。在数字通信中,有些场合可不经过载波调制和解调过程,而对基带信号进行直接传输。采用A

2、MI码的信号交替反转,有可能出现四连零现象,这不利于接收端的定时信号提取。而HDB3码因其无直流成份、低频成份少和连0 个数最多不超过三个等特点,而对定时信号的恢复十分有利,并已成为CCITT协会推荐使用的基带传输码型之一。3. 基本要求:a. 掌握HDB3编解码原理。b. 对 HDB3编解码进行仿真模型设计。c. 有系统框图,电路原理图,软件流程图,模拟仿真结果图。课程设计评审表指导教师评语:成绩:签字:日期:Matlab 实现HDB3码的编解码过程概述 : 数字信号的传输方式按其在传输中对应的信号的不同可分为数字基带传输系统和数字频带传输系统。在数字通信中,选择合适在信道中传输的码型是十分

3、重要的,常用的传输码型是AMI 码,但当原信码出现长连“ 0串时,信号的电平长时”间不调变时,造成提取定时信号的困难。解决连“ 0码问题的有效方法之一是采用 ”HDB3码。HDB3码(三阶高密度码)是比较常用的信道传输码型, HDB 3码具有较强的检错能力,当数据序列用HDB3码传输时,若传输过程中出现单个误码,其极性交替变化规律将受到破坏,因而在接收端根据HDB3码这一独特规律特性,可检出错误并纠正错误,同时HDB3码方便提取位定时信息。第一部分原理介绍(一)HDB3编码解码原理HDB3码:三阶高密度双极性码。HDB 3码与二进制序列的关系:(1) 二进制信号序列中的“0”码在HDB3码中仍

4、编为“0”码,二进制信号中“ 1”码, 在 HDB3码中应交替地成+1 和 -1 码, 但序列中出现四个连“0”码时应按特殊规律编码(引入传号交替反转码的“破坏点”V码) ;(2) 二进制序列中四个连“0”按以下规则编码:信码中出现四个连“0”码时,要将这四个连“0”码用000V或 B00V取代节来代替(B 和 V也是“1”码,可正、可负 ) 。这两个取代节选取原则是,使任意两个相邻v 脉冲间的传号数为奇数时选用000V取代节,偶数时则选用B00V取代节。(二)在实际的传输系统中,并不是所有的代码电气波形都可以信道中传输。含有直流分量和较丰富的单极性基带波形就不适宜在低频传输特性差的信道中传输

5、,因为它有可能造成信号的严重的畸变。在传输码(或称线路码)的结构将取决于实际信道特性和系统的工作条件。通常,传输码的结构应具有以下的特性:1 .相应的基带信号无直流分理,且低频分量少:2 .便于从信号中提取定时信息:3 .信号中高频分应尽量少以节省传输频带并减少码间串扰。4 .不受信号源统计特性影响,即能适应于信息源变化:5 .具有内在的检错能力,传输的码型应具有一定的规律性,以便利用这一规律性进行宏观监测:6 .编译码设备要尽可能简单,等等。满足以上特性的传输码型种类繁多,这里使用HDB3。要了解 HDB3码的编码规则,首先要知道AMI 码的构成规则,AMI 码就是把单极性脉冲序列中相邻的“

6、 1码” (即正脉冲)变为极性交替的正、负脉冲。将“ 0码保”持不变,把“ 1码变为”+1、 -1 交替的脉冲。如:AMI 码: -1 0 0 0 0 +1 0 0 0 0 -1 +1 0 0 0 0 -1 +1HBD3码(3nd Order High Density Bipolar)的全称是三阶高密度双极性码,它是 AMI 码的一种改进型,改进目的是为了保持AMI 码的优点而克服其缺点,使连“ 0个数不超过 ”3个。其编码规则:a.检查消息码中连“ 0的个数。”当连 “ 0数目小于等于”3时,HBD3码与AMI 码一样( “ 1交替的变换为”“ +1和” “-1”, “ 0保持不变)”。b.

7、当连“ 0数目超过 ”3时,将每 4个连 “ 0化作一小节,”定义为 “ B00V"称为破坏节,其中 V 称为破坏脉冲,而B 称为调节脉冲;c.V 与前一个相邻的非“ 0脉冲的极性相同”(这破坏了极性交替的规则,所以 V称破坏脉冲),并且要求相邻的V 码之间极性必须交替。V 的取值为“ +1或” “-1”;d.B 的取值可选0、 +1或 -1, ,以使 V同时满足两个要求;e.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+1HD

8、B3码:-1 000-V +1 000+V -1+1-B00-V +B00+V -1+1其中的 ± B 脉冲和 ± V 脉冲与 ± 1脉冲波形相同,用V 或 B 表示的目的是为了示意其中的该非“ 0码是由原信码的 ”“ 0变换而来的。 ”当相邻两个V 码之间有奇数个“ 1码时,能保证”V 码满足要求,B 取 “ 0;当相邻”两个 V 码之间有偶数个“ 1码时,不能保证”V 码极性交替,B 取 “ +1”或 “-1”, B 码的符号与前相邻“ 1相反,而其后面的”V码与 B 码极性相同。第二部分MATLAB 编程仿真M文件调用函数functionyn,decode=

9、HDB 3(xn) yn=xn;num=0;for k=1:length(xn)if xn(k)=1num=num+1;if num/2 = fix(num/2) yn(k)=1;elseyn(k)=-1;endendnum=0;yh=yn;sign=0;V=zeros(1,length(yn);B=zeros(1,length(yn);for k=1:length(yn)if yn(k)=0num=num+1;if num=4num=0;yh(k)=1*yh(k-4);V(k)=yh(k);if yh(k)=signyh(k)=-1*yh(k);yh(k-3)=yh(k);B(k-3)=yh

10、(k);V(k)=yh(k);yh(k+1:length(yn)=-1*yh(k+1:length(yn);endsign=yh(k);endelsenum=0;endendre=xn',yn',yh',V',B'input=yh;decode=input;sign=0;for k=1:length(yh)if input(k) = 0if sign=yh(k)decode(k-3:k)=0 0 0 0;endsign=input(k);endenddecode=abs(decode);error=sum(xn'-decode');sub

11、plot(3,1,1);stairs(0:length(xn)-1,xn);axis(0 length(xn) -2 2);subplot(3,1,2);stairs(0:length(xn)-1,yh);axis(0 length(xn) -2 2);subplot(3,1,3);stairs(0:length(xn)-1,decode);axis(0 length(xn) -2 2);M文件运行程序xn=1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1;yn=HDB3(xn);(运行效果图)第三部分设计过程和体会通过这两周的通信原理课程设计实践,我复习

12、了MATLAB编程语言的基本概念、语法、语义和数据类型的使用特点,加深了对课堂所学理论知识的理解,掌握了运用结构化程序设计的基本思想和方法,更重要的是培养了自己的自学能力。因为这是我们第二次接触MATLAB编程语言,在编写程序以及调试的过程中遇到了很多困难,但是我通过去图书馆查找资料,请教同学老师,再自己一点点改善程序,最终编写出一个比较完善的程序,实现了所有要求功能,这是最值得我欣慰的一点。以下是我的几点切身感受:(一)编写程序需要一个清醒的头脑,明确的思路,同时也要有耐心毅力。刚拿到程序设计课题时,我感觉一片茫然,因为在之前的信号处理学习中,只是在一些例题中接触过MATLAB语言,甚至没有

13、看过一些基础的书籍,更没有上过课,所以初次遇到一个实际问题,感觉无从下手。这是由于自己对MATLAB的模块设计不够理解,同时对MATLAB的基本语句一无所知,不过通过请教老师懂得了首先要设计guide 目录,再根据用户输入, 执行 swtich 语句,在每个case 后调用一个函数,来实现要求的功能,这样一下子豁然开朗,掌握了基本设计思路之后,后面的编程就顺利多了。至此,我真真体会到清晰地思路对成功编写一个程序的重要性。当然成功编写一个程序绝非易事,之前,我总以为程序能够正常运行,就代表着编程成功,后来我才发现我大错特错了。我用了三天时间,完成了程序的编写、改错,但我立刻发现尽管程序能够正常运

14、行,部分功能却不完善,甚至不能实现。经过一次又一次调试、修改又修改,一点一点发现问题并改正,我才真正发现编程远没有想象中的简单。它需要的不仅是清晰地编程思路、编程技巧,还需要有耐心有毅力,不要放弃。(二)我们在大学需要学习的不仅是基础知识、专业知识,更重要的是一种学习能力。正如老师所说学习是终生的,因此学习能力也就能让我们受益终生。由于课堂时间有限,MATLAB课程只能靠我们自学,然而guide 画图功能我们必须用到,因此只能通过自习,实践也证明我们是有自学的潜能的,通过自学课本,不理解的知识,通过查找资料,请教老师,最终掌握知识,因此,这次课程设计时间培养了我们的自学能力。(三)要学会向他人

15、请教,与他人合作。在编程过程中,我遇到了许多问题,通过查找资料也未能找到原因,每次我想老师请教,老师总能不厌其烦地一点点讲解。有时,老师为了帮我在那几百行的程序中找到问题,花上一个多小时,这让我非常感动。大学中的老师是每个大学生的好资源,他的博学、重教,向他们请教会有很大收获。在编程过程中,我与我组成员共同讨论,为对方查找错误,提示建议,在这个过程中我收获甚多,也培养了自己的合作精神。(四)要学会总结,提高。在编程过程中,我发现自己的程序还有很多地方可以完善。程序的界面可以做得更加人性化,这样使用户使用更加方便,画图函数也还可以改进,例如:在使用 figure 分图显示的时候,我尽量选择部分图,都在一个figure 中显示,这样既符合了,老师的要

温馨提示

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

评论

0/150

提交评论