编码器和译码器的设计.docx

上传人:b****3 文档编号:3498463 上传时间:2022-11-23 格式:DOCX 页数:13 大小:63.89KB
下载 相关 举报
编码器和译码器的设计.docx_第1页
第1页 / 共13页
编码器和译码器的设计.docx_第2页
第2页 / 共13页
编码器和译码器的设计.docx_第3页
第3页 / 共13页
编码器和译码器的设计.docx_第4页
第4页 / 共13页
编码器和译码器的设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

编码器和译码器的设计.docx

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

编码器和译码器的设计.docx

编码器和译码器的设计

课程设计说明书

(2012/2013学年第一学期)

 

题目:

编码器和译码器的设计

专业班级:

学生姓名:

学号:

指导教师:

设计周数:

2周

设计成绩:

 

编码器和译码器的设计

学生姓名:

指导老师:

摘要编码器与译码器是计算机电路中基本的器件,本课程设计采用EDA技术设计编码和译码器。

编码器由八-三优先编码器作为实例代表,而译码器则包含三-八译码器和二-四译码器两个实例模块组成。

课程设计采用硬件描述语言VHDL把电路按模块化方式进行设计,然后进行编程、时序仿真和分析等。

课程设计结构简单,使用方便,具有一定的应用价值。

关键字计算机电路;EDA;编码器;译码器

 

目录

1引言1

1.1设计的目的1

1.2设计的基本内容1

2EDA、VHDL简介1

2.1EDA技术1

2.1.1EDA技术的概念1

2.1.2EDA技术的特点2

2.2硬件描述语言——VHDL2

2.2.1VHDL的简介2

2.2.2VHDL语言的特点2

2.2.3VHDL的设计流程3

3设计规划过程4

3.1编码器的工作原理4

3.2译码器的工作原理4

3.3课程设计中各部分的设计4

3.3.1八-三优先编码器的设计4

3.3.2三-八译码器的设计5

3.3.3二-四译码器的设计6

4系统仿真7

4.1八-三优先编码器仿真及分析7

4.2三-八译码器仿真及分析8

4.3二-四译码器仿真及分析8

结束语10

致谢11

参考文献12

附录13

1引言

随着社会的发展,科学技术也在不断的进步。

计算机从先前的采用半导体技术实现的计算器到现在广泛应用的采用高集成度芯片实现的多功能计算器。

计算机电路是计算机的重要组成部分,了解计算机电路的知识是促进计算机的发展的先决条件。

而编码器和译码器是计算机电路中的基本器件,对它们的了解可以为以后的进一步深化研究打下一个良好的基础。

本设计主要介绍的是一个基于超高速硬件描述语言VHDL对计算机电路中编码器和译码器进行编程实现。

1.1设计的目的

本次设计的目的就是通过实践掌握计算机组成原理的分析方法和设计方法,了解EDA技术并掌握VHDL硬件描述语言的设计方法和思想。

以计算机组成原理为指导,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识和基本单元电路的综合设计应用。

通过对编码器和译码器的设计,巩固和综合运用所学知识,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。

1.2设计的基本内容

根据计算机组成原理中组合逻辑电路设计的原理,利用VHDL设计计算机电路中编码器和译码器的各个模块,并使用EDA工具对各模块进行仿真验证和分析。

编码器由八-三优先编码器作为实例代表,而译码器则包含三-八译码器和二-四译码器两个实例模块组成。

2EDA、VHDL简介

2.1EDA技术

2.1.1EDA技术的概念

EDA是电子设计自动化(E1echonics Des5p AM·toM60n)的缩写。

由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异。

从EDA技术的几个主要方面的内容来看,可以理解为:

EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。

2.1.2EDA技术的特点

采用可编程器件,通过设计芯片来实现系统功能。

采用硬件描述语言作为设计输入和库(LibraLy)的引入,由设计者定义器件的内部逻辑和管脚,将原来由电路板设计完成的大部分工作故在芯片的设计中进行。

