毕业设计]基于VHDL的3B4B线路编码解码实现.doc
-
资源ID:138977
资源大小:193.50KB
全文页数:13页
- 资源格式: DOC
下载积分:9积分
扫码快捷下载
会员登录下载
微信登录下载
微信扫一扫登录
- 扫描成功!重扫
- 请在手机上确认支付
手机扫码下载
请使用微信 或支付宝 扫码支付
• 扫码支付后即可登录、下载文档,同时代表您同意《人人文库网用户协议》
• 扫码过程中请勿刷新、关闭本页面,否则会导致文档资源下载失败
• 支付成功后,可再次使用当前微信或支付宝扫码免费下载本资源,无需再次付费
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源(1积分=1元)下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
毕业设计]基于VHDL的3B4B线路编码解码实现.doc
基于VHDL的3B4B线路编码/解码实现摘要:mBnB码是光纤通信系统中常用的码型之一,本次设计了一种简单实用的3B4B编码方法,并提出了用Altera开发系统的硬件描述语言VHDL实现全数字3B4B编译码电路的设计思想和方法,最后给出了波形仿真结果。本文给出了针对该编码方法的除数字锁相环之外的一种简单方便的VHDL语言设计方法。关键词:3B4B码;FPGA;VHDL语言;波形仿真编码部分(Encode3B4B):一、3B4B编码原理大多数mBnB码都采用两种模式编码,两种模式交替使码字中的不均值为零。这种编码电路多采用可编程只读存储器PROM查找表的方法实现。下面介绍一种3B4B码,可用更为简单的电路实现,其编码规则具体说明如下:先将输入的数字信号每3b为一码字,在同样长的时间间隔内变换成4b一组的输出码字。变换后4b的一个码字中,第1与第4比特位分别由变换前3b码字中的第1与第3比特位取反而得到;变换前的第1与第2比特位分别作为变换后的第2与第3比特位。其编码情况如表1所示。表13B4B编码表3B0000010100111001011101114B10011000101110100101010001110110二3B4B的编码电路设计3B4B编码电路的工作原理:为了实现3B4B编码,本设计是以随机码作为输入的数字信号。因此,完整的3B4B编码电路包括分频电路、串并转换电路、编码电路和并串转换电路组成,如图1所示。图11:分频模块:a三分频序列发生器的输入时钟脉冲三分频,从而可以实现每输入3BIT的串行信号就同步转换输出出三位的并行信号,实现时钟信号的同步。b四分频序列发生器的输入时钟脉冲四分频,从而可以实现每输入4BIT的并行信号就把转换给变量ifclk4eventandclk4=1thenREG<=Q;2:串并转换模块(用循环移位实现)Clk0来一次有效,Y接收串行的数据就向右移一位,当三分频的信号clk3有效时把Y输出。architectureoneofSER2PARissignalq:std_logic_vector(2downto0);beginp1:process(clk0)variablen:integer:=0;beginifclk0eventandclk0=1thenq<=shift_in&q(2downto1);endif;endprocessp1;p2:process(clk3)beginifclk3eventandclk3=1thenY<=q;endif;endprocessp2;3:编码根据自己的码表,确定3位码对应的4位码,利用类似查表的方法,把输入的三位数据当作rom中的地址,然后输出对应的4位码。线路码(4B)信号码(3B)模式2(负组)模式1(正组)WDS码子WDS码子-20010+211011117-21000+20111110601010010101015010010100110040011000110011300101001010102-20001+211100011-20100+210110000线路码()信号码()模式(负组)模式(正组)码子码子ARCHITECTUREONEOFPROMISSIGNALREG:STD_LOGIC_VECTOR(3DOWNTO0);BEGINP1:PROCESS(Y,F)BEGINifF=0thencaseYiswhen"000"=>REG<="1011";-11when"001"=>REG<="1110";-14when"010"=>REG<="0101";-5when"011"=>REG<="0110";-6when"100"=>REG<="1001";-9when"101"=>REG<="1010";-10when"110"=>REG<="0111";-7when"111"=>REG<="1101";-13WHENOTHERS=>REG<=NULL;endcase;endif;ifF=1thencaseYiswhen"000"=>REG<="0100";-4when"001"=>REG<="0001";-1when"010"=>REG<="0101";-5when"011"=>REG<="0110";-6when"100"=>REG<="1001";-9when"101"=>REG<="1010";-10when"110"=>REG<="1000";-8when"111"=>REG<="0010";-2WHENOTHERS=>REG<=NULL;endcase;endif;ENDPROCESSP1;P2:PROCESS(CLK3)BEGINIFCLK3EVENTANDCLK3=1THENQ<=REG;ENDIF;ENDPROCESSP2;4并串转换把编码实现的4位码,由并行转换为串行输出。architectureoneofPAR2SERissignalN:INTEGERRANGE0TO3;signalREG:std_logic_vector(3downto0);beginp1:process(clk4,Q)beginifclk4eventandclk4=1thenREG<=Q;endif;endprocessp1;PROCESS(CLK0,REG,N)BEGINIFCLK0EVENTANDCLK0=1THENIFN=3THENN<=0;ELSEN<=N+1;ENDIF;ENDIF;caseNiswhen0=>shift_out<=REG(0);when1=>shift_out<=REG(1);when2=>shift_out<=REG(2);when3=>shift_out<=REG(3);whenothers=>shift_out<=X;endcase;endprocess;三仿真效果:仿真时,在F引脚输1,选第二的码表,串口输入111,对应的编码输出为0010.解码部分(Encode3B4B):设计要求:1)资料查找,系统总体的设计思路2)方案比较(方案分析、比较、总结)3)总体方案的设计与任务细分(系统功能模块总图)4)各功能模块设计(模块的实现方案、算法比较、编程、功能和时序仿真)实验报告撰写(各自撰写自己完成的部分,具备总体设计方案、TOP系统图、各功能模块的设计思路、系统调试、仿真和课题总结)mBnB线路编解码简介:mBnB码是把输入的二进制原始码流进行分组,每组有m个二进制码,记为mB,称为一个码字,然后把一个码字变换为n个二进制码,记为nB,并在同一个时隙内输出。把输入的mB变换为nB输出;本次设计取m=3,n=m+1=4即为3B4B码。“码字数字和”(WDS)是用来来描述码字的均匀性,并以WDS的最佳选择来保证线路码的传输特性。用“-1”代表“0”码,用“+1”代表“”码,整个码字的代数和即为WDS。nB码的选择原则遵循尽可能选择|WDS|最小的码字,禁止使用|WDS|最大的码字。以3B4B为例,应选择WDS=0和WDS=±2的码字,禁止使用WDS=±4的码字。mBnB码是一种分组码,设计者可以根据传输特性的要求确定某种码表。如下下表为一种3B4B码的码表:线路码(4B)信号码(3B)模式2(负组)模式1(正组)WDS码子WDS码子-20010+211011117-21000+20111110601010010101015010010100110040011000110011300101001010102-20001+211100011-20100+210110000线路码()信号码()模式(负组)模式(正组)码子码子解码原理解码器与编码器基本相同,只是除去组别控制部分。译码时,把送来的已变换的4B信号码流,每4比特并联为一组,作为PROM的地址,然后读出3B码,再经过并-串变换还原为原来的信号码流。并串PROMB1B2B3B4b1b2b3串并组别变换ABC变前时钟已变换的输出4B码流变换时钟待变换输入信号码流解码器包括分频电路、分频电路、串并转换电路、解码电路和并串转换电路组成。TOP系统电路图如下:功能仿真波形图:设定输入为:00010001000100010001000100010001000100013B4B解码输出对应为:001001001001001001001001001001各元器件代码如下:三分频器:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityCNT3isport(clk3:instd_logic;newclk1:outstd_logic);end;architectureexamofCNT3issignalq:integerrange0to2;signaltemp:std_logic;beginprocess(clk3)beginifclk3eventandclk3=1thenifq=2thenq<=0;temp<=1;elseq<=q+1;temp<=0;endif;endif;endprocess;newclk1<=temp;endexam;三分频分频功能仿真波形图:四分频器:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityCNT4isport(clk4:instd_logic;cnter:outstd_logic);end;architectureexamofCNT4issignalq:std_logic_vector(1downto0);signaltemp:std_logic;beginprocess(clk4)beginifclk4eventandclk4=1thenifq="11"thenq<="00";temp<=1;elseq<=q+1;temp<=0;endif;endif;endprocess;cnter<=temp;endexam;四分频分频功能仿真波形图: