HDB3编译码电路的设计
[摘 要] 数字基带信号的传输是数字通信系统的一个重要组成部分,HDB3(三阶高密度双极性码)编码是数字基带信号传输中常用的传输码型。HDB3编码无直流成分且连0串符号最多只有3个。该种码型通过正负极性交替消除传输信号中的直流成分,降低功耗。文中基于VHDL设计了HDB3编码器,实现了编码过程中的插V及插B模块;通过插入正反极性电平信号解决了串行码元中连0多于4个时的情形。在MAX+PLUSⅡ工具中进行了仿真、调试,结果表明实现了HDB3编码功能,能实现基带信号在基带信道中直接传输与提取,同时能很好地提取定时信号。编译码器已通过硬件下载、测试,可用于实际电路中。此方法中由于CPLD可重复编程的特点,可对其进行在线修改,便于设备的调试和运行。
[关 键 词]HDB3编码; 编译码;VHDL;MAX+PLUSⅡ [中图分类号] TN702 [文献标志码] A
- I -
错误!未指定书签。
The Design of HDB3 Encoding and Decoding Circuit
Abstract: The digital baseband signal transmission in digital communication systems are an important component of, HDB3 (third-order high-density bipolar code) are encoded digital baseband signal transmission used in the transmission pattern. HDB3 encoding non-DC components and even the string of symbols 0 and only a maximum of three. Pattern of the alternating polarity through positive and negative signal to eliminate transmission of DC components, reduced power consumption. Based on the VHDL design of a HDB3 encoder, the encoding process of implementation of the interpolation module V and Chap B; by the insertion of the positive and negative polarity signal level to solve the serial symbol 0 even when more than 4 cases. MAX + PLUS Ⅱ in the instrument in the simulation, debugging, results show that the implementation of the HDB3 coding function, can achieve base-band signal at base-band channel of direct transmission and extraction, while a good timing signal extraction. Had passed through the hardware codecs download, test, can be used in the actual circuit. This method because of CPLD can duplicate the characteristics of programming can be modified online, easy to debug and run the equipment.
Key words: HDB3 coding; codec; VHDL; MAX + PLUS Ⅱ
- II -
目 录
摘 要 ....................................................... Ⅲ Abstract .................................................... Ⅳ 1 绪 论 .............................................................................................................. 1
1.1 课题背景 .............................................................................................. 1 1.1.1 eda发展概况 ...................................................................................... 1
1.1.2 硬件描述语言--VHDL........................................................................... 1
1.1.3 CPLD简介 ................................................................................................. 2
1.1.4 Max+plusII .................................................................................. 3 1.2 课程设计目的 ...................................................................................... 4 1.2.1设计流程............................................................................................. 4 1.2.2设计方案............................................................................................. 4 2 HDB3编码电路的设计 ................................................................................. 5
2.1 HDB3编码器的设计需要 .................................................................... 5 2.2 HDB3编码器的编码规则 .................................................................... 5 2.3 HDB3码的VHDL建模思想 ............................................................... 5 2.4 HDB3码编码的设计原理 .................................................................... 6 2.5 HDB3码编码的底层设计 .................................................................... 6 2.5.1 伪随机序列的设计原理.................................................................... 6
2.5.2 HDB3码的编码设计 ......................................................................... 7 2.5.3 HDB3编码的顶层原理图 ................................................................ 9 2.6 本章小结 ............................................................................................ 10 3 HDB3解码电路的设计 ................................................................................11
3.1 HDB3解码的设计原理 .................................................................... 11 3.2 HDB3解码的设计 .............................................................................. 12 3.3 本章小结 ............................................................................................ 12 4 编程下载与测试 .......................................................................................... 12
4.1 HDB3码编码的下载 .......................................................................... 14 4.2 HDB3码译码的下载 ........................................................................ 14 4.3 HDB3码的编译设计的测试 ............................................................ 15 结 论 ................................................................................................................ 16 致 谢 ................................................................................................................ 17 参考文献 .......................................................................................................... 18 附录A .............................................................................................................. 19 附 录B: ........................................................................................................... 22
通信工程专业计算机系列综合课程设计
1. 绪论
1.1 课题背景
1.1.1 eda发展概况
电子设计技术的核心就是EDA技术,EDA是指以计算机为工作台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。EDA技术已有30年的发展历程,大致可分为三个阶段。70年代为计算机辅助设计(CAD)阶段,人们开始用进行IC版图编辑、PCB布局布线,取代了手工操作。80年代为计算机辅助工程(CAE)阶段。与CAD相比,CAE除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。CAE的主要功能是:原理图输入,逻辑仿真,电路分析,自动布局布线,PCB
[2]
后分析。90年代为电子系统设计自动化(EDA)阶段。
硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主
[3]
要有ABEL-HDL、AHDL和VHDL。
1.1.2硬件描述语言——VHDL
VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分[4]。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多
[4]
方面的。
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚
- 1 -
通信工程专业计算机系列综合课程设计
至多个代发组共同并行工作才能实现。 (4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计[4]。 1.1.3 CPLD简介
CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。
CPLD主要是由可编程逻辑宏单元(MC,Macro Cell)围绕中心的可编程互连矩阵单元组成。其中MC结构较复杂,并具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能。由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。 发展历史及应用领域:
20世纪70年代,最早的可编程逻辑器件--PLD诞生了。其输出结构是可编程的逻辑宏单元,因为它的硬件结构设计可由软件完成(相当于房子盖好后人工设计局部室内结构),因而它的设计比纯硬件的数字电路具有很强的灵活性,但其过于简单的结构也使它们只能实现规模较小的电路。为弥补PLD只能设计小规模电路这一缺陷,20世纪80年代中期,推出了复杂可编程逻辑器件--CPLD。目前应用已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等方面。 器件特点:
它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产(一般在10,000件以下)之中。几乎所有应用中小规模通用数字集成电路的场合均可应用CPLD器件。CPLD器件已成为电子产品不可缺少的组成部分,它的设计和应用成为电子工程师必备的一种技能。 如何使用:
CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。
家庭成员:经过几十年的发展,许多公司都开发出了CPLD可编程逻辑器件。比较典型的就是Altera、Lattice、Xilinx世界三大权威公司的产品,这里给出常用芯片: Altera EPM7128S (PLCC84) Lattice LC4128V (TQFP100) Xilinx XC95108 (PLCC84)
1.1.4开发环境MAX+PLUSⅡ
- 2 -
通信工程专业计算机系列综合课程设计
Altera公司是世界三大CPLD/FPGA 厂家之一,它的器件能达到最高的性能和集成
度,不仅仅因为采用了先进的工艺和全新的逻辑结构,还在于它提供了现代化的设计工具一MAX+PLUSⅡ可编程逻辑开发软件,该软件是Altera公司推出的第三代PLD 开发系统。提供了一种与结构无关的设计环境,使Altera CPLD 设计者能方便地进行设计输入、快速处理和器件编程。MAX+PLUSⅡ提供了全面的逻辑设计能力,包括电路图、文本和波形的设计输入以及编译、逻辑综合、仿真和定时分析以及器件编程等诸多功能。特别是在原理图输入等方面,MAX+PLUSⅡ被公认为是最易使用、人机界面最友好的PLD 开发软件。MAX+PLUSⅡ可以开发除APEX20K 以外的任何CPLD/FPGA。 MAX+PLUSⅡ开发系统具有很多突出的特点: ①开放式的界面
②设计与结构无关:MAX+PLUSⅡ支持Altera公司的Classic、ACEX 1K、MAX 3000、MAX 5000、MAX 7000、MAX 9000、FLEX 6000、FLEX 8000和FLEX 10K等系列可编程逻辑器件,门数为600~250 000门,提供了业界真正与结构无关的可编程逻辑设计环境。MAX+PLUSⅡ的编译器还提供了强大的逻辑综合与优化功能以减轻用户的设计负担。 ③可在多种平台运行:MAX+PLUSⅡ软件可在基于PC机的WindowsNT 4.0、Windows 98、Windows 2000操作系统下运行,也可在Sun SPARCstations、HP 9000 Series 700/800、IBM RISC System/6000等工作站上运行。
④完全集成化:MAX+PLUSⅡ软件的设计输入、处理、校验功能完全集成于可编程逻辑开发工具内,从而可以更快地进行调试,缩短开发周期。
⑤模块化工具:设计者可以从各种设计输入、编辑、校验及器件编程工具中作出选择,形成用户风格的开发环境,必要时还可在保留原始功能的基础上添加新的功能。由于MAX+PLUSⅡ支持多种器件系列,设计者无需学习新的开发工具即可对新结构的器件进行开发。
⑥支持邮件描述语言(HDL):MAX+PLUSⅡ软件支持多种HDL的设计输入,包括标准的VHDL、Verilog HDL及Altera公司自己开发的硬件描述语言AHDL。
⑦ MegaCore功能:MegaCore 是经过预先校验的为实现复杂的系统级功能而提供的HDL网表文件。它为ACEX 1K、MAX 7000、MAX 9000、FLEX 6000、FLEX 8000和FLEX 10K系列器件提供了最优化设计。用户可从Altera公司购买这些MegaCore,使用它们可以减轻设 计任务,使设计者能将更多的时间和精力投入到改进设计和最终产品上去。
⑧OpenCore特点:MAX+PLUSⅡ软件具有开放性内核的特点,OpenCore可供设计者在购买产品前来对自己的设计进行评估。
同时,MAX+PLUSⅡ还有多种设计输入方法,主要包括:
①图形设计输入:MAX+PLUSⅡ的图形设计输入是较其他软件更容易使用的特点,因为MAX+PLUSⅡ提供了丰富的库单元供设计者调用,尤其是在MAX2LIB里提供的mf库几乎包含了所有的74系列的器件,在prim库里提供了数字电路中所有的分离器件。因此只要具有数字电路的知识,几乎不需要过多的学习就可以利用MAX+PLUSⅡ进行CPLD/FPGA的设计。MAX+PLUSⅡ还包括多种特殊的逻辑宏功能(Macro—Function)以及新型的参数化的兆功能(Mega—Function)模块。充分利用这些模块进行设计,可以大大减轻设计人员的工作量和成倍地缩短设计周期。
②文本编辑输入:MAX+PLUSⅡ的文本输入和编译系统支持AHDL语言、VHDL语言、VERILOG语言三种输入方式。
③波形输入方式:如果知道输入、输出波形,也可以采用波形输入方式。
④混合输入方式:MAX+PLUSⅡ设计开发环境,可以进行图形设计输入、文本编辑输
- 3 -
通信工程专业计算机系列综合课程设计
入、波形编辑输入混合编辑。具体操作方法是:在图形编辑、波形编辑时形成模块,在文本编辑时通过include“模块名.inc”或者采用Function(„..) Return(„.)的方式进行调用。同样,文本编辑输入形成的模块,也可以在图形编辑时调用,AHDL语言编译的结果可以在VHDL 语言下使用,VHDL语言编译的结果也可以在AHDL语言或图形输入时使用。这样灵活多变的输入方式,给设计使用者带来了极大的方便。
1.2 课程设计目的
根据本次课程设计要求,设计一个HDB3码编解码的电路,要求在两块CPLD实验板上实现,要求对5级伪随机序列进行 HDB3的编码与解码。 1.2.1 设计流程
如下所示:
建立工作库文件夹 输入项目原理图或VHDL代码 存盘,并将项目设为工程文件 选 择 器 件 编程下载,硬件测试 引脚锁定并 编 译 建立波形文件,进行波形仿真和测试 启 动 编 译
1.2.2 设计方案
根据任务要求,可知在软件部分有以下几种方案可供选择:
(1)采用文本输入法,用一个源程序控制整个电路,然后利用顶层文件将它们综合起来,最终使其具有对伪随机码进行编译码的功能。原理图输入设计法,不需要任何硬件描述语言知识,在具有数字逻辑电路基本知识的基础上,就可以使用Max+plusII提供的eda平台,设计数字电路。
(2)采用原理图方法设计,编译码的主体部分用原理图输入法完成,当主体部分完成后,将其打包后,再将各个部分综合起来。原理图输入设计法可以极为方便的实现数字系统的层次化要求,层层严格要求,减少了系统设计中的错误。
(3)采用原理图与文本输入法双结合的方法设计,更加自主灵活的完成本次设计要求。
本次课程设计我们小组选用原理图与文本输入法结合的设计方式,并在EDA(电子设计自动化)工具的帮助下,用大规模可编程器件(CPLD)实现HDB3码编解码的电路设计原理。特点是:能直观地看到所设计的模块并能很容易地找出错误,避免了用VHDL语言设计时所引起的错误难修改的现象;改变了以往数字电路小规模多器件组合的设计方法。整个HDB3码编解码电路的设计在两块CPLD芯片上来实现。
- 4 -
通信工程专业计算机系列综合课程设计
2 HDB3编码电路的设计
2.1 HDB3编码器的设计需要
数字基带信号的传输是数字通信系统中重要组成部分之一。在数字通信中,有些场合可不经过载波调制和解调过程,而对基带信号直接传输。为使基带信号能适合在基带信道中传输,通常要经过基带信号交换,这种交换过程事实上就是编码过程。于是,出现了各种各样的常用码型。不同码型有不同的特点和不同的用途。例如AMI(传号交替反转)码,且这种基带信号无直流成分和很小的低频成分,宜在一般的基带信道中传输,但它可能出现4个连0现象,不利于接收端的定时信号提取。
HDB3(三阶高密度双极性码)码因具有无直流成分、低频成分和连0个数最多不超过3个等明显的优点,对定时信号的恢复十分有利,能很好地满足信道频谱特性要求,而成为普遍使用的基带传输码之一HDB3码是AMI码的改进型,成为3阶高密度双极性码。它克服了AMI码的长连0串现象。
2.2 HDB3 码的编码规则是:
1) 码流中连“0”码个数不超过3 个时,其编码规则与AMI 码相同:码元“0”用0 电平表示;码元“1”交替用50%占空正或者负矩形脉冲表示。
2) 当出现四个连零用取代节取代。取代节有两种,分别是“BOOV”和“OOOV”。这里的B 和V 均为传号脉冲。
3) 当相邻破坏点V 中间有奇数个原始传号(不包括B 码)时,用“OOOV\"取代。 4) 当相邻破坏点V 中间有偶数个原始传号时,用“BOOV\"取代。
5) 用“BOOV”取代时,B 码和V 码与它们前面一个原始传号极性相反。 6) 用“OOOV”取代时,V 码与它们前面一个原始传号极性相同。 如:
消息序列:1 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 01 AMI码:+1 0 0 00-10+1 0 0 00-1+1-1 0 0 00+1 HDB3码:+1 0 00+V-10+1-B 00-V+1-1+1 0 00+V-1
2.3 HDB3码的VHDL建模思想
从编码规则来分析,这个设计的难点之一是如何判决是否应该插B,因为这涉及到由现在时间的状态决定过去时间状态的问题。按照实时信号处理的理论,这是没有办法实现的。但在实际电路中,可以考虑用寄存器的方法,首先把信码寄存在寄存器内,同时设计一个计数器记数2个V之间“1”的个数,经过4个码元时间后,由一个判偶电路来给寄存器发送是否插B的判决信号,从而实现插B的功能。
不过,信号处理的顺序不能像编码规则那样:首先把代码串变换成AMI码,完成插V插B后,其后“+1”和“-1”的极性还要依据编码规则变换。这样做需要大量寄存器,电路结构也变得复杂。若把信号处理的顺序换一下:首先完成插V,接着执行插B,最后实现单极性变双极性的信号传输。这样做的好处是:输入的信号和插B插V功能电路中处理的信号都是单极性信号,需要的寄存器数目可以很少。
HDB3码的编码器模型框图见图1 所示:
- 5 -
通信工程专业计算机系列综合课程设计
2.4 HDB3码编码的设计原理
伪随码产生电路 连零检出电路 取代节判决 HDB3码形成电路 时钟电路 破坏点产生 单/双极性变换 输出 HDB3码 图2. HDB3编码部分原理框图
上图给出了HDB3的编码电路:编码电路接收端机来的单极性非归零信码,并把这种变换成为HDB3码送往传输信道。在同步时钟的作用下,输入的NRZ码流经过HDB3编码电路输出两路单极性码,这两路单极性码再送到“单/双极性码变换”电路,产生出双极性归零的HDB3码。实验板已设计有单/双极性码变换电路。
HDB3码编码器的各部分功能如下所述:
单极性信码进入本电路,首先检测有无连“0”码。没有四连“0”时,信码不改变地通过本电路;有四连“0”时,在第四个“0”码出现时,将一个“1”码防入信号中,取代第四个“0”码,补入“1”码成为V码。 取代节选择及补B码电路(取代节判决)
电路计算两个V码之间的“1”码个数,若为奇数,则用000V取代节;若为偶数,则将000V中的第一个“0”该为“1”,即此时用“B00V”取代节。 错误!未找到引用源。 破坏点形成电路
将补放的“1”码变成破坏点。方法是在取代节内第二位处再插入一个“1”码,使单/双极性变换电路多翻转一次,后续的V码就会与前面相邻的“1”码极性相同,破坏了交替反转的规律,形成了“破坏点”。 错误!未找到引用源。单/双极性变换电路
电路中的除2电路对加B码、插入码、V码的码计数器,它的输出控制加入了取代节的信号码流,使其按交替翻转规律分为两路,再由变压器将此两路合成双极性信号。
2.5 HDB3码编码的底层设计
2.5.1 伪随机序列的设计原理
NRZ码为非归零码,在一个码元的全部时间内发出或不发出电流(单极性),以及发出正电流或负电流(双极性),每一位编码占用了全部码元的宽度,不适合超高速或远距离输。
为使设计达到更高层次,我们通过原理图输入法设计产生伪随机序列。HDB3码的
- 6 -
通信工程专业计算机系列综合课程设计
转换要求决定了产生的序列必须要有四个以上的连零,因此选用NRZ5,我们采用原理图设计法,在Max+plusII软件中设计完成,其原理图如图3:
图3. NRZ5的原理图
编译无误后可见其访真波形如图4,通过波形仿真可以直观地看到产生的伪随机序列。验证伪随机序列的原理方案是正确无误的。
图4. NRZ5的仿真波形 2.5.2 HDB3码的编码设计模块
子模块delay用来实现或门输入两个周期的延迟,设计子模块main实现以上转换功能,主模块whole实现各个子模块的连接。
3个程序见附录。
(1)子模块delay用来实现或门输入两个周期的延迟
图5. 子模块delay的仿真波形
(2)设计子模块main实现以上转换功能。
HDB3码是AMI码的改进型,在码流出现连“0”个数超过3个时,插入“V”码(破
- 7 -
通信工程专业计算机系列综合课程设计
坏点),以便于同步,由于插入“V”码,码流经编后传输速率略有提高,即传输带宽略有加大。一般为双轨码流。由于输出为双轨码流,因此电路的输出设计为两路。即P1和P2。每路又分为两个支路,分别处理正常输入(没有连续四个零输入):P1+和P1-、异常输入(连续输入四个零):P2+和P2-的输出。
编码规则如下:
设置参数m,n。m用来控制两个破坏点之间1个数的奇偶性(m=1时为奇,m=0时为偶),n用来控制1的极性(n=1时为+,n=0时候为-)。 P1路处理正常输入,即没有连续四个零输入时的情况。初始的时候设置m=n=0,遇到第1时P1+输出n非,P1-输出n,然后m,n都求反。P2路处理异常输入,即有连续四个零输入时候触发的情况。 对子模块main的波形仿真我们进一步了解它的编码原理,我们仿真了三个波形,如图6.1、6.2和6.3。
图6.1 子模块main的仿真波形
波形分析:
由图6.1我们可以看出,当信号输入没有连续四个零输入的情况下,支路P1处理数据,支路P2空闲。支路P1对信号进行HDB3码的转换。由输出端口z1、f1来输出HDB3码。输入信号x为全1,在时钟信号的控制下,输入的码流进行码的转换,z1表示正值(当z1为高电平时表示+1),f1表示负值(当f1为高电平时表示-1),结果正满足HDB3码,为+1-1+1-1+1-1+1-1+1-1+1-1+1-1+1-1+1-1+1-1„„ 。
图6.2 子模块main的仿真波形
波形分析:
由图6.2我们可以看出,当信号输入存在连续四个零输入的情况下,支路P2处理数据,支路P1空闲。支路P2对信号进行HDB3码的转换。由输出端口z2、f2来输出HDB3码。输入信号x为全0,在时钟信号的控制下,输入的码流进行码的转换,z2表示正值(当z1为高电平时表示+1),f2表示负值(当f1为高电平时表示-1),结果正满足HDB3码,为000+V-B00-V+B00+V-B00-V+B00+V-B00-V+B00+V„„ 。
- 8 -
通信工程专业计算机系列综合课程设计
图6.3 子模块main的仿真波形
波形分析:
由图6.3我们完整地看到了它的编码过程。支路P1、P2都参与码流的转换。
(3)主模块实现各个子模块的连接,主模块将两个子模块delay 和main通过例化语句结合在一起,共同完成码流的转换。波形仿真如图7。
图7. 主模块whole的波形仿真
波形分析:
由图7可见,输出的结果由两个端口z和f输出,相比子模块main 程序更优。 2.5.3 HDB3 编码的顶层原理图设计
顶层设计可采用原理图,它用来描述系统各模块之间的结构。底层设计主要完成底层设计文件的建立和模块功能的描述,可以用原理图设计也可以采用VHDL语言完成底层设计。
在Max+plusII软件中,在上一步底层设计的背景下,将各个模块的打包图调出,完成HDB3码的编码的原理图输入,如图8。
- 9 -
通信工程专业计算机系列综合课程设计
图8. HDB3码的编码设计原理图
此原理设计最终完成了HDB3码的编码工作,仿真波形如图9。
图9. HDB3码的编码波形仿真 波形分析:
在同步时钟的作用下,输入的NRZ码流经过HDB3编码电路输出两路单极性码,这两路单极性码再送到“单/双极性码变换”电路,产生出双极性归零的HDB3码。实验板已设计有单/双极性码变换电路。
2.6 本章小结
本章完成了HDB3编译码器设计的编码部分,完成了软件部分的设计与仿真.与传统设计方法相比,利用EDA工具进行原理图输入设计的优点是,取消了传统电路设计过程的电路布线、绘制印制电路板、电路焊接、电路家电测试等过程,提高了设计效率,降低了设计成本,减轻了设计者的劳动强度。 以上各部分完成之后,可知软件部分已经达到任务要求。将以上各模块保存在一个文件夹里,就可以进行下一步的下载以及硬件测试了。
3.HDB3解码电路的实现
3.1 HDB3解码的设计原理
HDB3 译码电路完成编码的逆过程。由于HDB3 码中的V 码破坏了极性交替原则,因此,在接收端很容易找到它。对于正负交替的码当中,如两个极性相同的码元之间有奇数个“0”,即3个“0”,则后一个为“0”,如两个极性相同的码元之间有偶数个“0”,即两个“0”,则前后都为“0”。可见关键之处是检出破坏点、取消“取代节”。
HDB3 解码原理框图如图10 所示:
- 10 -
通信工程专业计算机系列综合课程设计
HDB3码 双/单极性变换电路 判决电路 破坏点检测电路 取代节去除电路 NRZ 输出
位定时恢复电路 位定时输出
图10. HDB3 解码原理框图 其各部分功能如下:
(1) 双/单极性变换电路
传输线来的HDB3码加入本电路,输入端与外线路匹配,经电压比较器将双极性脉冲分成两路单极性脉冲。 (2)判决电路
本电路选用合适的判决电平以去除信码经信道传输之后引入干扰信号。信码经判决电路之后成为半占空的两路信号,相加后成为一路单极性归\"0\"信码,送到定时恢复电路和信码再生电路
(3)破坏点检测电路
本电路输入正、负两个脉冲序列。由HDB3编码规则已知在破坏点处会出现相同极性的脉冲,就是说这时B+和B-不是依次而是连续出现的,所以可以由此测出破坏点。本电路在V脉冲出现的时刻有输出脉冲。 (4)去除取代节电路
在V码出现的时刻将信码流中的V码及它前面的第三位码置为\"0\",去掉取代节之后,再将信号整形即可恢复原来信码。破坏点检测与去除取代节电路一起完成信码再生功能。 (5)定时恢复电路
由随机序列功率谱可知,此功率谱中包含连续谱和离散谱。要将信码先整流成为单极性码,再送入位定时恢复电路,用滤波法由信码提取位定时。 本次课程设计利用VHDL硬件描述语言设计,并在EDA(电子设计自动化)工具的帮助下,用大规模可编程器件(CPLD)实现数字频率计的设计原理及相关程序。特点是:将原理图输入法和文本输入法巧妙地结合起来,在设计过程中思路清晰,结构简便,便于检测和纠错。该设计方案完成后,最终结果用示波器进行测试,显示图像清晰直观,便于对比,容易理解。
3.2 HDB3码解码的设计
采用文本输入的方法,源程序hdb3decoder参考附录。其解码规则如图11。
- 11 -
通信工程专业计算机系列综合课程设计
开始 2连0或3连0检测 否 是否有V 是 去掉V 否是否有B 是 去掉B 结束
图11. HDB3码的解码规则流程图
对hdb3decoder的波形仿真可以我们直观的了解它的结果。对其编译成功后,我们进行波形仿真,如图12。
图12. HDB3 解码仿真波形图
波形分析:
由图12,我们可以看出:在时钟信号的控制下,输入管脚datain送入的是HDB3码,其中“11”表示高电平“+1”,“00”表示”0”,而“01”表示”-1”。输入码元是:+1 0 0 0 +1 0 -1 0 +1 -1 0 0 -1 0 +1 0 -1 +1通过解码程序后输出结果dout为:100000101000001011。
3.3本章小结
本章完成了HDB3编译码器设计的译码部分,完成了软件部分的设计与仿真.与传统设计方法相比,利用EDA工具进行原理图输入设计的优点是,设计者不必具备许多诸如编程技术、硬件语言等新知识就能迅速入门,完成较大规模的电路系统设计,也使整个过程变得简介,明了了许多而且也容易找出错误,易于修改。 以上各部分完成之后,
- 12 -
通信工程专业计算机系列综合课程设计
可知软件部分已经达到任务要求。将以上各模块保存在一个文件夹里,就可以进行下一步的下载以及硬件测试了。
- 13 -
通信工程专业计算机系列综合课程设计
4.编程下载与测试
上述的设计、编译以及仿真仅用来检查涉及电路的逻辑功能是否正确,而为了验证我们所设计的HDB3码编译码器是否成功,我们必须实际编程下载。首先我们要选定设计项目的目标器件,在Max+plusII环境中我们选取Alter公司的CPLD。
4.1 HDB3码编码的下载
执行“Assign”选项的器件选择“Device“项,选定MAX7000S系列的EPM7128LSC84-15后进行引脚锁定。HDB3码编码的下载的管脚设置:
完成上述操作后,再次对设计电路进行时序仿真,然后设定编程下载方式,选择Max+plus中的Programmer选项,弹出对话框后,选择Options项的HardwareSetup硬件设置选项,选定byteblaster[MV]编程方式,“MV”是混合电压的意思。在选项JTAG中选择Multi-Device JTAG Chain Setup,添入目标文件。最后连接下载板,此次课设采用:现代通信原理与技术试验箱,打开电源并完成下载。
下载成功后,在通信原理实验箱上,将产生的两个单极性信号z与f输出至固定管脚17和21,箱子内部自动合成为双极性信号。因此,z、f引脚设置为17和21。HDB3编码实验使用的CPLD1/FPGA为U1,全局时钟为16.9344MHz,此时钟由83管脚引入。HDB3时钟为8.4672MHz,此时钟有77管脚输出。采用NRZ码为5级,可在75管脚测得。HDB3的两路单极性归零码输出Z(17管脚)、F(21管脚)。最终的HDB3双极性归零码从J31输出。
4.2 HDB3码译码的下载
步骤和HDB3码编码部分的下载相似,仅列出其引脚锁定。
HDB3码解码的下载引脚设定:
- 14 -
通信工程专业计算机系列综合课程设计
HDB3解码实验使用的CPLD1/FPGA为U2。可以了解输出的douta和doutb两路信号分别从U2的16P和18P输入,已经恢复的同步时钟信号从全局时钟2P输入,,并有P64作为引出端,douta、doutb单极性合成码由P20引出,译码后的5级NRZ信息码由P60输出。
4.3 HDB3码的编译码设计的测试
示波器是一种能观察各种电信号波形并可测量其电压、频率等的电子测量仪器。示波器还能对一些能转化成电信号的非电量进行观测,因而它还是一种应用非常广泛的、通用的电子显示器。
在此我们用示波器来观察编译码输出结果。将产生的伪随机序列由CPLD1/FPGA为U1的75管脚接至双踪示波器的CHI1通道,并将译码恢复的信号由CPLD1/FPGA为U2的60管脚接至双踪示波器的CHI2通道。双踪观察结果如下:
- 15 -
通信工程专业计算机系列综合课程设计
结束语
在课题设计中,通过使用MAX+PLUSⅡ这个完全集成化、易学易用的可编程逻辑设计环境,利用VHDL语言设计完成HDB3码的编解码电路的设计,较成功的完成了预期的效果,能够正确完成伪随机码到HDB3码的转换,并能再次将其解码为原信号。
这次课程设计总的说来收获很大。在最初的设计过程中,一共整理出好几个方案。但在实际的过程中发现,设计的情况和实际中还是有些差异的,通过比较得出最优方案。此外,也学会了使用MAX+PLUS软件。
不积跬步何以至千里,本设计能够顺利的完成,也归功于各位任课老师的认真负责,使我能够很好的掌握和运用专业知识,并在设计中得以体现。正是有了他们的悉心帮助和支持,才使我们顺利完成此次设计任务。
这次课程设计虽然短暂。但却是我独立自主的从设计电路到得出结论。书本上的内容第一次完完全全的综合运用。在设计过程中。遇到了书本中不曾学到的知识,经过请教老师和同学,以及查阅相关的资料,最终攻克。
- 16 -
通信工程专业计算机系列综合课程设计
致 谢
本文是在指导老师的悉心指导下完成的,老师在学术上严格要求,老师的教诲和鼓励,及在学术上一丝不苟的精神,本人受益匪浅,他渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪,在此向老师表示衷心的感谢和敬意!
同时,也要感谢本设计小组的同学,感谢他们在我遇到困难时的热情帮助,在课程设计中,我们积极的交流与探讨也使我受益非浅,希望在以后的学习道路中我们能够共同进步。
- 17 -
通信工程专业计算机系列综合课程设计
参考文献
[1]王素珍,王涛.基于VHDL语言的HDB3编译码器的一种实现方法[J].内蒙古师范大学学报:自然科学版, 2006,35(3): 300-303, 307.
[2]敖天勇,侯卫周,杨毅,等.基于CPLD的HDB3码编译码器设计[J].山西电子技术, 2007(2): 5-7.
[3]阎石.数字电子技术基础.北京:高等教育出版社
[4]潘松,黄继业.EDA技术实用教程.北京:科技出版社,2005年4月 [5]樊昌信,黄丽娜.通信原理.第六版 北京:国防工业出版社,2006
- 18 -
通信工程专业计算机系列综合课程设计
附录A:HDB3码的编码程序
模块delay程序: library ieee;
use ieee.std_logic_1164.all; entity delay is
port ( x:in std_logic; clk:in std_logic; y:out std_logic ); end delay;
architecture delay_arc of delay is signal o:std_logic_vector(0 to 1); begin
process(clk) begin
wait until clk='1' and clk'event; o(0)<=o(1); o(1)<=x; y<=o(0);
end process; end delay_arc;
模块main程序: library ieee;
use ieee.std_logic_1164.all; entity main is
port(x:in std_logic; clk:in std_logic; z1:out std_logic; z2:out std_logic; f2:out std_logic; f1:out std_logic ); end main;
architecture main_arc of main is signal n :std_logic;
signal j :integer range 0 to 3; signal m :std_logic; signal i :integer; signal ok :std_logic; signal en :std_logic; signal mm :std_logic; signal x1 :std_logic; signal nn :std_logic; signal o :std_logic;
- 19 -
通信工程专业计算机系列综合课程设计
signal ai :integer range 0 to 4; begin
process(clk) begin
wait until clk='1' and clk'event; i<=i+1; if i=4 then en<='0'; end if; x1<=o; o<=x;
if (x1='1') then z1<=not n; f1<=n; n<=not n; m<=not m; else
z1<='0'; f1<='0'; end if;
if x='1' then ai<=0; ok<='0';
elsif ((x='0') and (ai=0)) then ai<=1; ok<='0';
elsif ((x='0') and (ai=1)) then ai<=2; ok<='0';
elsif ((x='0') and (ai=2)) then ai<=3; ok<='0';
elsif ((x='0') and (ai=3)) then ai<=0; i<=0; ok<='1'; end if;
if ok='1' then en<='1'; j<=0; mm<=m; m<='0'; nn<=n; end if;
- 20 -
通信工程专业计算机系列综合课程设计
if en='0' then z2<='0'; f2<='0';
elsif ((mm='1') and (en='1') and (nn='0')) then z2<='0'; case j is
when 0=>f2<='0'; j<=1;
when 1=>f2<='0'; j<=2;
when 2=>f2<='0'; j<=3;
when 3=>f2<='1'; end case;
elsif ((mm='0') and (en='1') and (nn='1')) then z2<='0'; case j is
when 0=>f2<='1'; n<='0'; j<=1;
when 1=>f2<='0'; j<=2;
when 2=>f2<='0'; j<=3;
when 3=>f2<='1'; end case;
elsif ((mm='0') and (en='1') and (nn='0')) then
f2<='0'; case j is
when 0=>z2<='1'; n<='1'; j<=1;
when 1=>z2<='0'; j<=2;
when 2=>z2<='0'; j<=3;
when 3=>z2<='1'; end case;
elsif ((mm='1') and (en='1') and (nn='1')) then f2<='0'; case j is
when 0=>z2<='0'; j<=1;
when 1=>z2<='0';
- 21 -
通信工程专业计算机系列综合课程设计
j<=2;
when 2=>z2<='0'; j<=3;
when 3=>z2<='1'; end case; end if;
end process; end main_arc;
主模块程序: library ieee;
use ieee.std_logic_1164.all; entity whole is
port(x,clk:in std_logic; z,f: out std_logic ); end whole;
architecture whole_arc of whole is signal t1,t2,t3,t4,t5,t6:std_logic; component main is port(x:in std_logic; clk:in std_logic; z1:out std_logic; z2:out std_logic; f2:out std_logic; f1:out std_logic ); end component; component delay is port ( x:in std_logic; clk:in std_logic; y:out std_logic ); end component; begin
u0:main port map(x,clk,t1,t2,t3,t4); u1:delay port map(t1,clk,t5); u2:delay port map(t4,clk,t6); z<=t5 or t2; f<=t6 or t3; end whole_arc;
- 22 -
通信工程专业计算机系列综合课程设计
附录B: HDB3码的译码程序
译码程序: library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity hdb3decoder is port(clk:in std_logic;
datain:in std_logic_vector(1 downto 0); dout:out std_logic); end hdb3decoder;
architecture rtl of hdb3decoder is
signal D1,D0:std_logic_vector(3 downto 0); signal t:std_logic_vector(1 downto 0);
signal Not0_Save:std_logic_vector(1 downto 0):=\"00\"; begin
t<=datain;
process(clk,datain)is begin
if(clk='1' and clk'event)then D1(2 downto 1)<=D1(3 downto 2); D0(2 downto 1)<=D0(3 downto 2); if(t/=\"00\") then
if(t=Not0_Save) then
D1(3 downto 0)<=\"0000\";D0(3 downto 0)<=\"0000\"; else
Not0_Save<=t;
D1(3)<=t(1);D0(3)<=t(0); D1(0)<=D1(1);D0(0)<=D0(1); end if; else
D1(3)<=t(1);D0(3)<=t(0); D1(0)<=D1(1);D0(0)<=D0(1); end if;
if((D1(0)='1' and D0(0)='1')or(D1(0)='0' and D0(0)='1')) then dout<='1'; else dout<='0'; end if; end if; end process; end;
- 23 -
因篇幅问题不能全部显示,请点此查看更多更全内容