基于FPGA的HDB3码的编译码器与译码器设计(软件设计)
更新时间:2024-06-10 18:38:01 阅读量: 综合文库 文档下载
昆 明 学 院
2013 届毕业论文(设计) 论文(设计)题目 基于FPGA的HDB3码的编码器 与译码器设计(软件设计)
子课题题目
姓 名 周艳 学 号 201004090147 所属院系 自动控制与机械工程学院
专业年级 2010级通信技术1班
指导教师 任杰
2013年 5月
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
摘 要
HDB3码是基带传输码型之一,因为它具有无直流分量、低频分量少、连0数不超过3个这些特点,所以有利于信号的恢复和检验,所以HDB3码被广泛应用到井下电缆遥传系统以及高速长距离书记通信中等。FPGA具有成本低、可靠性高、开发周期短、可重复编程等特点。利用EDA技术,可对其实现硬件设计软件化,加速了数字系统设计的效率,降低了设计成本。本文先对HDB3码,FPGA器件和EDA技术的发展背景进行简述。接着阐述EDA技术中常用的VHDL语言的发展与优点,并以VHDL为核心,简要说明硬件电路的设计的方法步骤。然后介绍HDB3码的编译码原理以及其特点。最后,对HDB3码的编译原理进行重点分析,并且以VHDL语言为主,分别对编码器部分和译码器部分的具体实现方法进行说明,给出具体设计的思考方案和程序流程图,并对设计方案进行软件仿真,同时给出仿真结果并对其进行分析,证明设计方案的正确性。
关键词:HDB3码;FPGA;EDA;VHDL;编译码
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
Abstract
HDB3 code is one of codes used in the transmission system. It has no DC components
and a few of LF components. Moreover, it has continuous zeros no more than three. The features of HDB3 code help the signal to be rebuilt and be checked for error easily, so HDB3 code is the commonly used code in the transmission system. Low cost, dependability, short design cycle and repeated program ability are the features of FPGA. You can design hardware of digital circuits by using software as a result of using FPGA with EDA. It will construct the digital system quickly system quickly and reduce the cost of design.
This paper first introduces the development and background of HDB3.FPGA and EDA, and then expands VHDL. which is commonly used as design-entry language for EDA.A summary of digital circuits’ design by using VHDL is provided. Moreover, the principle and decoder is designed by using VHDL. Finally, the plan of design, the flow of software design and the simulated waveform of HDB3 encoder and decoder is presented, showing correctness of the design.
Keywords: HDB3 code; FPGA ; EDA ; VHDL; Encoder and Decoder
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
目录
第一章 概述 ............................................................. 1 1.1 HDB3码的简述 ........................................................ 1 1.2 FPGA简介 ............................................................ 2 1.2.1 FPGA的发展历程 .................................................... 2 1.2.2 FPGA基本结构及其特点 .............................................. 3 1.3 EDA技术 ............................................................. 4 1.4 VHDL硬件描述语言 .................................................... 4 1.4.1 简介 .............................................................. 4 1.4.2 VHDL具有的特点 .................................................... 5 1.4.3 VHDL的优点 ........................................................ 7 1.4.4 VHDL设计硬件电路的方法 ............................................ 7 第二章 HDB3码的编译规则 ................................................ 10 2.1主要的基带传输码型 .................................................. 10 2.1.1 NRZ码的编码规则 .................................................. 10 2.1.2 AMI码的编码规则 .................................................. 10 2.2 HDB3码的编码规则 ................................................... 11 2.3 HDB3码的译码规则 ................................................... 12 2.4 HDB3码的检错能力 ................................................... 12 第三章 HDB3编码器的FPGA实现 ........................................... 13 3.1 HDB3码编码器的实现分析 ............................................. 13 3.2 HDB3码编码器的设计思路 ............................................. 13 3.2.1 4连‘0’的检出加V及判‘1’极性 .................................. 13 3.2.2 取代节的选取 ..................................................... 13 3.3设计建模 ............................................................ 14 3.3.1插“V”码模块设计及仿真 ........................................... 15 3.3.2插“B”码模块设计及仿真 ........................................... 17 3.3.3 HDB3编码器的极性转换模块设计及仿真 ............................... 20 第四章 HDB3译码器的FPGA实现 ........................................... 24 4.1 译码器的实现分析 ................................................... 24 4.2 HDB3译码器的设计思路 ............................................... 24 4.3 V的检测 ............................................................ 25 4.4 扣V扣B ............................................................ 25 4.5 设计建模 ........................................................... 25 4.5.1扣V扣B的实现 .................................................... 26 4.6 软件仿真 ........................................................... 26 第五章 结论 ............................................................ 28 参考文献 ............................................................... 29 附录 ................................................................... 30 谢辞 ................................................................... 38
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
第一章 概述
1.1 HDB3码的简述
HDB3(High Density Bipolar of order 3code)码的全称是三阶高密度双极性码,又称为四连“0”取代码,它是一种AMI码的改进,保持了AMI码的优点而克服其缺点。 HDB3码因具有无直流成分,低频成分和连0个数最多不超过三个等明显优点,对定时信号的恢复十分有利,而成为普遍使用的基带传输码型之一。在数字传输系统中,其传输对象通常是二元数字信息。一般使用有限的离散的波形来表示数字信息。这些离散波形可以是未经调制的不同电平信号,也可以是调制后的信号形式。由于未经调制的电平脉冲信号所占据的频带通常从直流和低频开始,因而成为数字基带信号。数字基带信号是数字信息的电脉冲表示,不同形式的数字基带信号(又称为码型)具有不同的频谱结构,合理地设计数字基带信号以使数字信息变换为适合给定信道传输特性的频谱结构,是基带传输首要考虑的问题。
实际上,在数字设备内部用导线连接起来的各器件之间就是用一些最简单的数字基带信号来传送定时和信息的。当数字信号进行行距离传输时,高频分量的衰减随距离的增大而增大,电缆中线对之间的电磁辐射也随着频率的增高而加剧,从而限制信号的传输距离和传输质量,同时信道中往往还存在隔直流电容和耦合变压器,他们不能传输直流分量及对低频分量有较大的衰减,因此对于一般信道高频和低频部分均是受限的。
对于以上信道,要求所使用传输码型的频谱不含直流分量,并且低频分量和高频分量都很少。传输码型中应含有定时时钟信息,以利于接收端提取定时时钟,在基带传输系统中,定时信息是在接收端恢复原始信息所必需的。在一般传输系统中为了节省频带从而不传输定时信息,必须在接收端从相应的基带信号中加以提取。实际传输中希望能及时监视误码,如果传输码型有一定的规律性,那么就可以根据这一规律性来检测传输的质量,以便做到自动监测,因此,传输码型应具有一定的误码检测能力。当然,对传输码型的选择还需要编码和译码设备尽量简单等要求,但以上的几点是最主要的额考虑因素。
HDB3码又叫三阶高密度双极性码(High Density Bipolar),是在AMI码的基础上改进的一种双极性归零码,它除具有AMI码功率谱中无直流分量,可进行差错自检等优点外,还克服了AMI码当信息中出现连“0”码时定时提取困难的缺点,而且HDB3
1
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
码频谱能量主要集中在基波频率以下,占用频带较窄,是ITU-TG.703推荐的PCM基群、二次群和三次群的数字传输接口码型,因此HDB3码的编解码就显得极为重要了。
1.2 FPGA简介
1.2.1 FPGA的发展历程
作为一种可编程逻辑器件,现场可编程门阵列(Filed Programmable Gate Array)的出现是可编程逻辑器件发展变化的必然,它的出现推动着可编程逻辑器件的进一步发展。因此说,了解了可编程逻辑器件的发展历程,也就了解了FPGA的发展历程。
可编程逻辑器件是20世纪70年代发展起来的一种新型器件。它的应用不仅简化了电路设计,降低了成本,提高了系统的可靠性,而且给数字系统的设计方式带来了革命性的变化。可编程逻辑器件的发展是以微电子制作技术的不断进步为基础的,其结构和工艺的变化经历了一个不断发展变革的过程。
20世纪70年代,早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和可电可擦除只读存储器(EEPROM)3种。
随后,出现了一类结构稍微复杂的可编程芯片,即可编程逻辑阵列,(Programmable Logic Array,PLA)。PLA在结构上是由一个可编程的与阵列和可编程的或阵列构成,阵列规模小,编程过程复杂繁琐。PLA既有现场可编程的,也有掩膜可编程的。
在这之后出现了可编程阵列逻辑PLA器件,它由一个可编程的“与”平面和一个固定的“或”平面构成,是现场可编程的。它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术3种。在PLA的基础上,又发展出了一种通用阵列逻辑(Generic Array Logic, GAL),如果GAL16V8、GAL22V10等。它采用了输出逻辑宏单元结构和EEPROM工艺,因而其设计具有很强的灵活性,至今仍有很多应用。
这些早期的PLD器件的一个共同的特点就是可以实现速度特性较好的逻辑功能,但是由于其结构过于简单,因此只能用于实现较小规模的电路设计。
为了填补这一缺陷,20世纪80年代中期,著名的可编程逻辑器件厂商Alter和Xilinx分别推出了扩展型的复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)和类似于标准门阵列的现场可编程门阵列FPGA。CPLD和FPGA的功能基本相同,只是芯片内部原理和结构有些差别。这两种器件兼容了PAL和GAL器件的优点,可用于实现较大规模的电路设计,编程也很灵活,所以,被广泛应用于产品的原型设计和小批量生产之中。几乎所有使用PLA、GAL和中小规模通用数字集成电路的场合均可应用CPLD和FPGA器件。
2
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
如今,FPGA器件已成为当前主流的可编程逻辑器件之一,经过近20年的发展,可编程逻辑器件已经取得长足的进步,资源更加丰富,使用越来越方便。将来的可编程逻辑器件,密度会更高、速度会更快、功耗会更低,同时还会增加更多新的功能,向着集成了可编程逻辑、CPU、存储器等组件的可编程单片系统(System On Programmable Chip,SOPC)方向发展。 1.2.2 FPGA基本结构及其特点 基本结构:
典型的FPGA它通常包含三类编程资源:可编程逻辑功能块CLB(Configurable Logic Blocks),可编程I/O模块IOB(Input/Output Block)和可编程内部互连PI(Programmable Interconnect)。CLB是实现逻辑设计的基本单元,它们排列为阵列,散布于整个芯片。CLB的功能很强,不仅实现了逻辑函数,还可配置为RAM等复杂形式。IOB作为芯片上逻辑与外部封装引脚的接口,通常围绕着阵列芯片的周围。PI包括各种长度的连线和一些可编程连接开关,通过它们把各个CLB、IOB按设计要求连接起来,构成特定功能的电路。
FPGA器件的功能由逻辑结构的配置数据决定,工作时,配置数据存放于片内的SRAM或熔丝上。使用SRAM的FPGA器件,工作前需从芯片外部加载配置数据。配置数据可存储于片外的EPROM或其他存储体上。用户可控制加载过程,在现场修改器件逻辑功能,即现场可编程。 特点:
(1)FPGA的逻辑单元从功能上而言,比CPLD的组合乘积项及宏单元要简单的多,但是它可由逻辑单元的级联来创建很大的函数功能; (2)PLD适合于复杂组合逻辑,FPGA适合于设计复杂的时序逻辑。
(3)FPGA的制造工艺确定了FPGA芯片中包含的LUT和触发器的数量非常多,可达上万个,而PLD一般只能做到512个逻辑单元,因此FPGA的平均逻辑单元成本大大低于PLD。
(4)在CPLD器件内可以通过逻辑阵列将大型函数在一级逻辑中实现,具有较高的系统运行速度,并且其易于确定的时序参数也有助于逻辑分析工作,但是它的寄存器资源相对FPGA较少。
(5)FPGA器件具有较小的基本逻辑单元,适合实现流水线结构的设计,也可以利用逻辑单元的线连来实现较长的数据通路。
3
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
(6)FPGA的逻辑单元阵列可以将设计功能进行更细的划分,可充分地利用单元内的各种资源,但同时也加大了逻辑优化和时序分析地难度。
1.3 EDA技术
EDA(Electronic Design Automation)即电子设计自动化,它是指利用计算机来完成电子系统的设计。EDA技术研究的对象是电子设计的全过程,有系统级、电路级和物理级三个层次的设计。其涉及的电子系统是指从低频、高频到微波,从线性到非线性,从模拟到数字,从通用集成电路到专用集成电路构造的电子系统,因此,EDA技术研究的范畴相当广泛。从专用集成电路(ASIC)开发与应用角度看,EDA软件系统应当包含以下子模块:设计输入子模块、设计数据库子模块、分析验证子模块、综合仿真子模块、布局布线子模块等。
在现代电子设计技术领域种,EDA技术已成为主要的设计手段。EDA技术可把数字通信技术,微电子技术和现在电子设计自动技术结合起来,实现了硬件设计软件化,加速了数字通信系统设计的效率,降低了设计成本。 利用EDA技术进行电子系统的设计,具有以下几个特点: (1)用软件的方式设计硬件;
(2)用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;
(3)设计过程中可用有关软件进行各种仿真; (4)系统可现场编程,在线升级;
(5)整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。 因此,EDA技术是现代电子设计的发展趋势。
1.4 VHDL硬件描述语言
1.4.1 简介
VHDL 是一种超高速集成电路硬件描述语言, 它提供了一个标准的, 从逻辑门级到数字系统级的各抽象级描述硬件的标准文本, 提供了精确的语法和语义, 为集成电路及系统设计提供了形式化、 层次化和规范化的描述, 不仅能有效地用于CAD 进行模拟, 而且可作为一种精确的自然语言用于设计者之间的设计交流, 它允许设计者在语言的基本作用范畴之外表示信息,尽管最初的工具在某些级( 例如开关级) 不能提供模拟。由于没有限制设计者必须拥有特殊的硬件技术或设计方法, 该语言在工业上有着广泛的用途, 它被喻为 硬件描述语言中的“FORTRAN”, 其性能是其它硬件描述语
4
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
言无法媲美的。由此,VHSIC 的硬件描述语言(VHSIC HDL)即VHDL便诞生了,并很快被美国电气和电子工程师协会所承认。
VHDL语言描述电路的行为,具有很强的电路功能描述能力,适用于大规模电子系统的设计。
1.4.2 VHDL具有的特点 (1) 具有程序包的特点
VHDL 是第一个包含了程序包概念的硬件描述语言( HDLS) , 这一特点是源于 Ada 语言, 由它提供了封装定义和应用函数的技术。这一特点特别适用于硬件描述, 因为它提供了把工艺技术依赖性等收集进存储单元的手段。VHDL 的程序包中包含了许多说明, 这些说明可以某种方式和设计者的思想相联系, 这个程序也可用作一个具有通用性的标准程序包。在一个程序包中, 可以出现不同类型的说明, 包括类型和子类型说明、属性说明、 常数和别名的说明及子程序的说明,但其中不允许信号变量说明, 也不允许接口描述存在。一旦定义了一个程序包, 它就可以被任何的描述所参考。VHDL 语言中还拥有一个标准程序包, 它包括了所有的预定义类型、 属性和函数, 不能为设计者们所更改。为了方便设计者, 在设计库中也提供了其它预定义程序包, 比如: 预定义的 MEA?SURE 包含了许多通用的物理类型说明( 象距离、 电压、 效率等) 。 ( 2) 引入了设计实体
原来的 HDLS 倾向于集中在对某个设计的描述技术上, 而忽略了在设计全过程中 所具有的许多级上描述的事实。VHDL 对许多接口的分开描述和对一个接口的相互联 系的多重描述提供了从上至下和从下至上的设计工具。一个设计实体能够模拟复杂性不一的硬件, 如可模拟逻辑门、 触发器、 控制单元甚至一个计算机系统。一个设计实体由一个接口和一个或多个可变体构成。接口中含有可变体的公共说明的集合, 这些说明抓住了硬件实体的外部特点, 表明了设计实体和外部环境传输信息的通道。设计者分析硬件实体的途径不受限制, 同一硬件实体的可变结构的实现能被模拟用来评估成本及速度因素, 类似硬件实体的功能、 物理的结构也能被模拟, 各个与同一接口相联系的可变体, 可以使用接口中提供的所有说明。 ( 3) 具有属性和类属的特点
属性提供了一种通常的联系, 是对性质和数值的描述, 其它系统均可以使用。类属增加了设计实体重新使用的可能性, 例如: 工艺可靠性, 诸如噪声系数或功率消耗可以聚集在类属中。使用设计实体时, 可通过提供
5
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
需要的类属值确定一个特殊的工艺。 ( 4) 数据消除功能
此功能使得用户能自定义。当冲突源同时出现时, 对于一个给定的信号, 将发生什么情况; 在大多数语言中, 解决此类冲突的算法是预定义的, 不为用户所控制, 而 VHDL 可将这种定义交给用户定义。 ( 5) 传输和惯性延迟
VHDL 在信号赋值语句中提供了两种延时方式: 传输延迟是保证不管如何排列, 所 有的变化都能通过设计向前传输; 惯性延迟则是消除所有比某些定义宽度还窄的脉冲。因此阻止了它们在设计中的传输。 ( 6) 用户自定义类型
VHDL 允许用户自定义类型来定义模拟值, 就是定义使用本语言预定义的对用户 手头工作来说不能不适合的模拟值的性质。 ( 7) 并行和时序混合的性质
VHDL 可以使一个信号属性不仅包括时序还包括并行的码。某些 HDLS 需要把 这些结构严格地区分开, 有的仅提供了一种。在VHDL 中, 过程( 时序特性的) 语句可以放在块( 并行特性) 语句的任何所希望的地方,并允许写成整体上是并行的, 但其中某些段是被描述为时序的。 ( 8) 性能和结构的混合
VHDL 通过作为一类并行语句( 称之器件例示语句) 而提供了结构描述。 由于联在一起的器件总是同时工作的,所以以上的语句中有实际硬件的语义。因 此, 结构语句完成了具有并行特性的情况, 而大多数别的硬件描述语言则把结构描述看成
语义上区别于并行特性的语句。 ( 9) 物理描述能力
VHDL 语言是第一种能定义所有硬件描述中所必需的物理单位的HDL, 物理单位 的使用和有效的类型检查提供了硬件的精确物理描述, 使用 VHDL 甚至能描述机械学、热力学和硬件设计的可靠性。 ( 10) 设计的多级描述能力
VHDL 可支持设计的多级描述:在性能范畴内, VHDL 使用户能用块语句( 并行时间特性) 和过程语句( 时序时间特性) 来定义性能。从算法级到电路级的所有级都可以
6
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
用这种方式来定义。% 在结构范畴内, VHDL 使用户能描述逻辑的和物理的分割与联结, 用接口和器件说明、 器件例子说明及配置体语句, 从结构级到电路级的所有级都可以进行描述。& 在物理范畴内, 当不具有指定的物理类型的描述, 某种 VHDL 特性( 特别的属性)能描述诸如方位、 时间、 功率、 范围等物理信息。当然, VHDL 也有一些不足之处, 如; 缺少 WAIT 语句, 不能等待时序, 不能处理动 态结构, 但 VHDL 的许多优点给硬件设计者 带来了方便, 可为广大用户所接受。 1.4.3 VHDL的优点
VHDL迅速普及主要因为的是他的强大的自身功能和特点,主要优点如下:
(1)覆盖面积广,有强大的系统硬件描述能力
VHDL可以覆盖行为描述、寄存器传输级描述、门描述、电路描述和物理描参数描述(包括延时、功耗、频率、几何尺寸等)。
VHDL还具有丰富的数据类型。即可以支持预定义的数据类型,也可以自己定义数据类型。这样便给硬件描述带来了较大的自由度,使设计人员能够方便地使用VHDL创建高层次的系统模型。 (2)可读性好、易于修改
在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构模块化,所以易于修改设计。
(3)独立于器件的设计,与工艺无关
用VHDL进行硬件电路设计时,并不需要首先考虑选择完成设计的器件,也就是说,VHDL并没有嵌入具体的技术和工艺约定,设计人员可以集中精力进行设计的优化,不需要考虑其他问题。当一个设计描述完成以后,可以用多种不同的器件结构来实现其功能。
(4)易于移植和设计资源共享
由于VHDL是一种国际标准化的硬件描述语言,对于一个设计描述,他可以移植到符合相同标准的任意系统或平台上运行。
对于一些较大的通用性硬件电路,目前已经有专门的IP核出售,因此,能实现设计资源的有偿使用,可大大缩短设计周期,加快设计产品的上是速度, 1.4.4 VHDL设计硬件电路的方法
VHDL是IEEE所确认的一种标准化硬件描述语言,它在设计描述的过程中有一定的
7
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
设计流程可以遵循。一般来讲,VHDL的设计流程主要包括以下几个步骤: (1)设计规范的定义
采用VHDL进行设计的描述之前,首要对电子系统的设计目的和设计要求有一个明确的、清晰的认识,然后形成整体设计规范的定义,这一 步骤对以后的设计来说是非常重要的。设计规范的定义将对后面的设计步骤起到提纲挈领的作用,它相当于系统设计的总体方案。
(2)采用VHDL进行设计的描述
采用VHDL进行设计描述主要包括设计规范和程序编写两个步骤。设计规划的主要任务是进行设计方式的选择以及是否进行模块划分。通常,设计中采用的设计方式包括直接设计,自顶向下设计和自底向上的设计,一般采用自顶向下的设计方法。模块划分是设计过程中一个非常重要的步骤。模块划分的好坏将会直接影响到最终的电路设计,因此在这一步应该花费一定的时间,从而保证模块划分的最优化。
进行完成设计规划后,就可以按照模块划分来编写各个模块的VHDL 程序,然后将各个模块的VHDL程序组合在一起,从而完成整个设计的VHDL描述。 (3)VHDL程序仿真
在设计流程中,综合,优化和装配(或者布局线)等后续操作往往需花费大量的时间。一旦在后续工作中发现设计错误,往往需要修改VHDL描述,然后再重新进行综合、化和装配等后续操作,如此反反复复,将会浪费大量的时间和人力物力。因此,设计人常常在完成编码后采用仿真器对VHDL设计描 述进行仿真,这样可以提早发现设计错误,节省时间,缩短开发周期。 (4)综合、优化和装配
综合是指将较高层次的抽象描述转化到较低级别的抽象的一种方法,也就是将设计的描述转化成底层电路表示。但是,通常综合的结果就一个网表或者就是一组逻辑方程。
优化是指将设计的时延缩短到最小和有效地利用资源。几乎所有高级VHDL综合工具都可以使用约束条件对设计进行优化。其中约束条件的设置主要包括时间约束和面积约束。
对设计描述进行完综合和优化操作后,EDA工具需要将综合和优化的逻辑结果分配到一个逻辑器件中。通常,装配用来描述对一定的CPLD的资源进行分配的过程;布局则是将综合和优化后生成的逻辑规划到一个FPGA的逻辑结构中,然后将各逻辑单元放
8
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
置到相应优化的位置,最后在逻辑元胞之间、逻辑元胞和I/O口之间进行布线。 (5)装配(或布局布线)后的仿真
与VHDL程序仿真不同,装配后的仿真不仅对设计描述的逻辑功能进行验证,而且还要对设计描述的时序功能进行验证。如果时序不能满足,那么需要回到前面的步骤重新进行操作。通常,装配后的仿真有时候被称为后仿真。 (6)器件编程
器件编程就是将设计描述经过翻译、综合、优化和装配后的结果。经过一定的映射转化成器件编程所需要的数据文件格式,然后通过烧片器或者下载电缆将数据文件下载到器件中的过程。
9
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
第二章 HDB3码的编译规则
2.1主要的基带传输码型
了解NRZ码和AMI码的编码规则是了解HDB3码的编码规则的前提,NRZ码的全称是Non-Return to Zero,NRZ码的编码规则就是信号1有脉冲,信号0无脉冲,占空比100%。为克服NRZ信号存在直流分量以及丰富的高频分量。一般采用双极性归零码AMI(Alternate Mark Inversion);0信号依然是无脉冲的,1信号采用两种交替极性的脉冲传输,占空比为50%。AMI码不存在直流分量,且高频分量较NRZ要少。然而在实际应用中,人们发现0信号占有较大的比重,而连续的0信号对系统的同步以及时钟频率的提取较为不利,而采用HDB3码是解决这一问题的方法之一。 2.1.1 NRZ码的编码规则
NRZ码分为单极性NRZ码和双极性NRZ码,单极性NRZ码在表示一个码元时,二进制符号“1”和“0”分别对应基带信号的正电平和零电平,在整个码元持续时间,电平保持不变。如图2.1所示
10100110+E0
图2.1单极性NRZ码
在NRZ双极性非归零编码中,“1”和“0”分别对应正、负电平,如图2.2所示,双极性非归零NRZ码具有直流分量小、接收端判决门限为0,容易设置并且稳定,因此抗干扰能力强、可以在电缆等无接地线上传输。
10100110+E-E
图2.2双极性NRZ码
2.1.2 AMI码的编码规则
AMI码的全称是传号交替反转码。此方式是单极性方式的变形,即把单极性方式中的“0”码仍与零电平对应,而“1”码对应发送极性交替的正、负电平,如图2.3所示。AMI码实际上是把二进制脉冲序列变为三电平的符号序列,AMI码具有在“1”、“0”码不等的概率情况下,也无直流成分,且零频附近低频分量小。因此,对具有变压器
10
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
或其他交流耦合的传输信道来说,不易受隔直特性的影响;若接收端收到的码元极性与发送的码元极性完全相反,也能正确判决;便于观察误码的情况;此外,AMI码还有编译码电路简单等优点,是一种基本的线路码,得到广泛应用;AMI码有一个重要缺点就是当它用来获取定时信息时,由于它可能出现长的连0串,因而会造成提取定时信息的困难。
+E-E
图2.3 AMI码
2.2 HDB3码的编码规则
HDB3码是一种AMI码的改进型,它的编码原理可简述为,在消息的二进制代码
序列中:
(1)当连“0”码的个数不大于3时,HDB3编码规律与AMI码相同,即“1”码变为“+1”、“-1”交替脉冲;
(2)当代码序列中出现4个连“0”码或超过4个连“0”码时,把连“0”段按4个“0”分节,即“0000”,并使第4个“0”码变为码“1”,用V脉冲表示。这样可以消除长连“0”现象。为了便于识别V脉冲,使V脉冲极性与前一个“1”脉冲极性相同。这样就破坏了AMI码极性交替的规律,所以V脉冲为破坏脉冲,把V脉冲和前3个连“0”称为破坏节“000V”;
(3)为了使脉冲序列仍不含直流分量,则必须使相邻的破坏点V脉冲极性交替; (4)为了保证前面两条件成立,必须使相邻的破坏点之间有奇数个“1”码。如果原序列中破坏点之间的“1”码为偶数,则必须补为奇数,即将破坏节中的第一个“0”码变为“1”,用B脉冲表示。这时破坏节变为“B00V”形式。B脉冲极性与前一“1”脉冲极性相反,而B脉冲极性和V脉冲极性相同。 如:
NRZ码:1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 AMI码:-1 0 0 0 0 +1 0 0 0 0 -1 +1 0 0 0 0 -1 +1 HDB3码:-1 0 0 0 -V +1 0 0 0+V-1 +1–B 0 0 V +1 -1
11
基于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
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
Plusvreg1<=’0’ & plusvreg1(3 downto 1);
End if; End if; End process; ---插“V”输出进程 Process(clk) Begin
If clk’event and clk=’1’ then
Plusvout<=plusvregh(0) & plusvreg1(0); End if; End process; End behave;
仿真结果图
图3.3插“V”符号仿真波形图
在上图3.3中可以看出,当datain为0且datain出现4个连续的“0”时,plusvout信号为“10”代表“V”,HDB3编码的插“V”操作得到验证,否则,当datain为“1”时,plusvout信号为“01”,当datain为“0”时,plusvout信号为“00”。 3.3.2插“B”码模块设计及仿真
HDB3编码器的插“B”码就是对HDB3编码器的插“V”码模块的输出信号plusvout进行判决,如果相邻的两个“V”码之间的“1”的个数为偶数个,则把最后一个“V”码前的第1个0变换成一个“B”码;否则保持plusvout的码型不变。由于码元“B”相对于“V”是过去的信息,因此,必须对当前码元进行存储,使用FPGA中的移位寄存器来实现,定义2个五位寄存器,寄存器从高往低移位,如果寄存器的第4位判断出需要进行插“B”码时,同时改变寄存器的第1位的值,达到以现在的情况改变过去的值。码元“B”用“11”表示。图3.4为插“B”模块连接图。
17
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
图3.4插“B”模块连接图
以下给出添加符号“B”模块的源程序代码
Library ieee;
Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity hdb3plusb is
Port(clk : in std_logic; ---系统时钟输入
Plusvin : in std_logic_vector(1 downto 0);---插“V”信号输入 Plusbout : out
std_logic_vector(1 downto 0);---插“B”信号输入 End hdb3plusb;
Architecture behave of hdb3plusb is Signal parity : std_logic;
Signal startflag : std_logic_vector(2 downto 0); Signal hdb3plusbregh : std_logic_vector(4 downto 0); Signal hdb3plusbreg1 : std_logic_vector(4 downto 0); Begin
---对两个连续“V”之间的非“0”符号进行奇偶判断
---parity为“0”表示两个连续“V”之间的非“0”符号位偶数个,需要进行插“V”操作
--- parity为“1”表示两个连续“V”之间的非“0”符号位奇数个,不需要进行插“V”操作 Process(clk) Begin
18
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
If clk’event and clk=’1’ then If plusvin=”10” then Parity<=’0’;
Elsif plusvin=”01” then Parity<=not parity; End if; End if; End process;
---当两个连续“V”之间的非“0”符号为偶数个,进行插“B”操作 ---符号“B”由“11”来表示 Process(clk) Begin
If clk’event and clk=’1’ then
If(plusvin=”10”) and (parity=’0’) then; Hdb3plusbregh(4)<=’1’;
Hdb3plusbregh(3)<= hdb3plusbregh(4) Hdb3plusbregh(2)<= hdb3plusbregh(3)
Hdb3plusbregh(1)<=’1’;---如果需要插“B”,则改变去过第1位的值 Hdb3plusbregh(0)<= hdb3plusbregh(1) Hdb3plusbreg1(4)<=’0’;
Hdb3plusbreg1(3)<= hdb3plusbreg1(4); Hdb3plusbreg1(2)<= hdb3plusbreg1(3);
Hdb3plusbreg1(1)<=’1’;---如果需要插“B”,则改变去过第1位的值 Hdb3plusbreg1(0)<= hdb3plusbreg1(1); Else
Hdb3plusbregh<=plusvin(1) & hdb3plusbregh(4 downto 1); Hdb3plusbregl<=plusvin(0) & hdb3plusbregl(4 downto 1); End if; End if; End process;
19
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
Process(clk) Begin
If clk’event and clk=’1’ then Plusbout(1)<=hdb3plusbregh(0); Plusbout(0)<=hdb3plusbregl(0); End if; End process; End process; 仿真结果图
图3.5插B符号仿真波形图
由图3.5波形图中可以看出,当两个连续的“V”之间的非“0”符号为偶数个,进行插“B”的操作,“B”用11表示,插“B”操作得到验证。 3.3.3 HDB3编码器的极性转换模块设计及仿真
HDB3编码输出的“1”码和“V”码具有正负交替的特性,但FPGA的输出引脚只能输出正电平,没有负电平,因此必须将前面插“B”码后的信号plusbout进行极性转换才能得到真正的HDB3信号。这就需要两路信号来表示,一路表示整电平,一路表示负电平。然后根据HDB3编码规则,把插“B”模块输出的信号,转化为正/负电平的两路信号,当插“B”模块输出的“01”信号,正/负电平信号交替出现高电平,当插“B”模块输出的“10”信号,高电平出现原来的高电平信号上,当插“B”模块输出的“11”信号与当插“B”模块输出的“01”信号情况相同。
20
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
图3.6 HDB3双单极性转化模块连接图
以下是实现单双极性变换控制功能的源程序代码
Library ieee;
Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity hdb3poled2s is Port(clk : in std_logic;
Plusbin : in std_logic_vector(1 downt0 0); Plusout : out std_logic; Minusout : out std_logic)
End hdb3poled2s;
Architecture behave of hdb3poled2s is Signal parity :std_logic;
Signal com : std_logic_vector(2 downto 0); Begin
Com<=plusbin & parity; Process(clk) Begin
If clk’event and clk=’1’ then Case com is When “011”=> Plusout<=’0’; Minusout<=’1’;
Parity<=not parity;---出现“01”时,下次正/负电平信号发生交替
21
基于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
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
由图4.4可以看出,HDB3译码器的输出信号dataout与HDB3编码器的基带输入信号datain信号的波形一致,HDB3译码器得到验证。
27
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
第五章 结论
本文主要是用FPGA来实现HDB3码的编码和译码器。利用EDA技术进行设计,重点在于实现HDB3的编码过程和译码过程的处理,用VHDL对其功能进行描述。由于HDB3码是双极性码,而FPGA只能处理单极性。因此在实际应用中须外加辅助电路,使单双极性实现相互转换。本文对此只作简单介绍,主要对FPGA可实现的程序部分进行详细分析叙述。最后,通过QuartusII对其各个功能进行仿真,验证整个设计的正确性。 本设计的主要优点在于充分利用了FPGA的技术优势,在编码器中主要包括3个模块即插“V”模块、插“B”模块、双单极性转换模块,译码器只有一个模块。将HDB3码的编译码以及相关功能模块集成在一块芯片上,简化了系统的硬件结构,减少了器件的种类和数量,提高了系统的稳定性,又由于FPGA的在线可编程功能和引脚可定义功能,有利于用户修改调试。
但由于利用EDA对电子系统进行设计的经验不多,本设计只实现对HDB3码进行简单的编译功能,但整个设计程序显得有点复杂。在这个设计过程中,虽然未能完整的实现HDB3编译码的功能,但是令我获益不少。由于受现在所学的知识的限制,对EDA的展望待进一步作深入研究,通过学习与实践,积累更多的知识与设计经验,把整个设计再进行功能的完善,再使逻辑算法更加简化从而提高整个系统的效率。
28
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
参考文献
[1] 曹志刚,钱亚生,现代通信原理[M],北京:清华大学出版社,1992 [2] 樊昌信、张甫翔、徐炳祥,通信原理[M],北京:国防工业出版社,2001 [3] 张会生、陈树新,现代通信系统原理[M],北京:高等教育出版社,2002 [4] 曹志刚、钱亚生,现代通信原理[M],北京:清华大学出版社,1992
[5] 张辉、曹丽娜,现代通信原理与技术[M],西安:西安电子科技大学出版社,2002 [6] 刘皖、何道君、谭明,FPGA设计与应用[M],北京:清华大学出版社,2006 [7] 曾繁泰、李冰,李晓林,EDA工程概论[M],北京:清华大学出版社,2002 [8] 潘松,王国栋,VHDL实用教程[M],成都:电子科技大学出版社,2000
[9] 曾繁泰,候亚宁,崔元明,可编程器件应用导论[M],北京:清华大学出版社,2001 [10] 赵鑫、蒋亮,VHDL与数字电路设计[M],北京:机械工业出版社,2005 [11] 蒋青、吕翔,一种基于FPGA技术HDB3译码器的设计[J],微电子学,2007
[12] 段吉还、黄智伟,基于CPLD/FPGA的数字通信系统与设计[M],北京:电子工业出版社,2004
29
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
附录
A HDB3编码器的VHDL完整程序 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
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”来表示
30
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
---插“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); Plusvreg1<=’0’ & plusvreg1(3 downto 1);
End if; End if; End process; ---插“V”输出进程 Process(clk) Begin
If clk’event and clk=’1’ then
Plusvout<=plusvregh(0) & plusvreg1(0); End if; End process; End behave;
Library ieee;
Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity hdb3plusb is
Port(clk : in std_logic; ---系统时钟输入
Plusvin : in std_logic_vector(1 downto 0);---插“V”信号输入
31
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
Plusbout : out
std_logic_vector(1 downto 0);---插“B”信号输入 End hdb3plusb;
Architecture behave of hdb3plusb is Signal parity : std_logic;
Signal startflag : std_logic_vector(2 downto 0); Signal hdb3plusbregh : std_logic_vector(4 downto 0); Signal hdb3plusbreg1 : std_logic_vector(4 downto 0); Begin
---对两个连续“V”之间的非“0”符号进行奇偶判断
---parity为“0”表示两个连续“V”之间的非“0”符号位偶数个,需要进行插“V”操作
--- parity为“1”表示两个连续“V”之间的非“0”符号位奇数个,不需要进行插“V”操作 Process(clk) Begin
If clk’event and clk=’1’ then If plusvin=”10” then Parity<=’0’;
Elsif plusvin=”01” then Parity<=not parity; End if; End if; End process;
---当两个连续“V”之间的非“0”符号为偶数个,进行插“B”操作 ---符号“B”由“11”来表示 Process(clk) Begin
32
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
If clk’event and clk=’1’ then
If(plusvin=”10”) and (parity=’0’) then; Hdb3plusbregh(4)<=’1’;
Hdb3plusbregh(3)<= hdb3plusbregh(4) Hdb3plusbregh(2)<= hdb3plusbregh(3)
Hdb3plusbregh(1)<=’1’;---如果需要插“B”,则改变去过第1位的值 Hdb3plusbregh(0)<= hdb3plusbregh(1) Hdb3plusbreg1(4)<=’0’;
Hdb3plusbreg1(3)<= hdb3plusbreg1(4); Hdb3plusbreg1(2)<= hdb3plusbreg1(3);
Hdb3plusbreg1(1)<=’1’;---如果需要插“B”,则改变去过第1位的值 Hdb3plusbreg1(0)<= hdb3plusbreg1(1); Else
Hdb3plusbregh<=plusvin(1) & hdb3plusbregh(4 downto 1); Hdb3plusbregl<=plusvin(0) & hdb3plusbregl(4 downto 1); End if; End if; End process; Process(clk) Begin
If clk’event and clk=’1’ then Plusbout(1)<=hdb3plusbregh(0); Plusbout(0)<=hdb3plusbregl(0); End if; End process; End process;
Library ieee;
Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity hdb3poled2s is
33
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
Port(clk : in std_logic;
Plusbin : in std_logic_vector(1 downt0 0); Plusout : out std_logic; Minusout : out std_logic)
End hdb3poled2s;
Architecture behave of hdb3poled2s is Signal parity :std_logic;
Signal com : std_logic_vector(2 downto 0); Begin
Com<=plusbin & parity; Process(clk) Begin
If clk’event and clk=’1’ then Case com is When “011”=> Plusout<=’0’; Minusout<=’1’;
Parity<=not parity;---出现“01”时,下次正/负电平信号发生交替 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”时,下次正/负电平信号不发生交替
34
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
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;
B HDB3译码器的VHDL完整程序 library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity hdb3dec is port(clk:in std_logic; plusin : in std_logic; minusin : in std_logic; dataout : out std_logic;) end hdb3dec;
architecture behave of hdb3dec is
signal plusbuf : std_logic_vector(4 downto 0); signal minusbuf : std_logic_vector(4 downto 0); begin
35
基于FP GA的HDB3码的编码器与译码器设计(软件设计)
process(clk)
if clk’event and clk=’1’ then
---判断出正极性出现“V”符号,则还原出4个连“0” if plusin=’1’ and plusbuf(4 downto 1)”0001” and minusbuf(4 downto 1)=”0000” then plusbuf<=”00001”;
minusbuf<=minusin & minusbuf(4 downto 1); ---判断出负极性出现“V”符号,则还原出4个连“0” Elsif minusin=’1’ and minusbuf(4 downto 1)=”0001” and plusbuf(4 downto 1)=”0000” then
plusbuf<=plusin & plusbuf(4 downto 1); minusbuf<=”00001”;
---判断出正极性出现“V”符号和“B”符号,则还原出4个连“0” Elsif plusin=’1’ and plusbuf(4 downto 2)=”001” And minusbuf(4 downto 2)=”000” then
Minusbuf<=minusin & minusbuf(4 downto 1); Plusbuf<=”0000” & plusbuf(1);
---判断出负极性出现“V”符号和“B”符号,则还原出4个连“0” Elsif minusin=’1’ and minusbuf(4 downto 2)=”001” And plusbuf(4 downto 2)=”000” then
Plusbuf<=plusin & plusbuf(4 downto 1); Minusbuf<=”0000” & minusbuf(1); ---其他情况保持不变
Else
Plusbuf<=plusin & plusbuf(4 downto 1); Minusbuf<=minusin & minusbuf(4 downto 1); End if; End if; End process;
---还原基带信号输出进程
36
正在阅读:
基于FPGA的HDB3码的编译码器与译码器设计(软件设计)06-10
白酒企业申办生产许可证说明06-01
乙型肝炎病毒核心基因启动子变异与血清HBeAg及病毒载量关系的探04-21
沃尔玛在华发力商业地产弱化大卖场05-25
论《献给艾米丽的玫瑰》中象征手法的运用10-01
HUAWEI - Secospace - USG6600系列下一代防火墙技术建议书范本05-01
小学生气象优秀作文06-15
第三届三创大赛报名表07-01
吉林省实验中学2013年高三年级下学期第二次模拟考试题 语文04-29
2018年最新家庭装修合同范本(精品)07-12
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 译码器
- 设计
- 基于
- 软件
- FPGA
- HDB3
- 如何落实“思想品德课回归生活,回归社会,顺应时代”这一要求
- 2015年度山东天源饲料有限公司销售收入与资产数据报告 - 图文
- 江苏省学业水平测试模拟卷 小学语文
- 新媒体环境下的公益广告研究
- 华南农业大学 离散数学 期末考试2011试卷及答案
- 关于桩基检测的要求、问题处理、验收条件和程序规定
- 《浅谈企业内部控制》会计专业专科毕业论文
- 求不定积分的方法及技巧小汇总~
- 2011黑龙江省数据结构考试入门
- 专题复习(离子检验除杂)学案
- 2012煤炭价格
- “职业炒手”王元杰的弱市操作及超短感悟
- 论保险中介在保险市场中的作用
- 人工挖孔桩专家论证施工方案
- 中华老字号文献综述与研究现状
- 行政法精要书目
- 七年级劳动与技术教学计划
- 水泥砂浆桩专项施工方案
- 幼小衔接发言稿
- 大学第五届校园十佳歌手赛活动策划方案(多篇范文)