资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,VHDL,的构造体:,architecture,architecture arch_name of entity_name is,说明部分,declarations and definitions;,begin,语句部分,concurrent statement;,end arch_name;,1,构造体语法要点,每个构造体必须属于一个实体;,每个构造体必须有一个名称:,通常可以根据描述方式起名:,str rtl beh,构造体分为两部分:,is bigin:,说明语句;,bigin end:,并行语句;,2,构造体的说明语句,type declarations;,类型说明,signal declarations;,信号说明,constant declarations;,常量说明,component declarations;,元件说明,function definitions;,函数说明,procedure definitions;,过程说明,3,构造体的并行语句,信号赋值语句,数据流描述,rtl,元件例化语句,结构描述,str,进程语句,行为描述,beh,每条并行语句形成一个电路逻辑单元。,4,构造体的其他语法要点,除了第一句和,begin,句外,其余各句均以分号结束;,在每一部分中,各语句处于并列状态,执行时不分先后次序;,定义语句需要考虑使用的顺序。,5,VHDL,的数据对象,Signal,信号,Constant,常量,Variable,变量,每个数据对象必须有特定的名称;,数据对象的命名规则与实体名相同;,6,VHDL,的信号:,signal,电路中端口、连接线的体现,具有具体物理含义,在构造体内为全局变量;,信号使用前必须先进行说明:,输入,/,输出信号在实体中说明;,通用信号在包集合中进行说明;,模块内部信号在结构体内说明;,7,信号说明语句基本格式,signal signal_name : signal_type;,信号名,信号类型,例:,signal temp : std_logic;,signal bus_a : std_logic_vector(7 downto 0);,注意:端口(输入,/,输出)信号已在实体中说明,在结构体中就不再说明;,8,信号的赋值,在程序中采用,“,=”,(赋值语句)进行:,信号名,=,信号值(表达式);,例:,temp=1,;,z=x and not y,;,d0);,当没有指定初始值时,默认为其数据类型中的第一个值(最左边的值);,15,变量的赋值,注意:,变量只在函数、过程、进程等子结构中使用,一旦子结构执行结束,变量值随即消失;,因此,在一个结构体中,同一个变量名可以出现在不同的子程序中,表达不同的数据对象。,16,VHDL,的数据类型,每一个数据对象都必须规定其类型;,类型规定了数据的数据形式、取值范围、排列顺序、可进行的运算;,VHDL,规定了若干预定义类型,用户可以利用预定义类型来设置自定义类型;,17,常用预定义类型,预定义类型在相关的包集合中定义,std.standard,:,bit,(位)、,boolean,(布尔),integer,(整数)、,real,(实数),ieee.std_logic_1164,:,std_logic(,标准逻辑量,),;,ieee.std_logic_arith,:,signed,、,unsigned,;,18,常用预定义类型,bit,、,bit_vector,:,2,值逻辑,数据范围(,0,,,1,),用于逻辑运算,说明方式:,signal x,:,bit,;,-x,为,1,位逻辑信号;,signal y,:,bit_vector,(,3 downto 0,);,-y,为,4,位逻辑信号,最高位为,y,(,3,),在最左边;,19,常用预定义类型,bit,、,bit_vector,:常数表达形式,一位逻辑量采用单引号:,1,0,多位逻辑量采用双引号:, 1001,可以采用其他进制的缩写形式:,b 1001 o 7777 xffff,20,常用预定义类型,boolean,:(,falth,,,true,),逻辑量,用于关系判断;,可进行逻辑运算,;,不能表达为多位数组;,21,常用预定义类型,integer,:(,-2,31-1,-,+2,31-1,),算术量,用于算术运算;,其子集合有,natural,和,positive,;,考虑到电路综合效率,对于整数类型,可以在说明时对数据范围进行限制;,22,常用预定义类型,例:整数类型的范围,entity t is,port(a,b: in integer range 0 to 15;,f: out bit);,end t;,如果不加范围限制,,a,、,b,都是,32,位,加限制后,变为,4,位;,23,常用预定义类型,整数类型的一些常数表达形式,十进制数,120000=12E4=120_000 ;,二进制数,2#1111_1111#=2:1111_1111:,16,进制数,16#FFFF#=16:FFFF:,24,常用预定义类型,character,、,string,:,ISO 8,位字符集(前,128,个为,ASC,编码符号),综合性较差,主要用于仿真;,在字符类型中,大写字母和小写字母表达不同含义,需要加以区分;,例如:,A,和,a,分别表达不同的字符。,25,常用预定义类型,可通过连接运算将字符组合为字符串,或将短字符串连接成长字符串:,&,字符串的例子:, string & literal,Hello, I said!,%Sale: 50% off!%;,26,常用预定义类型,real,:(,-10,38,-,+10,38,)算术量,只能用于抽象描述及仿真,不可综合;,例:十进制数,120000.0=1.2E5=12.0E4,time,:物理量,由整数和相关单位字符构成,不可综合;,例:,50 ns 3 sec 25 hr,可进行算术运算,27,常用预定义类型,std_logic,、,std_logic_vector,:,8,值逻辑,数据范围(,X,,,0,,,1,,,Z,,,W,,,L,,,H,,,-,),std_ulogic,、,std_ulogic_vector,:,9,值逻辑,数据范围(,U,,,X,,,0,,,1,,,Z,,,W,,,L,,,H,,,-,),用于逻辑运算;,28,常用预定义类型,std_logic,、,std_logic_vector,:,8,值逻辑,数据范围(,X,,,0,,,1,,,Z,,,W,,,L,,,H,,,-,),用于逻辑运算;,X,:强不定;,0,:强,0,;,1,:强,1,;,Z,:高阻,W,:弱不定;,L,:弱,0,;,H,:弱,1,;,-,:不出现;,只有,0,、,1,、,Z,可以综合,其他只用于仿真;,29,常用预定义类型,std_logic,、,std_logic_vector,:特点,此类信号能够更清楚地表现电路中的实际电平情况;,设置有解决总线冲突问题的专用函数;,当多个电平连接到同一接点上的时候,,可以根据该判决函数决定连接点状态。,30,常用预定义类型,std_logic,、,std_logic_vector,:判决函数表,31,常用预定义类型,std_ulogic,、,std_ulogic_vector,:,9,值逻辑,数据范围(,U,,,X,,,0,,,1,,,Z,,,W,,,L,,,H,,,-,),增加了一个初始不定值:,U,;,8,值逻辑是它的子集合;,缺少总线冲突函数,只能通过设计消除总线冲突。,32,常用预定义类型,signed,、,unsigned,:符号数和无符号数,表达形式与,std_logic_vector,相同;,通过重载函数(,overload),支持算术运算;,33,
展开阅读全文