论文部分内容阅读
摘 要:HDB3码是数字基带通信系统中重要组成部分之一,因其具有无直流成份、检错能力强、具有时钟恢复性能等优点,故成为了ITU推荐使用的基带传输码型之一。在概述HDB3码及其编码规则的基础上,基于CPLD研究了HDB3编码器的建模与设计,以期为HDB3编码器的研究提供有益的参考。
关键词:数字基带通信;HDB3;CPLD;VHDL
随着现代计算机技术和微电子技术的快速发展,电子产品的开发速度随之越来越快,利用高层次的VHDL/Verilog HDL等硬件描述语言对新型器件CPLD/FPGA进行专门的集成电路设计,也越来越流行。随着VHDL等设计语言的流行,现代通信技术也进入了一个快速的发展阶段。数字通信是重要的现代通信技术,其具有许多优良特性。数字信息在传输方面,原理上其可直接表示为数字代码序列,但实际上一般要进行编码后以离散波形表示。这种离散波形一般可视系统要求和信道情况,表示为数字带通信号或数字基带信号。
一、HDB3码及其编码规则
在编码过程中,不同码型一般来说都具有不同的特点,故也有不同的应用场合。AMI码是一种无直流成分的传号交替反转的码型,其只有很小的低频成分,故一般比较利于在基带信道中传输信号。然而,AMI码在某些情况下则可能会出现四连零的现象,故对于接收端的定时提取信号时,这种现象是十分不利的。为了保持AMI码的优点而克服其缺点提出了HDB3码(High Density Bipolar Code of three codes,三阶高密度双极性码)。[3]
HDB3码是一种在数字基带通信系统中应用广泛的编码方式,属于AMI码的改进型,适用于串行数据传输。在HDB3中,"3阶"的含义是,限制连0数不超过3位。为减少连0数,有的做法采取"扰码",按一定规则将多个连0分散,尽量使码序列随机化。有效的办法是采用HDB_(n=1, 2, 3),一般多使用n=3,从而克服了AMI码长连0串现象,故HDB3码一般来说具有抗干扰性能强、无直流成分、具有时钟恢复、方便提取位定时信息等优点,与常用的非归零码(NRZ码)相比,其更适用于长距离的信道传输。此外,在检错能力方面,HDB3码也具有较强的能力,在用HDB3码传输数据序列的时候,如果在传输数据序列的过程中有单个的误码现象,那么便会破坏传输后数据序列的极性交替变化规律,故可根据这一特性,在接收端检测出误码,并对其进行纠正。
一般而论,HDB3码的编码规则为[4]:(1)按AMI码的编码规则将数据序列代码变换成AMI码。(2)在AMI码中检查连0现象,如果没有无4个以上(含4个)的连0串,则不改变原AMI码;如果出现4个以上(含4个)的连0串,则将原AMI码中1后的第4个0改为用V表示的与原AMI码中前一非0符号同极性的符号,即:对于+1则记为+V,对于-1则记为-V。(3)扫描相邻V符号间的非0符号的数量n,如果n为偶数,则再将当前的V符号的前一非0符号后的第1个0变为+B或-B符号,且B的极性与前一非0符号的极性相反,并使后面的非0符号从V符号开始再交替变化。
二、HDB3编码器的建模思想
从HDB3码的编码规则可见,由于涉及到由现在状态决定过去状态的问题,故而如何判决是否应该插"B"是HDB3编码器的设计难点之一。在实时信号处理领域,按照理论来说这个设计难点是难以解决的。然而,在实际电路领域,通过寄存器的方法则应该可以解决这一设计难点。这一方法实现插"B"功能的具体思路为:(1)先在寄存器中寄存信码;(2)设置一个计数器;(3)通过计数器来计算两个"V"之间"1"的数量;(3)经过4个码元时间后,通过判偶电路来判决是否要插"B",进而给寄存器发送是否要插"B"的判决符号。
因为如果依据编码规则按上述思路来做,则其实现电路的结构将非常复杂,寄存器的需求数量也会非常大,所以在进行实际的信号处理过程中,通常不能先把数据序列代码串变换成为AMI码后,再完成插"V"工作,接着再完成插"B"工作,之后再依据编码规则对其后的"+1"、"-1"的极性进行变换。然而,如果变一下顺序(先插"V",接着再插"B",最后实现单极性变双极性的信号输出),则会有如下好处:由于输入信号、插"V"处理信号、插"B"处理信号都是单极性信号,故寄存器的需求数量也会少很多。
从HDB3码的编码规则来说,另一个设计难点是如何在电路中实现的"1"、"V"和"B"的准确识别。因为在HDB3码的编码规则中,符号"V"、 符号"B"都是为了更好地描述编码而人为添加的标识符号,故其在电路中的逻辑电平的表现形式通常还是"1"。为解决这一设计难点,通常采用的方法是双相码。一般而论,双相码的编码规则是:分别利用具有两个不同相位的二进制代码去取代原来单个的二进制代码。例如对于二进制代码110010,其双相码为101001011001。这样采用双相码取代原二进制代码后,系统便能识别出电路中的"1"和符号"V"、 符号"B"的不同了。
三、HDB3编码器的建模与设计
通过上述的HDB3编码器建模思想分析,我们可知HDB3编码器的设计思路应该是:依据HDB3编码规则,在原数据序列代码的基础上,先进行插"V"操作,再进行插"B"操作,最后再将单极性信号转换成双极性信号。故本文所涉及的HDB3编码器的模型框图将会如图1所示。
图1 HDB3编码器的模型框图
由图1可见,本文所涉及的HDB3编码器包含插"V"模块、插"B"模块、单/双极性变换模块等三个功能模块。这三个功能模块之间通常会采用同步时钟且会带有异步复位端口(清零端口)。
1、插"V"模块
对于插"V"模块,从功能上来说,其实际上就是检测4个以上(含4个)的连0串。也就是说,如果出现4个以上(含4个)的连0串,则将原AMI码中1后的第4个0改为用V表示的与原AMI码中前一非0符号同极性的符号,即:对于+1则记为+V,对于-1则记为-V。而如果没有无4个以上(含4个)的连0串,则不改变原AMI码。同时,为了解决"1"、"V"和"B"的准确识别问题,用"11"标识"V",用"01"标识原AMI码中的"1",用"00"标识原AMI码中的"0", 其具体的流程图如图2所示。 图2 插"v"流程图
2、插"B"模块
对于插"B"模块,从功能上来说,其实际上就是保证附加"V"符号后的序列不破坏"极性交替反转"造成的无直流特性。也就是说,扫描相邻V符号间的非0符号的数量n,如果n为偶数,则再将当前的V符号的前一非0符号后的第1个0变为+B或-B符号,且B的极性与前一非0符号的极性相反,并使后面的非0符号从V符号开始再交替变化。同时,为了解决"1"、"V"和"B"的准确识别问题,用"11"来标识"V", 用"10"来标识"B",用"01"来标识原AMI码中的"1",用"00"来标识原AMI码中的"0"。
3、单/双极性变换模块
根据HDB3的编码规则,我们可以知道,"V"的极性是正负交替的,余下的"1"和"B"看成为一体且是正负交替的,同时满足"V"的极性与前面的非零码极性一致。由此我们可以将其分别进行极性变换来实现。从前面的程序我们知道,"V"、"B"、"1"已经分别用双相码"11"、"10"、"01"标识,"0"用"00"标识,所以通过以下的程序我们可以很容易实现。
根据编码规则:"B"符号的极性与前一非零符号相反,"V"极性符号与前一非零符号一致。因此将"V"单独拿出来进行极性变换,余下的"1"和"B"看成一体进行正负交替,这样就完成了HDB3的编码。这个部分遇到的难点在于:在quartusII软件仿真过程中,它无法识别"-1",在它的波形仿真中只有"1"和"0"。因此在这里我采用了双相码来分别表示"-1"、"+1"、"0"。要得到所需要的结果,仅仅在最后加一个硬件(如四选一数字开关CC4052)就可以将程序中所定义的"00"、"01"、"11"分别转换成"0"、"+1"、"-1",从而达到设计所需结果。
由上述的程序下载到FPGA或CPLD中,其输出结果并不是"+1"、"-1"、"0"的多电平变化波形,而是单极性双电平信号。事实上,上面的程序输出的是给单/双变换器的硬件电路地址信号。利用一个四选一的数据选择器CC4052,二维数组作为CC4052的选择地址,在输出端out可以得到符合规则的"+1"、"-1"、"0"变化波形。
4、HDB3编码器的仿真
将前三个程序用结构描述方式组装起来便可对其实现了整个设计模块,进而可以对HDB3编码器进行仿真。
在上述仿真结果中,输出波形相对于输入波形延时5个clk上升沿,第一个上升沿到来时,clr为高电平,输出为"0",所以codeout为"00";第二个上升沿到来时,输入为高电平,输出为"+1",所以codeout为"01";第三到第六个上升沿,输入为4连0,所以输出为0、0、0、+V,所以codeout为00、00、00、01;第七个上升沿到来时,输入为高电平,所以输出为"-1",所以codeout为"11";第八到第十一个上升沿,输入为4连0,因为此时两个V之间有一个"-1",所以输出为0、0、0、-V,所以codeout为00、00、00、11;第十二和第十三个上升沿,输入都是高电平,所以输出为"+1"、"-1",所以codeout为"01"、"11";第十四到第二十一个上升沿时,输入为8连0,前4个0中的V与上一个V中有"+1"与"-1",所以输出为+B、0、0、+V,所以codeout为01、00、00、01,后4个0中的V与上个V之间没有1,所以输出为-B、0、0、-V,所以codeout为11、00、00、11。
四、结语
一般而论,由于HDB3码具有无直流成份、低频成份少、频带较窄、可打破长连0、检错能力强、具有时钟恢复性能、提取同步方便等优点,故成为了ITU推荐使用的基带传输码型之一。鉴于HDB3码的明显优点,PCM系统各次群常采用其做接口码型标准。故此本文基于CPLD来研究HDB3编码器的建模与设计,以期为完成基带信号在信道中传输提供有益的参考。
参考文献:
[1]王光宇,张向东.一种使用VHDL语言实现HDB3编码的方法[J].通信技术,2007,(12).
[2]苗睿锋.NRZ-HDB3码转换器的高速长距离通信田[J].单片机与嵌入式系统应用,2004,(1).
[3]蒋青,吕诩.用可编程逻辑器件快速实现HDB3编码器[J].电子技术,2004,(7).
[4]程斌.三阶高密度双极性HDB3码编解码的VHDL设计及仿真[D].苏州大学,2008.
[5]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2006.
[6]樊昌信,张甫诩,徐炳祥等.通信原理[M].北京:国防工业出版社,2005.
作者简介:黄星,西安外事学院学生。
关键词:数字基带通信;HDB3;CPLD;VHDL
随着现代计算机技术和微电子技术的快速发展,电子产品的开发速度随之越来越快,利用高层次的VHDL/Verilog HDL等硬件描述语言对新型器件CPLD/FPGA进行专门的集成电路设计,也越来越流行。随着VHDL等设计语言的流行,现代通信技术也进入了一个快速的发展阶段。数字通信是重要的现代通信技术,其具有许多优良特性。数字信息在传输方面,原理上其可直接表示为数字代码序列,但实际上一般要进行编码后以离散波形表示。这种离散波形一般可视系统要求和信道情况,表示为数字带通信号或数字基带信号。
一、HDB3码及其编码规则
在编码过程中,不同码型一般来说都具有不同的特点,故也有不同的应用场合。AMI码是一种无直流成分的传号交替反转的码型,其只有很小的低频成分,故一般比较利于在基带信道中传输信号。然而,AMI码在某些情况下则可能会出现四连零的现象,故对于接收端的定时提取信号时,这种现象是十分不利的。为了保持AMI码的优点而克服其缺点提出了HDB3码(High Density Bipolar Code of three codes,三阶高密度双极性码)。[3]
HDB3码是一种在数字基带通信系统中应用广泛的编码方式,属于AMI码的改进型,适用于串行数据传输。在HDB3中,"3阶"的含义是,限制连0数不超过3位。为减少连0数,有的做法采取"扰码",按一定规则将多个连0分散,尽量使码序列随机化。有效的办法是采用HDB_(n=1, 2, 3),一般多使用n=3,从而克服了AMI码长连0串现象,故HDB3码一般来说具有抗干扰性能强、无直流成分、具有时钟恢复、方便提取位定时信息等优点,与常用的非归零码(NRZ码)相比,其更适用于长距离的信道传输。此外,在检错能力方面,HDB3码也具有较强的能力,在用HDB3码传输数据序列的时候,如果在传输数据序列的过程中有单个的误码现象,那么便会破坏传输后数据序列的极性交替变化规律,故可根据这一特性,在接收端检测出误码,并对其进行纠正。
一般而论,HDB3码的编码规则为[4]:(1)按AMI码的编码规则将数据序列代码变换成AMI码。(2)在AMI码中检查连0现象,如果没有无4个以上(含4个)的连0串,则不改变原AMI码;如果出现4个以上(含4个)的连0串,则将原AMI码中1后的第4个0改为用V表示的与原AMI码中前一非0符号同极性的符号,即:对于+1则记为+V,对于-1则记为-V。(3)扫描相邻V符号间的非0符号的数量n,如果n为偶数,则再将当前的V符号的前一非0符号后的第1个0变为+B或-B符号,且B的极性与前一非0符号的极性相反,并使后面的非0符号从V符号开始再交替变化。
二、HDB3编码器的建模思想
从HDB3码的编码规则可见,由于涉及到由现在状态决定过去状态的问题,故而如何判决是否应该插"B"是HDB3编码器的设计难点之一。在实时信号处理领域,按照理论来说这个设计难点是难以解决的。然而,在实际电路领域,通过寄存器的方法则应该可以解决这一设计难点。这一方法实现插"B"功能的具体思路为:(1)先在寄存器中寄存信码;(2)设置一个计数器;(3)通过计数器来计算两个"V"之间"1"的数量;(3)经过4个码元时间后,通过判偶电路来判决是否要插"B",进而给寄存器发送是否要插"B"的判决符号。
因为如果依据编码规则按上述思路来做,则其实现电路的结构将非常复杂,寄存器的需求数量也会非常大,所以在进行实际的信号处理过程中,通常不能先把数据序列代码串变换成为AMI码后,再完成插"V"工作,接着再完成插"B"工作,之后再依据编码规则对其后的"+1"、"-1"的极性进行变换。然而,如果变一下顺序(先插"V",接着再插"B",最后实现单极性变双极性的信号输出),则会有如下好处:由于输入信号、插"V"处理信号、插"B"处理信号都是单极性信号,故寄存器的需求数量也会少很多。
从HDB3码的编码规则来说,另一个设计难点是如何在电路中实现的"1"、"V"和"B"的准确识别。因为在HDB3码的编码规则中,符号"V"、 符号"B"都是为了更好地描述编码而人为添加的标识符号,故其在电路中的逻辑电平的表现形式通常还是"1"。为解决这一设计难点,通常采用的方法是双相码。一般而论,双相码的编码规则是:分别利用具有两个不同相位的二进制代码去取代原来单个的二进制代码。例如对于二进制代码110010,其双相码为101001011001。这样采用双相码取代原二进制代码后,系统便能识别出电路中的"1"和符号"V"、 符号"B"的不同了。
三、HDB3编码器的建模与设计
通过上述的HDB3编码器建模思想分析,我们可知HDB3编码器的设计思路应该是:依据HDB3编码规则,在原数据序列代码的基础上,先进行插"V"操作,再进行插"B"操作,最后再将单极性信号转换成双极性信号。故本文所涉及的HDB3编码器的模型框图将会如图1所示。
图1 HDB3编码器的模型框图
由图1可见,本文所涉及的HDB3编码器包含插"V"模块、插"B"模块、单/双极性变换模块等三个功能模块。这三个功能模块之间通常会采用同步时钟且会带有异步复位端口(清零端口)。
1、插"V"模块
对于插"V"模块,从功能上来说,其实际上就是检测4个以上(含4个)的连0串。也就是说,如果出现4个以上(含4个)的连0串,则将原AMI码中1后的第4个0改为用V表示的与原AMI码中前一非0符号同极性的符号,即:对于+1则记为+V,对于-1则记为-V。而如果没有无4个以上(含4个)的连0串,则不改变原AMI码。同时,为了解决"1"、"V"和"B"的准确识别问题,用"11"标识"V",用"01"标识原AMI码中的"1",用"00"标识原AMI码中的"0", 其具体的流程图如图2所示。 图2 插"v"流程图
2、插"B"模块
对于插"B"模块,从功能上来说,其实际上就是保证附加"V"符号后的序列不破坏"极性交替反转"造成的无直流特性。也就是说,扫描相邻V符号间的非0符号的数量n,如果n为偶数,则再将当前的V符号的前一非0符号后的第1个0变为+B或-B符号,且B的极性与前一非0符号的极性相反,并使后面的非0符号从V符号开始再交替变化。同时,为了解决"1"、"V"和"B"的准确识别问题,用"11"来标识"V", 用"10"来标识"B",用"01"来标识原AMI码中的"1",用"00"来标识原AMI码中的"0"。
3、单/双极性变换模块
根据HDB3的编码规则,我们可以知道,"V"的极性是正负交替的,余下的"1"和"B"看成为一体且是正负交替的,同时满足"V"的极性与前面的非零码极性一致。由此我们可以将其分别进行极性变换来实现。从前面的程序我们知道,"V"、"B"、"1"已经分别用双相码"11"、"10"、"01"标识,"0"用"00"标识,所以通过以下的程序我们可以很容易实现。
根据编码规则:"B"符号的极性与前一非零符号相反,"V"极性符号与前一非零符号一致。因此将"V"单独拿出来进行极性变换,余下的"1"和"B"看成一体进行正负交替,这样就完成了HDB3的编码。这个部分遇到的难点在于:在quartusII软件仿真过程中,它无法识别"-1",在它的波形仿真中只有"1"和"0"。因此在这里我采用了双相码来分别表示"-1"、"+1"、"0"。要得到所需要的结果,仅仅在最后加一个硬件(如四选一数字开关CC4052)就可以将程序中所定义的"00"、"01"、"11"分别转换成"0"、"+1"、"-1",从而达到设计所需结果。
由上述的程序下载到FPGA或CPLD中,其输出结果并不是"+1"、"-1"、"0"的多电平变化波形,而是单极性双电平信号。事实上,上面的程序输出的是给单/双变换器的硬件电路地址信号。利用一个四选一的数据选择器CC4052,二维数组作为CC4052的选择地址,在输出端out可以得到符合规则的"+1"、"-1"、"0"变化波形。
4、HDB3编码器的仿真
将前三个程序用结构描述方式组装起来便可对其实现了整个设计模块,进而可以对HDB3编码器进行仿真。
在上述仿真结果中,输出波形相对于输入波形延时5个clk上升沿,第一个上升沿到来时,clr为高电平,输出为"0",所以codeout为"00";第二个上升沿到来时,输入为高电平,输出为"+1",所以codeout为"01";第三到第六个上升沿,输入为4连0,所以输出为0、0、0、+V,所以codeout为00、00、00、01;第七个上升沿到来时,输入为高电平,所以输出为"-1",所以codeout为"11";第八到第十一个上升沿,输入为4连0,因为此时两个V之间有一个"-1",所以输出为0、0、0、-V,所以codeout为00、00、00、11;第十二和第十三个上升沿,输入都是高电平,所以输出为"+1"、"-1",所以codeout为"01"、"11";第十四到第二十一个上升沿时,输入为8连0,前4个0中的V与上一个V中有"+1"与"-1",所以输出为+B、0、0、+V,所以codeout为01、00、00、01,后4个0中的V与上个V之间没有1,所以输出为-B、0、0、-V,所以codeout为11、00、00、11。
四、结语
一般而论,由于HDB3码具有无直流成份、低频成份少、频带较窄、可打破长连0、检错能力强、具有时钟恢复性能、提取同步方便等优点,故成为了ITU推荐使用的基带传输码型之一。鉴于HDB3码的明显优点,PCM系统各次群常采用其做接口码型标准。故此本文基于CPLD来研究HDB3编码器的建模与设计,以期为完成基带信号在信道中传输提供有益的参考。
参考文献:
[1]王光宇,张向东.一种使用VHDL语言实现HDB3编码的方法[J].通信技术,2007,(12).
[2]苗睿锋.NRZ-HDB3码转换器的高速长距离通信田[J].单片机与嵌入式系统应用,2004,(1).
[3]蒋青,吕诩.用可编程逻辑器件快速实现HDB3编码器[J].电子技术,2004,(7).
[4]程斌.三阶高密度双极性HDB3码编解码的VHDL设计及仿真[D].苏州大学,2008.
[5]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2006.
[6]樊昌信,张甫诩,徐炳祥等.通信原理[M].北京:国防工业出版社,2005.
作者简介:黄星,西安外事学院学生。