1、 基于 FPGA的 HDB3编解码器的设计 摘 要: 本文简要介绍了 HDB3 的基本原理和结构,分析了现有的 HDB3 编码器和译码器的缺点,然后提出了一个基于 FPGA 的 HDB3 编码器和译码器的新的设计,并介绍了硬件设计电路和软件仿真。在 Quartus7.2 的开发环境中,通过 VERILOG-HDL 在EP2C35F672C8 CycloneII 系列的芯片上来实现仿真。结果表明,本设计满足 HDB3 编码器和译码器的要求,具有简易的硬件电路和灵活可变的软件,运算快速,可以用在特定的通信系统。 关键词: FPGA; HDB3;编 码器和译码器 I. 介 绍 通信链路的编码研究是现
2、代数字通信技术的重要课题。行模式选择正确时,有利于提高通信质量,改善传输性能和扩展传播距离。 HDB3(高密度双相码 )被称为高角度双相编码,它甚至被允许“ 0”数量最大不超过 3,这有利于定时信号的复位。因为它使用极性逆转,基带信号没有直流分量,且非常小的低频成分,这个曼彻斯特代码有一个特定的错误检测能力,而且非常容易解码。现在,这个代码被广泛用于数字移动通信、数字光纤通信和数字微波通信系统,这是一个现代数字通信系统的主要组成部分。它也是一个数字光纤光学通讯设备 和 PCM 设备的接口模式, PCM 设备是 CCITT 推荐的 PCM 基础组、中等组和三组。因此,研究 HDB3 编解码器是至
3、关重要的。 II. HDB3 编码和解码的基本准则 HDB3 码是一种基于 AMl 的代码改进的双相 NRZ 码。当数据不会出现超过四个或含 0字符的四个字符时, HDB3 码是 AMI 码 (替代马克反演码 ),也就是说交替极性信号。当数据出现在四个以上或含 0 的四个以上字符时,首先字符根据 AMI 编码规则进行编码,然后遵循这些步骤。 第四个“ 0”必须改变为非“ 0”脉冲,标志着“ + V”或“ V”,也被称为“破坏性的脉冲”。至于 “ + V”或“ V”,其正极性和负极性应与原非极性的“ 0”的极性相同。与此同时,相邻的“ V”的标志交替变换极性,以确保代码没有直流组件。在本文中,字
4、符串“ 000V”被称为“破坏性序列”。当信号“ V”和另一个相邻的信号之间的非“ 0”的数目是单的时候,编译后的代码是 HDB3 编码。相反,第一个“ 0”在“破坏性序列”应当更换为“ +B”或“ -B”。对于“ +B”或“ -B”,它的正极性和负极性应当与前面的非“ 0”的相反,而非“ 0”的符号在“ V”的后面,然后开始变换。它的转换步骤见图 1。 图 1.HDB3 编码的格式 HDB3 码的解码是编码的逆过程,解码比编码更容易实现。可以看出编码规则,符号的破坏性脉冲极性总是与“ V”前一样,包括“ B”。因此,从 HDB3 的编码序列很容 易识别 “ V” 的符号。与此同时 ,可以得出
5、结论, “ V” 的标志和三个相邻符号必须是 0,所以它们可以恢复成四个相邻的 “ 0” 代码。然后所有的 “ -1” 变成 “ +1” ,这是可用的原始资料来源。 III. HDB3 编解码器的设计 目前,许多学者已经在设计和研究 HDB3编解码器。一方面是,堵塞 “ B” 后添加“ V” 。另一方面是 ,该变量的信号双极或单极输出在参考文献 1中实现。当破坏符号插入时 ,信号的极性在编程过程中预留一边。 该变量 双极或单极输出信号也在参考 文献 2中计算出来。 首先,四个相邻的 “ 0” 代码以及增加的 “ V” 被检测出来。此外 ,一个破坏性的序列判定电路被设计出来。最后, HDB3编码
6、获得。 基于 CD22103的 HDB3编解码器也被其他学者应用,这些设计方法大部分都基于 AMI编解码器的进化。 HDB3编解码器的规则一步一步进行到完全一致,过程复杂,缺乏优化。 插入 “ V”和 “ B” 在这个过程中没有分开 ,但这两个步骤在本文中通过设置的信号参数合并到一起 。根据实际需要, 已经插入的脉冲 “ V” 和 “ B” 分别被 “ + 1” 或 “ 1” 取代。在系统的编译过程中,字符串 “ 00” 是用来表示符号 “ 0” ,“ 01” 代表符号“ 0” ,“ 11” 被视为 “ -1” ,这是不同于其他 设计系统中的 增加脉冲 “ V”和插入脉冲 “ B” 后的 信号
7、极性判 断。 A.编码器的设计 HDB3编码电路方框图如 图 2所示,根据 HDB3规则进行编码。零界的检测首先通过输入 NRZ码来实现, 确定哪一个是四个 “ 0” 代码相邻的,相邻的四个 “ 0” 码将取代二进制序列 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 AMI 码 1 -1 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 1 编码的第一步 1 -1 1 0 0 0 V -1 0 0 0 -V 0 0 0 -V 1 编码的第二步 1 -1 1 0 0 0 V -1 0 0 0 -V B 0 0 V -1 破坏性的 “ 000V” 或 “ B00V”
8、序列。 第一个相邻的四个 “ 0” 代 码必须被摧毁的“ 000 V” 序列所取代,有两个逻辑电路的图插入 “ V” 脉冲和 “ B” 脉冲。一个是当输入信号序列是 AMI码 ,输入信号直接输出。另一个是当输入的信号数量是等于或大于 4, 4n(n = 1、 2、 N)空数字而不是 使用大规模数据,插入 “ V” 脉冲。 而 “ V”脉冲的位置仅仅是替代了空着的 第一个符号位,输出四个空字符串。在 “ B” 的脉冲填满了 HDB3码。根据破坏性序列的准则,决定 “ B” 脉冲是否插入 “ V” 信号脉冲。是否加入大量空号或者原来的数字是保留在第一个 4位空字符串中。同时 ,通过判断奇偶校验的非
9、零字符的数量,在两个破坏性脉冲之间选择哪一个破坏时序电路。最后 HDB3编码序列的电路输出扭转形成 交替, 输入序列和输出序列是串行输入和串行输出。 HDB3的编码可以通过可编程芯片 EP2C35F672C8来完成 ,两极的 HDB3编码 是通过外部电路对称的结构来完成,电路如图 3所示。 pin1和 pin2分别是正向和负向的单极输入脉冲,这是由晶体管、电阻和电容组成,极性是由结合了高低信号的 PNP型和 NPN型的基极和发射级而改变的。 图 2.HDB3编码电路的功能模块图解 图 3.HDB3编码的电路图 B.解码器的设计 HDB3解码是其逆变换, 这时 HDB3码会减少到一个二进制的 N
10、RZ码。 HDB3解码电路图如图 4所示。首先, HDB3编码及其逆变换通过一个平衡放大与非门的输出。然后,HDB3+和 HDB3-信号由双或单输出转换。因为破坏性脉冲对 HDB3编码的 影响 ,信号的互相及时转换不能用于两路二进制信号。因此 信号甚至可能是一个非连续 的两个脉冲信号,以免另一个等同于 “ 0” 。“ V” 脉冲的检测是两路脉冲,两路 二进制代码的双脉冲信号,这被称为 “ V” 脉冲。此外, NRZ信号输出的时间决定是否发送到与非门。 “ B” 脉冲和 “ V” 脉冲信号同时得到。最后综合两个从“ HDB3+”和“ HDB3-”输出的信号, “ V” 脉冲被减少到 NRZ信号。
11、 HDB3解码的电路图如图 5所示。 图 4.HDB3解码电路的功能模块图解 图 5.HDB3解码的电路图 图 6.编码流程图 图 7.解码流程图 编码和解码软件流程在图 6和图 7中。 verilog hdl仿 真程序的一部分编码和解码: 插入 “ V” 的过程。 always (clk=1) if (data_in=0 and sl3v(3 downto 1)=“000“) numv=1; judv=1;sl3v=(1 else numv=0; judv=0;sl3v=data_in The process of counting. if (judv=1) sl2v=“000“; else
12、 always (clk=1) if (sl2v=“111“) sl2v=sl2v; else sl2v=sl2v+1; The process of “V“ point tracking. if (numv=1) parv=0; else always (clk=1) if(data_in=1) parv=1; else parv=0; HDB3编解码器的实时仿真是通过 QartusII 7.2来实现的,包括输出仿真结果,波形是否完全符合 HDB3编解码器在图 8和图 9中的编码规则,编码频率 100MHZ是系统时钟输入。在图 8中 data_in1000011包括输入二进制代码的连续四个字
13、符 0。在HDB3编码的基础原则上,输出码转换数据输出 data_out是 11。 在图 9中输入系统时钟 ,时钟频率 100MHZ。 data0是 HDB3输入 代码类型, data1是 HDB3相反的代码, data_out是二进制输出流。 图 8.HDB3编码的仿真波形 图 9.HDB3解码的仿真波形 IV.结 论 FPGA技术用于数字通信 系统,用芯片可以实现多种数字逻辑功能并且由于灵活多变的方式而提高了工作效率。在本文中, HDB3编解码器的设计是基于 FPGA实现的。首先,硬件电路的设计以及电路的仿真由软件来完成, 因为它是由 很简单的硬件电路来演示的。当进行仿真的时候,添加脉冲
14、“ V” 和 “ B” 在一起。本设计使用的芯片是 Altera公司的 CycloneII系列,有强大的模拟功能。该系统基于光纤通信原理实验箱,有简单的硬件电路、 可擦写的 EP2C35F672C8芯片和编 译能力强的 verilog hdl语言,具有容易升级,高灵活性的特点。系统只有 12个存储单元和 12个寄存器,冗余少,运算速度快。本设计虽没有应用通信实验教学 ,但满足了实际的通信系统传输的编码要求,具有实际应用价值。 0 参考文献 1 WANG Guang-yu; ZHANG Xiang-dong.A New Method Using VHDL Language to Code the
15、 HDB3J.Communications Technology, vol.12, pp.21 14, December 2007. 2 Jia Huibin; Wang Lanxun. HDB3 Encoder and Decoder Based on FPGA. Electronic Science and Technology. pp.37 40, September 2005. 3 Jiang Qing,Lv Yi. Fast Implementation using programmable logic devices HDB3 EncoderJElectronic Technolo
16、gy. pp.21-23,July 2004. 4 Fang Zhihao,Zhu Qiuping. Optical Fiber CommunicationM.Wu Chang: Wuhan University Press,2004. 5 HuBei zhongyou technology ind.Communication theory test guide bookM:2003. 6 Wu Haitao,Chen Yingjun,Liang Yingchun.Design of HDB3 Codec Based on FPGAJ. Microcomputer Information, v
17、ol.6, pp.236 238, January 2008. 7 XU Jin.Design of a HDB3 Encoder Based on VHDL TechnologyJ. Communications Technology, vol.34, pp.28 31, August 2008. 8 WAND Su-zhen WAND Tao. A Way to Implement the HDB 3 Encoding-decoding Based on VHDL LanguageJ. Journal of Inner Mongolia Normal University(Natural
18、Science Edition)vol.35, pp.300 303, March 2007. 9 XIE Wu YANG Rui SHAO Xin. A simple method of HDB3 coding based on FPGAJ. Applied Science and Technology, vol.12, pp.16 18, May 2007. 10 QIAO Jihong, GU Weijuan. Circuit design of HDB3 based on CPLDJ.Journal of Beijing Technology and Business University: Natural Science Edition, vol.23, pp.50 52, January 2007