基于eda技术的hdb3编解码器设计与实现.docx
《基于eda技术的hdb3编解码器设计与实现.docx》由会员分享,可在线阅读,更多相关《基于eda技术的hdb3编解码器设计与实现.docx(40页珍藏版)》请在冰点文库上搜索。
![基于eda技术的hdb3编解码器设计与实现.docx](https://file1.bingdoc.com/fileroot1/2023-7/6/0b3cb6e4-5e10-4b45-9d10-a7244c6d1891/0b3cb6e4-5e10-4b45-9d10-a7244c6d18911.gif)
基于eda技术的hdb3编解码器设计与实现
学校代码:
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
InordertomakeupfortheAMIcodecannotovercomethelongevenzeroleadtotheproblemofcommunicationsynchronization,sogeneratedHDB3code.Thiscodetoalargeextentimprovethecodingfordatatransmissionerrordetectionanderrorcorrectionability,soastoimprovethequalityofthedigitalbasebandsignalcommunication.
ThisdesignisbasedontheEDAtechnologyoftheHDB3encoderdesign,withVHDLasthelanguagetool,QuartusIIsoftwareforthedesignplatform,aswellastobuildahardwarecircuittocompletethedesignoftheHDB3encoder.Thewholedesignisdividedinto3modules,whichareseparatelydesigned,andthelast3modulesarecascadedtoimplementtheHDB3encoder.ThedesignspecificationarefirstintroducedEDAtechnologyanddeviceprogramming,developmenttoolsusingtheoverviewandcharacteristics,theAMIcodeandHDB3codehascarriedonthekeyelaborationandanalysisof,whichthesubsequentdesignplaysamajorrole.Secondly,throughthecomparativeanalysisofthedesignschemeofthethreekindsofHDB3encoder,theoptimalschemeisobtained.EachmoduleoftheHDB3encodertoachievebasicprincipleandofVHDLcodemethodareintroducedindetail,anddescribestheflowchartofthefunctionmoduledesign,throughthesimulationwaveformtoverifythefunctionofeachmodule.Finallythroughthesoftwaresimulation,hardwarecircuittestmethodtoverifythecorrectnessandrationalityofthedesignoftheHDB3encoder.FromthesimulationresultswecanseethatthedesignoftheentiredesignbasicallycompletedtheHDB3encoderdesign,buttheoutputrelativetotheoutputoftheclockpulseonthedelay.
Keywords:
VHDL;HDB3;encoder;QuartusIIsoftware
引言
EDA技术在当前的数字系统设计中是一种必备的高度自动化的技术,它可以实现硬件系统的设计用软件设计来来完成,在电子信息设计领域非常热门的一种技术,也是有广阔的前景的一门技术。
本次设计工作的目的是运用EDA技术来完成对HDB3编码器的设计与实现,在基带数字传输系统中为了通信取得更好的传输质量,所以对在信道上所传输的码型进行不断改进。
HDB3码在当前所设计的各种码型中相对比较强的检错、纠错能力,根据数字通信系统传输的码型选择原则可知HDB3码对于数字通信系统传输是非常适合编码,而且HDB3码的译码比较简单,所以设计HDB3编码器是有很大的必要性。
在当前对于HDB3编码器的实现的方式有多种,可以运用C语言通过单片机来实现,也可以通过基于EDA技术的可编程器件来实现,但是鉴于可编程器件的对所设计的程序并行处理和电路的设计的高灵活性,这样大大提高了编码器的处理速度同时也减小了设计者的设计难度,所以在目前基于EDA技术的可编程器件是相对比较好的实现方式。
目前,在HDB3编码器的具体设计方案有多种,各有自己的优、缺点,当前的研究状态处于设计的优化阶段,人们对HDB3编码器实现算法的改进上还在不断的研究之中,对于不同实现算法的选择会影响最终HDB3编码器的编码效果、以及设计成本。
第1章EDA技术与可编程逻辑器件
1.1EDA技术简介
1.1.1EDA技术概述
EAD技术就是电子设计自动化技术,EDA技术是一种非常庞大的技术体系,需要我们经过多年的学习和工作过程才能掌握的一门技术。
EDA技术是随着电子电路的不断发展而生产的,它是存在推动了电子电路、信息技术的发展。
1.1.2EDA技术基本特征
硬件设计软件化是EDA技术的主要特征,这也是硬件电路的设计进步的一个里程碑,它将大规模数字电路系统的设计推向了高峰。
如果没有这一技术的发展,我们可能会生活在另一个世界里。
EDA技术非常自动化,从开始到完成的整个设计过程都是通过计算机来完成的,在程序编译、波形仿真、设计性能分析、硬件测试等环节都是自动生成报告文件,这对于设计者进行性能优化提供很大的帮助,同时也降低了数字电路系统设计的门槛,推动科学技术的发展。
当设计完成之后在QuartusII中选定自己的所需的器件进行编译之后,软件将自动分析本次设计对整个芯片的占用情况,使设计者对芯片的占用资源有了清楚的了解,从而促进了芯片资源的合理利用。
EDA技术缩短了产品的开发周期,由于EDA技术的高度的自动化,为电子工程师提供了很大的便捷,大大提高了设计的工作效率。
由于是通过软件的方式来设计硬件,从而对所设计的电路系统修改比较容易,这也提高了对系统的设计效率。
1.1.3EDA技术的的设计方法
EDA技术通常分为两种设计方法。
自上而下的方法将整个系统的设计分为个模块,通过模块化的设计方式来完成整个数字系的设计,可以把整个设计的不同模块分配给多个工程师同时进行设计,这样大大提高了设计效率,同时这样的设计思想条理比较清晰,而且通过模块化设计后对错误的查找、修改比较方便,每次查找只是在一个模块的范围之内,所以这样的设计思想也是我们通常采用的设计思想。
自下向上由于存在比较的大的弊端,这种设计思想盖房子一样通过一砖一瓦地把房子盖好,但对于数字系统的设计来说这样的设计效率是很低,不能对整个个设计展开进行设计,只能是按部就班。
这样的设计对错误的检查也是比较空难的,它是在整个系统范围内进行检查。
1.1.4EDA技术的开发流程
1.1.41设计输入
设计输入就是将本次设计的程序或者图形文件输入到Quartus软件的过程。
设计输入总体上分为两种形式的输入,分别是图形文件输入和硬件描述语言的输入,逻辑状态输入是根据功能的逻辑控制和逻辑状态转换来绘制状态图。
设计波形图输入是只绘制预期功能的波形。
使用较多的是硬件描述语言的输入,预期设计的功能是通过软件设计来实现,这也是EDA技术的主要特征。
1.1.42逻辑综合与优化
逻辑综合就是将设计进行其他形式的转换,随着综合度的不同,对设计的描述形式也不同。
行为综合和逻辑综合是将程序设计与设计预期的硬件电路相映射,也是一种设计思想的实体体现。
结构综合就是将设计的电路与可编程逻辑器件的网表文件的映射,也就是把设计者的设计通过器件的网表来体现。
1.1.43目标器件的布局布线
布局布线主要完成的任务就是产生对器件下载所需的SOF文件,其中重要的一步就是文本形式的设计输入、输出端口在所选器件中引脚的锁定。
1.1.44设计仿真
设计仿真包括时序仿真和功能仿真,时序仿真是为了检验设计的延时、运行速度等与时间有有关的性能参数。
功能仿真就是验证已完成设计是否能够满足预期设计要求的功能,功能仿真一般是通过波形仿真来完成。
1.1.45编程下载
编程下载是设计的最后一步测试,它是建立在前期多个编译、仿真的环节之上的,如果硬件测试要满足设计的测试要求,那么就意味着设计达到了预期的要求。
1.1.5EDA技术的发展趋势
人们对电子产品的体积、产品对信息的处理速度和产品的功耗等方面不断提高。
为了改善体积大和功耗大的两大问题,后来又出现了晶体管。
随着工艺和技术的提高出现了集成电路,同时促进了EDA技术的发展。
在当今这复杂的数字系统设计是离不开EDA技术的应用,所以EDA技术在数字集成设计中起至关重要的作用,所以EDA技术也是当今电子工程师所必备的技术,只有掌握了EDA技术我们才会设计出规模更大、结构更复杂、体积更小、处理信息速度更快的集成数字电路系统。
EDA技术是将硬件设计通过软件来实现,在一定程度上降低了数字电路设计的门槛,这对于EDA技术的推广有着极大的促进作用,同时EDA技术让数字系统产品的研发周期减小,这对于工程项目来说有着极大的好处,所以EDA技术的发展前景是非常广阔的。
1.2可编程逻辑器件简介
可编程逻辑器件就是对可以对集成电路里的各个宏单元进行重新设置和更改,通过软件的方式来编写设计所需要的功能芯片,由于可编程器件的成本较高,对于简单的数字电路的实现就使用成品、定制功能的芯片来实现。
当前对于可编程逻辑器件研究水平相对于美国来说处于落后状态,在电子信息所用的可编程芯片几乎都来自美国,所以在我国可编程逻辑器的研究需要进一步加强。
1.2.1可编程逻辑器件的分类
可编程器件是一个庞大的芯片体系,不同厂家根据其期间的自身特点,根据不同的角度对可编程期间的分类是不同的,在当前主要有三种不同的分类方式。
第一种是按集成度的大小来分类,。
第二种是可编程器件的结构来划分的。
由于任何数字电路可以变形为以“与或”电路的形式,所以有的器件在生产和制造过程中就以“与或”阵列结构来体现。
对于查表类器件是比较过去的分类叫法,在过去EDA技术很多以查表的方式来进行设计,当前已不用此种方法进行设计了。
第三种是按器件的编程的方式来划分,当前可以分为6类。
当今多使用Flash型器件,因为它具有断电需要重新下载、配置,这给设计者带来了很大的方便,同时对于一个器件可以进行多次编程。
1.1.2可编程逻辑器件的原理
可编程器件的编程原理的掌握对于初学者来说是非常重要,只有这样才会在编程过程中建立硬件的概念,对程序的运行情况才会有所把握。
可编程器件的结构可以分为3块,其中逻辑块就是是我们通过具体编程实现的特定功能模块,连线块就是将各个单元块进行级联,使设计实现一个完整的功能。
在可编程器件内部的各个模块内的各个存储器之间是并行运的,而不像普通的芯片那样顺序执行,这样使得用可编程系列器件设计的数字系统运行速度非常快。
第2章开发工具的简介
2.1VHDL语言
2.1.1VHDL语言简介
VHDL是一种用对硬件数字电路描述的语言,它是由美国官方所开发的一种语言,最初是为了强大军队的信息化,科技化而产生的一门语言。
在我国最初是由北京航天航空大学教授夏宇闻老师从国外引进的,这也是我国大部分高等院校学习的是VHDL而不是另外一种硬件表述语言Verilog的一方面原因。
VHDL语言实现了通过软件来搭建硬件电路,尤其是在大规模、高度集成的数字电路系统方面进行了广泛的应用。
随着电子信息技术的发展,工程师所设计的门数在几十万甚至上百万级的电路系统是离不开对硬件表述语言的应用,所以在数字电路系统的设计过程中VHDL语言起着重要的作用。
2.1.2VHDL语言特点
VHDL语言其他语言的性质,它有类似于C语言、汇编等语言的性质。
在程序的设计过程中也有被调用的库,这个库是官方规定的,里面有大量的可调用的资源,这为我们在程序过程中带来了极大的方便。
在我们调用这些库里的资源时,一定要对所调用资源所在的库,具体到哪一个程序包要进行声明。
只有这样我们才可以有效地调用我们所学需要的资源。
VHDL语言具有一定的独特性,它不仅描述的是逻辑,更重要是描述的是数字电路,所以在学习VHDL语言前一定要有数字电路的基础,只有有了这样的基础之后,我们对它的学习才有一定的实际意义。
因为我们在学习的过程中往往是通过电路图来设计VHDL语言或者通过VHDL来画电路图。
在VHDL程序设计过程中,在大脑里始终要有硬件电路图,这样我们才会设计的是硬件电路,才能实现我们需要对的电路功能。
2.2QuartusII软件的简介
2.2.1QuartusII软件基本特点
QuartusII软件EDA技术,在化工、建筑等领域也有所运用,所以QuartusII软件的功能是非常强大的。
QuartusII软件是在Max+plusⅡ的基础上开发的,所以具有Max+plusⅡ的优点,它界面设计人性化。
QuartusII软件是一个比较开发的软件,QuartusII软件支持多种语言,它也支持第三方开发的仿真工具软件。
2.2.2QuartusII软件的使用
通过EDA技术完成的每一个设计对于QuartusII软件来说都是一个工程。
所以在使用QuartusII软件前首先要建立一个新的文件夹,用来放我们要完成的这个设计的所有QuartusII软件涉及到的文件,在建立文件夹和工程时的名称一定不能含有中文,否则在后期的设计完成中QuartusII软件会不识别我们所建立的工程,而且不能找到工程所在的文件夹。
新建工程具体简单使用步骤如下:
打开QuartusII软件→在File选项的下拉菜单栏中选择NewProjectWizard→点击nest→选择为工程所建的文件夹路径并对工程和实体命名→点击nest→添加的文件→点击nestt→选择器件型号→点击nest→点击finish。
这样就完成了对一个工程的简单建立,当工程建立好之后需要建立VHDL文件。
对于初学习者来说比较适合使用较低的版本,这样更易于对EDA的学习入门。
QuartusII软件版本在低于9.0的可以进行波形仿真,在此版本的软件上可以新建波形仿真文件,但存在一定的弊端,首先是时钟信号、输入信号等等信号需要手动在打开的波形文件上画,这样对于工程师来说不仅费时费力,而且时钟信号、输入信号的上升沿和下降沿相对于时钟精确到纳秒级的器件来说有比较大的误差,其次当需要大量的时钟信号和要处理的输入信号时就需要更多时间和人力。
当QuartusII软件的版本高于9.0时,此软件不在具有波形文件的仿真功能了,但是仿真是通过Modelsim来实现,此时时钟脉冲信号、要处理的输入信号等等是通过脚本文件来写,而不是通过手动画的,这样不但解决了波形上升沿和下降沿的不准确的问题,当要输入大量时钟信号和要处理的输入信号时只要通过修改脚本仿真文件的参数就可以实现。
第3章AMI码、HDB3码
3.1AMI码的简介与分析
AMI是在NRZ码基础上“1”码正、负极性交替的码。
举例如表3-1所示:
表3-1AMI码编码举例
消息码
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.2HDB3码的简介与分析
HDB3码相对于AMI码,HDB3码有着更强的检错和纠错的能力,HDB3码不仅可以从非零码极性交替变换的规律进行检错和纠错,也可以从插“V”规律角度去检错和纠错,比如在相邻两个极性相同的“V”码的第二个“V”前的两个码肯定为零码,同理也可以根据此规律来进行纠错。
HDB3码和AMI码一样,在将原始码进行编码后没有直流信号,从而促进了通信质量的保证。
3.3HDB3码的编码规则分析
在这里的编码规则是从NRZ码开始编码的,在进行HDB3码的编码设计时,不能按照编码的规则按部就班的进行设计,在通过这样的方来完成设计是比较困难的,而是要通过另一个角度来实现编码规则。
最典型的就是对“B”编码,具体设计不是按照编码规则,而是看“1”码的奇、偶个数来实现的。
两个“V”码之间正、负极性交替变换就意味着之间有非偶数个非零码。
表3-2HDB3编码举例
图3-2NRZ码、AMI码、HDB3编码示意图
3.4HDB3码的应用
HDB3码具有良好的传输特性,可以用于比较远距离之间进行通信,也适用于矿井下的通信中。
HDB3码的这些优势使得HDB3码在通信系统的传输中有着较广泛的应用,HDB3码也是国际电信电报委员会推荐使用的一种码型。
第4章HDB3编码器的VHDL建模
4.1HDB3编码器的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-4HDB3编码器的整体设计模型方框图
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码:
100001000011000011
插V码:
010000001101000000110101000000110101
仿真波形与理论输出结果一致,插“V”模块实现了预期要实现的功能,达到了设计的要求。
从仿真结果可以看出脉冲宽度是随着时钟脉冲上升沿的间隔时间决定的,输出脉冲个数也由时钟脉冲的上升沿的个数决定的。
但输出波形与时钟脉冲不同步,具体情况是输出编码随着脉冲的到来延时了1个脉冲周期的1/4。
4.3插“B”模块编码的思想及