基于VHDL语言的HDB3编译码器的设计毕业论文

目录

摘要 (Ⅰ)

Abstract (Ⅱ)

引言 (1)

1 绪论 (2)

1.1 现代数字系统设计的发展概述 (2)

1.2 EDA技术简介 (2)

1.2.1 概述 (2)

1.2.2 EDA技术基本特征 (3)

1.2.3 EDA技术的开发工具 (3)

1.3 可编程逻辑器件简介 (4)

1.3.1 可编程逻辑器件的分类 (4)

1.3.2 可编程逻辑器件的特点 (5)

2 开发工具简介 (6)

2.1 VHDL语言 (6)

2.1.1 VHDL语言简介 (6)

2.1.2 VHDL语言特点 (6)

2.2 Max+PlusⅡ简介 (7)

2.2.1 Max+plusⅡ基本特点 (7)

2.2.2 Max+plusⅡ使用简介 (8)

3 HDB3码简介 (9)

3.1 基带传输的常用码型 (9)

3.1.1 传输码性的选择原则 (9)

3.1.2 AMI码 (10)

3.1.3 HDB3码 (10)

3.2 HDB3码的编/译码规则 (10)

3.2.1 HDB3码的编码规则 (10)

3.2.2 HDB3码的译码规则 (12)

4 HDB3编/译码器的VHDL建模 (12)

4.1 HDB3编码器的VHDL建模 (12)

4.1.1 插“V”模块的建模 (13)

4.1.2 插“B”模块的建模 (13)

4.1.3 单/双极性转换模块的建模 (14)

4.2 HDB3译码器的VHDL建模 (15)

5 仿真与实现 (16)

5.1 HDB3编码器的仿真与实现 (16)

5.1.1 插“V”模块的流程与仿真 (16)

5.1.2 插“B”模块的流程与仿真 (18)

5.1.3 单/双极性转换模块的流程与仿真 (20)

5.1.4 HDB3编码器整体仿真 (22)

5.2 HDB3译码器的仿真与实现 (23)

结论 (25)

致谢 (26)

参考文献 (27)

附录 (28)

程序清单 (28)

摘要

数字基带信号的传输是数字通信系统的重要组成部分。在数字通信中,有些场合可不经过载波调制和解调过程,而对基带信号进行直接传输。为使基带信号能在基带信道中传输,必须选择合适的码型,HDB3码因具有无直流成分,低频成分少,连0的个数最多不超过三个,功能强大,有纠错能力,具有时钟恢复等性能优势而成为CCITT协会推荐使用的基带传输码型之一。本文是在Max+PlusⅡ开发环境中,采用VHDL语言对数据传输系统中的HDB3编码器和译码器进行了设计及仿真。根据编码规则可将编码器分为三个部分,其中包括:插“V”模块、插“B”模块和单/双极性变换模块。根据译码规则,译码器只含有一个模块。最后,对每个模块进行仿真,实现相应功能后再进行整体编译码器的仿真。经验证仿真结果正确。

关键字:HDB3码;VHDL;编/译码器;Max+PlusⅡ

Abstract

Digital baseband signal transmission is an important digital communication system components. In digital communications, some occasions may, after modulation and demodulation process, and on the base-band signals transmitted directly.Must choose the right pattern for the baseband signal in the baseband channel transmission,HDB3 code and its non-DC components, and even less low-frequency components of 0 up to more than three the number, and it is strong to examine the ability by mistake, have advantages such as performance of clock recovery, etc, and the Association has become the CCITT recommended base-band transmission-type, one code. In this paper, the use of VHDL in the data transmission system HDB3 encoder and decoder has been designed and simulated in Max+Plus II development environment. According to the encoding rules, there are three parts in encoder: insert the "V" module, insert the “B” module, single / bipolar transform module. According to the decoding rules, decoder contains only one part. Finally, simulate each module, until achieve the corresponding functions to simulate the overall encoder and decoder. Proven simulation results are correct.

Keywords HDB3;VHDL;Encoder/Decoder;Max+PlusⅡ

引言

传输数字信号的通信系统称为数字通信系统。数字通信系统以其抗干扰能力强,无噪声积累,传输差错可控,便于计算处理、变换、存储,易于加密,易于小型化、集成化等优势,成为当代通信领域的主流技术。将基带数字序列信号经过适当的码型变换后直接送入信道传输,称为基带数字序列信号传输,简称基带传输。

