基于VHDL语言的5B6B编译系统设计.doc
《基于VHDL语言的5B6B编译系统设计.doc》由会员分享,可在线阅读,更多相关《基于VHDL语言的5B6B编译系统设计.doc(17页珍藏版)》请在沃文网上搜索。
1、 基于VHDL语言的5B6B编译系统设计摘要: mBnB 码是光纤通信系统中常用的码型之一, 本次设计了一种简单实用的5B6B 编码方法, 并提出了用A ltera开发系统的硬件描述语言VHDL 实现全数字5B6B 编译码电路的设计思想和方法, 最后给出了波形仿真结果。本文给出了针对该编码方法的除数字锁相环之外的一种简单方便的VHDL 语言设计方法。关键词: 5B6B 码; FPGA; VHDL 语言; 波形仿真编码部分(Encode5B6B):一、 5B6B 编码原理 mBnB码又叫分组码,是一类冗余二进制码,常见到的有1B2B、2B3B、4B5B、5B6B、8B10B等码型。它将输入的原始
2、码流分成mB为一组的码字,然后在同样的时间内将其变换成n(nm)比特(nB)为一组的较长码字,最后以不归零或归零格式传输这些新码流。m和n均为正整数,一般是n=m+1。通过变换,线路码数率比原二进制码率提高了n/m倍。5B6B码为字母型平衡码中mBnB码的一种,其编码复杂性和比特冗余度之间是最合理的折中,因此使用较为普遍。在5B6B码中,5伟二进制码共有=32种不同的码字,而6位二进制码共有64种不同的码字,必须从64种码字中选出适宜的码字去对应5B码的32种码字。首先引入不平衡度D(Dispartty)的概念,它表示一个码字中“0”元数目减去“1”元数目的差值,差值为零的码字为零不平衡度码字
3、。由于6B码码长为偶数,所以D必为偶数,即D为0,2,-2,4,-4,6,-6。在6B码的64个码字中,有20个零平衡度码字,可以代表20个5B码字。通常情况下,根据尽量选择低不平衡度码字的原则,找出D=2,-2的码字各有12种,为了使“0”码和“1”码出现的机会相同,可以把这些码字相对应的交替使用,用以代表5B码中另外的12个码字。这样编出来的6B码流中最大同符号连续数为6,“0”码和“1”码出现的概率均等,各占50%,所以可以认为没有直流漂移。必须指出,根据不同目的(例如:直流分量最低或实现方法简单等)所提出的编码方案,所对应的编码表是不同的。在本文中,出于减少最大同符号连续数的考虑,采用
4、表一所示的5B6B 编码表,表中巧妙的调整了正,负不均码与均等吗的对应关系(例如输入码子“7”,“24”的变换),使本码表得出的6b码流中最大的同符号连续数为5,使“0”、“1”的转换概率达到了0.5915,提高了定时信息的含量。 表一中,模式1和模式2分别由19个D=0的码字和13个RDS=2,-2的码字组成。大多数mBnB 码都采用两种模式编码, 两种模式交替使码字中的不均值为零。这种编码电路多采用可编程只读存储器PROM 查找表的方法实现。下面是一种5B6B码的码表。 表一如下 所示:输入码字(5b)输出码字(6b)输入码字(5b)输出码字(6b)模式一模式二模式一模式二00000011
5、001011001016100001100011100011000011100111000011710001111001010001200010110110100010181001011101001001030001110001110001119100110100110100114001001101011001002010100110100110100500101100101100101211010101010101010160011010011010011022101100101100101107001111001110001112310111010111010100801000101011
6、10100024110001110000110009010011010011010012511001011001011001100101010101010101026110100110100110101101011001011001011271101101101100101012011001011001011002811100011100011100130110110110100010129111010111010010011401110101110000110301111001111000110015011110011100011103111111001101001101 二 5B6B 的编
7、码电路设计 5B6B 编码电路的工作原理: 为了实现5B6B 编码, 本设计是以随机码作为输入的数字信号。因此, 完整的5B6B 编码电路包括分频电路、串并转换电路、编码电路和并串转换电路组成。 (1)五分频器:五分频 序列发生器的输入时钟脉冲五分频,从而可以实现每输入5BIT的串行信号就同步转换输出出五位的并行信号,实现时钟信号的同步。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt5 isport(clk5:in std_logic;newclk1:out std_logi
8、c);end;architecture exam of CNT5 issignal q:integer range 0 to 4;signal temp: std_logic;beginprocess(clk5)beginif clk5event and clk5=1 then -表示检测clock的上升沿if q=4 thenq=0; temp=1;else q=q+1;temp=0;end if;end if;end process;newclk1=temp; -newclk1是用于五串变五并模块和编码部分的控制时钟end exam;五分频分频功能仿真波(2) 串并转换(5位串变5位并)(
9、用循环移位实现)Clk0来一次有效,Y接收串行的数据就向右移一位,当五分频的信号clk5有效时把Y输出。编码部分五串变五并程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity SER2PAR5to5 isport(clk5:in std_logic;shift_in:in std_logic;A:out std_logic_vector(4 downto 0);end ;architecture one of SER2PAR5to5 issignal q: std_logic_vec
10、tor(4 downto 0);beginp1:process(clk5)beginif clk5event and clk5=1 thenq=shift_in & q(4 downto 1);end if;end process p1;AREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREG
11、REGREGREGREGREGREG=NULL;end case;end if;END PROCESS P1;P2:PROCESS(CLK6)BEGINIF CLK6EVENT AND CLK6=1 THENQ=REG;END IF;END PROCESS P2; END ONE;编码仿真波形如下:(4)六分频器:六分频 序列发生器的输入时钟脉冲六分频,从而可以实现每输入6BIT的并行信号就将其转换给变量。具体程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity CNT6 isp
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 语言 B6B 编译 系统 设计
