基于VHDL语言的HDB3码编解码器设计.docx
- 文档编号:11266905
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:17
- 大小:104.91KB
基于VHDL语言的HDB3码编解码器设计.docx
《基于VHDL语言的HDB3码编解码器设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言的HDB3码编解码器设计.docx(17页珍藏版)》请在冰豆网上搜索。
基于VHDL语言的HDB3码编解码器设计
目录
引言1
1绪论1
1.1可编程逻辑器件概述1
1.1.1可编程逻辑器件的发展历程1
1.1.2可编程逻辑器件的特点2
1.1.3可编程逻辑器件的一般设计流程4
1.1.4现代数字系统的设计方法6
1.2VHDL语言概述7
1.2.1VHDL语言介绍7
1.2.2语言特性、功能与特点7
1.2.3TOP-DOWN的设计思想简介8
1.3Quartus®II的介绍9
1.3.1Quartus®II的产生与发展9
1.3.2Quartus®II功能概论10
1.3.3Quartus®II的应用10
2HDB3码介绍21
2.1数字基带信号21
2.2NRZ,AMI,HDB3码之间的对应关系21
2.3HDB3码的编/译码规则22
3用VHDL语言设计HDB3编码器24
3.1HDB3编码器实现的基本原理24
3.2HDB3编码器的设计过程24
3.3HDB3编码器仿真波形30
4用VHDL语言设计HDB3译码器31
4.1HDB3解码器实现的基本原理31
4.2HDB3解码器的设计过程32
4.3HDB3解码器仿真波形33
5 总结35
5.1系统设计思路小结35
5.2毕设存在的问题及不足36
5.3毕设后的感想36
致谢37
参考文献38
附录:
基于VHDL语言的HDB3码编/解码器设计程序39
摘要
现代通信在技术一般的数字通信系统中首先将消息变为数字基带信号,称为信源编码,经过调制后进行传输,在接收端先进行解调恢复为基带信号,再进行解码转换为消息。
在实际的基带传输系统中,并不是所有电波均能在信道中传输,因此有基带信号的选择问题,因此对码型的设计和选择需要符合一定的原则。
HDB3(HighDensityBinary-3)码是AMI码的一种改进型。
HDB3码保持了AMI码的优点,克服了AMI码在遇到连“0”长时难以提取定时信息的困难,因而获得广泛应用。
CCITT已建议把HDB3码作为PCM终端设备一次群到三次群的接口码型。
我本次毕业设计的主要内容就是基于VHDL语言的HDB3编/解码器的设计,它所要达到的要求就是能从软件方面来实现HDB3编/解码器的基本功能,并能协调整个设计,使之达到预想的要求。
设计的核心部分是:
在QuartusⅡ的软件平台上,用VHDL语言来完成HDB3编/解码器的各个模块的设计并将它们合为一个整体的系统。
设计中所用到的知识主要是:
对VHDL码型基本原理和特性的认识、对QuartusⅡ软件的熟练操作、对VHDL(超高速集成电路硬件描述语言)的掌握和应用,这些知识都是进行电子设计的基本知识和能力,只有基础知识和能力扎实了,才能更好的进行更高层次的电子设计,所以这个设计也是对电子设计基本能力的很好的锻练。
关键字:
现代通信HDB3码模块VHDLQuartusⅡ软件
1.2VHDL语言概述
1.2.1VHDL语言介绍
VHDL的全名是very-high-speedintegratedcircuithardwaredescriptionlanguage,诞生与1982年。
1987年底VHDL被IEEE和美国国防部确认为标准硬件描述语言。
自IEEE发布了HDL标准版本后,各EDA公司相继推出了自己的VHDL实际环境,或宣布自己的程序可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修正,从更高的抽象层次和系统描述能力扩展VHDL的内容。
现在,VHDL和VERILOG作为IEEE的工业硬件描述语言,又得到了众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
1.2.2语言特性、功能与特点
联性的语法和形式虽类似与一般程序语言,但是涵盖许多与硬件关联的语法构造。
其特有的层次性——由上而下的结构VHDL语言可描述一个数字电路的输入,输出以及相互之间的行为和功能。
而其硬件关式语法结构适合大型设计项目的团队合作。
在主要的系统结构,组件及相互间的连接方式决定以后,就能将工作分包下去,各自独立进行,例如使用主程序外的组件,函数以及程序内的块程序。
1.3Quartus®II的介绍
1.3.1Quartus®II的产生与发展
QuartusⅡ是Altera公司提供的可编程逻辑器件的集成开发软件,是该公司前一代可编程逻辑器件的集成开发软件MAX+plusⅡ的更新换代产品。
QuartusⅡ集成开发软件支持可编程逻辑器件开发的整个过程,它提供一种与器件结构无关的设计环境,使设计者能方便地进行设计输入、设计处理和器件编程。
QuartusⅡ集成开发软件的核心是模块化的编译器。
编译器包括的功能模块有分析/综合器、适配器、装配器、时序分析器、设计辅助模块.以及EDA网表文件生成器等。
可编程逻辑器件开发的所有过程为:
设计输入、综合、布局和布线、验证和仿真以及可编程逻辑器件的编程或配置。
1.3.2Quartus®II功能概论
作为一种电子设计自动化(EDA)的工具,QuartusⅡ可编程逻辑器件的集成开发软件支持可编程逻辑器件开发的全过程。
这个过程包括以下步骤:
创建工程,工程用来组织整个可编程逻辑器件开发的过程;设计输入,本章介绍利用硬件描述语言通过文本编辑的方法完成电路设计;设计编译,把设计输入转换为支持可编程逻辑器件编程的文件格式;设计仿真,该步骤用来检查设计是否满足逻辑要求;器件编程,使得可编程逻辑具有所要求的逻辑功能。
2HDB3码介绍
2.1数字基带信号
数字基带信号的传输是数字通信系统的重要组成部分之一。
在数字通信中,有些场合可不经过载波调制和解调过程,而对基带信号进行直接传输。
为使基带信号能适合在基带信道中传输,通常要经过基带信号变化,这种变化过程事实上就是编码过程。
于是,出现了各种各样常用码型。
不同码型有不同的特点和不同的用途。
作为传输用的基带信号归纳起来有如下要求:
1希望将原始信息符号编制成适合与传输用的码型;2对所选码型的电波形,希望它适宜在信道中传输。
可进行基带传输的码型较多。
1、AMI码
AMI码称为传号交替反转码。
其编码规则为代码中的0仍为传输码0,而把代码中1交替地变化为传输码的+1-1+1-1,、、、。
举例如下。
消息代码:
01110010、、、
AMI码:
0+1-1+100-10、、、或
0-1+1-100+10、、、
AMI码的特点:
(1)无直流成分且低频成分很小,因而在信道传输中不易造成信号失真。
(2)编码电路简单,便于观察误码状况。
(3)由于它可能出现长的连0串,因而不利于接受端的定时信号的提取。
2、HDB3码
这种码型在数字通信中用得很多,HDB3码是AMI码的改进型,称为三阶高密度双极性码。
它克服了AMI码的长连0传现象。
2.2NRZ,AMI,HDB3码之间的对应关系
假设信息码为0000011000010000,对应的NRZ码、AMI码,HDB3码如图2-1所示。
图2-1NRZ,AMI,HDB3码型图
分析表现,AMI码及HDB3码的功率谱不含有离散谱fS成份(fS=1/TS,等于位同步信号频率)。
在通信的终端需将他们译码为NRZ码才能送给数字终端机或数/模转换电路。
在做译码时必须提供位同步信号。
工程上,一般将AMI或HDB3码数字信号进行整流处理,得到占空比为0.5的单极性归零码(RZ|τ=0.5TS)。
由于整流后的AMI,HDB3码中含有离散谱fS,故可用一选频网络得到频率为fS的正弦波,经整形、限幅、放大处理后即可得到位同步信号。
2.3HDB3码的编/译码规则
HDB3码的编码规则:
(1)将消息代码变换成AMI码;
(2)检查AMI码中的连0情况,当无4个以上的连0传时,则保持AMI的形式不变;若出现4个或4个以上连0时,则将1后的第4个0变为与前一非0符号(+1或-1)同极性的符号,用V表示(+1记为+V,-1记为-V
(3)检查相邻V符号间的非0符号的个数是否为偶数,若为偶数,则再将当前的V符号的前一非0符号后的第1个0变为+B或-B符号,且B的极性与前一非0符号的极性相反,并使后面的非0符号从V符号开始再交替变化。
举例如下:
代码101011000001100001
HDB3码+10-10+1-1000-10+1-1+100+1-1
V、B-V+B+V
HDB3码的特点如下:
(1)基带信号无直流成分,且只有很小的低频成分;
(2)连0串符号最多只有3个,利于定时信息的提取;
(3)不受信源统计特性的影响。
HDB3码的特点如下:
(1)基带信号无直流成分,且只有很小的低频成分;
(2)连0串符号最多只有3个,利于定时信息的提取;
(3)不受信源统计特性的影响。
HDB3码的译码规则:
HDB3码的译码是编码的逆过程,其译码相对于编码较简单。
从其编码原理可知,每一个破坏符号V总是与前一非0符号同极性,因此,从收到的HDB3码序列中,容易识别V符号,同时也肯定V符号及其前面的3个符号必是连0符号,于是可恢复成4个连0码,然后再将所有的-1变成+1后变得到原消息代码。
举例如下:
HDB3码+10-10+1-1000-10+1-1+100+1-1
V符号-V+V
译码101011000001100001
3用VHDL语言设计HDB3编码器
设计任务与要求
将一串行输入码流编为HDB3码输出(编码部分);将一串行输入的HDB3码解码后串行输出(解码部分)。
3.1HDB3编码器实现的基本原理
从编码规则来分析,这个设计的难点之一是如何判决是否应该插“B”,因为这涉及到由现在事件的状态决定过去事件状态的问题。
按照实时信号处理的理论,这是没办法实现的。
但在实际的电路中,可以考虑用寄存器的方法,首先把信码寄存在寄存器里,同时设置一个计数器计数两个“V”之间“1”的个数,经过4个码元时间后,由一个判偶电路来给寄存器发送是否插“B”的判决信号,从而实现插“B”功能。
不过,信号处理的顺序不能像编码规则那样:
首先把代码串变换成为AMI码,完成插“V”、插“B”工作之后,其后的“+1”和“-1”的极性还要依据编码规则的规定变换。
这样做需要大量的寄存器,同时电路结构也变的复杂。
若把信号处理的顺序变换一下:
首先完成插“V”工作,接着执行插“B”功能。
最后实现单极性变双极性的信号输出。
这样做的好处是:
输入进来的信号和插“V”、插“B”功能电路中处理的信号都是单极性信号,且需要的寄存器的数目可以少很多。
另外,如何准确识别电路中的“1”、“V”和“B”。
因为“V”和“B”符号是人为标识的符号,但在电路中最终的表现形式还是逻辑电平“1”。
解决的方法是利用了双相码,将其用二进制码去取代。
例如,
代码:
110010
双相码101001011001
这样就可以识别电路中的“1”、“V”、“B”。
也可以人为地加入一个标识符(其最终目的也是选择输出“1”的极性)。
控制一个选择开关,使输出“1”的极性能按照编码规则进行变化。
3.2HDB3编码器的设计过程
本设计的思想并不像前面HDB3编码原理介绍的那样首先把消息代码变换成为AMI码,然后进行V符号和B符号的变换,而是在消息代码的基础上,依据HDB3编码规则进行插入“V”符号和插入“B”符号的操作,最后完成单极性信号变成双极性信号的变换。
单/双极性变换
插“B”
插“V”
图3-1HDB3码的编码器模型框图
整个HDB3编码器包含3个功能部分:
插“V”、插“B”和单极性码转变成双极性码。
各部分之间采用同步时钟作用,并且带有一个异步的复位(清零)端口。
下面将详细介绍各个部分的设计流程、编写的源程序模拟仿真的波形图。
(1)插“V”模块的实现
1)、插“V”模块的建模
插“V”模块的功能实际上就是对消息代码里的四连0串的检测即当出现四个连0串的时候,把第四个“0”变换成为符号“V”(“V”可以是逻辑“1”——高电平),而在其他情况下,则保持消息代码的原样输出。
同时为了减少后面工作的麻烦,在进行插“V”时,用“11”标识它,“1”用“01”标识,“0”用“00”标识。
插“V”符号的设计思想很简单:
首先判断输入的代码是什么(用一个条件语句判断),如果输入的是“0”码,则接着判断这是第几个“0”码,则把这一位码元变换成为“V”码。
在其他条件下,让原代码照常输出。
(3)单极性变双极性的实现
1)建模
根据HDB3的编码规则,我们可以知道,“V”的极性是正负交替的,余下的“1”和“B”看成一体且是正负交替的,同时满足“V”的极性与前面的非零码极性一致。
由此我们可以将其分别进行极性变换来实现。
从前面的程序知道,“V”、“B”、“1”已经分别用双相码“11”、“10”、“01”标识,“0”用“00”标识,所以通过以下的程序可以很容易实现。
如下图为实现极性变换功能的流程图。
根据编码规则,“B”符号的极性与前一非零符号相反,“V”极性符号与前一非零符号一致。
因此将“V”单独拿出来进行极性变换(由前面已知“V”已经由“11”标识,所以很好与其他的代码区别),余下的“1”和“B”看成一体进行正负交替,这样就完成了HDB3的编码。
这个部分遇到的难点在于:
在QUARTUSⅡ软件仿真过程中,它无法识别“-1”,在它的波形仿真中只有“1”和“0”。
因此在这里采用了双相码来分别表示“-1”、“+1”、“0”。
要得到所需的结果,仅仅在最后加一个硬件(如四选一数字开关CC4052)就可以将程序中所定义的“00”、“01”、“11”分别转换成0、+1、-1,从而达到设计所需结果。
2)实现单/双极性变换的硬件部分简介
由上述的程序下载到FPGA或CPLD中,其输出结果并不是“+1”、“-1”、“0”的多电平变化波形,而是单极性双电平信号,事实上,程序输出的是给单/双变换器的硬件电路地址信号。
利用一个四选一的数据选择器CC4052,二维数组作为CC4052的选择地址,在输出端OUT可以得到符合规则的“+1”、“-1”、“0”变化波形。
“01”:
标识为+1;
“11”:
标识为-1;
flag1b:
记“+V”或“-V”之间的奇偶数
图3-4单/双极性变换控制流程图
3.3HDB3编码器仿真波形
图3-5HDB3编码器仿真波形
波形分析
4用VHDL语言设计HDB3译码器
4.1HDB3解码器实现的基本原理
HDB3译码器的整体模型
1.整体模型
译码原理:
根据编码规则,破坏点V脉冲与前一个脉冲同极性。
因此可从所接受的信码中找到V码,然后根据加取代节的原则,V码与前面的三位码必然是取代码,需要全部复原为四连0。
只要找到V码,不管V码前是两个“0”码,一律把取代节清零,完成了扣V扣B功能,进而得到原二元信码序列。
可实现HDB3译码的模型框图如图4-1所示,HDB3译码器包括双/单极性变换、V码检测、时钟提扣V扣B四部分组成。
图4-1HDB3译码的模型框图
上图中双/单极性变换电路有两个正负整流电路组成。
正整流电路提取正电平码部分;负整流电路提取负电平部分。
V码检测电路包括+V码检测和-V码检测两部分。
根据编码规则,V脉冲必然是同极性脉冲。
当无V脉冲时,传号脉冲“+1”和“-1”交替出现。
当连续出现两个“+1”或“-1”时,若无误码,则后一个一定是V脉冲。
时钟提取电路用于提取同步时钟。
扣V扣B电路在V脉冲和同步时钟的控制下,完成扣V扣B的功能。
由于双/单极性变换电路涉及到双极性信号,无法在FPGA中实现,需加外围硬件电路。
4.2HDB3解码器的设计过程
(1)V码检测模块的建模
1)+V码检测
为了方便起见,设从正整流电路输出的信号为+B,从负整流电路输出的信号为-B。
+V码检测模块-B的控制下,对输入的+B进行检测。
其原理是:
当+B的上升沿到来时,对输入的+B脉冲进行计数,当计数值等于2时,输出一个脉冲作为+V脉冲,同时计数器清零,而且计数期间,一旦有-B信号为“1”电平时,立即对计数器清零,计数器重新从零开始计数。
这是因为在两个+B脉冲之间,存在-B脉冲,说明第二个+B脉冲不是+V码,而只有在连续两个+B脉冲之间无-B脉冲,才能说明这两个+B脉冲在HDB3码中,是真正同极性的于是就可以判定第二个+B脉冲实际上是+V码,达到检测+V码的目的。
+V码检测模型框如图4-2所示。
图4-2+V码检测模型框图
2)-V码的检测
-V码检测原理与+V码检测的类似。
所不同的是,-V码检测电路在+B控制下,对来自-B信号进行计数和检测、判定,若检测到-V码,则输出到-V码信号。
-V码检测模型框如图4-3所示。
来自负整流信号
图4-3-V码检测模型框图
(2)扣V扣B模块建模
扣V扣B模块有三个输入信号,即时钟信号、V码信号和来自正、负整流输出的和路信号。
由于该和路信号可能包含有B脉冲和V脉冲,因此需要在扣V扣B模块中,去除V和B脉冲。
本模块的建模方法是,用V码检测模块所检测出的V码信号,去控制一个移位寄存器,若未碰到V脉冲,则整流输出合成信号在时钟的节拍下,顺利通过移位寄存器,当碰到有V脉冲时,该V脉冲将使移位寄存器清零。
考虑到四连0,即V脉冲及其前面的三个码元应为0码,所以,可设置四位的移位寄存器,当V码清零时,同时将移存器中的四位码全变为0。
不管是否有B脉冲,在此模块中,一并清零,因而无需另设扣B电路。
另外移位四位寄存器起到延时四位时钟周期的作用,以使所检测出的V脉冲与信号流中的V脉冲位置对齐,保证清零的准确性。
扣V扣B模块框图如图4-4。
图4-4扣V扣B模块框图
4.3HDB3解码器仿真波形
图4-5HDB3解码器仿真波形
波形分析
译码器只能实现2位二进制码输出,不能显示极性变化。
这是由于双/单极性变换电路涉及到双极性信号,无法在FPGA中实现,需加外围硬件电路。
5 总结
5.1系统设计思路小结
通过一步步有条不紊的分析和思考,更重要的是在设计中,根据实际情况,对设计初期的思想做不断完善和改进,因为在设计之前的思路,只能说是一个大体的方向,很多时候,实际的操作和设计要细致和复杂的多,或者原来的想法根本就行不通,得从实际设计的角度一步步来完成了这样一个系统设计。
总结一下实际操作的设计过程,可得到如下设计流程图:
学习VHDL语言设计
分析HDB3码编/解码器功能
确定设计方案
仿真不通过
应用VHDL进行编程
对系统仿真测试、选择合适芯片并定义管脚
图3-12总体设计流程图
5.3感想
通过这次设计,让我学到了很多知识,也获得很多体会,这是自己将平日学的理论知识应用到实际操作中的一次很好的实践。
同时,也是通过自己不断学习和努力,才明白:
实际操作和设计,并不是像学习理论知识那么简单,会理论不等于就会应用,很多都是经验的东西,需要在自己的努力设计中才能慢慢体会到,设计多了,才会经验中找到设计自如的感觉。
就像我,对于VHDL语言,开始也没有什么太大的感觉,看书的时候,很清楚明白它的设计结构和流程是什么样的,但是一旦抛开书本,开始自己编程序的时候,不是这里忘了定义,就是那里忘了结构方式;但是,到了现在,在三个月的不断实践编程中,程序设计的流程和一些要注意的地方,我都记得很清楚,能很容易的编写一段简单的程序了,也不用看书本帮忙了,这些都是光靠看书本得不到的经验,是我最大的收获。
参考文献
(1)邬春明《通信原理实验与课程设计》.北京大学出版社。
2013;
(2)赵全利著《EAD技术及应用》.机械工业出版社。
2012;
(3)全国大学生电子设计组委会著《电子系统设计实践》2005;
(4)林明权著《VHDL数字控制系统设计范例》.电子工业出版社
附录:
基于VHDL语言的HDB3码编/解码器设计程序
------HDB3码编码器
--------HDB3码译码器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 语言 HDB3 编解码器 设计