基于FPGA的HDB3码的编译码器与译码器设计(软件设计)(4)

2019-04-01 16:42

基于FP GA的HDB3码的编码器与译码器设计(软件设计)

2.3 HDB3码的译码规则

HDB3码的译码是编码的逆过程,其译码相对于编码较简单。从其编码的原理可

知,每一个破坏符号V总是与前一个非0符号同极性,因此,在HDB3码序列中,容易识别V符号,同时也肯定V符号及其前面的3个符号必是连0符号,这样就恢复成了4个连0码,然后再将所有的-1变成+1后便得到了原消息代码。举例如表2.1所示:

表2.1 HDB3码的译码规则

HDB3 +1 0 -1 0 +1 -1 0 破坏符V,B 译码 0 0 -1 +1 0 0 +1 -1 0 +1 1 -V +B +V 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 2.4 HDB3码的检错能力

HDB3码具有较强的检错能力,当数据序列用HDB3码传输时,若传输过程中出现单个误码,其极性交替变化规律将受到破坏,因而在接收端根据HDB3码这一独特规律特性,可检出错误并纠正错误,同时HDB3码方便提取位定时信息。因而HDB3码作为数据传输的一种码型,应用广泛,成为ITU推荐使用的码型之一。

12

基于FP GA的HDB3码的编码器与译码器设计(软件设计)

第三章 HDB3编码器的FPGA实现

3.1 HDB3码编码器的实现分析

在数字基带传输系统中,从信号源输出的信号一般是用“0”和“1”两种状态表示的单极性NRZ码。因此看来,HDB3编码器的主要转换对象就是NRZ码。由HDB3码的编码规则可知,编码器的主要工作就是按AMI码对信号进行编码,判断是否应该加入破坏符V,V加入后是否应该补B,由于需要检查到四位连“0”才能进行加V补B的操作,这样用于存放数据的移位寄存器就不能少。这个设计的难点在于加V和补B的判决。

3.2 HDB3码编码器的设计思路

3.2.1 4连‘0’的检出加V及判‘1’极性

当输入遇到4连“0”时,按编码规则,须以000V或B00V取代。因此需要先有一个4连“0”检出模块。该模块检出4连“0”时,产生一个加V信号,把V取代最后一个“0”,同时根据前一个“1”的极性判断下一个V的极性。当输入为“1”时,就按AMI码判断其极性。 3.2.2 取代节的选取

当检出4连“0”时,除了加V外,还须考虑是要用B取代第一个“0”,还是保持第一个“0”不变地输出。可以在加入的两个V之间去判断“1”的个数是奇数个还是偶数个,去判断加B还是保持“0”码。若须要加B,则进行加B的操作,同时判断B的极性。其极性可根据B00V来决定,因为B00V中B跟V是同极性的而与前一个“1”极性是相反的。

整体思路原理框图如图3.1所示

4连“0”的检出加V补BNRZHDB3AMI编码时延

图3.1 HDB3编码器实现原理框图

加B00V还是000V,可根据如下表3.1所示的相关极性关系进行判断

13

基于FP GA的HDB3码的编码器与译码器设计(软件设计)

表3.1 取代节极性判决

V的前一个“1”的极性 V的极性 两个V之间“1”奇偶个的+ + 偶数个 - - 偶数个 + + 奇数个 - - 奇数个 数的判断 取代节 B00V -BOO-V 000V 000-V 3.3设计建模

由于HDB3码是双极性的,而FPGA只能进行单极性处理。因此须把HDB3码的双

极性变换为单极性,以便FPGA器件对其进行处理。将HDB3码的“+1”、“0”、“-1”用数字信号1,0重新编码,用01编码“+1”,用00编码“0”,用11编码“-1”。如表3.1所示,其中低位与其本来数值相符,高位则以0来标识“+”,用1来标识“-”。

表3.1 HDB3的码元重新编码

HDB3码元 +1 0 -1 自定单极性标识 01 00 11

因此在最后,还须接外部电路,把单极性转换为双极性输出。比如利用一个四选一的数据选择器CC4052(其功能如表3.2所示),二维数组作为CC4052的的选择地址,在输出端out可以得到符合规则的“+1”、“-1”、“0”变化波形

14

基于FP GA的HDB3码的编码器与译码器设计(软件设计)

表3.2 CC4052功能表

输入 INH L L L L H A1 L L H H X A0 L H L H X IO/O导通通道 ??O/I O/O1??O/I /O2??O/I /O3??O/I 无 把得到的两个输出的分别接到A1,A0作地址控制端,便可使其输出相应电平。 3.3.1插“V”码模块设计及仿真

插“V”码实际就是对消息代码里的的连0串进行检测,当出现四个连0串的第四个“0”码变换成“V”码,其它码元保持消息代码的原样输出。由于信号插“V”之后不仅有“0”、“1”还有破坏符“V”,因此需要两个比特位来进行编码,在本模块中用“00”表示码元“0”,用“01”表示码元“1”,“10”表示“V”信码。

图3.2 插“V”码模块连接图

以下给出实现添加破坏符号“V”功能的源程序代码 Library ieee;

Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity hdb3plusv is

Port(clk :in std_logic; ---系统时钟输入 Datain :in std_logic; ---基带信号输入

Plusvout :out std_logic_vector(1 downto 0); ---插“V”处理后输出 End hdb3plusv;

Architecture behave of hdb3plusv is

15

基于FP GA的HDB3码的编码器与译码器设计(软件设计)

Signal plusvregh : std_logic_vector(3 downto 0); Signal plusvreg1 : std_logic_vector(3 downto 0); Signal dataregn : std_logic_vector(2 downto 0); Begin Process(clk) Begin

If clk’event and clk=’1’ then If datain=’1’ then

Dataregn<=’0’ & dataregn(2 downto 1); Else

Dataregn<=’1’ & dataregn(2 downto 1);

End if; End process; Process(clk) Begin

If cld’event and clk=’1’ then

---在编码中,基带信号的“0”,用“00”来表示 ---基带信号的“1”,用“01”来表示 ---插“V”符号,用“10”来表示 ---检测到4个连0,则转化为“10”

If (datain=’0’) and (dataregn=”111”) and (plusvregh(3 downto 1)=”000” then Plusvregh<=’1’ & plusvregh(3 downto 1); Plusvreg1<=’0’ & plusvregh(3 downto 1); --否则,如果是“1”,则转化为“01” Elsif datain=’1’ then

Plusvregh<=’0’ & plusvregh(3 downto 1); Plusvreg1<=’1’ & plusvreg1(3 downto 1); ---如果是“0”,则转化为“00” Elsif datain=’0’ then

Plusvregh<=’0’ & plusvregh(3 downto 1);

16


基于FPGA的HDB3码的编译码器与译码器设计(软件设计)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:计量经济学主要复习范围

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: