4b5b编码器.docx

上传人:b****8 文档编号:29248770 上传时间:2023-07-21 格式:DOCX 页数:14 大小:340.02KB
下载 相关 举报
4b5b编码器.docx_第1页
第1页 / 共14页
4b5b编码器.docx_第2页
第2页 / 共14页
4b5b编码器.docx_第3页
第3页 / 共14页
4b5b编码器.docx_第4页
第4页 / 共14页
4b5b编码器.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

4b5b编码器.docx

《4b5b编码器.docx》由会员分享,可在线阅读,更多相关《4b5b编码器.docx(14页珍藏版)》请在冰豆网上搜索。

4b5b编码器.docx

4b5b编码器

电子科技大学

UNIVERSITYOFELECTRONICSCIENCEANDTECHNOLOGYOFCHINA

数字电路

课程设计报告

 

课程设计题目4b5b编码器

学号2014020905009

作者姓名宁博宇

指导教师陈学英胡剑浩

摘要

通过VHDL编码,实现4位输入到五位输出的4B5B编码器,具体要求见真值表。

要求编码时先用普通逻辑编写,再换用与非门重新编写。

关键词:

4b5b

第一章绪论

一.1课程设计背景

在IEEE802.9a等时以太网标准中的4B:

5B编码方案,因其效率高和容易实现而被采用。

在同样的20MHz钟频下,利用4B:

5B编码可以在10兆位/秒的10Base-T电缆上得到16兆位/秒的带宽。

其优势是可想而知的。

4B:

5B编码方案是把数据转换成5位符号,供传输。

这些符号保持线路的交流(AC)平衡;在传输中,其波形的频谱为最小。

信号的直流(DC)分量变化小于额定中心点的10%。

这种编码的特点是将欲发送的数据流每4bit作为一个组,然后按照4B/5B编码规则将其转换成相应5bit码。

5bit码共有32种组合,但只采用其中的16种对应4bit码的16种,其他的16种或者未用或者用作控制码,以表示帧的开始和结束、光纤线路的状态(静止、空闲、暂停)等。

一.2实验要求

1.初步学习ISE使用环境

2.利用卡诺图对编码真值表进行化简,得出逻辑表达式

3.基于表达式进行硬件设计,采用基本门结构化描述

4.编写TestBench文件,并进行仿真

一.3完成目标

1.通过得出的逻辑表达式编写VHDL程并仿真。

2.全部利用与非门构造4B5B编码器并仿真。

实验原理

1.4.1要求的真值表(要求输入的为4位,输出的为五位)

1.4.2由真值表产生的卡诺图

设输入的4位编码为:

ABCD,输出的5位编码为:

VWXYZ。

由以上五个卡诺图可知,若输入为ABCD,可通过卡诺图得到的逻辑运算得到输出的VWXYZ,从而实现4B5B。

在具体的逻辑设计中,可以用基本方式实现(如运用not,and,or等),也可以用较为复杂的方式实现(如全部用nand编写)。

实验过程

1.5源程序

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

--Uncommentthefollowinglibrarydeclarationifusing

--arithmeticfunctionswithSignedorUnsignedvalues

--useIEEE.NUMERIC_STD.ALL;

--Uncommentthefollowinglibrarydeclarationifinstantiating

--anyXilinxprimitivesinthiscode.

--libraryUNISIM;

--useUNISIM.VComponents.all;

entitynbyis

port(

a3:

inSTD_LOGIC;

a2:

inSTD_LOGIC;

a1:

inSTD_LOGIC;

a0:

inSTD_LOGIC;

b4:

outSTD_LOGIC;

b3:

outSTD_LOGIC;

b2:

outSTD_LOGIC;

b1:

outSTD_LOGIC;

b0:

outSTD_LOGIC);

endnby;

architectureBehavioralofnbyis

begin

b0<=a0;

b1<=((nota1)and(nota0))or((nota3)anda2)or(a3and(nota2))or(a3and(nota1));

b2<=((nota3)and(nota2)and(nota0))ora1;

b3<=a2or((nota3)and(nota1));

b4<=a3or(a1and(nota2))or((nota3)and(nota2)and(nota0));

endBehavioral;

以上程序为普通逻辑编写,为提高难度用逻辑转换关系再换用与非门重新编写,新程序如下:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

--Uncommentthefollowinglibrarydeclarationifusing

--arithmeticfunctionswithSignedorUnsignedvalues

--useIEEE.NUMERIC_STD.ALL;

--Uncommentthefollowinglibrarydeclarationifinstantiating

--anyXilinxprimitivesinthiscode.

--libraryUNISIM;

--useUNISIM.VComponents.all;

entitynb4b5bis

port(

a3:

inSTD_LOGIC;

a2:

inSTD_LOGIC;

a1:

inSTD_LOGIC;

a0:

inSTD_LOGIC;

b4:

outSTD_LOGIC;

b3:

outSTD_LOGIC;

b2:

outSTD_LOGIC;

b1:

outSTD_LOGIC;

b0:

outSTD_LOGIC);

endnb4b5b;

architectureBehavioralofnb4b5bis

begin

b0<=a0;

b1<=(not(((nota1)nand(nota0))nand((nota3)nanda2)))nand(not((a3nand(nota2))nand(a3nand(nota1))));

b2<=((not((nota3)nand(nota2)))nand(nota0))nand(nota1);

b3<=(nota2)nand((nota3)nand(nota1));

b4<=(not((nota3)nand(a1nand(nota2))))nand((not((nota3)nand(nota2)))nand(nota0));

endBehavioral;

1.6仿真程序(测试程序)

因为端口没有发生改变,所以普通逻辑和与非逻辑采用相同测试代码:

LIBRARYieee;

USEieee.std_logic_1164.ALL;

--Uncommentthefollowinglibrarydeclarationifusing

--arithmeticfunctionswithSignedorUnsignedvalues

--USEieee.numeric_std.ALL;

ENTITYn4b5bIS

ENDn4b5b;

ARCHITECTUREbehaviorOFn4b5bIS

--ComponentDeclarationfortheUnitUnderTest(UUT)

COMPONENTnby

PORT(

a3:

INstd_logic;

a2:

INstd_logic;

a1:

INstd_logic;

a0:

INstd_logic;

b4:

OUTstd_logic;

b3:

OUTstd_logic;

b2:

OUTstd_logic;

b1:

OUTstd_logic;

b0:

OUTstd_logic

);

ENDCOMPONENT;

--Inputs

signala3:

std_logic:

='0';

signala2:

std_logic:

='0';

signala1:

std_logic:

='0';

signala0:

std_logic:

='0';

--Outputs

signalb4:

std_logic;

signalb3:

std_logic;

signalb2:

std_logic;

signalb1:

std_logic;

signalb0:

std_logic;

--Noclocksdetectedinportlist.Replacebelowwith

--appropriateportname

--

--constant_period:

time:

=10ns;

BEGIN

--InstantiatetheUnitUnderTest(UUT)

uut:

nbyPORTMAP(

a3=>a3,

a2=>a2,

a1=>a1,

a0=>a0,

b4=>b4,

b3=>b3,

b2=>b2,

b1=>b1,

b0=>b0

);

--Clockprocessdefinitions

--_process:

process

--begin

--<='0';

--waitfor_period/2;

--<='1';

--waitfor_period/2;

--endprocess;

--

--Stimulusprocess

stim_proc:

process

begin

a3<='0';

a2<='0';

a1<='0';

a0<='0';

waitfor100ns;

a3<='0';

a2<='0';

a1<='0';

a0<='1';

waitfor100ns;

a3<='0';

a2<='0';

a1<='1';

a0<='0';

waitfor100ns;

a3<='0';

a2<='0';

a1<='1';

a0<='1';

waitfor100ns;

a3<='0';

a2<='1';

a1<='0';

a0<='0';

waitfor100ns;

a3<='0';

a2<='1';

a1<='0';

a0<='1';

waitfor100ns;

a3<='0';

a2<='1';

a1<='1';

a0<='0';

waitfor100ns;

a3<='0';

a2<='1';

a1<='1';

a0<='1';

waitfor100ns;

a3<='1';

a2<='0';

a1<='0';

a0<='0';

waitfor100ns;

a3<='1';

a2<='0';

a1<='0';

a0<='1';

waitfor100ns;

a3<='1';

a2<='0';

a1<='1';

a0<='0';

waitfor100ns;

a3<='1';

a2<='0';

a1<='1';

a0<='1';

waitfor100ns;

a3<='1';

a2<='1';

a1<='0';

a0<='1';

waitfor100ns;

a3<='1';

a2<='1';

a1<='1';

a0<='0';

waitfor100ns;

a3<='1';

a2<='1';

a1<='1';

a0<='1';

waitfor100ns;

wait;

endprocess;

END;

1.7仿真波形

普通逻辑:

 

与非逻辑:

实验结果与分析

1.8实现的目标

运用VHDL编程实现了4B5B编码器,运用了两种编码方式,一种是普通的编码,另一种是全部使用与非门的较为复杂的编码。

1.9分析

通过比对可发现输出结果与真值表一一对应,且两种逻辑写法的仿真结果相同,完成了实验目标。

第二章总结与展望

第一次运用VHDL进行程序的设计与编写,由于设计相对较为简单,又有学长的指导,总的来说进行的较为顺利,可以说这次课程设计主要帮助我熟悉了VHDL的相关操作并且帮助我复习巩固了卡诺图,真值表的相关知识,我希望在未来进行更多的VHDL设计,加强自己的能力。

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

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1