0 引言
HDB3码(High Density Bip01ar Code of threecodes,三阶高密度双极性码)是串行数据传输的一种重要编码方式,也是数字通信系统中重要组成部分之一。和最常用的NRZ码(Non—Return Zero,非归零码)相比,HDB3码具有很多优点,例如:消除了NRZ码的直流成分,具有时钟恢复和更好的抗干扰性能,这使它更适合于长距离信道传输。同时,HDB3码具有较强的检错能力,当数据序列用HDB3码传输时,若传输过程中出现单个误码,其极性交替变化规律将受到破坏,因而在接收端根据HDB3码这一独特规律特性,可检出错误并纠正错误,同时HDB3码方便提取位定时信息。因而HDB3码作为数据传输的一种码型,应用广泛,成为ITU推荐使用的码型之一。HDB3码编译码器的实现有多种途径,常用的解决方案是应用专用的HDB3收发芯片,如选用专用E1收发芯片DS2153Q和单片机实现该码制的转换功能。本文提供了一种利用现代EDA技术,以ACEX系列FPGA芯片EPlK10为硬件平台,以Quartus II为软件平台,以VHDL,为开发工具,适合于FPGA实现的HDB3编码器的设计方案。
1 HDB3码的编码规则
HDB3码的编码规则如下:
(1)将消息代码变换成AMI码;
AMI码(Alternate Mark Inversion)全称是传号交替反转码。这是一种将消息代码0和1按如下规则进行编码:代码0仍变换为传输码0,而把代码中的1交替地变为传输码的+1,-1,+1,-l,……。
(2)检查AMI码中的连0情况,当无4个或4个以上的连0串时,则保持AMI的形式不变;若出现4个或4个以上连0串时,则将1后的第4个0变为与前一非O码(+1或-1)同极性的符号,用V表示(+n己为+V,-n己为-V)。
(3)检查相邻v码间的非0码的个数是否为偶数,若为偶数,则再将当前的V码的前一非0码后的第1个0变为+B或-B码,且B的极性与前一非O码的极性相反,并使后面的非0码从V码开始再交替变化。
NRZ码转换为HDB3码的过程如表l举例所示。
2 HDB3编码器的建模与实现
如果直接将要进行编码的数据按上述编码原则先转换成AMI码,然后进行加v码,加B码操作,会发现转化成AMI码时有一个“+1”“一1”码极性形成的过程,而在加B码操作之后,非零码元相应极性还有可能进行反转,因此有两个信号极性产生的过程。
分析HDB3的编码结果:V码的极性是正负交替的,余下的1码和B码看成为一体也是正负交替的,同时满足V码的极性与前面的非零码极性一致。由此产生了利用FPGA进行HDB3码编码的思路:先进行加V码,加B码操作,在此过程中,暂不考虑其极性,然后将V码,1码和B码分成两组,分别进行极性变换来一次实现。这样可以提高系统的效率,同时减小系统延时。
HDB3编码器的数字电路部分由三个模块组成:V码产生单元(v Gen),B码产生单元(B Gen),单极性一双极性转换单元(single2double),其结构图如图1所示。
2.1 V码产生单元(V_Gen)
V码产生单元的功能实际上就是对消息代码里的四连0串的检测,即当出现四个连0串的时候,把第四个0码变换成V码,而在其他情况下,则保持消息代码的原样输出。为了为以后的编码过程提供方便,将原信号中的一位码元用2位二进制传输码表示,在进行加V码时,统一用“11”标识之,原l码用“01”标识,0码用“00”标识。图2所示为V码产生单元的工作流程图。
原信号NRZ_in通过V码产生单元(V_Gen)后的信号V_Gen_out波形如图3所示:
2.2 B码产生单元(B_Gen)
B码产生单元的功能是保证附加V码后的序列不破坏“极性交替反转”形成的无直流特性,即当相邻V码之间有偶数个非0码的时候,把后一小段的第1个0变换成一个非破坏符号一B码。因此,在判断某一0是否应被转化为B时,首先应保证其后第三位码元为V码元,因此,必须对当前码元进行暂存,等待其后第三位码元的到来。为实现此目的,首先把码元(经插V处理过的)放入一个3位的移位寄存器里,在同步时钟的作用下,同时进行是否加B码的判决,等到码元从移位寄存器里出来的时候,就可以决定是应该变换成B码,还是照原码输出。图4所示为B码产生单元的工作流程图。
来源:电子技术