基于VHDL语言的5B6B编译系统设计.doc

上传人:文库蛋蛋多 文档编号:2394125 上传时间:2023-02-17 格式:DOC 页数:18 大小:477.50KB
返回 下载 相关 举报
基于VHDL语言的5B6B编译系统设计.doc_第1页
第1页 / 共18页
基于VHDL语言的5B6B编译系统设计.doc_第2页
第2页 / 共18页
基于VHDL语言的5B6B编译系统设计.doc_第3页
第3页 / 共18页
基于VHDL语言的5B6B编译系统设计.doc_第4页
第4页 / 共18页
基于VHDL语言的5B6B编译系统设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《基于VHDL语言的5B6B编译系统设计.doc》由会员分享,可在线阅读,更多相关《基于VHDL语言的5B6B编译系统设计.doc(18页珍藏版)》请在三一办公上搜索。

1、课题名称:基于VHDL语言的5B6B编译系统设计班 级: 通信工程0902,0903 姓名学号:陈莹莹200954080209 巢楚颉200954080302 肖泉200954080208 指导教师:单老师 2011年11月日基于VHDL语言的5B6B编译系统设计摘要: mBnB 码是光纤通信系统中常用的码型之一, 本次设计了一种简单实用的5B6B 编码方法, 并提出了用A ltera开发系统的硬件描述语言VHDL 实现全数字5B6B 编译码电路的设计思想和方法, 最后给出了波形仿真结果。本文给出了针对该编码方法的除数字锁相环之外的一种简单方便的VHDL 语言设计方法。关键词: 5B6B 码;

2、 FPGA; VHDL 语言; 波形仿真编码部分(Encode5B6B):一、 5B6B 编码原理 mBnB码又叫分组码,是一类冗余二进制码,常见到的有1B2B、2B3B、4B5B、5B6B、8B10B等码型。它将输入的原始码流分成mB为一组的码字,然后在同样的时间内将其变换成n(nm)比特(nB)为一组的较长码字,最后以不归零或归零格式传输这些新码流。m和n均为正整数,一般是n=m+1。通过变换,线路码数率比原二进制码率提高了n/m倍。5B6B码为字母型平衡码中mBnB码的一种,其编码复杂性和比特冗余度之间是最合理的折中,因此使用较为普遍。在5B6B码中,5伟二进制码共有=32种不同的码字,

3、而6位二进制码共有64种不同的码字,必须从64种码字中选出适宜的码字去对应5B码的32种码字。首先引入不平衡度D(Dispartty)的概念,它表示一个码字中“0”元数目减去“1”元数目的差值,差值为零的码字为零不平衡度码字。由于6B码码长为偶数,所以D必为偶数,即D为0,2,-2,4,-4,6,-6。在6B码的64个码字中,有20个零平衡度码字,可以代表20个5B码字。通常情况下,根据尽量选择低不平衡度码字的原则,找出D=2,-2的码字各有12种,为了使“0”码和“1”码出现的机会相同,可以把这些码字相对应的交替使用,用以代表5B码中另外的12个码字。这样编出来的6B码流中最大同符号连续数为

4、6,“0”码和“1”码出现的概率均等,各占50%,所以可以认为没有直流漂移。必须指出,根据不同目的(例如:直流分量最低或实现方法简单等)所提出的编码方案,所对应的编码表是不同的。在本文中,出于减少最大同符号连续数的考虑,采用表一所示的5B6B 编码表,表中巧妙的调整了正,负不均码与均等吗的对应关系(例如输入码子“7”,“24”的变换),使本码表得出的6b码流中最大的同符号连续数为5,使“0”、“1”的转换概率达到了0.5915,提高了定时信息的含量。 表一中,模式1和模式2分别由19个D=0的码字和13个RDS=2,-2的码字组成。大多数mBnB 码都采用两种模式编码, 两种模式交替使码字中的

5、不均值为零。这种编码电路多采用可编程只读存储器PROM 查找表的方法实现。下面是一种5B6B码的码表。 表一如下 所示:输入码字(5b)输出码字(6b)输入码字(5b)输出码字(6b)模式一模式二模式一模式二0000001100101100101610000110001110001100001110011100001171000111100101000120001011011010001018100101110100100103000111000111000111910011010011010011400100110101100100201010011010011010050010110010

6、110010121101010101010101016001101001101001102210110010110010110700111100111000111231011101011101010080100010101110100024110001110000110009010011010011010012511001011001011001100101010101010101026110100110100110101101011001011001011271101101101100101012011001011001011002811100011100011100130110110110

7、100010129111010111010010011401110101110000110301111001111000110015011110011100011103111111001101001101 二 5B6B 的编码电路设计 5B6B 编码电路的工作原理: 为了实现5B6B 编码, 本设计是以随机码作为输入的数字信号。因此, 完整的5B6B 编码电路包括分频电路、串并转换电路、编码电路和并串转换电路组成。 (1)五分频器:五分频 序列发生器的输入时钟脉冲五分频,从而可以实现每输入5BIT的串行信号就同步转换输出出五位的并行信号,实现时钟信号的同步。library ieee;use i

8、eee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt5 isport(clk5:in std_logic;newclk1:out std_logic);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;

9、temp=0;end if;end if;end process;newclk1=temp; -newclk1是用于五串变五并模块和编码部分的控制时钟end exam;五分频分频功能仿真波(2) 串并转换(5位串变5位并)(用循环移位实现)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_i

10、n:in std_logic;A:out std_logic_vector(4 downto 0);end ;architecture one of SER2PAR5to5 issignal q: std_logic_vector(4 downto 0);beginp1:process(clk5)beginif clk5event and clk5=1 thenq=shift_in & q(4 downto 1);end if;end process p1;AREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGRE

