,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,9,章,VHDL,结构,与,要素,第9章,2024/11/15,2,一个完整的,VHDL,程序,通常包括:,实体,Entity,结构体,Architecture,配置,Configuration,包集合,Package,库,Library,描述所设计的系统的,外部接口信号,或,引脚,描述系统,内部的,结构,和,行为,从库中,选取所需单元,来组成系统设计的不同版本,存放各设计模块都能共享的,数据类型、常数和子程序,存放已经编译的,实体、结构体、包集合和配置,2023/10/52一个完整的VHDL程序通常包括:实体En,2024/11/15,3,9.1,实体,VHDL,实体作为一个设计实体,(,独立的电路功能结构,),的组成部分,其,功能是,对这个设计实体与外部电路进行接口描述,。,实体是设计实体的表层设计单元,,,实体说明部分,规定了设计单元的,输入输出接口或引脚,,它是设计实体对外的一个,通信界面,。,它可以是一个,简单的数字电路,,也可以是,复杂的数字电路,,但基本构成是,一致,的。,例,1,对于二选一器件的,VHDL,描述,:,2023/10/539.1 实体VHDL实体作为一个,2024/11/15,4,ENTITY,mux,IS,GENERIC,(m:TIME:=1ns);,PORT,(d0,d1,sel:,IN,BIT);,q:,OUT,BIT);,END,mux;,ARCHITECTURE,connect,OF,mux,IS,SIGNAL,tmp:BIT;,BEGIN,cale:,PROCESS,(d0,d1,sel),VARIABLE,tmp1,tmp2,tmp3:BIT;,BEGIN,tmp1:=d0,AND,sel;,tmp2:=d1,AND,(,NOT,sel);,tmp3:=tmp1,OR,tmp2;,tmp=tmp3;,q=tmp,AFTER,m;,END PROCESS,;,END,connect;,实体名,端口名,方向,实体,进程语句,结构体,2023/10/54ENTITY mux IS实体名,2024/11/15,5,一、实体说明,基本结构:,ENTITY,实体名,IS,类属,参数说明,;,端口,说明,;,END,实体名,;,1,、,类属参数说明,必须放在,端口说明之前,,用于,指定参数,。,如:,q=tmp AFTER m;,说明,tmp,建立一个延时值。,GENERIC,(,m:TIME:=1ns,);构造体内,m,的值为,1ns,。,2,、,端口说明,对基本设计,实体,与,外部接口,的描述。,格式:,PORT,(,端口名,:端口模式,数据类型,;,端口名,:端口模式,数据类型名,);,2023/10/55一、实体说明基本结构:ENTITY 实,2024/11/15,6,端口名,赋予,外部引脚,的名称。如,d0,,,sel,,,y,等,端口方向,定义外部引脚是,输入,还是,输出,。,IN,输入,OUT,输出(,构造体内,不能,再使用,),INOUT,双向,BUFFER,输出(,构造体内,可,再使用,),LINKAGE,不指定方向,(无论哪一个方向都可连接),OUT,BUFFER,2023/10/56端口名OUTBUFFER,2024/11/15,7,9.2,结构体,基本结构:,ARCHITECTURE,结构体名,OF,实体名,IS,定义语句,内部信号、常数、数据类型、函数等;,BEGIN,并行处理语句,;,END,结构体名,;,通常命名为,behavioral,(,行为,),dataflow,(,数据流,),structural,(,结构,),位于,ARCHITECTURE,和,BEGIN,之间,对信号、常数、数据类型、函数进行定义,位于,BEGIN,和,END,之间,描述,构造体的行为,及连接关系,2023/10/579.2 结构体基本结构:通常命名为b,2024/11/15,8,在,HDL,设计中,设计者将,自上至下,分为,3,个层次,:,行为描述,RTL,方式描述,逻辑综合,即对整个系统,数学模型,的描述,一般应用在设计的,初始阶段,。,即,寄存器传输描述,(又称,数据流,描述),采用该描述,,导出系统的逻辑表达式,,进行,逻辑综合,。,将,程序,转换成基本的,逻辑文件,来描述,相当于人工设计时,生成了,原理图,。,2023/10/58在HDL设计中,设计者将自上至下分为3个,2024/11/15,9,例:二选一的数据流方式描述:,ENTITY,mux,IS,PORT,(d0,d1,sel:,IN,BIT);,q:,OUT,BIT);,END,mux;,ARCHITECTURE,dataflow,OF,mux,IS,BEGIN,q=(d0,AND,sel),OR,(,NOT,sel,AND,d1);,END,dataflow;,并行处理语句,,,=,表示,传送或代入,,即将逻辑运算结果送,q,输出。即,2023/10/59例:二选一的数据流方式描述:并行处理语句,2024/11/15,10,9.4 VHDL,库,库,是,经,编译,后的,数据,的集合,,存放,包集合,定义,、,实体,定义,、,构造体,定义,和,配置,定义,。,库的说明,总是放在设计单元的最前面。,格式,:,LIBRARY,库名;,这样,在设计单元内的语句就可以,使用库中的数据,。,库的好处,在于使设计者可以,共享已经编译过的设计结果,。,库的种类,VHDL,语言中存在的库大致分为,5,种:,2023/10/510 9.4 VHDL,2024/11/15,11,IEEE,库,STD,库,WORK,库,VITAL,库,STD_LOGIC_1164,NUMERIC_BIT,NUMERRIC_STD,STD_LOGIC_ARITH,STD_LOGIC_SIGNED,STD_LOGIC_UNSIGNED,虽没得到,IEEE,承认,但,仍汇集在该库中,是,VHDL,的,标准库,,该库中定义了,STANDARD,和,TEXTIO,(文件输入,/,输出程序包)两个程序包。,现行作业,库,使用时无需说明,使用,VITAL,库,可以提高,VHDL,门级时序模拟的精度,,因此只在,VHDL,仿真器,中使用。,2023/10/511IEEE库STD库WORK库VITAL,2024/11/15,12,库的使用,除,WORK,和,STD,库之外,其它库使用前先要用两条语句对库进行说明。,如:,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,库名,包集合,名,项目名,,表示包集合的,所有项目,都要用,2023/10/512库的使用库名包集合名项目名,表示包集合,2024/11/15,9.5 VHDL,程序包,常用的预定义的程序包,STD_LOGIC_1164,程序包,STD_LOGIC_ARITH,程序包,STD_LOGIC_UNSIGNED,和,STD_LOGIC_SIGNED,程序包,STANDARD,和,TEXTIO,程序包,13,2023/10/5 9.5 VHDL程序包常用的预定,2024/11/15,14,9.8,数据类型,9.8.1 VHDL,的预定义数据类型,VHDL,的,预定义数据类型,都在,VHDL,标准程序包,STANDARD,中定义的。,1,、,布尔量,Boolean,一个,布尔量,有两种状态:,逻辑“,真,”,True,逻辑“,假,”,False,2,、,位,Bit,逻辑,0,或,1,,通常将值放在,单引号,中。,如,BIT(1),等,3,、,位矢量,Bit_VECTOR,用,双引号,括起来的一组,位数据,。,如“,001100”,、,X“00BB”,等。其中,X,表示十六进制。,2023/10/5149.8 数据类型VHDL的预定义数据,2024/11/15,15,BIT,BIT_VECTOR,取值只能为“,0,”,、“,1,”,取值可能是一组,二进制位,的值,例:,PORT,(d0,d1,sel:,IN,BIT;,q:,OUT,BIT;,bus:,OUT,BIT_VECTOR(7 DOWNTO 0);,都是,BIT,数据类型,bus,是,BIT_VECTOR,类型,,(7,DOWNTO,0),表示该,bus,端口由,B7B0,构成,,位矢量长度,为,8,位。,2023/10/515BITBIT_VECTOR取值只能为“,2024/11/15,16,9.8.3,其他预定义标准数据类型,1.,无符号,数据类型,(UNSIGNED TYPE),2.,有符号,数据类型,(SIGNED TYPE),十进制的,8,可以作如下表示:,UNSIGNED(1000),两则,无符号数据,定义的示例:,VARIABLE,var,:UNSIGNED(0 TO 10);,SIGNAL,sig,:UNSIGNED(5 DOWNTO 0);,例如:,SIGNED(0101),代表+5,5,SIGNED(1011),代表 5,变量,var,有,11,位数值,,最高位,是,var(0),信号,sig,有,6,位数值,,最高位,是,sig(5),最高位是,符号位,2023/10/5169.8.3 其他预定义标准数据类型1,2024/11/15,17,9.9 VHDL,语言的运算操作符,逻辑,运算,Logical,关系,运算,Relational,算术,运算,Arithmetic,并置,运算,Concatenation,1,、,逻辑运算符,NOT,(取反)、,AND,(与)、,OR,(或)、,NAND,(与非)、,NOR,(或非)、,XOR,(异或),其优先级别,NOT,最高,见课本,P257,表,9-3,。,2,、,算术运算符,+,、,-,、,*,、,/,(加减乘除)、,MOD,(取模)、,REM,(取余)、,+,、,-,(正负)、,*,(指数)、,ABS,(取绝对值),2023/10/5179.9 VHDL语言的运算操作符,2024/11/15,18,3,、,关系运算符,=,、,/=,、,、,、,=,注意:,关系运算符,=,和,代入符,=,是相同的,在读,VHDL,语句时,要根据上下文关系来判断。,4,、,并置运算符,并置运算符,&,用于,位的连接,。,如将,四个,位,用,&,连接起来,,就可以构成一个具有四位长度的,位矢量,。,2023/10/5183、关系运算符=、/=、,