基于vhdl的hdb3编码器与解码器的设计内容摘要:

不必每次都从头再来,只要在更高层次上把 IP 模块组合起来,就能达到事半功倍的效果。 这样,设计人员自行开发的 IP 模块在集成电基于 VHDL 的 HDB3 码编码器与解码器的设计 EDA 辅助设计工具的介绍 5 路设计中占有重要的地位。 因此本毕业设计采用 VHDL 语言设计一个 完善的HDB3 码编、译码器。 EDA 工具 QUARTUSⅡ [] QUARTUSⅡ 软件是美国 Altera公司 为 SOPC(System on a Programmable Chip, 系统级可编程芯片 ) 提供最全面的设计平台。 它具有比起其他的编译软件,具有以下的优点: ⒈ 开放的界面 QUARTUS II 软件可与其它 EDA 厂家的设计输入、综合、验证工具相连接。 设计人员可使用 ALTERA 或标准 EDA 设计输入工具建立电路设计,使用 QUARTUSII编译器 (Compiler)对 ALTERA 的器件进行 编译,然后使用 ALTERA 或其他标准 EDA验证工具进行验证。 目前 , QUARTUS II 支持与 Cadence、 Exemplarlogic、 Mentor Graphics、 Synopsys、 Synplicity、 Viewlogic 等公司的 EDA 工具接口。 ⒉与结构无关 QUARTUS II 系 统的 核心 —— 编译 器 (Compiler) 支持 ALTERA 公 司的FLEX10K,FLEX8000, FLEX6000, MAX9000, MAX7000, MAX5000 和 Classic 等可编程逻辑器件系列,提供了业界,除了 MAXPLUS II 以外惟一真正与结构无关的可编程逻辑设计环境。 QUARTUSⅡ的编译器还提供了强大的逻辑综合与优化功能,使设计人员能比较容易地将其设计集成到可编程逻辑器件中。 ⒊多平台 QUARTUS II 软件可在多种 PC 机和工作站的操作系统中运行。 ⒋完全集成化 QUARTUS II 的设计输入、处理、验证、器件编程等功能全部集成在统一的开发环境下,可以使用户进行动态调试,加快开发进程。 ⒌丰富的设计库 QUARTUS II 提供丰富的库单元供设计者使用,其中包括 74 系列的全部器件和多 种 特 殊 的 逻 辑 宏 功能 (MacroFunction) 以 及 新 型 的 参 数 —— 化 兆 功 能(MegaFunction)。 ⒍接受高级描述语言 QUARTUS II 接受多种硬件描述语言,包括 VHDL、 AHDL、 C、 C++等语言。 ⒎良好的人机界面 QUARTUSⅡ具有比 MAXPLUSⅡ更加人性化的人机界面,方便工程人员的操作。 基于上述的特点,本文采用 QUARTUSⅡ软件对 HDB3 编、译码的仿真验证。 基于 VHDL 的 HDB3 码编码器与解码器的设计 HDB3 码编码器的建模与实现 6 第三章 HDB3 码编码 器 的建模与实现 HDB3 码的编码规则 在现实的通信系统中, 为了满足基带传输的要求,单极性脉冲序 列必须经过适当的基带编码,以保证传输码型中无直流分量,有一定的自检能力和适应不同信源的统计特性的能力。 在基带传输中,常用的码型有 AMI 码、 HDB3 码、 4B/3T码、 CMI 码、 以及双相码等。 其中, AMI 码是将输入单极性波形的所有正脉冲变为适合于在信道传输的正负极性交替的脉冲,而 HDB3 码则是在 AMI 码基础上改进的一种双极性归零码,它除具有 AMI 码功率谱中无直流分量,可进行差错自检等优点外,还克服了 AMI 码当信息中出现连 “ 0” 码时定时提取困难的缺点, 同时 HDB3 码频谱能量主要集中在基波频率以下,占用频带较窄, 因此被广泛用作PCM(Pulse Code Modulation, 脉冲编码调制 )线路传输码型,因此要了解 HDB3 码的编码规则,首先要知道 AMI 码的构成规则, AMI 码就是把单极性脉冲序列中相邻的 “ 1” 码 (即正脉冲 )变为极性交替的正、负脉冲。 将 “ 0” 码保持不变,把“ 1” 码变为 + 1 交替的脉冲。 如 : 信息序列: 10011010111100001 AMI 码 : +1001+1010+11+110000+1 HDB3 码是一种 AMI 码的改进型,它的编码 过程为: ①没有 4 个或 4 个连“ 0”串时 , HDB3 编码规律与 AMI 码相同,即 “ 1” 码变为 “ +1” 、 “ 1” 交替脉冲。 ② 当代码序列中出现 4 个或 4 个 以上 连 “ 0”串 时, 则将每 4 个连“ 0”小段 即“ 0000”的第 4 个 0 变换成与前一非“ 0”符号 (+1 或 1)同极性的符号 ,用 破坏符号 V 表示 (即 +1 记为 +V, 1 记为 V)。 ③ 为了使 附加 V 符号后的 序列 不破坏“极性交替反转”造成的无直流特性 ,还必须保证相邻 V 符号也应极性交替。 这一点,当相邻 V 符号之间有奇数个非 0符号时,则是能得到保证,当有偶数个非 0 符号时,则就得不到保证,这时再将该小段的第一个 0 变换成 +B 或 B, B 符号的极性与前一 非 0 符号的极性相反,并让后面的非 0 符号从 V 符号开始再交替变换 []。 基于 VHDL 的编码器的建模及实现 基于 VHDL 的 HDB3 码编码器与解码器的设计 HDB3 码编码器的建模与实现 7 编码器的 VHDL 建模及难点分析 从编码规则来分析, HDB3 码的编码器的设计的难点是在于如何判决是否应该添加符号 “ B” ,因为这涉及到有现在事件的状态决定过去事件状态的问题。 按照实时信号处理的理论,这是无法实现的。 但是在实际的电路中,可以考虑用寄存器的方法,首先把信码寄存在寄存器里,同时设置一个计数器 计算 两个 “ V”之间 “ 1” 的个数,经过 4 个码元时间后,有一个判偶电路来给寄存器发送是否 添加符号“ B” 的判决信号,从而实现 添加符号“ B” 功能。 为了减少资源的消耗和电路的复杂度,在对信号进行 HDB3 码编码时,先 依据 HDB3 码的编码规则进行 添加破坏符号“ V” 然后 进行添加符号“ B” 操作,最后才进行单极性信号变成双极性信号的转换。 HDB3 码的编码模型如图 所示。 图 HDB3 码编码 器模型 如图所示:整个 HDB3 码的编码器包括 3 个功能部分: 添加破坏符号 “ V” 、添加符号“ B” 和单极性码转变成双极性码,各部分之间采用同步时钟作用,并且带有一个异步的复位(清零)端口。 不过,信号处理的顺 序不能像编码规则那样:首先把代码串变换成为 AMI码,完成 添加破坏符号 “ V” 、 添加符号 “ B” 工作之后,其后的 “ +1” 和 “ 1”的极性还要依据编码规则的规定变换。 这样做需要大量的寄存器,同时电路结构也变得复杂。 因此本设计在此处把信号处理的顺序变换一下:首先完成 添加破坏符号 “ V” 工作,接着执行 添加符号 “ B” 功能,最后实现单极性变双极性的信号输出。 这样做的好处是输入进来的信号和 添加破坏符号 “ V” 、 添加符号 “ B” 功能电路中处理的信号都是单极性信号,且需要的寄存器的数目可以很少。 另外,如何准备识别电路中的 “ 1” 、 “ V” 和 “ B” ,这也是一个难点,因为 “ V”和 “ B” 符号是人为标识的符号,但在电路中最终的表示形式还是逻辑电平 “ 1” ,同时 QUARTUSⅡ 软件也不能像 HDB3 码的编码规则那样把代码串变换成 AMI码, 这是 因为 QUARTUSⅡ 软件不能处理带负号的信号,因此在软件中本设计还是利用双相码来表示。 双相码的编码规则如下:对每个二进制代码分别利用两个不同相位的二进制代码去取代。 例如: 信息序列 : 110010 双相码: 101001011001 基于 VHDL 的 HDB3 码编码器与解码器的设计 HDB3 码编码器的建模与实现 8 通过字节替代方法 解决了识别 “ 1” 、 “ V” 和 “ B” 的问题。 基于 VHDL 编码器的实现 1. 添加破坏符号“ V”的实现 添加破坏符号“ V” 模块的功能实际上就是对消息代码里的四个连 0 串的检测,即当出现四个连 0 串的时候,把第四个 “ 0” 变换成符号 “ V” ( “ V” 可以是逻辑电平 “ 1” ),而在其他的情况下,则 保持 消息代码的原样输出,同时为了区别代码“ 1” 、 “ V” 和 “ 0” ,在 添加破坏符号“ V” 时,用 “ 11” 标识符号 “ V” ,用 “ 01”标识符号 “ 1” ,用 “ 00” 标识符号 “ 0”。 因此, 添加破坏符号“ V” 的设计思想如下:首先判断输入的代码是什么,如果输入的符号是 “ 0” 码,则接着判断这是第 几个 “ 0” 码,如果是第四个 “ 0” 码,则把这个 “ 0” 码变换成 “ V” 码。 在其他的情况下,让原码照常输出。 程序流程图如 图 所示 : 其中 : ① COUNT0 是作为连 0 的计数器。 ② COUNT0_S 是四个连“ 0”状态寄存器。 1 表示遇到四个连 0, 0 表示未遇到四个连 0 的状态 ③ 在本程序中用 “ 01” 标识 “ 1”。 ④ 在本程序中用 “ 00” 标识 “ 0”。 ⑤ 在本程序中用 “ 11” 标识 “ V”。 图 添加破坏符号“ V”符号流程图 根据图 的思想,完成 HDB3 码编码的程序实现 添加破坏符号“ V” 功能的程序,以下给出 实现 添加破坏符号“ V” 功能的 关键代码,具体程序见附录一。 ADD_V: PROCESS(CLK,CLR) 添加破坏符号 V 程序 BEGIN IF(CLK39。 EVENT AND CLK=39。 139。 )THEN IF(CLR=39。 139。 )THEN CODEOUTV=00。 基于 VHDL 的 HDB3 码编码器与解码器的设计 HDB3 码编码器的建模与实现 9 COUNT0=0。 ELSE CASE CODEIN IS WHEN 39。 139。 =CODEOUTV=01。 01 表示 1 COUNT0=0。 WHEN 39。 039。 = IF(COUNT0=3)THEN COUNT0_S=39。 139。 CODEOUTV=11。 COUNT0=0。 „„„„„„„„„„„„ END PROCESS ADD_V。 S0(0)=CODEOUTV(0)。 S1(0)=CODEOUTV(1)。 此 添加破坏符号“ V” 功能程序设计了一个计数 器 COUNT0,用来作为应 添加破坏符号“ V” 符号的标志。 例如在程序代码中当 CODEIN=1 表示输入的信号为“ 1” COUNT0 不计数,代码输出为 CODEOUTV=“ 01”,当 CODEIN=0 时表示输入的代码为“ 0”,此时判断 COUNT0 的状态,如果为“ 3”,则 COUNT0_S=1,CODEOUTV=11,计“ 0”计数器 COUNT0 清 0,即代码: COUNT0_S=39。 139。 ; CODEOUTV=“ 11”; COUNT0=0;这都是 在进程 PROCESS 中,通过条件控制语句 CASE 完成添加破坏符号 “ V” 功能。 假 设输入 某 信息序列 ,根据设计思想,输入代码一添加破坏符号 “ V” 后的关系如下: 信息序列: 10000100001100011 添加破坏符号 V 后 : 0100000011010000001101010000000101 “ B” 的实现 根据 HDB3 码的编码规则可知: 添加破坏符号“ V” 模块的功能是为了保证附加 “ V” 符号后的序列不破坏 “ 极性交替反转 ” 造成的无直流特性,即当相邻“ V” 符号之间有偶数个非 0 符号的时候,把后一小段的第一个 “ 0” 变换成一个非破坏符号 —— “ B” 符号。 如图 所示。 其 中: ① FIRSTV 作为前面是否出现 “ 11” 即符号 “ V” 的标志位,其中 0 表示前基于 VHDL 的 HDB3 码编码器与解码器的设计 HDB3 码编码器的建模与实现 10 面没有出现 V, 1 表示前面已经出现过符号 V。 ② COUNT1 作为记 非 0 符号 的奇偶数,其中 0 表示 为偶数 , 1 表示 为奇数。 ③ FIRST_1 遇 1 状态寄存器, 1 表示前面遇到过 1, 0 表示没有遇到过。 ④ 在本程序中用 “ 10” 来标识符号 “ B”。 ⑤ 在本程序中用 “ 01” 来标识符号 “ 1”。 ⑥ 在本程序中用 “ 00” 来标识符号 “ 0”。 ⑦ 在本程序中用 “ 11” 来标识符号 “ V”。 图 添加符号“ B”符号流程图 如图 所示可知,此 添加符号 “ B” 模块涉及到一个有现在事件的状态决定过去事件状态的问题,其次还有如何确定是 “ 1” ,还是 “ V” 的问题 , 是 本毕业 设计所遇到的第一个难点。 本程序处理难点的思路是:先把码元(经过 添加破坏符号“ V” 处理过的)放入一个四位的移位寄存器中,在同步脉冲(时钟信号)的作用下,同时进行是否 添加符号“ B” 的判决,等到码元从移位寄存器里出来的时候,就可以决定是应该变换成 “ B” 符号,还是照原码输出。 因此,在程序的结构中进行元件声明( Component Declaration),调用库里的 D 触发来实现延迟作用。 为了是程序的流程更加清晰, 用了四个元件例化语句( Component Instantiation) ——DFFX: DFF PORT MAP(),来说明信号的流向。 所谓元件例化就是引入一种连接关系,将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定的端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。 在此程序中,当前的设计实体相论文资料集中营 基于 VHDL 的 HDB3 码编码器与解码器的设计 HDB3 码编码器的建模与实现 11 当于一个较大的电路系统,所定义的例化元件相当于一个要插在这个电路系统板上的芯片,而当前设计实体中所指定的端口则相当于这块电路板准备接收此芯片的一个插座。 元件例化是使 VHDL设计实体构成自上而下层次化设计的一种重要途径。 以下给出 添加符号“ B” 模块的部分程序,完整的程序见附录 一。 DS11: DFF PORT MAP(S1(0),CLK,S1(1))。 DS01: DFF PORT MAP(S0(0),CLK,S0(1))。 DS12: DFF PORT MAP(S1(1),CLK,S1(2))。 DS02: DFF PORT MAP(S0(。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。