数字基带传输码型选择原则:

直流或低频信号衰减快,信号传输一定距离后严重畸变,所以不应含有直流或低频频率分量。

高频分量越大,对邻近信道产生的干扰就越严重,所以高频分量进行少。

为方便从接收到的基带信号中提取同步信息,应包含定时频率分量。

便于增加冗余码,使码型带有规律性。

码型变换过程中与信源的统计特性无关,即对信源消息类型无任何限制并具有透明性

根据上述码型选择原则,HDB3码因具有无直流分量,低频成分少,连0的个数不超过三个,对定时信号的恢复十分有利,具有内在的检错能力等优点,成为广泛使用的基带传输码型之一。在本论文中,就是使用VHDL语言实现HDB3码的编码器和译码器的功能。

1 绪论

1.1 现代数字系统设计的发展概述

传统的数字系统设计方法是利用真值表、卡诺图、状态方程组、状态转换表、状态转换图等描述工具建立系统模型来进行设计的,整个过程均由人工完成。因此这种方法花费大、效率低、制作周期长。而对与一个复杂的数字系统(含有几万、十几万甚至几百万个逻辑门),如果用这种传统的数字电路设计的方法求解,往往是非常困难甚至有时是根本无法进行的。

20世纪末,数字系统的设计方法有了飞速的发展,在科技迅猛发展的推动下,现代电子产品已经渐渐渗透到了社会的各个领域,推动了全球信息化得进程。同时也使得电子产品更新换代的频率越来越快。电子器件经历了小规模集成电路、中规模集成电路、大规模集成电路和一些领域应用的超大规模集成电路的发展。并且其从简单可编程器件到高密度可编程器件,设计方法也发生了巨大的转变,即由原来的手工设计到早期CAD技术,再到目前应用及其广泛的电子自动化技术(EDA)。为了提高系统的可靠性与通用性,微处理器和专用集成电路(ASIC)也逐渐取代了通用全硬件(LSI)电路,可编程逻辑器件(PLD)被广泛地应用在ASIC的制作中。

在可编程集成电路的开发过程中,EDA技术的出现带来了电子系统设计的革命性变化,传统的设计方法逐渐已被基于EDA技术的设计所取代。

1.2 EDA技术简介

1.2.1 概述

EDA(Electronic Design Automation)是电子设计领域的一场革命,它源于计算机辅助设计(CAD,Computer Aided Design)、计算机辅助制造(CAM,Computer Aided Made)、计算机辅助测试(CAT,Computer Aided Test)和计算机辅助工程(CAE,Computer Aided Engineering)。利用EDA工具,电子工程师从概念、算法、协议开始设计电子系统,从电路设计、性能分析直到IC版图或PCB版图生成的全过程均可在计算机上自动完成。

与早期的CAD软件相比(即借助计算机来完成数据处理、模拟、设计验证的部分工作,但是许多工作仍旧需要人工完成),EDA自动化程度更高(即电子系统的整个设计过程或大部分设计均由计算机完成),功能更完善,运行速度更快,而且操作界面友好,有良好的数据开软件和互换性,即不同厂商的EDA软件可以兼容。因此,EDA技术很快在世界各大公司、企业和科研单位得到了广

泛的应用,并以成为衡量一个国家电子技术发展水平的重要标志。

EDA的技术范畴应包括电子工程师进行产品开发的全过程以及电子产品生产的全过程中期望由计算机提供的各种辅助工作。从一个角度看,EDA技术科粗略分为系统级、电路级和物理实现级三个层次的辅助设计过程;从另一个及角度来看,EDA技术应包括电子电路设计的各个领域,即从低频电路到高频电路,从线性电路到非线性电路,从模拟电路到数字电路,从分立电路到集成电路的全过程。

1.2.2 EDA技术基本特征

EDA代表了当今电子设计技术的最新发展方向,一般来讲,EDA技术的特点主要包括:硬件采用工作站或者高级计算机;软件采用EDA工具;设计的方法采用自顶向下的设计方法,对整个系统进行方案设计和功能划分;EDA工具软件结构采用开放性和标准化的框架,能够实现资源共享。其中EDA工具的功能包括:原理图输入、硬件描述语言输入、波形输入、仿真设计、可测试设计、逻辑综合、时序分析等方面。而所谓的自顶而下也就是设计从高层开始,由硬件描述语言完成系统行为级设计,利用先进的开发工具自动完成逻辑编译、化简、分割、综合、优化、布局布线、仿真及特定目标的适配编译和编程下载,这被称为数字逻辑电路的高层次设计。