由于管脚定义的灵活性,大大减轻了电路图设计和电路板设计的工作量和难度,有效增强了设计的灵活性,提高了工作效率。

并且可减少芯片的数量,缩小系统体积,降低能源消耗,提高了系统的性能和可靠性。

能全方位地利用计算机自动设计、仿真和调试。

2.2硬件描述语言——VHDL

2.2.1VHDL的简介

VHDL语言是一种用于电路设计的高级语言。

它在80年代的后期出现。

最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。

但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为AI/IEEE的标准(IEEESTD1076-1987)。

1993年更进一步修订,变得更加完备,成为AI/IEEE的AI/IEEESTD1076-1993标准。

目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。

VHDL的英文全写是:

VHSIC(VeryHigheedIntegratedCircuit)HardwareDescriptiongLanguage.翻译成中文就是超高速集成电路硬件描述语言。

因此它的应用主要是应用在数字电路的设计中。

2.2.2VHDL语言的特点

VHDL是一种用普通文本形式设计数字系统的硬件描述语言,主要用于描述数字系统的结构、行为、功能和接口,可以在任何文字处理软件环境中编辑。

除了含有许多具有硬件特征的语句外,其形式、描述风格及语法十分类似于计算机高级语言。

VHDL程序将一项工程设计项目(或称设计实体)分成描述外部端口信号的可视部分和描述端口信号之间逻辑关系的内部不可视部分,这种将设计项目分成内、外两个部分的概念是硬件描述语言(HDL)的基本特征。

当一个设计项目定义了外部界面(端口),在其内部设计完成后,其他的设计就可以利用外部端口直接调用这个项目。

VHDL的主要特点如下:

1.作为HDL的第一个国际标准,VHDL具有很强的可移植性。

2.具有丰富的模拟仿真语句和库函数,随时可对设计进行仿真模拟,因而能将设计中的错误消除在电路系统装配之前,在设计早期就能检查设计系统功能的可行性,有很强的预测能力。

3.VHDL有良好的可读性,接近高级语言,容易理解。

4.系统设计与硬件结构无关,方便了工艺的转换,也不会因工艺变化而使描述过时。

5.支持模块化设计,可将大规模设计项目分解成若干个小项目,还可以把已有的设计项目作为一个模块调用。

6.对于用VHDL完成的一个确定设计,可以利用EDA工具进行逻辑综合和优化,并能自动地把VHDL描述转变成门电路级网表文件。

7.设计灵活,修改方便,同时也便于设计结果的交流、保存和重用,产品开发速度快,成本低。

2.2.3VHDL的设计流程

它主要包括以下几个步骤:

1.文本编辑:

用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。

通常VHDL文件保存为.vhd文件,Verilog文件保存为.v文件。

2.使用编译工具编译源文件。

3.功能仿真:

将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)

4.逻辑综合:

将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。

逻辑综合软件会生成.edf或.edif的EDA工业标准文件。

5.布局布线:

将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放PLD/FPGA内。

6.时序仿真:

需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。

(也叫后仿真)通常以上过程可以都在PLD/FPGA厂家提供的开发工具。

7.烧写器件

 

3设计规划过程

3.1编码器的工作原理

八-三优先编码器输入信号为i0,i1,i2,i3,i4,i5,i6和i7,输出信号为a2、a1、a0。

输入信号中i0的优先级别最低,依次类推,i7的优先级别最高。

也就是说若i7输入为1(即为高电平)则无论后续的输入信号怎么样,对应的这种状态一样,如若i7输入为0(即为低电平)则看优先级仅次于i7的i6状态决定,依次类推。

因为i0到i7共8中状态,可以用3位二进制编码来表示。

例如:

i7为1对应输出的二进制编码111。

3.2译码器的工作原理

二进制译码器的输入是一组二进制代码,输出是一组与输入代码一一对应的高、低电平信号。

对于三-八译码器来说,3位二进制共有8种状态,所以对应的输出有8种状态。

例如:

对于二进制代码111来说,输出为10000000。

对于二-四译码器来说,2位二进制共有4种状态,所以对应的输出有4种状态。

