基于FP GA的HDB3码的编码器与译码器设计(软件设计)
When “010”=> Plusout<=’1’; Minusout<=’0’;
Parity<=not parity;---出现“01”时,下次正/负电平信号发生交替 When “101”=> Plusout<=’1’; Minusout<=’0’;
Parity<=parity;---出现“10”时,下次正/负电平信号不发生交替 When “100”=> Plusout<=’0’; Minusout<=’1’;
Parity<=parity;--- 出现“10”时,下次正/负电平信号不发生交替 When “111”=> Plusout<=’1’ Minusout<=’1’;
Parity<=not parity;---出现时,下次正/负电平信号发生交替 When “110”=> Plusout<=’1’; Minusout<=’1’;
Parity<=not parity;---出现“11”时,下次正/负电平信号发生交替 When others=> Plusout<=’0’; Minusout<=’0’; Parity<=parity; End case; End if; End process; End behave;
22
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
仿真结果图
图3.7 HDB3双单极性转化仿真波形图
由上图可以看出,出现“V”与前面的非“0”符号的极性相同,“1”与“B”符号的极性与前面的非“0”符号的极性相反,至此HDB3编码器得到验证。
23
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
第四章 HDB3译码器的FPGA实现
4.1 译码器的实现分析
由编码原理可知,只要将HDB3码中的V、B变成0、1,就可以实现译码。根据前面的HDB3编码输出“V”码的极性与前面的非“0”码的极性相同,当FPGA检测到相邻2个非“0”符号极性相同时,就可以判断出前非“0”符号为“V”符号。再判断与“V”码相邻的非零码是“1”还是“B”码。根据“V”码与它前面的3位的寄存器的值则可以知道,当3位数据都为“0”时,则“V”码前的非零信号为基带信号“1”,如果与“V”码相邻的前面2位寄存器的值为“0”,则“V”码前的非零信号即为补信码“B”。在译码模块如果检测到两路极性输入分别为“X1001”和“X0000”,则认为在HDB3的编码中出现了“B00V”;如果检测到两路极性输入分别为“10001”和“00000”在,则认为在HDB3的编码中出现了“000V”,就可译码出4个连零的消息码;如果HDB3编码序列中没有四个连零出现,其对应的HDB3码具有极性交替的信息码。图4.1为HDB3译码器的译码流程图。
开始前后极性是否一致Y是否有极性输入N用“0000”取代加“1”加“0”输出信码
图4.1 HDB3译码器的译码流程
4.2 HDB3译码器的设计思路
根据HDB3码的编码规则,V脉冲的极性必然和前面非0脉冲的极性一致。而当无V脉冲时,HDB3码的脉冲时“+1”和“-1”交替出现的。而当连续出现两个“+1”或
24
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
“-1”时,若无误码时,则可知最后一个一定是V脉冲。因而可从所接收的信码中找到V码,然后根据加取代节的原理,在V码前面的三位代码必然是取代码,在译码时,需要全部复原为四个连“0”。只要找到V码,不管V码前面两个码元是“0”码,还是3个“0”码,只要把它们全部清零,就完成了扣V和扣B的功能,进而得到原来的二元信码序列,实现HDB3码译码的模型如图4.2所示:
HDB3双相码NRZ双/单极性变换检测V和扣V扣B
图4.2 HDB3码译码器模型框图
4.3 V的检测
经过整流电路的处理,把HDB3码分成两列序列。一列只含有正脉冲编码,另一列则只有负脉冲编码。同时对两条脉冲进行检验,监察任一条脉冲序列两个相邻脉冲之间的传输时间内,另一个脉冲序列是否有脉冲存在,若没有脉冲存在,则说明受监察的序列存在破坏符V,且为两个相邻脉冲的后一个脉冲。通过V的检测后,可把两序列相加在一起,以单极性输出。
4.4 扣V扣B
在上一节经过V的检测,若判断出V的存在,就把V跟前三个码都清零。在没有误码的情况下,B只会以B00V的形式出现,因此出现V时,不管有没有B,只需把前面三位清零即可实现译码操作。
4.5 设计建模
HDB3译码器设计主要是根据HDB3编码输出“V”的符号的极性与前面的非“0”符号的极性相同,当FPGA检测到相连2个非“0”符号的极性相同时,就可以判断出前面非“0”符号位符号“V”,据此把它连同前面3位的寄存器的值为“0”。经过“V”的判断与重新置“0”后,如果还有非“0”符号,则该非“0”符号即为基带信号的“1”。图4.3为译码模块连接图
25
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
图4.3 HDB3译码模块连接图
4.5.1扣V扣B的实现
这个模块的工作是把V码、误码检测模块的输出dataout的低位加到4位移位寄存
器作延时输出,对输入进行分析,若是“10”,即有破坏符V, 把寄存器最后一位清零输出,反之,则按原样输出。程序流程图如图4.3所示
StartNCodeoutv=“10”S4(0)=“0”S4(0)=S3(0)Codeout=S4(0) 图4.3 扣V扣B的流程图
4.6 软件仿真
对编写好的VHDL程序进行仿真,仿真结果如下图所示
图4.4 HDB3码译码器仿真波形图
26