目前,大多数高档EDA 软件都支持VHDL 和Verilog 混合设计,因而在工程应用中有些电路模块可以用VHDL 设计,其它的电路模块则可以用Verilog 设计,各取所长,已成为目前EDA应用技术发展的一个重要趋势。下章将简要介绍VHDL语言。

1.2.3 EDA技术的开发工具

目前,EDA技术的开发工具包括编辑器、仿真器、检查/分析和优化/综合工具等,下面做一些简单介绍。

a. 编辑器

编辑器的主要功能是用来设计输入进行图形或者文本的等方面的编辑操作,它一般包括有图形编辑器、波形编辑器和文本编辑器。其中文本编辑器可以在系统级上用来编辑电子系统的自然描述语言,而在其它层次上主要用于编辑硬件描述语言文本。本文采用的就是文本编辑器。

b. 仿真器

顾名思义,仿真器就是用来设计仿真操作的一种工具,其主要功能就是验证设计的正确性。通常,仿真器是评价EDA工具的一项重要指标之一。

c. 检查/分析工具

检查/分析工具用来对具体的设计进行编译、检查及分析,对设计中出现的错误和可能出现的结果进行分析。经分析过后的可以产生各种相关的文件,便于设计者分析结果。

d. 优化/综合工具

检查/分析工具用来完成优化和逻辑综合功能,目的是提高设计系统的性能、资源优化及使具体电路能够方便实现。

1.2.4 EDA技术的发展趋势

进入21世纪,全定制和定制专用集成电路正成为新的发展热点,专用集成电路的设计与应用必须依靠专门的EDA工具,因此EDA技术在功能仿真、时序分析、集成电路自动测试、高速印刷电路板设计及操作平台的扩展等方面都面临着新的巨大的挑战。EDA技术目前正处于高速发展阶段,每年都有新的EDA 工具问世,我国EDA技术的应用水平长期落后于发达国家,因此,广大电子工程人员应该尽早掌握这一先进技术,这不仅是提高设计效率的需要,更是我国电子工业在世界市场上生存、竞争与发展的需要。

1.3 可编程逻辑器件简介

1.3.1 可编程逻辑器件的分类

今天,数字电子系统的设计方法及设计手段都发生了根本性变化,正由分立数字电路向可编程逻辑器件(PLD,Programmable Logic Device)及专用集成电路(ASIC,Application Specific Integrated Circuit)转变。

广义上讲,可编程逻辑器件是指一切通过软件手段更改、配置器件内部连接结构和逻辑单元,完成既定设计功能的数字集成电路。目前常用的可编程逻辑器件主要有:

a. 简单的逻辑阵列(PAL/GAL),属于早期可编程逻辑器件的发展形势,特点是大多基于E2CMOS工艺,机构较为简单,可编程逻辑单元多为与、或阵列,可编程逻辑单元密度较低,仅能适用于某些简单的数字逻辑电路;

b. 复杂可编程逻辑器件(CPLD),可以实现的逻辑功能比PAL、GAL有了大幅度的提升,一般可完成设计中比较复杂、较高速度的逻辑功能,如接口转换、总线控制等;

c. 现场可编程逻辑阵列(FPGA),是在CPLD的基础上发展起来的新型高性能可编程逻辑器件,一般采用SRAM工艺。FPGA的集成度很高,其器件密度从数万系统门道数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。

1.3.2 可编程逻辑器件的特点

PLD的特点是在进行系统设计时体现出来的,使用PLD设计数字系统会带来许多好处,归结起来主要有:

a. 集成度高,一片PLD可代替几片、几十片甚至几百片中小规模的数字集成电路芯片。在实现数字系统时使用的芯片数量明显减少,占用印刷线路板面积小,整个系统的硬件规模明显减小;

b. 可靠性好,因为使用PLD减少了实现系统所需要的芯片数目,使得在印刷线路板上的引线以及焊接点数量也随之减少,所以系统的可靠性得以提高;

c. 工作速度快,使用PLD后实现系统所需要的电路级数少,因而整个系统的工作速度会得到提高;

