,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,VHDL,语言,刘书桂,天津大学精密仪器与光电子工程学院,精密测试技术及仪器国家重点实验室,:27404779,11/16/2024,VHDL 程序的根本结构,VHDL程序一般由5个局部组成:,Library程序库,Package程序包,Entity实体,Architecture构造体,Configuration配置,VHDL 程序的根本结构,VHDL程序一般由5个局部组成:,Library程序库,Package程序包,Entity实体,Architecture构造体,Configuration配置,库和程序包,库 :存放已编译过的,实体,、,构造体,、,程序包,和,配置,程序包:由一组对外可见的信号、常量、,数据类型、子程序、属性等组成,的程序集合,库和程序包的使用,Library;,Use.;,例:,Library ieee;,Use ieee.std_logic_1164.all;,常用库,Std,VHDL,的标准库,ieee,IEEE,认可的标准库,Work,现行作业库,Vital,面向,ASIC,的库,用户自定义库,常用库及其程序包,Std:VHDL,的标准库,standard,:,定义了,bit,bit_vector,character,time,等数据类型,textio:,包含了对文本文件进行读写操,作的过程和函数,缺省说明,:,library std;,use;,常用库及其程序包,IEEE:IEEE,认可的标准库,std_logic_1164,:,定义了,std_logic,std_logic_vector,std_ulogic,std_ulogic_vector,等数据类型,VHDL 程序的根本结构,VHDL程序一般由5个局部组成:,Library库,Package程序包,Entity实体,Architecture构造体,Configuration配置,设计实体,实体说明,构造体,设计实体的组成,设计实体,实体说明,构造体,1,有多个构造体的设计实体的组成,构造体,2,构造体,n,配 置,设计实体,实体说明,构造体,设计实体的组成,实体说明,Entity is,类属说明;,端口说明;,实体说明局部;,实体语句局部;,End entity;,最简单的例:,entity nothing is,end nothing;,实体说明,-,类属说明,类属为设计实体和外部环境通讯的,静态通信,提供通道。可以定,义端口大小、元件数目及定时特性等,Generic(constant,参数名,:in,子类型标识,:=,静态表达式,;,);,例,:,Generic(delay:time:=10ns);,实体说明,-,端口说明,端口为设计实体和外部环境通讯的,动态通信,提供通道,port(signal,端口名,:,模式,子类型标识,:=,静态表达式,;,);,模式,:in,out,inout,buffer,Inout,和,buffer,都是双向端口,但,buffer,只能有一个驱动源,例,:,Port(a,b:in bit;q:out bit);,实体说明-实体说明局部,用于定义设计实体接口中的公共信息,如定,义新的数据类型和常量等,例,:,定义新的数据类型,color,Type color is array(6 downto 0)of std_logic;,实体说明-实体语句局部,是设计实体接口的共同局部。只能由并行断言语句、并行过程调用语句、被动进程语句组成,且不能在语句中给信号赋值。,设计实体,实体说明,构造体,设计实体的组成,构造体,architecture of is,构造体说明语句,;,Begin,End architecture;,构造体,构造体说明语句,定义本构造体内部使用的信号、常数、数据类型,和函数,因为它们仅限于内部使用,所以没有也不需要有,方向的说明,构造体,功能描述语句,具体描述构造体的行为和结构。,功能描述语句是,并行执行,的,并不以语句,的书写顺序为执行顺序。,有,5,种类型的功能描述语句:,信号赋值语句,、,块语句,、,进程语句,、,子程序调用语句,、元件例化语句。,并行信号赋值语句,1,、简单赋值语句,目标信号,=,表达式,;,2,、条件信号赋值语句,目标信号,=,表达式,1 when,条件,1 else,表达式,2 when,条件,2 else,表达式,n-1 when,条件,n-1 else,表达式,n;,3,、选择信号赋值语句,with,条件表达式,select,目标信号,=,表达式,1 when,条件,1,表达式,2 when,条件,2,表达式,n when,条件,n;,块语句,块标号:BLOCK保护表达式,类属子句;,端口子句;,块说明局部;,BEGIN,END BLOCK 块标号;,类属子句用于参数的定义;端口子句用于信号的定义;块说明局部对该块要用到的信号、常数、元件和子程序等进行说明;块语句局部对该块的功能进行描述,块语句局部的语句是并行执行的,和书写顺序无关。,进程语句,进程标号:PROCESS敏感信号表IS,进程语句说明局部;,BEGIN,END PROCESS 进程标号;,敏感信号表列出进程对其敏感的所有信号,每当其中的一个或多个信号发生变化时,就会启动进程的执行;进程语句说明局部对该进程要用到的变量、子程序等进行说明;进程语句局部对该进程的功能进行描述,进程语句局部的语句是顺序执行的,和书写顺序有关。,子程序调用语句,过程名参数表;,子程序调用语句假设位于“构造体 或“块语句 中,它就是并发语句;,假设位于“进程语句 或 另一个“子程序中,它就是顺序语句;,设计实体,实体说明,构造体,1,有多个构造体的设计实体的组成,构造体,2,构造体,n,配 置,配置,一个实体可以拥有多个不同的构造体,而每个构造体在实体中的地位是相同的。可以利用配置语句为实体指定一个构造体。,最简单的缺省配置格式结构,CONFIGURATION,配置名,OF,实体名,IS,FOR,构造体名,END FOR;,END,配置名,;,CONFIGURATION,配置名,OF,实体名,IS,语句说明,;,END,配置名,;,配置例,ENTITY counter IS,-,END counter;,ARCHITECTURE,count_255 OF counter IS,-,END count_255;,ARCHITECTURE,count_64k OF counter IS,-,END count_64k;,CONFIGURATION,small_count OF counter IS,FOR count_255,END FOR;,END small_count;,CONFIGURATION,big_count OF counter IS,FOR count_64K,END FOR;,END big_count;,现场演示,4,选,1,数据选择器,Entity mux4 is,End mux4;,Architecture rtl of mux4 is,Begin,End rtl;,现场演示,4,比特可逆计数器,端口方向说明,方向定义,含 义,IN,输入,OUT,输出,INOUT,双向,BUFFER,具有读功能的输出模块,只写,可有多个驱动,可读、可写,可读写,仅,1,个驱动,只读,在实际的数字集成电路中,,IN,相当于只可输入的引脚,,OUT,相当于只可输出的引脚,,BUFFER,相当于带输出缓冲器并可回读的引脚,,INOUT,相当于双向引脚。,PACKAGE,已在设计实体中定义的数据类型、子程序或数据对象对于其它的实体是不可用的,或者说是不可见的。为了使其能被更多的实体访问和共享,可以将它们收集在一个程序包中。,11/16/2024,PACKAGE,11/16/2024,PACKAGE,程序包首:,程序包首的说明语句可收集多个,VHDL,设计所需的公共信息,包括数据类型说明,信号说明,子程序说明以及元件说明等。,程序包可以只由程序包首组成。,PACKAGE upac IS,CONSTANT k:INTEGER:=4;,TYPE instruction IS(add,sub,adc,inc,srf,slf);,SUBTYPE cpu_bus IS STD_LOGIC_VECTOR(k-1 DOWNTO 0);,END upac;,11/16/2024,