例如:

对于二进制代码11来说,输出为1000。

3.3课程设计中各部分的设计

课程设计各个部分由VHDL实现后,利用EDA工具对各部分进行了时序仿真(TimingSimulation),其目的是通过时序可以更清楚的了解程序的工作过程。

3.3.1八-三优先编码器的设计

整个八-三优先编码器的工作框图如图3.1所示。

图3.1八-三优先编码器的工作框图

八-三优先编码器由VHDL程序来实现,下面是其中一段VHDL关键代码:

process(i)

begin

gs<='1';

a<="100";

ifi(7)='1'then

a<="111";

elsifi(6)='1'then

a<="110";

elsifi(5)='1'then

a<="101";

elsifi(4)='1'then

a<="100";

elsifi(3)='1'then

a<="011";

elsifi

(2)='1'then

a<="010";

elsifi

(1)='1'then

a<="001";

elsifi(0)='1'then

a<="000";

else

gs<='0';

endif;

endprocess;

3.3.2三-八译码器的设计

关于三-八译码器的工作框图如图3.2所示。

.

图3.2三-八译码器工作框图

三-八译码器由VHDL程序来实现,下面是其中一段VHDL关键代码

process(datain)

begin

casedatainis

when"111"=>dataout<="10000000";

when"110"=>dataout<="01000000";

when"101"=>dataout<="00100000";

when"100"=>dataout<="00010000";

when"011"=>dataout<="00001000";

when"010"=>dataout<="00000100";

when"001"=>dataout<="00000010";

when"000"=>dataout<="00000001";

whenothers=>dataout<="11111111";

endcase;

endprocess;

3.3.3二-四译码器的设计

关于二-四译码器的工作框图如图3.3所示。

图3.3二-四译码器工作原理图

二-四译码器由VHDL程序来实现,下面是其中一段VHDL关键代码

process(i)

begin

caseiis

when"00"=>o<="0001";

when"01"=>o<="0010";

when"10"=>o<="0100";

when"11"=>o<="1000";

whenothers=>o<="XXXX";

endcase;

endprocess;

4系统仿真

4.1八-三优先编码器仿真及分析

八-三优先编码器由VHDL程序实现后,其仿真图如图4.1所示。

图4.1八-三优先编码器功能时序仿真图

对其仿真图进行仿真分析:

gs为编码输出标志,i为输入信号组,它由i7-i0八个输入信号组成。

a为输出信号组,它由a2-a0三个二进制代码输出信号组成。

gs为1时候表示输出。

当i7为1时,即输入为:

1*******时,输出111,当i7为0时,输出由优先级仅次于i7的i6决定,即输入为:

01******时,输出110,紧接着依次类推,分别得出输入为:

001*****时,输出101,输入为:

0001****时,输出100,输入为00001***时,输出为011,输入为000001**时,输出010,输入为0000001*时,输出001,输入为00000001时,输出为000。

八-三优先编码器的引脚分配如表4.1

表4.1八-三优先编码器器下载板芯片引脚对照表

gs

i0

i1

i2

i3

i4

i5

i6

i7

EPF8282

P72

P01

P02

P03

P04

P06

P07

P08

P09

EPF10K10

P73

P03

P05

P06

P07

P08

P09

P10

P11

a0

a1

a2

EPF8282

P55

P56

P57

EPF10K10

P53

P54

P58

4.2三-八译码器仿真及分析

三-八译码器由VHDL程序实现后,其仿真图如图4.2所示:

图4.2三-八译码器功能时序仿真图

对其仿真图进行仿真分析:

cs译码输出标志,datain为输入信号组,它由datain[2]-datain[0]三个二进制代码输入信号组成。

Dataout为输出信号组,它由dataout[7]-dataout[0]八个输出信号组成。

cs为1时候表示输出。

当输入为:

111时,译码后为指定的状态,即输出10000000,紧接着依次类推,当输入为:

110时,输出输出01000000,当输入为101时,输出00100000,当输入为100时,输出00010000,输入011时,输出为00001000,输入为010时,输出00000100,输入为001时,输出00000010,输入为000时,输出为00000001。