d. 提高系统的灵活性,由于PLD器件引脚比较灵活,又有可擦除可编程能力,因此在系统的研制阶段,当由于设计错误或任务的变更而需要修改设计时,只需要修改原设计文件再对PLD芯片重新编程即可,而不需要修改电路布局,更换或增减器件,更不需要重新加工印刷线路板,这就大大提高了系统的灵活性;

e. 缩短设计周期,使用PLD时,印刷线路板电路布局布线简单;性能灵活,使用它修改设计方便;开发工具先进,自动化程度高。因此可以显著的缩短系统的设计周期;

f. 增加系统的保密性能,很多PLD都具有加密功能,在系统使用PLD期间可有效防止产品被他人非法仿制;

g. 降低成本,使用PLD修改设计方便,使设计周期缩短,进而使系统的研制开发费用降低;使用PLD使得印刷线路板面积和需要的插件减少,从而使系统的制造费用降低;使用PLD能使系统的可靠性提高,维修工作量减少,进而使系统的维修服务费用降低。总之使用PLD进行系统设计能显著的节约成本。

2 开发工具简介

2.1 VHDL语言

2.1.1 VHDL语言简介

集成电路设计规模及复杂度不断增大,用传统原理图方法进行系统级芯片设计已不能满足设计要求,而硬件描述语言(HDL,Hardware Description Language)在进行大规模数字系统设计时具有诸多优势,因此利用硬件描述语言进行系统行为级设计已成为FPGA与ASIC设计的主流。目前最流行、最具代表性的硬件描述语言是美国国防部(DOD)开发的VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)和GDA(Gateway Design Automation)公司开发的Verilog HDL。

VHDL即超高速集成电路硬件描述语言。是美国国防部1983年创建的硬件描述语言,经改进后作为IEEE标准,成为通用的硬件描述语言。

2.1.2 VHDL语言特点

VHDL作为IEEE标准,语法严格,已得到众多EDA公司支持,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点:

a. 功能强大

VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。它还具有多层次的电路设计描述功能。同时,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。

b. 设计方式多样

VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。

c. 硬件描述能力强

VHDL 语言具有多层次的电路设计描述功能,可以描述系统级电路,门级电路;描述方式既可以采用行为描述、寄存器传输描述、结构描述或者三者的混合方式。VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL具有丰富的数据类型。VHDL 语言既支持标准定义的数据类

型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。

d. 移植能力强

对于同一个硬件电路的VHDL 语言描述,可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。

e. 设计描述与器件无关

设计人员采用VHDL 语言描述硬件电路时,并不需要先去考虑选择进行设计的器件。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同的器件结构来实现。

f. 易于共享和复用

VHDL 语言采用基于库的设计方法。在设计过程中,可以先建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能是从门级电路开始进行设计,而是采用一些预先设计或者使用以前设计中的存档模块的累加,将这些模块存放在库中,就可以在以后的设计中进行复用。

由于VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。

VHDL主要用于两个领域,即可编程逻辑器件和专用集成电路。一个写好的VHDL程序可以下载到可编程逻辑器件中实现电路功能,也可以提交到工厂用于专用集成电路芯片的流片。

VHDL描述语言层次较高,不易控制底层电路,因而对VHDL 综合器的综合性能要求较高,但是当设计者积累一定经验后会发现,每种综合器一般将一定描述风格的语言综合成确定的电路,只要熟悉基本单元电路的描述风格,综合后的电路还是易于控制的。

2.2 Max+PlusⅡ简介

2.2.1 Max+plusⅡ基本特点

Max+plusⅡ是Altera公司提供的PLD集成开发环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设

计者能方便地进行设计输入、快速处理和器件编程。

Max+plusⅡ开发环境具有如下特点:

a. 界面开放,Max+plusⅡ支持与Cadence,Exemplarlogic,Mentor Graphics,Synplicty,Viewlogic等公司提供的第三方EDA工具接口;

b. 与结构无关的设计环境,Max+plusⅡ系统的核心Complier支持Altera公司的FLEX 10K、FLEX 8000、FLEX 6000、MAX 9000、MAX 7000、MAX 5000、ACEX 1K和Classic可编程逻辑器件,提供了与结构无关的可编程逻辑设计环境;

c. 集成化完全,Max+plusⅡ的设计、处理、与校验功能全部集成在统一的开发环境下,这样可以加快动态调试、缩短开发周期;

