基于fpga的hdb3译码器实现内容摘要:

988 年, Milstd454 规定所有为美国国防部设计的 ASIC 产品必须采用 VHDL 来进行描述。 1993 年,经过几年的修订 和扩展,IEEE 公布了 VHDL 的新版本 IEEE1164。 1996 年, 成为 VHDL 的综合标准。 1995 年,我国国家技术监督局制定的《 CAD 通用技术规范》推荐 VHDL 作为我国电子设计自动化硬件描述语言的国家标准。 自此, VHDL 在我国迅速开始普及。 纵观 VHDL 的发展过程, VHDL 不但适应了当今 EDA 技术的发展,反过来它还变革性地促进了 EDA 技术的进步。 正是因为有了 VHDL 这一功能强大的硬件描述语言,电子系统的硬件设计软件化才真正成为现实。 如今,大多数的 EDA 工具都采用VHDL 来作为主要的硬 件描述语言。 VHDL 的优点 [4] VHDL 迅速普及主要源于其强大的自身功能和特点。 主要优点如下: 1)覆盖面广,有强大的系统硬件描述能力 • VHDL 可以覆盖行为描述、 RTL (寄存器传输 )级描述、门描述、电路描述和物理参数描述(包括延时、功耗、频率、几何尺寸等)。 • VHDL 还具有丰富的数据类型。 即可以支持预定义的数据类型,也可以自己定义数据类型。 这样便给硬件描述带来了较大的自由度,使设计人员能够方 6 便地使用 VHDL 创建高层次的系统模型。 2)可读性好、易于修改 在硬件电路设计过程中,主 要的设计文件是用 VHDL 编写的源代码,因为VHDL 易读和结构模块化,所以易于修改设计。 3)独立于器件的设计,与工艺无关 用 VHDL 进行硬件电路设计时,并不需要首先考虑选择完成设计的器件,也就是说, VHDL 并没有嵌入具体的技术和工艺约定,设计人员可以集中精力进行设计的优化,不需要考虑其他问题。 当一个设计描述完成以后,可以用多种不同的器件结构来实现其功能。 4)易于移植和设计资源共享 由于 VHDL 是一种国际标准化的硬件描述语言,对于同一个设计描述,它可以移植到符合相同标准的任意系统或 平台上运行。 对于一些较大的通用性硬件电路,目前已经有专门的 IP 核出售,因此,能实现设计资源的有偿使用,可大大缩短设计周期,加快设计产品的上市速度。 VHDL 设计硬件电路的方法 [5][6] VHDL 是 IEEE 所确认的一种标准化硬件描述语言,它在设计描述的过程中有一定的设计流程可以遵循。 一般来讲, VHDL 的设计流程主要包括以下几个步骤: 1) 设计规范的定义 采用 VHDL 进行设计描述之前,设计人员首先要对电子系统的设计目的和设计要求有一个明确、清晰的认识,然后形成 整 体设计规范的定义,这一步骤对以后的设计来说是非常重要的。 设计规范的定义将对后面的设计步骤起到提纲挈领的作用,它相当于系统设计的总体方案。 2) 采用 VHDL 进行设计描述 采用 VHDL 进行设计描述主要包括设计规划和程序编写两个步骤。 设计规划的主要任务是进行设计方式的选择以及是否进行模块划分。 通常情况下,设计中采用的设计方式包括直接设计,自顶向下设计和自底向上设计,一般采用自顶向下的设计方法。 模块划分是设计过程中一个非常重要的步骤。 模块划分的好坏将会直接影响到最 7 终的电路设计,因此设计人员在这一步应该花费一定的时间,从而保证模块划分的最优化。 进行完设计规 划后,设计人员就可以按照模块划分来编写各个模块的 VHDL 程序,然后将各个模块的 VHDL 程序组合在一起,从而完成整个设计的 VHDL 描述。 3) VHDL 程序仿真 在设计流程中,综合、优化和装配 (或者布局布线 )等后续操作往往需要花费大量的时间。 一旦在后续工作中发现设计错误,设计人员往往需要修改 VHDL 描述,然后再重新进行综合、化和装配 (或者布局布线 ) 等后续操作,如此反反复复,将会浪费大量的时间和人力物力。 因此,设计人员常常在完成编码后采用仿真器对 VHDL设计描述进行仿真 (有时称作前仿真 ),这样可以提早发现设计错误, 节省时间,缩短开发周期。 4) 综合、优化和装配 (或者布局布线 ) 综合是指将较高层次的抽象描述转化到较低级别抽象的一种方法,简单地说,就是将设计的描述转化成底层电路表示。 通常,综合的结果是一个网表或者是一组逻辑方程。 优化是指将设计的时延缩到最小和有效利用资源。 几乎所有高级 VHDL 综合工具都可以使用约束条件对设计进优化。 约束条件的设置主要包括时间约束和面积约束。 对设计描述进行完综合和优化操作后, EDA 工具需要将综合和优化的逻辑结果分配到一个逻辑器件中。 通常,装配用来描述对一定的 CPLD 的资源进行分配的过程;布局 布线则是将综合和优化后生成的逻辑规划到一个 FPGA 的逻辑结构中,然后将各逻辑单元放置到相应优化的位置,最后在逻辑元胞之间、逻辑元胞和 I/O 口之间进行布线。 5) 装配 (或布局布线 )后的仿真 与 VHDL 程序仿真不同,装配 (或布局布线 ) 后的仿真不仅要对设计描述的逻辑功能进行验证,而且还要对设计描述的时序功能进行验证。 如果时序不能满足,那么需要回到前面的步骤重新进行操作。 通常,装配 (或布局布线 ) 后的仿真有时候被称为后仿真。 6) 器件编程 器件编程就是将设计描述经过编译、综合、优化和装配 (或者布局布线 ) 后的结果, 8 经过一 定的映射转化成器件编程所需要的数据文件格式,然后通过烧片器或者下载电缆将数据文件下载到器件中的过程。 9 第二章 HDB3 码的编译 规则 主要的基带传输码型 要了解 HDB3 码的编码规则,必须了解 NRZ码以及 AMI 码。 NRZ全称 NonReturn to Zero,即单极性不归零码。 即信号 1 有脉冲,信号 0 无脉冲,占空比 100%。 为克服 NRZ 信号存在直流分量以及丰富的高频分量,一般采用双极型归零码AMI(Alternate Mark Inversion): 0 信号依然无脉冲, 1 信号采用两种交替极性的脉冲传输,占空比 为 50%。 这种码型不存在直流分量,且高频分量较 NRZ 要少。 然而在实际应用中,人们发现 0 信号占有较大的比重,而连续的 0 信号对系统的同步以及时钟频率的提取较为不利,而采用 HDB3 码是解决这一问题的方法之一。 [7] HDB3码的编码 规则 HDB3 码是 AMI 码的改进型。 它克服了 AMI 码的长连 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 符号开始再交替变化。 例如 ,如表 21 所示 的例子。 表 21 HDB3 编码举例 代码 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 HDB3 +1 0 1 +1 0 0 0 +V 0 1 +1 B 0 0 V 0 +1 10 HDB3码的译码 规则 HDB3 码的译码是编码的逆过程,其译码相对于编码较简单。 从其编码原理可知,每一个破坏符号 V 总是与前一非 0 符号同极性 [8],因此,从收到的 HDB3 码序列中,容易识别 V 符号,同时也肯定 V 符号及其前面的 3 个符号必是连 0 符号,于是可恢复成 4 个连 0 码,然后再将所有的 1 变成 +1 后便得到原消息代码。 举例如表 21 所示。 表 21 HDB3 译码举例 HDB3 +1 0 1 0 +1 1 0 0 0 1 +1 0 0 +1 1 0 +1 破坏符V,B V +B +V 译码 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 HDB3码的检错 能力 HDB3 码具有检错能力,当传输过程中出现单个误码时,破环点序列的极性交替规律将受到破坏,因而可以在使用过程中监测传输质量。 但单个误码有时会在接收端译码后产生多个误码。 HDB3 码的平均误增殖系数在 之间,有时高逹 2,这取决于译码方案。 [1] 11 第三章 HDB3 编码器的 FPGA 实现 编码器实现分析 在数字基带传输系统中,从信源输出的信号一般是用“ 0”、“ 1”两种状态表示的 单极性( NRZ)码。 [9]因此, HDB3 编码器的主要转换对象就是 NRZ 码。 由 HDB3码的编码规则可知,编码器的工作主要是是按 AMI 码对信号进行编码,判断是否应该加入破坏符 V, V 加入后是否该补 B。 由于需要检查到四位连 „0‟才能进行加 V 补 B的操作,用于存放数据的移位寄存器就不能少。 设计难点在于加 V, B 的判决。 HDB3 编码器的设计思 路 4 连‘ 0’的检 出加 V 及判 ‘ 1’ 极性 当输入遇到 4 连 ‘ 0’ 时,按编码规则,须以 000V 或 B00V 取代。 因此需要先有一个 4 连 ‘ 0’ 检出模块 [10]。 该模块检出 4 连 ‘ 0’ 时,产生 一个加 V 信号,把 V 取代最后一个 ‘ 0’ ,同时根据前一个 V 的极性判断当次 V 的极性。 当输入为‘ 1’时,就按 AMI 码判其极性。 取代节 选取 当检出 4 连 ‘ 0’ 时,除了加 V 外,还 须 要考虑用 B 取代第一 个 ‘ 0’ ,还是保持第一个 ‘ 0’ 不变地输出。 可以在加 V 的时候 根据前一个 V 和 4 连 ‘ 0’ 码前一脉冲的极性, 去 判断加 B,还是保持 ‘ 0’ 码。 若 须 要加 B,则进行加 B 的操作,同时判断 B的极性。 其极性可根据 B00V 来决定,因为 B00V 中 B 跟 V 是同极性的。 整体思路原理如图 31 所示。 图 31 HDB3 编码器实现原理图 12 加 B00V 还是加 000V,可根据如表 31 中相关的极性关系进行判断。 表 31 取代节极性判决 前一破坏点的极性 + - + - 4 连 0 码前一脉冲的极性 + - - + 取代节 - 00- + 00+ 000- 000+ B00V 000V 设计建模 由于 HDB3 码是双极性的,而 CPLD/FPGA 只能进行单极性处理。 因此须把 HDB3码的双极性变换为单极性,以便 FPGA 器件对其进行处理。 将 HDB 码的‘ +1’,‘ 0’,‘ 1’用数字信号 1,0 重新编码,用 01 编码‘ +1’,用 00 编码‘ 0’,用 11 编码‘ 1’。 如表 32 所示 , 其中低位与其本来数值相符,高位则以 0 来标识‘ +’ ,用 1 来标识‘ ’。 表 32 HDB3 的码元重新编码 HDB3 码元 自定单极性标 识 +1 01 0 00 1 11 因此在 最后 , 须 加 接外部电路,把单极性转换为双极性输出。 如利用一个四选一的数据选择器 CC4052(其功能表如表 33 所示),二维数组作为 CC4052 的选择地址,在输出端 out 可以得到符合规则的 “+1”、 “1”、 “0”变化波形。 表 33 CC4052 功能表 输入 导通通道 INH A1 A0 L L L I0/O0O/I L L H I1/O1O/I L H L I2/O2O/I L H H I3/O3O/I H X X 无 把得到两个输出的分别接到 A1, A0 作地址控制端,便可使其输出相应电平。 13 4 连 0 的检出 , AMI 编码 及插 V 先 进行 4 连 0 的检出, 再 把输入的 NRZ 按 AMI 编码,用 t0 记录连 0 的情况,若检出 4 连 0 ( t0=3) 就进行加 V 的操作,整个过程都须记。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。