vc中的hdb3编码与解码_第1页
vc中的hdb3编码与解码_第2页
vc中的hdb3编码与解码_第3页
vc中的hdb3编码与解码_第4页
vc中的hdb3编码与解码_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、 课 程 设 计题目: hdb3码的编码解码 学 号: 1020420311 姓 名: 金 立 强 班 级: 10204203 专 业: 通信工程 课程名称: 通信原理 课程老师: 涂 其 远 2013.1.8设计内容与设计目的设计内容:要求学生能够熟练地用VC语言编写基本的通信系统的的应用程序,进行hdb3码的编码与解码设计与仿真。 目 录一设计原理与思路.3二程序设计流程.4三程序代码.5四运行结果.11五参考资料.13六设计心得.14一、 设计原理及设计思路要了解HDB3码的编码规则,首先要知道AMI码的构成规则,AMI码就是把单极性脉冲序列中相邻的“1”码(即正脉冲)变为极性交替的正、

2、负脉冲。将“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称为破坏

3、脉冲,而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脉冲与&

4、#177;1脉冲波形相同,用V或B表示的目的是为了示意其中的该非“0”码是由原信码的“0”变换而来的。当相邻两个V码之间有奇数个“1”码时,能保证V码满足(3)的要求,B取“0”;当相邻两个V码之间有偶数个“1”码时,不能保证V码极性交替,B取“+1”或“-1”,B码的符号与前相邻“1”相反,而其后面的V码与B码极性相同。二程序流程图实验编码原理框图如下所示:译码规则:在接收端,将接收到的HDB3码序列恢复为原输入二进制数字信息序列的过程称为译码。对HDB3码而言,译码就是找到编码时插入的特殊序列并将它恢复为0000。根据编码原则,HDB3的译码可分为三个步骤:(1)根据“V”的极性特点,找出

5、特殊序列。由于编码时,每个“V”的极性都与其前一个“1”码的极性相同,所以,在接收序列中一旦出现连续两个同极性码时,两个同极性码的后一个即为“V”,此“V”与其前的三位码就是一个特殊序列;(2)将所有的特殊序列都恢复为“0000”;(3)将正、负脉冲都恢复为“1”码,零电平恢复为“0”码。下图是译码的框图:二程序源代码 #include <graphics.h> / 就是需要引用这个图形库#include<stdio.h>#include<conio.h>#define max 1000/假设输入的码个数最大1000个 void show(int code,

6、int length,int x);void main()char nzmax='0'int nzinmax=0;int nzxmax=0;int amimax=0;int amixmax=0;int hdb3max=0;bool sign=0;intlength=0;bool v=1;printf(" please input a group of NZ code:n");scanf("%s",nz);/输入一串二进制码将其转为HDB3码for(int i=0;nzi!='0'i+)/计算输入码个数length+;for

7、(int i=0;i<length;i+)/将输入的char型转为int型方便计算码型变换if(nzi='1')nzini=1;if(nzi='0')nzini=0; for(int i=0;i<length;i+)/将源码转为ami码if(nzini=1)amii=2*sign-1;sign=!sign;/正负符号跳转if(nzini=0)amii=0;for(int i=0;i<length;i+)/hdb3码初始化hdb3i=amii;for(int i=0;i<=length-4;i+)/ami码转hdb3if(amii=0&am

8、p;&amii+1=0&&amii+2=0&&amii+3=0) /如果出现四个连0v=!v;hdb3i+3=2*v-1;/bool型 v 计算,使得+1, -1之间跳转 if(hdb3i+3!=hdb3i-1)/ BOOV中 若v与0000之前一位极性不相同 ,则将B=Vhdb3i=hdb3i+3;i=i+3;printf(" hdb3 code as following:n");getch();for(int i=0;i<length;i+)/将转化的hdb3码输出printf("%d",hdb3i);p

9、rintf("nnnn hdb3解码.n"); /hdb3码的解码getch();for(int i=0;i<length;i+)/hdb3码转为ami码,让amix初始化amixi=hdb3i;for(int i=0;i<=length-4;i+)if(hdb3i=hdb3i+4&&hdb3i+1=0&&hdb3i+2=0&&hdb3i+3=0)/若hdb3码中存在X000Y,X=Y那么认为是Y出是V点破坏点并将v置0amixi+4=0;if(hdb3i=hdb3i+3&&hdb3i+1=0&am

10、p;&hdb3i+2=0)/若hdb3码中存在XOOY,x=y,那么认为是BOOV破坏的amixi=0;amixi+3=0;for(int i=0;i<length;i+)/ami转原码, nzx初始化nzxi=amixi;for(int i=0;i<length;i+) / 将等于-1的位置1if(amixi=-1)nzxi=1;printf("n NZ code as following:n"); /输出原码for(int i=0;i<length;i+)printf("%d",nzxi);getch();initgraph

11、(640, 480,SHOWCONSOLE); /输出屏初始化,绘制直角坐标系moveto(50,50);lineto(50,350);moveto(50,120);lineto(50+length*20,120);moveto(50,200);lineto(50+length*20,200);moveto(50,280);lineto(50+length*20,280);show(nzin,length,0);/绘制输入的原码show(hdb3,length,1);/绘制原码转换的hdb3show(nzx,length,2);/绘制由hdb3转化的原码getch();void show(in

12、t code,int length,int x)moveto(50,120+x*80);for(int i=0;i<length;i+)if(codei=0)lineto(50+i*20,120+x*80);lineto(50+(i+1)*20,120+x*80);if(codei=1)lineto(50+i*20,120+x*80-30);lineto(50+(i+1)*20,120+x*80-30);if(codei=-1)lineto(50+i*20,120+x*80+30);lineto(50+(i+1)*20,120+x*80+30);五运行效果图如图随机输入一组nz码。六结果

13、分析和结论HDB3(High Density Binary3)码的全称是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”使后面的序列破坏了“极性交替反转” 的原则,则将出现直流分量。故

14、需要保证相邻“V”的符号也是极性相反,所以,当不满足V也极性相反时,将这个连“0” 码无串的等一个“0” 变成“B”和“B” 。“B”的符号与前一个非“0”码的符号相反,并且让后面的非“0” 码元符号从“V” 码开始再交替变化。 七参考资料1樊昌信,曹丽娜通信原理,第六版。2曹志刚,钱亚生,现代通信原理,清华大学出版社,2002年3郭仕剑等,MATLAB 7.x数字信号处理,人民邮电出版社,2006年 4. 谭浩强,c语言程序设计,第二版。八设计心得通过本次设计,我进一步熟悉了c语言的语法规则同时也对同学原理中HDB3码有了更深刻的认识,同时通过设计也学到了很多书本上学不到的知识。并且此次对于vc有了进一步的学习与理解,对我以后在学习以及工作中是很有帮助的。东华理工大学课程设计评分表学生姓名: 班级: 学号:课程设计题目:项目内容满分实 评选题能结合所学课程知识、有一定的能力训练。符合选题要求(5人一题)10工作量适中,难易度合理10能力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力10理论依据充分,数据准确,公式推导正确10能应用计算机

温馨提示

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

评论

0/150

提交评论