d. 设计库丰富,Max+plusⅡ提供丰富的库单元供设计者调用;

e. 模块化工具,设计者可以从各种设计输入、处理和校验选项中进行选择,从而使开发环境用户化;

f. 支持硬件描述语言(HDL),Max+plusⅡ支持各种HDL设计输入选项,其中就包括VHDL和Verilog HDL;

g. 开放核(OpenCore)特征,Max+plusⅡ软件具有开放核的特征,允许设计人员添加自己认为有价值的函数。

2.2.2 Max+plusⅡ使用简介

a. VHDL代码输入

(1) 启动Max+plusⅡ;

(2) 打开文本编辑器(Max+plusⅡ\Text Editor),或打开一个现有的文件(File\Open);

(3) 在显示的窗口中输入VHDL代码,以扩展名.vhd保存,注意文件名要与实体名保持一致;

b. 编译

(1) 针对当前建立的工程:File\Project\Set Project to Current File;

(2) 选择菜单命令Max+plusⅡ\Compiler,将弹出编译窗口,点击Start;

c. 仿真

(1) 打开波形编辑器(Max+plusⅡ\Waveform Editor);

(2) 单击右键,选择Enter Nodes form SNF,出现对话框,单击“=>” ,然后点OK。所有的VHDL代码实体中出现的的信号都会列在波形窗口中,输入信号的默认值是“0”,输出信号的默认值为“X”;

(3) 选择File\End Time,设定波形长度

(4) 单击Max+plusⅡ\Simulator,出现对话框,其中的Start Time是仿真的起始时间,End Time是仿真的终止时间,点击Start开始仿真

以上只是最简单的使用步骤,器件还有很多的参数需要修改,并且因为本文使用的只是单纯的文本输入,不涉及到选择器件、选择全局逻辑综合方式、选择器件引脚等操作。以上不做介绍。

3 HDB3码简介

3.1 基带传输的常用码型

3.1.1 传输码性的选择原则

在实际的基带传输系统中,并不是所有的基带波形都适合在信道中传输。例如,含有丰富直流分量和低频分量的单极性基带波形就不适宜在低频传输特性差的信道中传输,因为这有可能造成信号的严重畸变。又如,当消息码中包含长连“0”或“1”时,非归零波形呈现出连续的固定电平,以致于无法提取定时信息。单极性归零码在传送长连“0”时,也存在同样的问题。因此对传输使用的基带信号主要有一下两个要求:

a. 对码型要求,原始消息代码必须编成适合于传输用的码型;

b. 对所选码型电波形的要求,电波形应适合于基带系统的传输。

在选择码型时,一般应考虑一下原则:

a. 不含直流分量,且低频分量尽量少;

b. 应含有丰富的定时信息,以便从接受码中提取定时信息;

c. 功率谱主瓣宽度窄,以节省传输频带;

d. 不受信源统计特性的影响;

e. 具有内在的纠错能力,即码型具有一定的规律性,以便利用这一规律宏

观检测;

f. 编译码简单,以降低通信延时时和成本。

满足或者部分满足上述6点特性的码型很多,下面介绍常用的AMI码和HDB3码。

3.1.2 AMI码

AMI(Alternative Mark Inversion)码全称为传号交替反转码,其编码规则是消息码中的“0”保持不变,而“1”交替地变化为“+1”和“-1”。举例如表3-1所示:

表3-1 AMI码编码举例

AMI码的优点是,无直流分量,且高频、低频分量少,能量集中在频率为1/2码速处;编码电路简单,且可利用传号极性交替这一规律观察误码情况;如果为AMI-RZ波形,接收后只要全波整流,就可以变为单极性RZ波形,能够提取定时信号。

AMI码的缺点是,当信源码出现长连“0”时,信号的电平长时间不跳变,造成提取定时信号困难。解决这一问题的有效方法就是使用HDB3码。

3.1.3 HDB3码

HDB3码(High Density Bipolar of order 3code,三阶高密度双极性码)是串行数据传输的一种重要编码方式,也是数字通信系统中重要组成部分之一。和最常用的NRZ码(Non Return Zero,非归零码)相比,HDB3码具有很多优点,例如:消除了NRZ码的直流成分,具有时钟恢复和更好的抗干扰性能,这使它更适合于长距离信道传输。和AMI码相比,将连“0”的个数限制在三个以内,使得接受时能保证定时信息的提取。同时,HDB3码具有较强的检错能力,当数据序列用HDB3码传输时,若传输过程中出现单个误码,其极性交替变化规律将受到破坏,因而在接收端根据HDB3码这一独特规律特性,可检出错误并纠正错误,因而HDB3码作为数据传输的一种码型,应用广泛。

