VHDL语言的程序结构.ppt
《VHDL语言的程序结构.ppt》由会员分享,可在线阅读,更多相关《VHDL语言的程序结构.ppt(76页珍藏版)》请在三一办公上搜索。
1、1,7.2 VHDL语言的程序结构,第7章 VHDL 语言基础,2,1、USE定义区:定义元件库。2、PACKAGE定义区:定义使用哪些自定义元件库。3、ENTITY定义区:定义电路实体的外观,I/O接口的规格。4、ARCHITECTRUE定义区:描述电路内部的功能,说明电路执行什么动作或功能。5、CONFIGURATION定义区:描述各种设计实体和元件之间的连接关系以及设计实体和结构体之间的连接关系。,第7章 VHDL 语言基础,3,VHDL基本结构,第7章 VHDL 语言基础,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 ISP
2、ORT(a,b:IN STD_LOGIC;s:IN STD_LOGIC;y:OUT STD_LOGIC);END ENTITY mux21;ARCHITECTURE behave OF mux21 ISBEGIN PROCESS(a,b,s)BEGINIF s=0 THEN y=a;ELSEy=b;END IF;END PROCESS;END ARCHITECTURE behave;,-IEEE说明-自定义元件库-定义一个实体-描述输入输出-信号-结构体说明,4,1.库(Library)库是经编译后的数据的集合,存放包集合定义、实体定义、结构体定义和配置定义。库的功能类似于UNIX和MS-DO
3、S操作系统中的目录,库中存放设计的数据。在VHDL中,库的说明总放在设计单元的最前面。库中的各个设计单元可以用作进行其他设计的资源,一个设计可以使用多个库中的设计单元。,7.2.1 库,第7章 VHDL 语言基础,5,(1)库的使用 首先在设计的开头说明要引用的库,然后使用use子句指明要使用库中的哪一个设计单元,其书写格式为:Library 库名;Use 库名.程序包名.all;其中:程序包名就是实际设计要使用的库中的设计单元;all表示使用程序包中的所有项目。,第7章 VHDL 语言基础,6,引用库和程序包中的说明语句有以下4种形式:假定设计实体中的信号类型为std_logic,其类型说明
4、在ieee库的std_logic_1164程序包中定义。,形式一:Library ieee;Entity and2 is Port(a:in ieee.Std_logic_1164.Std_logic;b:in ieee.Std_logic_1164.Std_logic;c:out ieee.Std_logic_1164.Std_logic);End and2;,库说明,程序包,数据类型,第7章 VHDL 语言基础,7,形式2:Library ieee;Use ieee.all;Entity and2 is Port(a:in Std_logic_1164.Std_logic;b:in Std
5、_logic_1164.Std_logic;c:out Std_logic_1164.Std_logic);End and2;,形式3:Library ieee;Use ieee.std_logic_1164.all;Entity and2 is Port(a:in std_logic;b:in std_logic;c:out std_logic);End and2;,第7章 VHDL 语言基础,8,引用库和程序包中的说明语句有以下4种形式:假定设计实体中的信号类型为std_logic,其类型说明在ieee库的std_logic_1164程序包中定义。,形式4:Library ieee;Use
6、 ieee.std_logic_1164.std_logic;Entity and2 is Port(a:in std_logic;b:in std_logic;c:out std_logic);End and2;,第7章 VHDL 语言基础,9,2.库的种类 VHDL提供的库可分为两大类:设计库:对当前设计是永远可见的,不需在程序开头对它们进行说明。一般包括std库和work库。资源库:用来存放常规元件和常用模块的库,在使用时要进行说明。资源库的内容与厂商直接相关,现在的VHDL厂商和EDA工具厂商都有自己的资源库,其中含有厂商自定义的程序包。应用最广泛的资源库是ieee库、vital库和用
7、户自定义的库。,第7章 VHDL 语言基础,10,(1)std 库 是VHDL的标准库,包含程序包standard和textio。程序包standard中定义了bit、bit_vector、character和time等数据类型;程序包textio主要包含了对文本文件进行读写操作的过程和函数。注 意:使用程序包textio时要对库和程序包进行说明:Library std;Use std.textio.all;使用程序包standard时,由于VHDL规定standard程序包总是可见的,因此不必进行说明。,第7章 VHDL 语言基础,11,(2)work库是VHDL的工作库。在编译一VHDL的
8、时候,默认其保存在work库中,因此work库可以用来临时保存设计人员以前编译过的元件和模块,也可以通过该库来使用其中的元件和模块。VHDL标准中规定了work库也是永远可见的,因此在使用work库的时候不需要对它进行说明。,第7章 VHDL 语言基础,12,(3)ieee库是应用最广泛的资源库。主要包括程序包std_logic_1164、numeric_bit、numeric_std、math_complex和math_real,其中程序包std_logic_1164、numeric_bit、numeric_std是ieee标准化组织认可的程序包。现在有些公司,如synopsys公司提供了程
9、序包std_logic_arith、std_logic_signed和std_logic_unsigned等,虽没得到ieee标准化组织的认可,但仍然定义在ieee库中。使用ieee库时必须进行说明:Library ieee;Use ieee.std_logic_1164.all;,第7章 VHDL 语言基础,13,(4)vital库是应用比较广泛的资源库。主要包括程序包vital_timing和vital_primitives。其中vital_timing 是一个时序程序包;vital_primitives 是一个基本元件程序包。它们可以提高VHDL门级时序模拟精度。(5)用户自定义库用来存
10、放设计中共用的一些程序包,这是设计人员自己建立的资源库。可以提高设计的灵活性。在VHDL的开头要对库进行说明。,第7章 VHDL 语言基础,14,第7章 VHDL 语言基础,VHDL设计中的基本单元就是设计实体,它用以描述完整系统、电路板、芯片、逻辑单元或门电路。设计实体的组成部分:实体说明(Entity Declaration):描述一个设计的外貌,即对外的输入输出接口以及一些用于结构体的参数定义。结构体或构造体(Architecture Body):描述的是设计的行为和结构,指定输入和输出之间的行为。,7.2.2 VHDL程序的实体,15,设计实体、实体说明和结构体之间的关系,设计实体,结
11、构体1,结构体2,第7章 VHDL 语言基础,例:一个二输入门电路的VHDL描述。,Entity and_gate is Port(a:in bit;b:in bit;c:out bit);End and_gate;Architecture behave of and_gate isBegin ca and b;End behave;,保留字,实体名,实体说明,结构体,说明:VHDL是不区分大小写的。可根据习惯书写。,17,2、一般格式ENTITY 实体名 IS GENERIC(类型表);PORT(端口表);实体说明部分;BEGIN 实体语句部分;END ENTITY 实体名;,一、实体说明,
12、ENTITY or_gate IS GENERIC(delay:time:=1ns);PORT(a:in bit;b:in bit;c:out bit);END or_gate;,第7章 VHDL 语言基础,1、功能:描述设计模块的输入/输出信号或引脚,并给出设计模块与外界的接口。实体类似一个“黑盒”,实体描述了“黑盒”的输入输出口。,18,实体名实际上是器件名,最好根据相应的电路功能确定。如4位2进制计数器用counter4b;8位加法器用add8b;3/8译码器用ym_38。实体名必须与文件名相同,否则无法编译。实体名不能用工具库中定义好的元件名。实体名不能用中文,也不能用数字开头。,实
13、体 名,第7章 VHDL 语言基础,19,二、类型说明,1、作用 为设计实体和其外部环境通信的静态信息提供通道,可以定义端口的大小、实体中元件的数目以及实体的定时特性等。,2、一般格式 GENERIC(CONSTANT 名字表:IN 子类型标识:=静态表达式,);,第7章 VHDL 语言基础,ENTITY nand2 IS GENERIC(t_rise:time:=1ns;t_fall:time:=1ns);PORT(a:in bit;b:in bit;c:out bit);END nand2;,20,使用类属参数说明语句易于使设计具有通用性。,ENTITY and_gate IS GENER
14、IC(delay:time);PORT(a:in bit;b:in bit;c:out bit);END and_gate;ARCHITECTURE behave OF and_gate IS BEGIN ca and b after(delay);END behave;,第7章 VHDL 语言基础,例:在电路中多次使用二输入与门电路,但延迟时间不同。二输入与门电路的VHDL程序。,现在要求实现这样一个设计:由三个二输入与门电路组成下图所示的四输入与门功能,要求门1的延迟时间为5ns,门2的延迟时间为6ns,门2的延迟时间为7ns。,在设计过程中通常遇到一些参数不确定的情况,参数是待定的,在模
15、拟时,只要用GENERIC MAP语句将待定参数初始化即可。,22,ENTITY or3 IS PORT(a,b,c:in bit;q:out bit);END or3;ARCHITECTRUE behave OF or3 IS COMPONENT and_gate GENERIC(delay:time);PORT(a,b:in bit;c:out bit);,END COMPONENT;SIGNAL q1,q2:bit;BEGIN U1:and_gate GENERIC MAP(5ns)PORT MAP(a,b,q1);U2:and_gate GENERIC MAP(6ns)PROT MAP
16、(c,d,q2);U3:and_gate GENERIC MAP(7ns)PROT MAP(q1,q2,q);END behave;,第7章 VHDL 语言基础,23,三、端口说明,1、作用 是对设计实体与外部接口的描述,是设计实体和外部环境动态通信的通道,其功能对应于电路图符号的一个引脚。,2、一般格式 PORT(端口名:端口模式 数据类型;端口名:端口模式 数据类型;);,第7章 VHDL 语言基础,24,三、端口说明,(1)端口名称 是端口的标识符,是赋予每个外部引脚的名称由字母、数字和下划线组成,其命名规则为:1)第一个字符必须是字母;2)下划线不能连用;3)最后一个字符不能是下划线;
17、4)不区分大小写;5)命名不能与保留字相同。如:不合法的例子 _clk,8mclk,data_ _bus,buffer,data_,第7章 VHDL 语言基础,25,输入IN:输入信号的驱动源由外部向该设计实体内进行。主要用于时钟输入、控制输入和单向的数据输入。输出OUT:允许数据流从实体内部输出。用于计数输出、单方向数据输出、设计实体产生的控制其他实体的信号等。缓冲BUFFER:允许内部引用该端口的信号。既能用于输出,也可用于反馈。(只能连接内部信号和具有缓冲模式的端口。)双向模式INOUT:可以代替IN、OUT、BUFFER。,第7章 VHDL 语言基础,(2)端口模式:用来说明数据、信号
18、通过该端口的传输方向。模式有IN、OUT、BUFFER、INOUT。,26,说明:1)双向模式可以代替输入、输出和缓冲模式的任何一种。2)“out”和“buffer”都可以定义输出端口。,图(a):只能用于输出。图(b):构造体内部也要使用该信号时,只能定义成“buffer”,其区别:,(3)数据类型:布尔型(boolean)、位型(bit)、位矢量型(bit-vector)、整数型(integer)、枚举型、物理类型等10种数据类型。在逻辑电路中用到两种:bit(位)和bit_vector(位向量)。,1)bit:为位逻辑数据类型,信号取值是逻辑值“1”和“0”。2)bit_vector:取
19、值是一组二进制位的值。,如:8位数据总线数端口Port(d0,d1,sel:in bit;q:out bit;bus:out bit_vector(7 downto 0);,3)在VHDL程序中,设计人员常使用的数据类型为IEEE.STD_Logic_1164程序包所给定的,标准逻辑类型STD_Logic、STD_Logic_vector。,Library IEEE;Use IEEE.STD_Logic_1164.all;Entity mu is Port(d0,d1,sel:in STD_Logic;q:out STD_Logic;bus:out STD_Logic_vector(7 dow
20、nto 0);,28,主要用于定义该设计实体接口中的公共信息,比如定义新的数据类型和常量定义等。,四、实体说明部分,五、实体语句部分,是设计实体接口的共同部分,只能由如下并行语句构成:并行断言语句、并行过程调用语句和被动进程语句等,这些语句应该是被动语句,即在语句中不含有信号赋值。,第7章 VHDL 语言基础,ENTITY example ISPORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC;);TYPE colour IS ARRAY(6 downto 0)of STD_LOGIC;END example;,实 体 举 例,ENTITY black_box IS G
21、eneric(constant width:integer:=7);PORT(clk,rst:in std_logic;d:in std_logic_vector(width downto 0);q:out std_logic_vector(width downto 0);co:out std_logic);END black_box;,练习,编写包含以下内容的实体代码:端口 D 为12位输入总线;端口 OE 和CLK 都是1位输入;端口 AD 为12位双向总线;端口 A为12位输出总线;端口 INT 是1位输出;端口 AS 是一位输出同时被用作内部反馈。,练习答案,Library ieee;
22、Use ieee.std_logic_1164.ALL;Entity my_design isPORT(d:in std_logic_vector(11 downto 0);oe,clk:in:std_logic;ad:inout std_logic_vector(11 downto 0);a:out std_logic_vector(7 downto 0);int:out std_logic;as:buffer std_logic);End my_design;,32,一、结构体的作用,描述了基本设计单元(实体)的结构、行为、元件及内部连接关系,也就是说它定义了设计实体的功能,规定了设计实体
23、的数据流程,制定了实体内部元件的连接关系。通过若干并行语句来描述设计实体的逻辑功能(行为描述)或内部电路结构(结构描述),从而建立设计实体输出与输入之间的关系。一个设计实体可以有多个结构体。,7.3.3 VHDL程序的结构体,第7章 VHDL 语言基础,33,二、结构体的一般格式,ARCHITECTURE 结构体名 OF 实体名 IS 定义语句:内部信号,常数,数据类型,函数定义 BEGIN 并行处理语句;进程语句;END 结构体名;,第7章 VHDL 语言基础,ARCHITECTURE a OF _ _entity_name IS SIGNAL signal_name:STD_LOGIC;S
24、IGNAL signal_name:STD_LOGIC;BEGINEND a;,结构体说明,并行处理语句,-Process Statement;-Concurrent Procedure Call;-Concurrent Signal Assignment;-Conditional Signal Assignment;-Selected Signal Assignment;-Component Instantiation Statement;-Generate Statement;,35,1、结构体命名 结构体名由设计者自行定义,OF后面的实体名指明了该结构体所对应的是哪个实体。由于一个设计有
25、行为描述、数据流描述和结构描述3种方式,一般建议用behave,dataflow,structure为结构体命名。,2、结构体说明语句 结构体说明语句必须放在关键词ARCHITECTURE和BEGIN之间。用于对结构体内部将要使用的信号、常数、数据类型、元件、函数和过程加以说明。最常见的是对内部流动的信号的定义。但不能定义变量。实体说明中定义的信号是外部信号,而结构体定义的信号为该结构体的内部信号,它只能用于这个结构体中。结构体中的信号定义和端口说明一样,应有信号名称和数据类型定义。因为它是内部连接用的信号,因此不需要方向说明。,第7章 VHDL 语言基础,36,3、结构体功能描述语句 结构体
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 语言 程序结构
链接地址:https://www.31ppt.com/p-6522947.html