资源描述
内蒙古工业大学本科毕业设计说明书
学校代码: 10128
学 号:
本科毕业设计说明书
(
题 目:基于EDA技术的HDB3编
码器的设计与实现
学生
学 院:信息工程学院
系 别:电子系
专 业:通信工程
班 级:通信
指导教师: 教授
班 级:自动化01-2
指导教师:××× 教授
二 〇 一 六 年 六 月
摘 要
为了弥补AMI码不能克服长连零导致的通信同步的问题,所以产生了HDB3码。这样编码很大程度上提高了编码传输中检错、纠错的能力,从而提高了数字基带信号的通信质量 。
本次设计是基于EDA技术的HDB3编码器的设计,以VHDL为语言工具,QuartusII软件为设计平台,以及搭建硬件电路完成了对HDB3编码器的设计。整个设计划分为3个模块,分别单独设计,最后3个模块级联后就实现了HDB3编码器。本设计说明书首先分别介绍了EDA技术与可编程器件、开发工具的使用概述和特点,对AMI码、HDB3码进行了重点阐述和分析,这对后续的设计起着重大作用。其次,通过对三种HDB3编码器的设计方案的对比分析,得出最佳方案。对HDB3编码器各个模块的实现基本原理和对VHDL语言的编码思想进行了详细的介绍,同时描述了对模块功能的流程图的设计,通过波形仿真的方式来验证各个模块的功能。最后通过软件仿真、硬件电路测试的方式来验证本次设计的HDB3编码器的正确性、合理性。从仿真的结果可以看出整个设计基本完成了HDB3编码器的设计,但输出相对于输出有时钟脉冲上了延时。
关键词:HDB3;VHDL;编码器;QuartusII软件
Abstract
In order to make up for the AMI code can not overcome the long even zero lead to the problem of communication synchronization, so generated HDB3 code. This code to a large extent improve the coding for data transmission error detection and error correction ability, so as to improve the quality of the digital baseband signal communication.
This design is based on the EDA technology of the HDB3 encoder design, with VHDL as the language tool, QuartusII software for the design platform, as well as to build a hardware circuit to complete the design of the HDB3 encoder. The whole design is divided into 3 modules, which are separately designed, and the last 3 modules are cascaded to implement the HDB3 encoder. The design specification are first introduced EDA technology and device programming, development tools using the overview and characteristics, the AMI code and HDB3 code has carried on the key elaboration and analysis of, which the subsequent design plays a major role. Secondly, through the comparative analysis of the design scheme of the three kinds of HDB3 encoder, the optimal scheme is obtained. Each module of the HDB3 encoder to achieve basic principle and of VHDL code method are introduced in detail, and describes the flow chart of the function module design, through the simulation waveform to verify the function of each module. Finally through the software simulation, hardware circuit test method to verify the correctness and rationality of the design of the HDB3 encoder. From the simulation results we can see that the design of the entire design basically completed the HDB3 encoder design, but the output relative to the output of the clock pulse on the delay.
Key words: VHDL;HDB3;encoder;Quartus II software
目录
引言 1
第一章 EDA技术与可编程逻辑器件 2
1.1 EDA技术简介 2
1.1.1 EDA技术概述 2
1.1.2 EDA技术基本特征 2
1.1.3 EDA技术的的设计方法 2
1.1.4 EDA技术的开发流程 3
1.1.41 设计输入 3
1.1.42 逻辑综合与优化 3
1.1.43 目标器件的布局布线 3
1.1.44 设计仿真 3
1.1.45 编程下载 3
1.1.5 EDA技术的发展趋势 3
1.2 可编程逻辑器件简介 4
1.2.1 可编程逻辑器件的分类 4
1.1.2 可编程逻辑器件的原理 4
第二章 开发工具的简介 5
2.1 VHDL语言 5
2.1.1 VHDL语言简介 5
2.1.2 VHDL语言特点 5
2.2 QuartusII软件的简介 5
2.2.1 QuartusII软件基本特点 5
2.2.2 QuartusII软件的使用 5
第三章AMI码、HDB3码 7
3.1 AMI码的简介与分析 7
3.2 HDB3码的简介与分析 7
3.3 HDB3码的编码规则 7
3.4 HDB3码的应用 8
4.1 HDB3编码器的VHDL建模 9
4.2 插V模块编码的思想的产生及其原理 10
4.21插“V”模块编码思想的产生 10
4.22 插“V”模块编码的原理 10
4.23 插“V”模块的仿真结果 11
4.24 插“V”模块的仿真分析 12
4.3 插“B”模块编码的思想及其原理 12
4.31插“B”模块编码思想的产生 12
4.32插B码的编码的原理 12
4.33 插“B模块的仿真结果 13
4.34 插“B模块的仿真结果分析 14
4.4 极性变换模块编码的思想及其原理 14
4.41 极性变换模块编码思想的产生 14
4.42 极性变换模块的编码原理 14
4.43极性变换模块的仿真结果 16
4.44 极性变换模块仿真结果分析: 16
4.5 HDB3编码器整体设计 17
4.51 HDB3编码器整体设计原理 17
4.52 HDB3编码器整体仿真 17
4.53 整体仿真结果分析 18
4.54 HDB3编码器整体设计时钟设置 18
第五章 HDB3编码器的的引脚锁定和编程下载 19
5.1 HDB3编码器的的引脚锁定 19
5.2 HDB3编码器的配置文件下载 22
5.3 HDB3编码器的极性变换模块附加电路的设计 24
5.31芯片的选择及其介绍 24
5.32 硬件电路设计 25
结论 25
参考文献 26
附录 27
谢辞 32
引 言
EDA技术在当前的数字系统设计中是一种必备的高度自动化的技术,它可以实现硬件系统的设计用软件设计来来完成,在电子信息设计领域非常热门的一种技术,也是有广阔的前景的一门技术。
本次设计工作的目的是运用EDA技术来完成对HDB3编码器的设计与实现,在基带数字传输系统中为了通信取得更好的传输质量,所以对在信道上所传输的码型进行不断改进。HDB3码在当前所设计的各种码型中相对比较强的检错、纠错能力,根据数字通信系统传输的码型选择原则可知HDB3码对于数字通信系统传输是非常适合编码,而且HDB3码的译码比较简单,所以设计HDB3编码器是有很大的必要性。
在当前对于HDB3编码器的实现的方式有多种,可以运用C语言通过单片机来实现,也可以通过基于EDA技术的可编程器件来实现,但是鉴于可编程器件的对所设计的程序并行处理和电路的设计的高灵活性,这样大大提高了编码器的处理速度同时也减小了设计者的设计难度,所以在目前基于EDA技术的可编程器件是相对比较好的实现方式。目前,在HDB3编码器的具体设计方案有多种,各有自己的优、缺点,当前的研究状态处于设计的优化阶段,人们对HDB3编码器实现算法的改进上还在不断的研究之中,对于不同实现算法的选择会影响最终HDB3编码器的编码效果、以及设计成本。
第一章 EDA技术与可编程逻辑器件
1.1 EDA技术简介
1.1.1 EDA技术概述
EAD技术就是电子设计自动化技术,EDA技术是一种非常庞大的技术体系,需要我们经过多年的学习和工作过程才能掌握的一门技术。EDA技术是随着电子电路的不断发展而生产的,它是存在推动了电子电路、信息技术的发展。
1.1.2 EDA技术基本特征
硬件设计软件化是EDA技术的主要特征,这也是硬件电路的设计进步的一个里程碑,它将大规模数字电路系统的设计推向了高峰。如果没有这一技术的发展,我们可能会生活在另一个世界里。
EDA技术非常自动化,从开始到完成的整个设计过程都是通过计算机来完成的,在程序编译、波形仿真、设计性能分析、硬件测试等环节都是自动生成报告文件,这对于设计者进行性能优化提供很大的帮助,同时也降低了数字电路系统设计的门槛,推动科学技术的发展。当设计完成之后在QuartusII中选定自己的所需的器件进行编译之后,软件将自动分析本次设计对整个芯片的占用情况,使设计者对芯片的占用资源有了清楚的了解,从而促进了芯片资源的合理利用。
EDA技术缩短了产品的开发周期,由于EDA技术的高度的自动化,为电子工程师提供了很大的便捷,大大提高了设计的工作效率。由于是通过软件的方式来设计硬件,从而对所设计的电路系统修改比较容易,这也提高了对系统的设计效率。
1.1.3 EDA技术的的设计方法
EDA技术通常分为两种设计方法。自上而下的方法将整个系统的设计分为个模块,通过模块化的设计方式来完成整个数字系的设计,可以把整个设计的不同模块分配给多个工程师同时进行设计,这样大大提高了设计效率,同时这样的设计思想条理比较清晰,而且通过模块化设计后对错误的查找、修改比较方便,每次查找只是在一个模块的范围之内,所以这样的设计思想也是我们通常采用的设计思想。
自下向上由于存在比较的大的弊端,这种设计思想盖房子一样通过一砖一瓦地把房子盖好,但对于数字系统的设计来说这样的设计效率是很低,不能对整个个设计展开进行设计,只能是按部就班。这样的设计对错误的检查也是比较空难的,它是在整个系统范围内进行检查。
1.1.4 EDA技术的开发流程
1.1.41 设计输入
设计输入就是将本次设计的程序或者图形文件输入到Quartus软件的过程。设计输入总体上分为两种形式的输入,分别是图形文件输入和硬件描述语言的输入,逻辑状态输入是根据功能的逻辑控制和逻辑状态转换来绘制状态图。设计波形图输入是只绘制预期功能的波形。使用较多的是硬件描述语言的输入,预期设计的功能是通过软件设计来实现,这也是EDA技术的主要特征。
1.1.42 逻辑综合与优化
逻辑综合就是将设计进行其他形式的转换,随着综合度的不同,对设计的描述形式也不同。行为综合和逻辑综合是将程序设计与设计预期的硬件电路相映射,也是一种设计思想的实体体现。结构综合就是将设计的电路与可编程逻辑器件的网表文件的映射,也就是把设计者的设计通过器件的网表来体现。
1.1.43 目标器件的布局布线
布局布线主要完成的任务就是产生对器件下载所需的SOF文件,其中重要的一步就是文本形式的设计输入、输出端口在所选器件中引脚的锁定。
1.1.44 设计仿真
设计仿真包括时序仿真和功能仿真,时序仿真是为了检验设计的延时、运行速度等与时间有有关的性能参数。功能仿真就是验证已完成设计是否能够满足预期设计要求的功能,功能仿真一般是通过波形仿真来完成。
1.1.45 编程下载
编程下载是设计的最后一步测试,它是建立在前期多个编译、仿真的环节之上的,如果硬件测试要满足设计的测试要求,那么就意味着设计达到了预期的要求。
1.1.5 EDA技术的发展趋势
人们对电子产品的体积、产品对信息的处理速度和产品的功耗等方面不断提高。为了改善体积大和功耗大的两大问题,后来又出现了晶体管。随着工艺和技术的提高出现了集成电路,同时促进了EDA技术的发展。在当今这复杂的数字系统设计是离不开EDA技术的应用,所以EDA技术在数字集成设计中起至关重要的作用,所以EDA技术也是当今电子工程师所必备的技术,只有掌握了EDA技术我们才会设计出规模更大、结构更复杂、体积更小、处理信息速度更快的集成数字电路系统。
EDA技术是将硬件设计通过软件来实现,在一定程度上降低了数字电路设计的门槛,这对于EDA技术的推广有着极大的促进作用,同时EDA技术让数字系统产品的研发周期减小,这对于工程项目来说有着极大的好处,所以EDA技术的发展前景是非常广阔的。
1.2 可编程逻辑器件简介
可编程逻辑器件就是对可以对集成电路里的各个宏单元进行重新设置和更改,通过软件的方式来编写设计所需要的功能芯片,由于可编程器件的成本较高,对于简单的数字电路的实现就使用成品、定制功能的芯片来实现。当前对于可编程逻辑器件研究水平相对于美国来说处于落后状态,在电子信息所用的可编程芯片几乎都来自美国,所以在我国可编程逻辑器的研究需要进一步加强。
1.2.1 可编程逻辑器件的分类
可编程器件是一个庞大的芯片体系,不同厂家根据其期间的自身特点,根据不同的角度对可编程期间的分类是不同的,在当前主要有三种不同的分类方式。
第一种是按集成度的大小来分类,。
第二种是可编程器件的结构来划分的。由于任何数字电路可以变形为以“与或”电路的形式,所以有的器件在生产和制造过程中就以“与或”阵列结构来体现。对于查表类器件是比较过去的分类叫法,在过去EDA技术很多以查表的方式来进行设计,当前已不用此种方法进行设计了。
第三种是按器件的编程的方式来划分,当前可以分为6类。当今多使用Flash型器件,因为它具有断电需要重新下载、配置,这给设计者带来了很大的方便,同时对于一个器件可以进行多次编程。
1.1.2 可编程逻辑器件的原理
可编程器件的编程原理的掌握对于初学者来说是非常重要,只有这样才会在编程过程中建立硬件的概念,对程序的运行情况才会有所把握。可编程器件的结构可以分为3块,其中逻辑块就是是我们通过具体编程实现的特定功能模块,连线块就是将各个单元块进行级联,使设计实现一个完整的功能。
在可编程器件内部的各个模块内的各个存储器之间是并行运的,而不像普通的芯片那样顺序执行,这样使得用可编程系列器件设计的数字系统运行速度非常快。
第二章 开发工具的简介
2.1 VHDL语言
2.1.1 VHDL语言简介
VHDL是一种用对硬件数字电路描述的语言,它是由美国官方所开发的一种语言,最初是为了强大军队的信息化,科技化而产生的一门语言。在我国最初是由北京航天航空大学教授夏宇闻老师从国外引进的,这也是我国大部分高等院校学习的是VHDL而不是另外一种硬件表述语言Verilog的一方面原因。
VHDL语言实现了通过软件来搭建硬件电路,尤其是在大规模、高度集成的数字电路系统方面进行了广泛的应用。随着电子信息技术的发展,工程师所设计的门数在几十万甚至上百万级的电路系统是离不开对硬件表述语言的应用,所以在数字电路系统的设计过程中VHDL语言起着重要的作用。
2.1.2 VHDL语言特点
VHDL语言其他语言的性质,它有类似于C语言、汇编等语言的性质。在程序的设计过程中也有被调用的库,这个库是官方规定的,里面有大量的可调用的资源,这为我们在程序过程中带来了极大的方便。在我们调用这些库里的资源时,一定要对所调用资源所在的库,具体到哪一个程序包要进行声明。只有这样我们才可以有效地调用我们所学需要的资源。
VHDL语言具有一定的独特性,它不仅描述的是逻辑,更重要是描述的是数字电路,所以在学习VHDL语言前一定要有数字电路的基础,只有有了这样的基础之后,我们对它的学习才有一定的实际意义。因为我们在学习的过程中往往是通过电路图来设计VHDL语言或者通过VHDL来画电路图。在VHDL程序设计过程中,在大脑里始终要有硬件电路图,这样我们才会设计的是硬件电路,才能实现我们需要对的电路功能。
2.2 QuartusII软件的简介
2.2.1 QuartusII软件基本特点
QuartusII软件EDA技术,在化工、建筑等领域也有所运用,所以QuartusII软件的功能是非常强大的。QuartusII软件是在Max+plusⅡ的基础上开发的,所以具有Max+plusⅡ的优点,它界面设计人性化。QuartusII软件是一个比较开发的软件,QuartusII软件支持多种语言,它也支持第三方开发的仿真工具软件。
2.2.2 QuartusII软件的使用
通过EDA技术完成的每一个设计对于QuartusII软件来说都是一个工程。所以在使用QuartusII软件前首先要建立一个新的文件夹,用来放我们要完成的这个设计的所有QuartusII软件涉及到的文件,在建立文件夹和工程时的名称一定不能含有中文,否则在后期的设计完成中QuartusII软件会不识别我们所建立的工程,而且不能找到工程所在的文件夹。新建工程具体简单使用步骤如下:
打开QuartusII软件→在File选项的下拉菜单栏中选择New Project Wizard→点击nest→选择为工程所建的文件夹路径并对工程和实体命名→点击nest→添加的文件→点击nest t→选择器件型号→点击nest→点击finish。这样就完成了对一个工程的简单建立,当工程建立好之后需要建立VHDL文件。
对于初学习者来说比较适合使用较低的版本,这样更易于对EDA的学习入门。QuartusII软件版本在低于9.0的可以进行波形仿真,在此版本的软件上可以新建波形仿真文件,但存在一定的弊端,首先是时钟信号、输入信号等等信号需要手动在打开的波形文件上画,这样对于工程师来说不仅费时费力,而且时钟信号、输入信号的上升沿和下降沿相对于时钟精确到纳秒级的器件来说有比较大的误差,其次当需要大量的时钟信号和要处理的输入信号时就需要更多时间和人力。当QuartusII软件的版本高于9.0时,此软件不在具有波形文件的仿真功能了,但是仿真是通过Modelsim来实现,此时时钟脉冲信号、要处理的输入信号等等是通过脚本文件来写,而不是通过手动画的,这样不但解决了波形上升沿和下降沿的不准确的问题,当要输入大量时钟信号和要处理的输入信号时只要通过修改脚本仿真文件的参数就可以实现。
第三章 AMI码、HDB3码
3.1 AMI码的简介与分析
AMI是在NRZ码基础上“1”码正、负极性交替的码。举例如表3-1所示:
表3-1 AMI码编码举例
消息码
0
0
1
1
1
0
0
1
0
0
1
1
1
0
1
1
0
AMI码
0
0
+1
-1
+1
0
0
-1
0
0
+1
-1
+1
0
-1
+1
0
AMI码的编码虽然简单,但是它存在一定的缺陷,对于长连零的现象还是存在的,当存在长连零时,对于位的同步时会发生失去位的同步,通信的收信端和发信端的时钟多少会存在一定的偏差,从发信端到收信端的传输过程中,相位会不断地发生偏移,偏移到一定的阈值后就失去了同步。
3.2 HDB3码的简介与分析
HDB3码相对于AMI码,HDB3码有着更强的检错和纠错的能力,HDB3码不仅可以从非零码极性交替变换的规律进行检错和纠错,也可以从插“V”规律角度去检错和纠错,比如在相邻两个极性相同的“V”码的第二个“V”前的两个码肯定为零码,同理也可以根据此规律来进行纠错。HDB3码和AMI码一样,在将原始码进行编码后没有直流信号,从而促进了通信质量的保证。
3.3 HDB3码的编码规则分析
在这里的编码规则是从NRZ码开始编码的,在进行HDB3码的编码设计时,不能按照编码的规则按部就班的进行设计,在通过这样的方来完成设计是比较困难的,而是要通过另一个角度来实现编码规则。最典型的就是对“B”编码,具体设计不是按照编码规则,而是看“1”码的奇、偶个数来实现的。两个“V”码之间正、负极性交替变换就意味着之间有非偶数个非零码。
表3-2 HDB3编码举例
图3-2 NRZ码、AMI码、HDB3编码示意图
3.4 HDB3码的应用
HDB3码具有良好的传输特性,可以用于比较远距离之间进行通信,也适用于矿井下的通信中。HDB3码的这些优势使得HDB3码在通信系统的传输中有着较广泛的应用,HDB3码也是国际电信电报委员会推荐使用的一种码型。
第四章 HDB3编码器的VHDL建模
4.1 HDB3编码器的VHDL建模
在设计过程中主要考虑非零码的极性交替和克服长连零这两方面的问题。对“V”编码中为了满足“V”码的极性交替,又引入了编码“B”,由于HDB3码是有正、负两种极性的码,所以要极性编码。由于有以上的编码行为,整体设计思路有3种,思路一是在“V”、“B”编码的过程中同时极性变换编码,思路一如图4-1所示。
图4-1 思路一方框图
思路二是先完成极性变换编码再进行“V”、“B”编码,如图4-2。
图4-2 思路二方框图
思路三是先完成“V”和“B”编码,再进行极性变换编码,如图4-3。
图4-3 思路三方框图
三个总体设计思路比较:
思路一是插“V”码、插“B”码的过程中进行极性变换操作,这样的设计是对不同事件是并行进行的,由于在设计过程中同时要兼顾两个事件,所以设计起来也比较困难。另外一点就是为了满足“V”编码的要求,编码的正、负编码“B”时要发生变化。所以必须先进行“V”、“B”编码之后才可进行极性编码,所以思路一是不可采取的方案。
根据思路一的分析可知,由于思路二先进行极性变换后进行插“V”和插“B”操作,所以思路二的编码操作顺序也是不合理的。
思路三的编码顺序是先进行“V”、“B”编码,当“V”、“B”编码完成之后,再进行极性编码。综合思路一和思路二的分析以及思路三的分析可知,思路三是最佳总体设计方案。所以HDB3编码器的整体设计设计模型是先进行“V”、“B”编码操作,最后进行极性编码。HDB3编码器的设计模型如图4-4所示
图4-4 HDB3编码器的整体设计模型方框图
4.2 插V模块编码的思想的产生及其原理
4.21插“V”模块编码思想的产生
由于长连零码流会影响通信中数据的同步和定时,为了避免码流中长连零的出现,在编码中引入了“V”码,也就是将4个不间断的零中的最后一个零,编为“V”码,从而有利于数据通信的定时和同步以及对编码的检错和纠错,进而保证了数据通信的正常。当NRZ码流中4个不间断的零码情况才会有编“V”码。为了判断4个连零,所以引入计数器来计数。
4.22 插“V”模块编码的原理
当计数器等于3时将第4个零替换为“V”。当输入的不归零码为零时,判断计数器是否为3,当计数器为3时,说明之前已经有3个连零码流输入,再加上当前为零的码,则为4个零,此时将当前的码即第4个零替换为“11”并将计数器清零,以便为下一个4零计数做准备。当此时输入的码字不为0时,将当前码字替换为01。根据插V”编码思想,在程序设计过程中大量采用了if语句。
在利用VHDL语言对HDB3编码器的实现描述和QuartusII平台对HDB3编码器的仿真过程中为了对编码过程中的“V”、“B”、“1”码、“0”加以区分,在编码过程中将各个符号用2位二进制来表示。其中“0”用:“00”表示,“1”用“01”表示,“V”用“11”表示。这样的表示有利于以后编码过程中对不同符号的区分,在不同模块完成之后可以通过编码的区分来验证设计的模块是否合理及达到设计的要求。
由HDB3编码器编码“V”的理论,得出“V”编码的流程图如图4-5
图4-5 插“V”模块的流程图
4.23 插“V”模块的仿真结果
经过对所设计的插“V”模块程序编译成功后,建立波形仿真文件,进行波形仿真,仿真结果如下图4-6
图4-6 插“V”模块仿真图
4.24 插“V”模块的仿真分析
插“V”模块功能的理论结果如下:
NRZ码:1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1
插V码: 01 00 00 00 11 01 00 00 00 11 01 01 00 00 00 11 01 01
仿真波形与理论输出结果一致,插“V”模块实现了预期要实现的功能,达到了设计的要求。从仿真结果可以看出脉冲宽度是随着时钟脉冲上升沿的间隔时间决定的,输出脉冲个数也由时钟脉冲的上升沿的个数决定的。但输出波形与时钟脉冲不同步,具体情况是输出编码随着脉冲的到来延时了1个脉冲周期的1/4。
4.3 插“B”模块编码的思想及其原理
4.31插“B”模块编码思想的产生
在多次模拟编码后发现了插“B”模块中存在着当前事件状态决定着过去事件状态的现象,为此引入了2组4位移位寄存器来存储过去的状态,从而解决了过去事件状态的存储的问题。
4.32插B码的编码的原理
根据HDB3码的编码规则,2个相邻“V”码之间有偶数个非零码时在第2个“V”前的第一个非零码后的零码替换为“B”码,为了解决对偶数个非零码的判断,通过奇、偶判断标志位与“1”异或,来判断非零码个数的奇、偶。在此设置奇偶标志位even=0表示有偶数个“1”码,当even=1时表示有奇数个“1”码。随着编码的输入,对非零码个数奇、偶的判断是在编码中第1个“V”输入之后才对插“B”有效,因此,当第1个“V”输入后才将first_v赋值为‘1’。当插“B”模块中输入的编码同时满足First=1,even=0,Code_in=“11”时才将当前编码替换为“10”,否则就原样输出。
在设计过程中一定清楚编码的的轨迹,只有始终跟踪编码就会正确的判断了先后顺序,才能设计出满足设计要求的插“B”模块的方案和流程图。编码“B”流程框图如图4-7所示。
图4-7 插“B”模块流程框图
4.33 插“B模块的仿真结果
经过对所设计的插“V”模块程序编译成功后,建立波形仿真文件,进行波形仿真,仿真结果如下图4-8
图4-8 插“B”模块仿真结果图
4.34 插“B模块的仿真结果分析
理论插“B”模块的结果如下:
NRZ码 :1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1
插V后: 01 00 00 00 11 01 00 00 00 11 01 01 00 00 00 11 01 01
插B后:01 00 00 00 11 01 00 00 00 11 01 01 10 00 00 11 01 01
根据仿真波形来看,波形与理论结果一致。插“B”程序模块的波形相对于输入波形滞后了3个时钟脉冲,这是由于在插“B”模块的设计过程中采用了2组4位移位寄存器,在编码输入的过程中由于寄存器对编码的的移位,所以产生了3个时钟脉冲的延迟。在设计中只有正确的判断了先后顺序,才能设计出满足设计要求的插“B”模块的方案和流程图。
4.4 极性变换模块编码的思想及其原理
4.41 极性变换模块编码思想的产生
前面插“V”模块和插“B”模块的编码没有涉及到编码极性的正、负,仅仅是码型的变换。“B”码和“V”码最终以极性可能不同,幅值为1或0的码来呈现的。将非零分为两组单独进行编码,“1”码、“B”码为一组,“V”码为一组,分别各自进行极性变换。
4.42 极性变换模块的编码原理
由于编码过程中的第一个非零码的极性是随机设定的,所以在此次设计中设置一个初始极性正、负的标志符flag,标志符的值为1时表示这时不是零码的码极性为正,标志符的为0时时表示这时不是零码的极性为负,在这里将flag赋初始值为1。若当前编码的极性变化后,则通过异或运算将此时的极性标志位flag也变化,以便下一个编码到来当需要极性变化时来参考极性标志位进行极性变换。
由于FPGA芯片输出的编码只是由零电平和正电平组成,只有正极性,而HDB3编码器要求是双极性。为了达到设计要求,需要对FPGA芯片输出的芯片进行极性变换,将其单极性变换为双极性。具体要求是,将FPGA输出的“10”信号变换为正电平信号,“00”信号变换为零电平信号,“01”信号变换为负电平信号。极性编码的流程框图如图4-9
图4-9 极变换模块的流程框图
4.43极性变换模块的仿真结果
在调试过程中存在的问题:
错误波形如图4-10
图4-10 有错极性变换仿真图
解决办法:
通过多次反复检查并运行极性变换程序模块,始终未检查出程序的错误,所以问题不是在程序本身。通过了修改编码的输入相对于时钟脉冲的时间,将编码脉冲相对于时间脉冲的时间宽度减小后,问题就得到了解决。所以在用VHDL写的时序逻辑电路对时钟的是非常敏感的,时间的要求是非常严格的。
极性变换模块仿真结果如图4-11
图4-11极性变换仿真结果图
4.44 极性变换模块仿真结果分析:
理论极性变换结果:
NRZ码:1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1
插V后: 01 00 00 00 11 01 00 00 00 11 01 01 00 00 00 11 01 01
插B后:01 00 00 00 11 01 00 00 00 11 01 01 10 00 00 11 01 01
极性变换后:01 00 00 00 01 10 00 00 00 10 01 10 01 00 00 01 10 01
极性变换模块的波形仿真结果与理论要输出的波形结果一致,所以此模块符合设计的要求,通过波形可以看出,在“10”代替正极电平、“00”代替零电平、“01”代替负极性电平的情况下,极性变换后的输出波形相对于极性变换之前输入的波形存在四分之一周期的延迟,这是由于程序运行需要时间和以及对FPGA器件的模拟,再加上仿真时间精确到纳秒级,所以此处的延时是合乎情理的。
4.5 HDB3编码器整体设计
4.51 HDB3编码器整体设计原理
HDB3码编码器的整体设计思想是自顶向下的设计思想,根据HDB3码编码器的设计要求,将此设计整体分为3个底层模块。HDB3编码器的整体程序设计仿真是在QuartusII中建立一个工程文件。其原理框图为图4-12。
图4-12 HDB3码编码器的整体设计原理框图
4.52 HDB3编码器整体仿真
HDB3编码器整体仿真相当于是将底层模块级联起来的仿真,而实际的仿真是需要顶层程序对底层程序的调用和例化。在整个仿真中是将所有的VHDL文件放在一个工程中,这样才可以将所有模块级联起来进行整体仿真,整体仿真结果如图4-12。
图4-12 HDB3编码器整体仿真图
4.53 整体仿真结果分析:
整体理论编码结果:
NRZ码 :1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1
插V后: 01 00 00 00 11 01 00 00 00 11 01 01 00 00 00 11 01 01
插B后:01 00 00 00 11 01 00 00 00 11 01 01 10 00 00 11 01 01
极性变换后:01 00 00 00 01 10 00 00 00 10 01 10 01 00 00 01 10 01
由于在仿真环节中极性变换是整体设计中的最后一个模块,所以极性变换后结果也就是整体编码的仿真结果。
虽然仿真波形与理论要求一致,但仿真结果也存在一定的不足之处,输出波形相对于NRA码的波形存在延时,出现这一现象的主要原因是由于在前期设计的各个模块仿真输出波形存在少许延时,在编码经过各个模块后的延时是一个累加的结果,从而造成了此时的输出波形有较大的延时。由于时钟脉冲的频率是很高的,所以在实际通信中不会对信息的传输造成较大的影响。
4.54 HDB3编码器整体设计时钟设置
由于整个设计是以时钟脉冲来触发的,每来一个时钟脉冲,所完成的设计就进行一次编码,所以对于时钟的脉冲的频率设置是非常关键的,完成设计过程中所选开发板的固有晶振频率为50MHz,而所提供的NRZ信号源的频率为2KHz,这样就出现了FPGA芯片的处理速度大于了NRZ信号源提供的NRZ码,为了使两者的处理速度达到同步,所必需设计分频电路程序,对开发板的固有时钟脉冲进行分频。将开发板固有频率进行25000分频。这样就可以达到编码的同步。
第五章 HDB3编码器的的引脚锁定和编程下载
5.1 HDB3编码器的的引脚锁定
当把程序设计完成并完成逻辑编译和功能仿真之后,就要进行引脚配置。引脚配置是根据在设计过程中所选择的芯片以及开发板的引脚资源占用情况来进行引脚配置。以下为具体设计过程中引脚配置操
展开阅读全文