3.2 HDB3码的编/译码规则

3.2.1 HDB3码的编码规则

从消息代码到HDB3码的编码规则是:

a. 先将消息代码变换成AMI码。

b. 检查AMI码中的0情况,如果出现4个以下连“0”的情况,则保持AMI 码的形式不变。

c. 当代码序列中出现4个或4个以上的连“0”码时,则将连“0”段按4个“0”分节,即“0000”为一节,并使第4个“0”码变为“V”,且“V”脉冲的极性与前一个“1”脉冲的极性相同,称V为破坏码,“000V”为破坏节。

d. 当所得序列中2个相邻破坏码“V”之间“1”脉冲的个数为偶数,需将第二个破坏节中的第一个“0”码变为“B”。这时破坏节就变为“B00V”形式。“B”脉冲的极性与其前一个非“0”脉冲的极性相反,而与其后的“V”脉冲极性相同。

HDB3编码举例及波形图如表3-2,图3-3所示:

表3-2 HDB3编码举例

消息码:1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1

HDB3:-1 0 0 0 -V 1 0 0 0 V -1 1 -B 0 0 -V B 0 0 V -1

HDB3:+1 0 0 0 V -1 0 0 0 -V 1 -1 B 0 0 V -B 0 0 -V 1

图3-3 HDB3编码示意图

HDB3码的优点是:基带信号无直流成分,且只有很小的低频成分;连“0”个数最多只有3个,利于定时信息的提取;不受信源统计特性的影响。

3.2.2 HDB3码的译码规则

HDB3码的编码规则虽然比较复杂,但是译码却比较简单。从上述编码规则可以看出,每一个破坏脉冲“V”总是与前一非“0”脉冲同极性(包括B)。也就是说,从接收到得消息码中可以很容易的找到破坏点“V”,于是也就断定“V”符号及其前面的三个符号必是连“0”符号,从而恢复4个连“0”码,再将所有“-1”变成“+1”后便可的到源消息码。

4 HDB3编/译码器的VHDL建模

4.1 HDB3编码器的VHDL建模

在实际设计中,若按照前面编码规则需要先把代码转换成AMI码,再进行插“V”和“B”的操作,最后还要依据编码规则变换“1”的极性。这样做需要大量的寄存器,同时电路结构也变得十分复杂。以我现在所掌握的知识无法实现本次设计。

在实际的设计中,首先完成插“V”工作,然后完成插“B”功能,最后完成单极性变双极性的信号输出。这样做的好处是:输入进来的信号和插“V”、插“B”功能电路中处理的信号都是单极性信号,且需要的寄存器的数目可以少很多。

具体来讲,可以考虑使用寄存器的方法,首先把消息码寄存在寄存器中,同时设置一个计数器计算两个“V”之间“1”的个数,经过4个码元的时间后,再由一个判偶电路来给寄存器发送是否插入“B”的判决信号,从而实现插“B”功能。因为在电路中“V”和“B”最终的表现形式还是逻辑电平“1”,要准确识别电路中的“1”、“V”和“B”解决的方法是利用了双相码,将其用二进制码去取代。模型框图如图4-1所示:

图4-1 HDB3编码模型

双向码的编码规则是:对每个二进制代码分别利用两个具有不同相位的二进制码去取代。举例如表4-2所示:

表4-2 NRZ码与双向码的关系

这样就可以识别电路中的“1”、“V”和“B”。也可以人为地加入一个标识符(其最终目的也是选择输出“1”的极性)。控制一个选择开关,使输出“1”的极性能按照编码规则进行变化。

4.1.1 插“V”模块的建模

要实现插“V”模块的功能,需要对消息代码里的四连“0”串进行检测。当出现个“0000”串的时候,把第四个“0”变换成为符号“V”(“V”可以是逻辑“1”——高电平),非四连“0”情况下,则保持消息代码按原样输出。为了减少后面工作的麻烦,在进行插“V”功能设计时,用“11”标识“V”,用“01”标识“1”,用“00”标识“0”。输入代码与插入“V”符号之后的关系如表4-3所示。

