《HDB3编码程序》由会员分享,可在线阅读,更多相关《HDB3编码程序(4页珍藏版)》请在金锄头文库上搜索。
1、HDB3码的编码原理HDB3码的编码原理可简述为:,一, 先把消息变为AMI码,然后检查AMI码的连“0”情况,当无三个连“0”以上的情况时,这时的AMI码就是HDB3码。二, 当代码序列中出现个连“”码或超过个连“”码时,把连“”段按个“”分节,即“”,并使第个“”码变为“”码,用V脉冲表示。这样可以消除长连“”现象。为了便于识别V脉冲,使V脉冲极性与前一个“”脉冲极性相同。这样就破坏了AMI 码极性交替的规律,所以V脉冲为破坏脉冲,把V脉冲和前个连“”称为破坏节“V”;三, 为了使脉冲序列仍不含直流分量,则必须使相邻的破坏点V脉冲极性交替;四, 为了保证、两条件成立,必须使相邻的
2、破坏点之间有奇数个“”码。如果原序列中破坏点之间的“”码为偶数个,则必须补为奇数,即将破坏节中的第一个“”码变为“”,用B脉冲表示。这时破坏节变为“B00V”形式。B脉冲极性与前一“”脉冲极性相反,而B脉冲极性和V脉冲极性相同。如:(a)代码: 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1(b)AMI码: 0 +1 0 0 0 0 -1 +1 0 0 0 0 0 -1 0 +1(c)加V: 0 +1 0 0 0 V+ -1 +1 0 0 0 V- 0 -1 0 +1(c)加B并调整B及B极性: 0 +1 0 0 0 V+ -1 +1 B- 0 0 V- 0 +1 0 -1(e
3、)HDB3码 0 +1 0 0 0 +1 -1 +1 -1 0 0 -1 0 +1 0 -1C语言程序如下:#include<stdio.h>main() char s;int c,i,a,b,e,u,n,v,B;/ 电平 “u” 代表负电平; “n” 代表 正电平;v为v脉冲;B为B脉冲;abe为计数变量 printf("输入数据:n"); scanf("%s",s);/扫描数据c=strlen(s);/得出S的长度for(i=0;i<=c;i+)/转
4、为 AMI码, 即“”码变为“”、“”交替脉冲if(si=1) a+;If(a%2) si=n1;else si=u1;for(i=0;i<=c;i+)/加v, 消除长连四个“”现象if(si=0)b+;if(b=4)e+;if(e%2)si=nv;else si=uv;/实现极性交替else b=0;for(i=4;i<=c;i+)/加uB, 使相邻的破坏点之间有奇数个“”码if(si=nv&&si-4=u1)si-3=nB;if(si= uv&&si-4= n1) si-3=uB;/*- -*/for(i=4;i<=c;i+)/最终的HDB3码;if(si=nv|si=nB) si=n1;if(si=uv|si=uB) si=u1;printf("%sn",s);