《HDB3编码器的实现Quartus+VHDL》.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《HDB3编码器的实现Quartus+VHDL》.doc

HDB3编码器的FGPA实现 龙亚春 (学号:045053) HDB3码的编码规则 HDB3码是AMI码的改进型,称为三阶高密度双极性码,它克服了AMI码的长连0串 现象。而且HDB3码还有无直流万分及低频万分少等优点,对定时信号的恢复十分有利,因而成为CCITT协会推荐使用的基带传输码型之一。 下面先介绍一下AMI码的编码规则再在此基础上介绍HDB3码的编码规则。 AMI码称为传号交替反转码。其编码规则为代码中的0仍为传输码0,而把代码中的1 交替地变换成传输码的+1 -1 +1 -1 …。如下表所示: 消息代码 0 1 1 1 0 0 1 0 … AMI码 或 0 +1 -1 +1 0 0 -1 0 … 0 -1 +1 -1 0 0 +1 0 … HDB3码的编码规则如下: ① 将消息代码变换成AMI码; ② 检查AMI码中的连0情况,当无4个或4个以上的连0串时,则保持AMI的形式不 变;若出现4个或4个以上的连0串时,则将1后第4个0变为与前一非0符号(+1或-1)同极性的符号,用V表示,+1记为+V,-1记为-V。 ③ 检查相邻V符叼间的非0符号的个数是否为偶数,若为偶数,则再将当前的V符号 的前一非0符号的第1个0变为+B或-B符叼,且B的极性与前一非0符号的极性相反,并使后面的非0符号从V符号开始再交替变化。如下表所示: 代码 1 1 0 0 0 0 0 1 1 0 0 0 0 1 HDB3 +1 -1 0 0 0 -1 0 +1 -1 +1 0 0 +1 -1 V、B -V +B +V VHD3码的VHDL建模思想 从编码规则来分析,设计的难点之一在于如何判决是否应该插入“B”,因为这涉及到 由现在事件的状态来决定过去事件的状态问题。为此,我们可以考虑用寄存器来暂存信码,同时设置一个计数器来计数两个“V”之间“1”的个数,经过4个码元时间后,由一个判偶电路来给寄存器发送是否插“B”的判决信号,从而实现插“B”功能。 不过,信号处理的顺序不能像编码规则那样,而是采用如下变换顺序:首先完成插“V” 工作,接着执行插“B”功能,最后实现单极性变双极性的信号输出。这样做的好处是:输入进来的信号和插“V”、插“B”功能电路中处理的信号都是单极性信号,且需要的寄存器的数目可以少很多。 另外,如何准确识别电路中的“1”、“V”和“B”。因为“V”和“B”符号是人为标识 的符号,但在电路中最终的表现形式还是逻辑电平“1”。解决的方法是利用双相码,将其用二进制代码分别表示。双相码的编码规则是:对每一个二进制代码分别用两个不同相位的二进制去取代。例如1用10来表示,0用01来表示。这样就可以识别电路中的“1”、“V”,“B”了。插成本 的c HDB3码的编码器模型框图如下表所示: 代码输入 HDB3码 图1 HDB3码的编码器模型框图 插“V”模块的实现流程 插“V”模块的功能实际上就是对消息代码里的4个连0串的检测,即当出现4个连0 串的时候,把第4个0变换成符号“V”(“V”可以是逻辑“1”----高电平),而在其它情况下,则保持消息代码的原样输出。同时为了减少后面编程的麻烦,在进行插“V”时,用11标识它;“1”用01标识,“0”用“00”标识。具体流程如图2所示。 图2 插“V”符号的流程图 插“B”模块的实现流程 插“B”模块的功能是保证附加“V”符号后的序列不破坏“极性交替反转”造成的无 直流特性,即当相邻“V”符号之间有偶数个非0符号的时候,把后一个小段的第一个“0”变换成一个非破坏符号----“B”符号。具体流程如见图3所示。 图3 插“B”符号的流程图 单极性变双极性的实现 图4 单/双极性变换的流程图 实现单/双极性变换的硬件部分实现 因为在Quartus II的仿真中,它无法识别“-1”,在它的波形仿真中只有“1”和“0”。 因此在这里用双相码来分别表示“-1”、“+1”、“0”。在电路中要真正得到需要的结果,可以在最后加一个硬件(如四选一数字开关CC4052)就可以将程序中所定义的“00”、“01”、“11”分别转换成0、-1,+1了。CC4052的接线图所下图所示: 图5 CC4052的接线图 VHDL源程序 ------hdb3.vhd HDB3 coder in VHDL------ --Desinge

文档评论(0)

ucut + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档