4.3二-四译码器仿真及分析

二-四译码器由VHDL程序实现后,其仿真图如图4.3所示:

图4.3二-四译码器功能时序仿真图

对其仿真图进行仿真分析:

i为输入信号组,它由i[1]-i[0]两个二进制代码输入信号组成。

o为输出信号组,它由o[3]-o[0]四个输出信号组成。

当输入为:

11时,译码后为指定的状态,即输出1000,紧接着依次类推,当输入为:

10时,输出输出0100,当输入为01时,输出0010,当输入为00时,输出0001。

二-四译码器的引脚分配如表4.2所示:

表4.2二-四译码器下载板芯片引脚对照表

i0

i1

o0

o1

o2

o3

EPF8282

P01

P02

P55

P56

P57

P58

EPF10K10

P03

P05

P53

P54

P58

P59

心得体会

通过两星期的紧张工作,最后完成了我的设计任务——基于VHDL编码器和译码器的设计。

通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。

本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。

它不仅仅是一个学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。

希望学校以后多安排一些类似的实践环节,让同学们学以致用。

在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。

在应用VHDL的过程中让我真正领会到了其在电路设计上的优越性。

用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。

 

参考文献

[1]杨刚,龙海燕.现代电子技术-VHDL与数据系统设计.北京:

电子工业出版社,2004

[2]黄仁欣.EDA技术实用教程.北京:

清华大学出版社,2006

[3]潘松.VHDL实用教程[M].成都:

电子科技大学出版社,2000

 

附录

1.八-三优先编码器的VHDL程序代码:

--程序名:

priority.vhd

libraryieee;

useieee.std_logic_1164.all;

entitypriorityis

port(i:

inbit_vector(7downto0);

a:

outbit_vector(2downto0);

gs:

outbit);--编码输出标志

endpriority;

architectureaofpriorityis

begin

process(i)

begin

gs<='1';

a<="100";

ifi(7)='1'then

a<="111";

elsifi(6)='1'then

a<="110";

elsifi(5)='1'then

a<="101";

elsifi(4)='1'then

a<="100";

elsifi(3)='1'then

a<="011";

elsifi

(2)='1'then

a<="010";

elsifi

(1)='1'then

a<="001";

elsifi(0)='1'then

a<="000";

else

gs<='0';

endif;

endprocess;

enda;

2.三-八译码器的VHDL程序代码:

--fuction:

以拨盘开关作为数据输入端,用发光二极管表示译码后的信息;

--datain(0)-datain

(2)分别为c'b'a对应拨盘开关上的1-3号键;

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entityyima_138is

Port(datain:

instd_logic_vector(2downto0);

cs:

outstd_logic;

dataout:

outstd_logic_vector(7downto0));

endyima_138;

architectureBehavioralofyima_138is

begin

cs<='1';

process(datain)

begin

casedatainis

when"111"=>dataout<="10000000";

when"110"=>dataout<="01000000";

when"101"=>dataout<="00100000";

when"100"=>dataout<="00010000";

when"011"=>dataout<="00001000";

when"010"=>dataout<="00000100";

when"001"=>dataout<="00000010";

when"000"=>dataout<="00000001";

whenothers=>dataout<="11111111";

endcase;

endprocess;

endBehavioral;

3.二-四译码器的VHDL程序代码:

--二-四译码器的顺序条件语句描述

--程序名:

24_conc.vhd

libraryieee;

useieee.std_logic_1164.all;

entityd24_concis

port(i:

instd_logic_vector(1downto0);

o:

outstd_logic_vector(3downto0));

endd24_conc;

architectureaofd24_concis

begin

process(i)

begin

caseiis

when"00"=>o<="0001";

when"01"=>o<="0010";

when"10"=>o<="0100";

when"11"=>o<="1000";

whenothers=>o<="XXXX";

endcase;

endprocess;

enda;

 

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

当前位置:首页 > 外语学习 > 日语学习

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

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