资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第八章 超高速集成电路硬件描述语言VHDL,例1:,TYPE,current,IS RANGE,0,TO,1000000000;,UNITS,na;,ua=1000 na;,ma=1000 ua;,a=1000 ma;,END UNITS,;,PACKAGE,scale,IS,TYPE,load,IS,(small,med,big);,END,scale;,例1:TYPE current IS RANGE 0 TO,ENTITY,scale1,IS,PORT,(out1:,OUT,current;,load1:,IN,load;,END,scale1;,USE,work.scale.all;,ARCHITECTURE,scale1_arc,OF,scale1,IS,BEGIN,out1=100 ua,WHEN,(load1=small),ELSE,1 ma,WHEN,(load1=med),ELSE,10 ma,WHEN,(load1=big),ELSE,100 ua;,END,scale1_arc;,ENTITY scale1 IS,PACKAGE,meals_pkg,IS,TYPE,meal,IS,(breakfast,lunch,dinner);,END,meals_pkg;,ENTITY,meals,IS,PORT,(previous_meal:,IN,meal;next_meal:,OUT,meal);,END,meals;,例2:,USE,work.meals_pkg.all;,PACKAGE meals_pkg IS TYPE mea,VHDL的基本组成,调用程序包,语句,标,准,程,序,包,定,义,程,序,包,实体 及实体声明语句,结构体1,结构体2,结构体n,VHDL的基本组成调用程序包标定实体 及实体声明语句结构体,数组类型,相同类型,的标量元素组成,数组可以是一维二维或多维。可以是限定的也可是非限定的。,记录类型,把物理、整数、实数、枚举元素归成一个目标组,记录的每个元素由它的字段名访问。元素类型可以,相同也可不同,。,(二)复合数据类型,二、VHDL数据类型,第二节 VHDL数据类型和属性,数组类型相同类型的标量元素组成,数组可以是一维二维或多维。可,TYPE,matrix,IS,ARRAY,(row,column),OF,std_logic;,TYPE,r_ma,IS ARRAY,(1 TO 10,1 TO 40),OF,std_logic;,TYPE,word,IS ARRAY,(15,DOWNTO,0),OF,BIT;,TYPE,column,IS RANGE,1,TO,40;,TYPE,row,IS RANGE,1,TO,10;,CONSTANT,ROM:BIT_VECTOR(0 TO 15);,(二)复合数据类型,二、VHDL数据类型,第二节 VHDL数据类型和属性,TYPE matrix IS ARRAY(row,colu,用VHDL设计一维数组实现164的ROM程序。,LIBRARY,ieee;,USE,ieee.std_logic_1164.all;,ENTITY,rom,IS,PORT,(cs,x1,x2,x3,x4:,IN,std_logic;,d0,d1,d2,d3:,OUT,std_logic);,END,rom;,ROM,CS,X1,X2,X3,X4,d0,d1,d2,d3,例,用VHDL设计一维数组实现164的ROM程序。LIBRAR,0 0 0 0,1 0 0 0,0 1 0 0,1 1 0 0,0 0 1 0,1 0 1 0,0 1 1 0,1 1 1 0,0 0 0 1,1 0 0 1,0 1 0 1,1 1 0 1,0 0 1 1,1 0 1 1,0 1 1 1,1 1 1 1,x3 x2x1x0,d0 d1 d2 d3,0 0 0 0,0 0 0 1,0 0 1 0,0 0 1 1,0 1 0 0,0 1 0 1,0 1 1 0,0 1 1 1,1 0 0 0,1 0 0 1,1 0 1 0,1 0 1 1,1 1 0 0,1 1 0 1,1 1 1 0,1 1 1 1,ROM存储表,rom0,rom1,rom2,rom3,问题一,如何定义存储表?,问题二,如何根据地址取出存储内容?,0 0 0 01,ARCHITECTURE,rom_arc,OF,rom,IS,BEGIN,PROCESS,(cs,x1,x2,x3,x4),VARIABLE,n:,NATURAL,RANGE,0,TO,15;,CONSTANT,rom0:std_logic_vector(0,TO,15):=“0101010101010101”;,CONSTANT,rom1:std_logic_vector(0,TO,15):=“0011001100110011”;,CONSTANT,rom2:std_logic_vector(0,TO,15):=“0000111100001111”;,CONSTANT,rom3:std_logic_vector(0,TO,15):=“0000000011111111”;,LIBRARY,ieee;,USE,ieee.std_logic_1164.all;,ENTITY,rom,IS,PORT,(cs,x1,x2,x3,x4:,IN,std_logic;,d0,d1,d2,d3:,OUT,std_logic);,END,rom;,ARCHITECTURE rom_arc OF rom IS,BEGIN,IF,cs=1,THEN,n:=0;,IF,x1 =1,THEN,n:=n+1;,END IF,;,IF,x2 =1,THEN,n:=n+2;,END IF,;,IF,x3 =1,THEN,n:=n+4;,END IF,;,IF,x4 =1,THEN,n:=n+8;,END IF,;,d0=rom0(n),AFTER,10 ns;d1=rom1(n),AFTER,10 ns;d2=rom2(n),AFTER,10 ns;d3=rom3(n),AFTER,10 ns;,ELSE,d0=Z,AFTER,10 ns;d1=Z,AFTER,10 ns;d2=Z,AFTER,10 ns;d3=Z,AFTER,10 ns;,END IF,;,END PROCESS,;,END,rom_arc;,判断地址,取内容,BEGIN IF x1 =1 THEN n,在,结构体说明区,(,ARCHITECTURE,和,BEGIN,之间)被说明的目标,仅可以在此结构体中引用或在结构体中的任何进程语句中被引用,称此目标为局部信号。,如果一个目标在,实体说明部分,被说明,那么在本实体和本实体内部的任何结构体和任何进程中都可以引用在实体中说明的目标,称为全局信号。,全局信号,局部信号,二、VHDL数据类型,第二节 VHDL数据类型和属性,(三)数据类型的全局化和局部化,在结构体说明区(ARCHITECTURE和BEGIN之间)被,程序包,实 体,结构体,进 程,子程序,信号,常量,变量,VHDL模块,被说明的目标,?,程序包实 体结构体进 程子程序信号常量变量VHDL模,VHDL的属性,信号类属性,函数类属性,值类属性,类型类属性,范围类属性,三、VHDL的属性,第二节 VHDL数据类型和属性,VHDL的属性信号类属性三、VHDL的属性第二节 VHDL,用来检查一个信号的变化,并且变化刚刚发生,既推断出在信号上发生了一个跳变。,(二)函数信号属性,函数信号属性用来返回有关信号行为功能的信息,它反映一个信号是否正好有值的变化或事件的发生.,如时钟事件:clk,EVENT,,这个属性为“,EVENT,”,对检查时钟边沿触发是很有效的。,IF,clk=1,AND,clk,EVENT,THEN,q=d;,END IF,;,三、VHDL的属性,第二节 VHDL数据类型和属性,用来检查一个信号的变化,并且变化刚刚发生,既推断出在信号上发,行为描述:,在VHDL中,描述电路逻辑的程序。,三个行为既可以是相互独立,成为单一的行为,描述体,又可以相互联系,成为混合描述体,如进,程行为描述行为,之间,是并行行为,进程行为体的,内,部,是顺序行为。,并行行为描述,进程行为描述,顺序行为描述,第三节 VHDL的行为描述,行为描述:在VHDL中,描述电路逻辑的程序。三个,在典型的编程语言如C或Pascal中,每个赋值语句按规定的次序,一个接在另一个之后顺序执行,执行的次序由源文件决定。,在VHDL中,结构体的内部没有规定语句的次序,执行的次序仅由对语句中的,敏感信号,发生的事件决定,且语句是同时执行,产生其并行型。,一、VHDL的并行行为,第三节 VHDL的行为描述,在典型的编程语言如C或Pascal中,每个赋,1.并行赋值语句,的一般格式如下:,信号:,信号名,=,表达式,变量:,变量名,:=,表达式,作用:将表达式的信号值分配给对象,也就是说每当表达式的信号值变化时执行该语句。,注意:每个表达式都至少有一个敏感信号,每当敏感信号改变其值时,赋值语句就执行,,一、VHDL的并行行为,第三节 VHDL的行为描述,1.并行赋值语句的一般格式如下:信号:信号名 =,在所有的并行语句中,两个以上的并行赋值语句在字面上的顺序并不表明它们的执行顺序.,ENTITY,exe,IS,PORT,(a1,a2:,IN,BIT;b1,b2:,OUT,BIT);,END,exe;,ARCHITECTURE,exe_arc1,OF,exe,IS,BEGIN,b1=a1,AND,b2;b2=,NOT,a1,OR,a2;,END,exe_arc1;,a1,a2,b1,b2,例,第三节 VHDL的行为描述,在所有的并行语句中,两个以上的并行赋值语句在字面上,也可以将结构体写成如下形式,虽然语句顺序不同,但描述的是同一功能电路.,ENTITY,exe,IS,PORT,(a1,a2:,IN,BIT;b1,b2:,OUT,BIT);,END,exe;,ARCHITECTURE,exe_arc2,OF,exe,ISBEGIN,b2=,NOT,a1,OR,a2;b1=a1,AND,b2;,END,exe_arc2;,a1,a2,b1,b2,例,第三节 VHDL的行为描述,也可以将结构体写成如下形式,虽然语句顺序不同,但描,2.,选择信号赋值语句,每一个赋值语句都需要给出一个表达式,同时给出与该表达式的每个可能值相关联的信号,选择信号赋值语句的一般形式如下:,WITH,SELECT,WHEN,WHEN,WHEN,;,一、VHDL的并行行为,第三节 VHDL的行为描述,2.选择信号赋值语句 选择信号赋值语句的一般形式,LIBRARY,ieee;,USE,ieee.std_logic_1164.all;,ENTITY,mux4,IS PORT,(I0,I1,I2,I3,A,B:,IN,std_logic;Q :,OUT,std_logic);,END,mux4;,I0,I1,I2,I3,A,Q,MUX4,B,例,第三节 VHDL的行为描述,LIBRARY ieee;,ARCHITECTURE,mux4_arc,OF,mux4,IS,SIGNAL,sel :INTEGER;,BEGIN,Q=I0,AFTER,10 ns,WHEN,sel=0,ELSE,I1,AFTER,10 ns,WHEN,sel=1,ELSE,I2,AFTER,10 ns,WHEN,sel=2,ELSE,I3,AFTER,10 ns;,sel dout dout dout dout dout dout dout=(1,0,0,0,0,0,0,0),AFTER,5 ns;,END CASE,;,END PROCESS,;,END,decoder_arc;,sel1 dout dout=(,下例是另一种激活进
展开阅读全文