表4-3 插入“V”符号

插“V”模块的设计思想是:在进程中,首先通过一个条件语句判断输入的代码是什么(“0”码或“1”码),如果输入的是“0”码,则接着判断这是第几个“0”码,如果是第四个“0”码,则把这一位“0”码变成“V”码。否则,保持消息代码按原样输出。

4.1.2 插“B”模块的建模

插“B”符号模块的功能实现是一个难点,主要难点是这部分内容涉及到由现在事件的状态决定过去时间状态的问题。目前,这种问题按照实时信号处理的理论,暂时还未有实现的办法。把以前的时间状态的数据进行再一次处理,这个中做法在通信领域比较常用,一般来讲,可以先将需要输入的数据,存放在寄存器中,等处理完成以后,再进行输出或者一边进行处理一边进行边输出。

具体实现是先引入两个四位的移位寄存器D,将信源消息码存放在寄存器中,与此同时,设置一个计数器(即同步时钟),在计数器的作用下计算两个“V”码元之间“1”的奇偶性,判断是否需要进行插入“B”码元的工作(需要一个具有判

偶功能的电路来向寄存器发送判决信号)。寄存器接受数据的过程如图4-4所示: 例如输入的数据当10001时

图4-4 寄存器接受数据的过程

移位寄存器先存放输入信号的前4个状态的码元,同时判偶器判断“1”码元个数的奇偶性,当一有信号输入,就进行判断,当输入码元为“1”时,计数器就加上1;当输入码元为“0”时,计数器不计数,保持不变;而当输入码元为“V”时,就会需要计数器判断“1”个数的奇偶性,偶数个就输出“B”。每输出一个数,寄存器就向右移动一位。

在插“V”模块的VHDL 程序中,V 用“11”代替,1用“01”取代,从而显示出了双相码的优点,很好地解决了“V”和“1”的差别问题。根据这种设计方法,将输入的NRZ 码序列进行插“V”和插“B”步骤后的代码关系如表4-5所示:

表4-5 插入“V”“B”符号

4.1.3 单/双极性转换模块的建模

单/双极性转换模块的难点在于:当VHDL 程序在Max+Plus Ⅱ环境中进行仿真时,Max+Plus Ⅱ软件无法识别“-1”,波形仿真时只有“0”和“1”两种电平状态。所以我们可以定义双向码“00”、“01”和“11”分别表示三种电平状态,如表4-6所示:

1

0 0 0 1

1 0 0 0

1 0 0

1 0

表4-6 双向码表示电平状态的关系

由HDB3码的编码规则可以看出:“V”的极性与其之前的非0码的极性相同,并且“V”的极性是正负交替的。而“B”的极性和其之前的非0码的极性相反,并且可以将除“V”之外的“1”和“B”看成一体,它们的极性是正负交替的。因此,可以将“V”单独的进行极性变换,而“1”和“B”作为一个整体进行极性变换。由于前面已经用双向码分别对“0”、“1”、“V”和“B”进行了标识,因此可以很好的区别它们以便进行极性交替变换的操作。

4.2 HDB3译码器的VHDL建模

HDB3码译码规则:

a. “V”的极性与其前的非0码极性相同,因此可以很容易的找出“V”码。当未编译代码中有3连“0”且其前后两个非零脉冲极性相同,则将最后一个非0码转换为“0”,否则不做改变;当代码中有2连“0”且其前后两个非0码的极性相同,则将这两个非0码都转换为“0”,否则不做改变。

b. 再将所有的-1变换成+1后,就可以得到原消息代码

在实际编写VHDL代码时,参照上述译码规则进行编写。

5 仿真与实现

5.1 HDB3编码器的仿真与实现

5.1.1 插“V”模块的流程与仿真

根据插“V”模块的设计思想,若输入一段NRZ序列,输入序列与插“V”符号之间的关系为图5-1所示:

图5-1 插“V”模块流程图

根据上述流程图,使用VHDL语言实现该功能的过程如下:先判断输入的代码是否为“0”,若不为“0”,输出“1”(即“01”),反之通过计数器count0计算连“0”的个数,当连“0”个数小于3时,输出“0”(即“00”),而当连“0”个数大于3时,在第4个“0”的位置插入“V”(即“11”)。

相关文档
最新文档