原创 VHDL实现HDB3编码

2010-3-4 13:24 2285 2 2 分类: FPGA/CPLD

HDB3 码是数字基带传输系统中的常用码型,其全称是3阶高密度双极性码,它是AMI 码的一种改进型。


其编码规则如下:


(1)当么有4个过4个以上连0串时,仍按AMI 码的规则进行编码,即传号极性交替;


2)当出现4个或4个以上连0串时,则将第4 个“0”改为非“0”脉冲,记为+V 或-V,称之为破坏脉冲。相邻V 码的极性必须交替出现,以确保编码码无直流特性;


(3)为了便于识别,V 码的极性应与其前一个非“0”脉冲的极性相同,否则,将四连“0”的第一个“0”更改为与该破坏脉冲相同极性的脉冲,并记为+B 或-B;


(4)破坏脉冲之后的传号码极性也要交替。例如:


代码: 1000 0 1000 0 1 1 000 0 l 1


AMI 码: -1000 0 +1000 0 -1 +1 000 0 -1 +1


HDB3 码: -1000 -V +1000 +V -1 +1 -BOO -V +l -1


从上述原理可以看出:每一个破坏符号V总是与前一非0符号同极性(包括B在内)。在译码时根据这一原则,可以从待解码符号序列中容易找到破坏符号V,于是也断定V符号及其前面的3个符号必是连0符号,从而,恢复4个连0码,再将所有-1变成1后便得到原信息代码。HDB3 码保持了AMI 码的优点外,同时还将连“0”码限制在3 个以内,故有利于位定时信号的提取。


编程思想:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


首先将代码进行AMI编码,然后判断加V,加B。如果有四个连0出现,即cnt_0=3(第四个0)时,进行加V,否不加VV的符号跟前一非0的符号相同(包括加B后)。如果已经有加V后,为了保证V的“极性交替反转”,两个V之间的非0个数如为偶数则加B,否不加B。也即根据在V之前判定前一非0符号的正负性判定加B即可。如+V前,pre_nz=’1’,则加-B,否不加B;如-V前,pre_nz=’0’,则加+B,否不加BAMIVB符号的正负都是通过设立信号变量来确定的。最后根据得出的codeout_b码型确定HDB3codeout的输出:


 




codeout_b


 codeout


  代表码


“000”


   00


     0


“001”、“010”、“011


01


-1


100”、“101”、“110”、“111


10


     +1


 

max+plus ii 仿真结果如下:

 

(a)<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />点击看大图

 

(b)点击看大图

 

pdf  password: myworks

 

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /2 下一条