基于EDA技术的HDB3编码器的设计与实现
扫描二维码
随时随地手机看文章
摘要:HDB3码是数字基带通信系统中重要组成部分之一,因其具有无直流成份,检错能力强,具有时钟恢复性能等优点,成为ITU推荐使用的基带传输码型之一。首先介绍了HDB3编码的原理和方法,提出了一种基于EDA技术实现的HDB3编码器的方法,具有电路简单,成本低,开发周期短,执行速度高,升级方便等特点。
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码的过程如表1举例所示。
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码产生单元的工作流程图。
经加v后信号V_Gen_out通过B码产生单元(B_Gen)后的信号B_Gen_out波形如图3所示。
2.3 单极性-双极性转换单元(singIe2doubIe)
根据HDB3的编码规则,我们可以知道,V码的极性是正负交替的,余下的1码和B码看成为一体且是正负交替的,同时满足V码的极性与前面的非零码极性一致。由此我们可以将其分别进行极性变换来实现。从前面的程序知道,“V”、“B”、“1”已经分别用双相码“11”、“10”、“01”标识之,“0”用“00”标识,所以通过以下的程序我们可以很容易实现。图5是所示为单极性一双极性转换单元的工作流程图。
经过单极性一双极性转化单元,+1(包括“+1”、“+V”、“+B”)用2位二进制码“01”表示,-1(包括“-1”、“-V”、“-B”)用2位二进制码“11”表示,0用2位二进制码“00”表示,这样编码的好处是,当我们把编码形成的二位二进制码的高位视为有符号数的符号位时,“O1”、“11”、“00”分别对应+1、-1、0.这样方便我们观察仿真结果。经加B后信号B_Gen_out通过单极性一双极性转换单元(single2double)后的信号Code out波形如图3所示。
3 实现单/双极性变换的硬件电路
将上述的程序下载到可编程器件中,产生的编码结果是单极性双电平信号。此信号还不是真正意义上的HDB3码,需要将上述编码转换成“+1”、“-1”、“0”的多电平变化波形,而此工作单纯依靠数字电路是无法完成的。比较直接的方式,就是利用编码结果,控制多路模拟选择开关来实现,如利用双4选一的多路模拟选择开关CD4052,其功能表如表2所示。
如图6所示是利用多路模拟选择开关CD4052实现电平转换的电路连接图,图中HDB3_out即为最终形成的标准HDB3码流。
4 结束语
EDA技术本身是一种工业生产技术,在实践中运用基于硬件描述语言的可编程芯片开发技术可对通信系统中的相关电路进行硬件描述,然后用CPLD/FPGA实现数字通信系统,同时结合电子设计自动化和电路仿真技术即可缩小产品的设计周期,降低可能发生的错误,提高通信产品的开发效益。
实践表明,运用FPGA来实现NRz码到HDB3码的转换比采用专用集成电路不仅给调试带来了方便,克服了分立硬件电路带来的抗干扰差和不易调整等缺陷,而且具有软件开发周期短,成本低,执行速度高,实时性强,升级方便等特点。而且可以把该电路和它的解码电路及其他功能电路集成在同一块FPGA芯片中,减少了外接元件的数目,提高了集成度,而且有很大的编程灵活性,很强的移植性,因此有很好的应用前景。
参考文献:
[1].DS2153Qdatasheethttp://www.dzsc.com/datasheet/DS2153Q_266909.html.
[2].CPLDdatasheethttp://www.dzsc.com/datasheet/CPLD_1136600.html.
来源:风中的叶子2次