硬件描述语言VHDL课件_第1页
硬件描述语言VHDL课件_第2页
硬件描述语言VHDL课件_第3页
硬件描述语言VHDL课件_第4页
硬件描述语言VHDL课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章硬件描述语言VHDL组合电路设计时序逻辑电路设计第3章硬件描述语言VHDL组合电路设计3.1多路选择器的VHDL描述一个完整的VHDL语言程序包括五部分:(1)实体(entity):用于描述设计电路的外部输入、输出接口信号;(2)结构体(architecture):用于描述电路内部的结构和行为;(3)程序包(package):用于存放各设计模块能共享的数据类型、常量和子程序;(4)配置(configuration):用于从库中选取所需单元,组成系统设计的不同版本;(5)库(library):用于存放已经编译的实体、结构体、程序包和配置。多路选择器是典型的组合电路。

3.1多路选择器的VHDL描述一个完整的VHDL语3.1多路选择器的VHDL描述2选1多路选择器的电路模型或元件图如图所示,例3-1是其VHDL的完整表述,即可使用VHDL综合器直接综合出实现既定功能的逻辑电路,对应的逻辑电路如图和波形图如下所示,因而可以认为是多路选择器的内部结构。3.1多路选择器的VHDL描述2选1多路选择器的电3.1多路选择器的VHDL描述3.1多路选择器的VHDL描述3.1多路选择器的VHDL描述例[3-1]libraryieee;--库的使用说明useieee.std_logic_1164.all;entityT_mux2is--实体说明;Port(a,b,sel:inbit;q:outbit);--端口说明,用以描述器件的输入、输endendT_mux2;出引脚;architecturertlofT_mux2is--结构体说明;beginprocess(sel,a,b)--进程语句;beginifsel=‘0’then--if语句;q<=a;elseq<=b;endif;endprocess;endrtl;3.1多路选择器的VHDL描述例[3-1]3.1多路选择器的VHDL描述例[3-2]libraryieee;--库的使用说明useieee.std_logic_1164.all;entityT_mux2is--实体说明;Port(a,b,sel:inbit;q:outbit);--端口说明,用以描述器件的输入、输endendT_mux2;出引脚;architecturertlofT_mux2is--结构体说明;signald,e:bit;begind<=aand(notsel);e<=bandsel;y<=dore;endrtl;3.1多路选择器的VHDL描述例[3-2]3.1多路选择器的VHDL描述例[3-3]libraryieee;--库的使用说明useieee.std_logic_1164.all;entityT_mux2is--实体说明;Port(a,b,sel:bit;q:outbit);--端口说明,用以描述器件endendT_mux2;出引脚;architecturertlofT_mux2is--结构体说明;beginy<=awhensel=‘0’elseb;endrtl;3.1多路选择器的VHDL描述例[3-3]3.1多路选择器的VHDL描述注意:电路的功能是可以唯一的;但是其电路的结构方式不是唯一的,它决定于综合器的基本元件库的来源、优化方向和约束的选择、以及目标器件(如FPGA)的结构特点等。3.1多路选择器的VHDL描述注意:3.1多路选择器的VHDL描述库的说明:库是经过编译后的数据的集合,它存放包集合定义、实体定义、构造体定义和配置定义。它的目的是:(1)提高设计效率,而且多组多人可以同时工作;(2)便于使设计遵循某些统一的语言标准或数据格式;(3)可以利用已有的设计成果。3.1多路选择器的VHDL描述库的说明:3.1多路选择器的VHDL描述

库的功能类似于DOS操作系统的目录,库中存放设计的数据。在VHDL语言中,库的说明总是放在设计单元的最前面:LIBRARY库名;这样,在设计单元内的语言就可以使用库中的数据。由此可见,库的好处在于使设计者可以共享已经编译过的设计结果。在VHDL语言中可以存在多个不同的库,而且库与库之间是独立的,不能互相嵌套。3.1多路选择器的VHDL描述库的功能类似于DOS3.1多路选择器的VHDL描述

库的种类有五种:IEEE库、STD库、ASIC矢量库、用户定义的库和WORK库;(1)IEEE库:IEEE中有一个“STD_LOGIC_1164”的包集合,它是IEEE正式认可的标准库(2)STD库:VHDL的标准库,在库中存放有”standard“的包集合是VHDL的标准配置;(3)ASIC库:在VHDL中,为了进行门级的仿真,各公司提供了面向ASIC的逻辑门库。该库中存放有与逻辑门一一对应的实体。(4)WORK库:现行作业库,在使用时不需加以说明;(5)用户定义库:使用时需要加以说明。3.1多路选择器的VHDL描述库的种类有五种:IEEE3.1多路选择器的VHDL描述一、库的使用:(1)库的说明:五种库除了WORK库和标准库以外,其他的库在使用时均需要加以说明,第一个语句是:LIBRARY库名,表明是使用的哪一个库,另外需要说明用的是库中的哪个包集合以及项目名,第二句的使用格式如下:LIBRARY库名.包集合名.项目名;例如libraryieee;useieee.std_logic_1164.all;(2)库说明作用范围:从实体的说明开始到该实体所属的结构体为止,整个设计都可以对库的资源进行调用。当一个VHDL源程序出现两个以上的实体时,每一实体的前面都需要有自己完整的库的使用说明语句。

3.1多路选择器的VHDL描述一、库的使用:3.1多路选择器的VHDL描述二、实体说明:实体描述的是电路器件的端口构成和信号属性,书写格式如下:entity实体名is;generic(类属表);--可没有;port(端口名,端口名….:方向端口数据类型;……端口名,端口名….:方向端口数据类型);End实体名;1.generic提供静态参数或是数据宽度等静态特征,说明设计实体内、外通信的参数;必须放在实体端口说明之前,用于指定参数。其书写格式如下:generic(常量名:数据类型:设定值);例如:generic(m:time:=1ns)