11、GREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREG=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)六分频器:六分频 序列发生器的输入时钟脉冲六分频,从而可以实现每输入6

12、BIT的并行信号就将其转换给变量。具体程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity CNT6 isport(clk6:in std_logic;cnter:out std_logic);end;architecture exam of CNT6 issignal q:std_logic_vector(2 downto 0);signal temp: std_logic;beginprocess(clk6)beginif clk6event and clk6=1 theni

13、f q=101 thenq=000; temp=1;else q=q+1; temp=0;end if;end if;end process;cnter=temp;end exam;六分频分频功能仿真波形图:(5)六位并变串转换 把编码实现的6位码,由并行转换为串行输出。library ieee;use ieee.std_logic_1164.all;entity PAR2SER6to6 isport (clk0,clk6: in std_logic;Q : in std_logic_vector(5 downto 0);shift_out : out std_logic);end PAR2S

14、ER6to6;architecture one of PAR2SER6to6 issignal N:INTEGER RANGE 0 TO 5;signal REG:std_logic_vector(5 downto 0);beginp1:process(clk6,Q)beginif clk6event and clk6=1 thenREG=Q;end if;end process p1;PROCESS(CLK0,REG,N)BEGINIF CLK0EVENT AND CLK0=1THENIF N=5 THEN N=0;ELSE Nshift_outshift_outshift_outshift

15、_outshift_outshift_outshift_out=X;end case;end process; end one;六位并到串 仿真波形图:解码部分(Encode5B6B):一、解码原理 解码器与编码器基本相同,只是除去组别控制部分。 译码时,把送来的已变换的6B信号码流,每6比特并联为一组,作为PROM的地址,然后读出5B码,再经过并-串变换还原为原来的信号码流。二 5B6B 的译码电路设计解码器包括5分频电路、6分频电路、串并转换电路、解码电路和并串转换电路组成。(1)译码部分六分频器(用于产生同步时钟信号):library ieee;use ieee.std_logic_11

16、64.all;use ieee.std_logic_unsigned.all;entity CNT6 isport(clk6:in std_logic;cnter:out std_logic);end;architecture exam of CNT6 issignal q:std_logic_vector(2 downto 0);signal temp: std_logic;beginprocess(clk6)beginif clk6event and clk6=1 thenif q=101 thenq=000; temp=1;else q=q+1; temp=0;end if;end if

17、;end process;cnter=temp;end exam;六分频分频功能仿真波形图:(2)串行转并行(6位串变6位并):library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity SER2PAR6to6 isport(clk6:in std_logic;shift_in:in std_logic;A:out std_logic_vector(5 downto 0);end ;architecture one of SER2PAR6to6 issignal q: std_logic_vec

18、tor(5 downto 0);beginp1:process(clk6)beginif clk6event and clk6=1 thenq=shift_in & q(5 downto 1);end if;end process p1;AREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREGREG null; end case; end if; end process; Y=REG;end;仿真波形图:(4)译码部分的五分频器:library ieee;use iee

19、e.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt5 isport(clk5:in std_logic;newclk1:out std_logic);end;architecture exam of CNT5 issignal q:integer range 0 to 4;signal temp: std_logic;beginprocess(clk5)beginif clk5event and clk5=1 thenif q=4 thenq=0; temp=1;else q=q+1;temp=0;end if;end

20、 if;end process;newclk1=temp;end exam;五分频分频功能仿真波形图:(6)五位并行转串行:library ieee;use ieee.std_logic_1164.all;entity PAR2SER5to5 isport (clk0,clk5: in std_logic;Q : in std_logic_vector(4 downto 0);shift_out : out std_logic);end PAR2SER5to5;architecture one of PAR2SER5to5 issignal N:INTEGER RANGE 0 TO 4;sig

21、nal REG:std_logic_vector(4 downto 0);beginp1:process(clk5,Q)beginif clk5event and clk5=1 thenREG=Q;end if;end process p1;PROCESS(CLK0,REG,N)BEGINIF CLK0EVENT AND CLK0=1THENIF N=4 THEN N=0;ELSE Nshift_outshift_outshift_outshift_outshift_outshift_out=X;end case;end process; end one;并行转串行功能仿真波形图:课题总结:经

22、过几次的上机实验还有一个周末的全力奋战,终于完成了课题。第一次使用VHDL语言完成如此课题,以前虽然零零碎碎学习了相关相关内容,内容简单且较分散,经过这次课题,对这方面的知识有了较系统的认识,对maxplusII软件有更多熟悉。这次课题的完成,对我们来说确实有挑战。我们搜查到的资料比较零散,但由于我们分工比较明确,才在规定时间内完成了课题。具体分工如下:陈莹莹:搜集资料、编码模块、整合文档巢楚颉:搜集资料、分频模块程序及波形图、译码模块电路设计图肖泉:搜集资料、译码模块、并串串并模块、编码表图参考文献:1. 光纤数字通信系统中5B6B码的实践.pdf作者未知2.EDA技术与应用(第版)江国强电子工业出版社3.VHDL硬件描述语言辛春燕国防工业出版社4.一种实用的3B4B线路编码电路闫娟娟、李绪友四川通信技术5. 5B6B编解码的VHDL仿真实现 杨云 邓元庆6. 一种用于光纤传输系统的新5B6B码表.pdf7. 5B6B码编解码方案的分析与改进.pdf8. 用于34Mb_s光纤传输系统的5B6B线路码.pdf

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号