3.1多路选择器的VHDL描述二、实体说明:3.1多路选择器的VHDL描述2.端口说明:端口说明是对基本设计实体(单元)与外部接口的描述,也可是说是对外部引脚信号的名称,数据类型和输入输出方向的描述,其一般书写格式如下:port(端口名,端口名….:方向端口数据类型;……端口名,端口名….:方向端口数据类型);1)端口名:赋予每个外部引脚的名称;2)端口方向:用来定义外部的引脚是输入还是输出。3.1多路选择器的VHDL描述2.端口说明:3.1多路选择器的VHDL描述表示方向的说明符及其含义如下所示:Out和buffer的区别:(1)out不可以在构造体内部使用,buffer可以;(2)当一个构造体用buffer说明输出端口时,与其相连的另一个构造体的端口也需要用buffer来说明。3.1多路选择器的VHDL描述表示方向的说明符及其含义如下所3.1多路选择器的VHDL描述3.端口的输出类型:VHDL语言中共有10种数据类型。例如:bit,bit_vector4.实体名:由于实体名表达的是设计电路的功能,最好根据相应的功能来来确定。注意:不应用数字或中文名字来定义实体名,也不应用与EDA工具库中已定义好的元件名作为实体名,例如or2等,而且不能用数字起头的实体名。3.1多路选择器的VHDL描述3.端口的输出类型:VHDL语3.1多路选择器的VHDL描述三、结构体结构体对输入、输出关系可以用三种方式进行描述,即行为描述(数学模型描述),寄存器传输描述(数据流描述),结构描述(逻辑器件连接描述)。结构体的书写格式如下:architecture结构体名of实体名is定义语句;begin功能描述语句;end结构体名;3.1多路选择器的VHDL描述三、结构体3.1多路选择器的VHDL描述“定义语句”包括在结构体中,用以说明和定义数据对象、数据类型、元件调用声明等。但“定义语句”不是必须的,“功能描述语句”则不同,结构体中必须给出相应的电路功能描述语句,可以是并行语句、顺序语句或它们的混合。四、程序包(package):为了共享函数(function)、过程(procedure)元件(component)等,设计师为使用者提供了一些公共的资源,放在程序包里。还可以自己定义程序包。程序包的说明格式如P28所示。3.1多路选择器的VHDL描述“定义语句”包括在结3.1多路选择器的VHDL描述五、配置(configuration)配置语句描述层与层之间的连接关系以及实体与结构体之间的连接关系。我们可以利用配置语句说明为这个实体指定一个结构体。书写格式如下:configuration配置名of实体名is语句说明;end配置名;3.1多路选择器的VHDL描述五、配置(configurat3.2VHDL的数据对象在VHDL中凡是可以赋予一个值的对象都称为客体,客体主要包括以下三种:信号、常数和变量(signal、constant、variable)。在电子电路的设计中,这三类客体都有一定的物理含义:信号对应地代表某一条硬件连接线,常数相应地代表数字电路中的电源和地,变量的对应关系不是很直接,通常是一些暂存量的载体。常数是一个固定的值,定义语句:constant:常量名:数据类型:=表达式例如:constantVcc:real:=5.0V;常数一旦赋值以后就不能改变,他不像信号和变量,可以任意带入不同的值;而且常数所赋的值必须和定义的数据类型一致。3.2VHDL的数据对象在VHDL中凡是可以赋予3.2VHDL的数据对象变量:变量的只能在进程语句、过程语句和函数语句中使用,它是一个局部量,它的作用相当于是作为临时的数据存储单元,是中间媒介,在实际的硬件电路中不存在,而且变量的赋值是立即生效的。变量的语句格式如下:variable变量名:数据类型约束条件:=表达式例如variablecount:integerrange0to25;变量的赋值如下变量名:=表达式;变量不能产生任何的延时。例如temp1,temp2,temp3都是变量,那么下式产生延时的方法是不合法的:temp3:=temp1+temp2after10ns;3.2VHDL的数据对象变量:3.2VHDL的数据对象信号:信号表达电子电路内部的实际硬件接线,它除了没有数据流动方向的说明,和“端口”的概念几乎一致,是全局变量通常在结构体、包集合和实体说明中使用。语句格式如下:signal信号名:数据类型约束条件:=表达式;例如:signalgroundbit:=‘1’;信号的赋值语句信号名<=表达式;信号带入时可以附加延时;程序如3-2所示3.2VHDL的数据对象信号:3.2VHDL的数据对象信号和变量的异同主要有以下几点:

(1)赋值符号不同信号和变量可以相互赋值;(2)使用的场合不同;(3)仿真的赋值时间不同。在仿真时信号和变量的赋值时间是不相同的,如在一个进程语句中,变量是立即赋值的,而信号的赋值是在变量执行完才赋值的。例如:[1]PROCESS(A,B,C,D)BEGIND<=A;X<=B+D;D<=C;Y<=B+D;ENDPROCESS;

3.2VHDL的数据对象信号和变量的异同主要有以下几点:3.2VHDL的数据对象[2]PROCESS(A,B,C,D)BEGIND:=A;X:=B+D;D:=C;Y:=B+D;ENDPROCESS;执行结果:[1]X<=B+C;Y<=B+C;[2]X<=B+A;Y<=B+C;3.2VHDL的数据对象[2]PROCESS(A,3.3寄存器描述及其VHDL语言现象D触发器的VHDL描述:libraryieee;useieee.std_logic_1164.a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论