资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,适合班级:,07060441 07060442,教学东区11210H,第五课,VHDL语言构造体的描述方式,行为描述方式(,behaveioral,),寄存器传输(,RTL,)描述方式(,dataflow,),结构描述方式(,structural,),三种描述方式,所谓构造体的行为描述(Behavioral Descriptions),就是对整个系统的数学模型的描述。行为描述在EDA工程中称为高层次描述或高级描述。,在行为描述方式的程序中大量采用算术运算、关系运算、惯性延时、传输延时等难于进行逻辑综合和不能进行逻辑综合的VHDL语句。,采用行为描述方式的VHDL语言程序,在一般情况下只能用于行为层次的仿真,而不能进行逻辑综合。,行为描述方式,代入语句,延时语句,多驱动器描述语句,GENERIC语句,在VHDL语言中一些专门用于,描述系统行为的语句,:,代入语句是VHDL语言中进行行为描述的最基本的语句。,代入语句最普遍的格式为:,信号量=敏感信号量表达式;,代入语句,例如:,(1)a=b;,该语句的功能是a得到b的值,b为敏感量,b值发生变化时,该语句执行;,(2)z=a NOR(b NAND c);,3个敏感量a,b,c,无论哪一个的值发生变化时,该代入语句被执行;,(3)a=b AFTER 5ns;,当b发生变化5ns以后才代入到信号a。,例4-1,LIBRARY IEEE;-库,USE IEEE.STD_LOGIC_1164.ALL;-程序包,ENTITY and2 IS-实体,PORT(a,b:IN STD_LOGIC;,y:OUT STD_LOGIC);,END and2;,ARCHITECTURE and2_behaviour OF and2 IS -构造体,BEGIN,y=a AND b AFTER 5 ns;,END and2_behaviour;,在VHDL语言中,存在两种延时类型:,惯性延时和传输延时,。这两种延时常用于VHDL语言的行为描述方式。,延时语句,在惯性模型中,系统或器件输出信号要发生变化必须有一段时间的延时,这段延时时间常被称为系统或器件的惯性或称惯性延时。,在VHDL语言中,语句中如果不作特别说明,产生的延时一定是惯性延时。,特点:,当一个系统或器件的输入信号变化周期小于它的惯性延时时,其输出保持不变,。,几乎所有器件都存在惯性延时,,因此,硬件电路的设计人员为了逼真地仿真硬件电路的实际工作情况,在代入语句中总要加上惯性延时时间的说明。例如:a=b AFTER 5ns;,惯性延时说明只在行为仿真时有意义,逻辑综合时将被忽略,或者在逻辑综合前必须去掉延时说明。,惯性延时,传输延时常用于描述总线延时、连接线的延时及ASIC芯片中的路径延时。,传输延时不是缺省的,必须在语句中明确说明。,举例:,传输延时,b=a AFTER 20 ns,图1 惯性延时示例,b=,TRANSPORT,a AFTER 20 ns,图2 传输延时示例,在VHDL语言中,创建一个驱动器可以由一条信号代入语句来实现。当有多个信号并行输出时,在构造体内部必须利用代入语句,对每个信号创建一个驱动器。,多个驱动器的输出连接到同一条信号线时,由判决函数决定输出哪一个值。,多驱动器的构造体应按如下方式描述:,ARCHITECTURE sample OF sample IS,BEGIN,a=b AFTER 5ns;,a=d AFTER 5ns;,-争议?多个赋值源,END sample;,多驱动器描述语句,寄存器传输描述方式,对于用行为描述方式的VHDL语言程序只有改写为寄存器传输描述方式才能进行逻辑综合。,寄存器传输描述方式也称为,数据流描述方式,。,在RTL描述方式中有两种不同的方法:,(1)寄存器之间的功能描述方式;,(2)寄存器硬件一一对应的直接描述方式。,下面举一个二选一电路的例子,用两种不同的方法来描述该电路。,功能描述的RTL描述方式,entity mux2 is,port(,input:in std_logic _vector(1 downto 0);,sel:in std_logic;,y:out std_logic);,end mux2;,architecture mux2_dataflow of mux2 is,begin,y=input(0)when sel=1 else input(1);,end mux2_dataflow;,此方法只需知道外部特性和功能就可以进行正确的描述。,二,选,一,电,路,Input(0),Input(1),sel,y,硬件一一对应的RTL描述方式,entity mux2 is,port(,in0,in1,sel:in std_logic;,y:out std_logic);,end mux2;,architecture mux2_dataflow of mux2 is,Signal tmp1,tmp2,tmp3:std_logic;,begin,tmp1=in0 AND sel;,tmp2=in1 AND(NOT sel);,tmp3=tmp1 OR tmp2;,y=tmp3;,end mux2_dataflow;,此方法需要了解电路内部采用了哪些门电路等细节,才能用VHDL语言进行正确的描述。所以一般采用功能描述的RTL描述方式。,使用RTL描述方式应注意的几个问题:,(1)“X”状态的传递,所谓“X”状态的传递实质上是不确定信号状态的传递,它将使逻辑电路产生不确定的结果,不确定“状态”在RTL仿真时是允许出现的,但是在逻辑综合后的门级电路仿真中是不允许出现。,p58 例4-9和例4-10,PROCESS(sel),BEGIN,IF(sel=1)THEN,y=1;,ELSE,y=0;,END IF;,END PROCESS;,PROCESS(sel),BEGIN,IF(sel=0)THEN,y=1;,ELSE,y=0;,END IF;,END PROCESS;,当sel=X时,输出的y值将变为0,这是不合理的。,PROCESS(sel),BEGIN,IF(sel=1)THEN,y=1;ELSIF(sel=0)THEN,y=0;,ELSE,y=X;,END IF;,END PROCESS;,将程序进行修改,使RTL仿真结果和逻辑综合的仿真结果一致,PROCESS(sel),BEGIN,IF(sel=0)THEN,y=1;ELSIF(sel=1)THEN,y=0;,ELSE,y=X;,END IF;,END PROCESS;,(2)寄存器RTL描述的限制:,禁止在一个进程中存在两个寄存器描述;,禁止使用IF语句中的ELSE项;,在一个进程中,不能同时对时钟上升沿和下降沿敏感,在判断时钟上升沿或下降沿的IF语句中不能出现ELSE项。,寄存器RTL描述中必须代入信号值。,p59 例4-11、例4-12和例4-13,(3)关联性强的信号应放在一个进程中,在许多较复杂的电路中,它有多个输入和输出,有些信号互相的关联度很高,而有些信号相互的关联度很低,在这种情况下,为了在逻辑综合后,使电路的面积和速度指标更高,,通常将关联度高的信号放在一个进程中,将电路分成几个进程来描述,。,p60-61,例4-14和例4-15,所谓结构描述方式,就是在,多层次的设计,中,高层次的设计模块调用低层次的设计模块,或者直接用门电路设计单元来构成一个复杂的逻辑电路的描述方式。,它比行为描述更具体,特别是在描述与硬件的对应关系上,结构描述要比行为描述更为明显、直观。,结构描述的,优点,是可以利用层级方式,将大型硬件电路分解为小电路或模块来设计、仿真和验证。,结构描述方式,例如:2-4译码器,其中图(a)是逻辑符号,图(b)是逻辑图。,结构描述的基本柜架,(a)2-4译码器逻辑符号,(b)2-4译码器逻辑图,思路:,(1)先选择元器件,然后使用元器件搭建逻辑。,(2)元器件:非门(反相器)2个、三输入与门4个,(3)首先分别使用VHDL语言建立两个工程,分别实现反相器和三输入与门的逻辑,作为备用元件。,(4)其次建立译码器工程,采用component语句声明上述两个备用元件,在结构体中采用port map 语句完成上图中各元件的连接。,(5)诀窍:把连线编号,按编号定义使用的信号。,注意:,(1)凡从外部引入或输出的信号,定义到entity中;,(2)元件之间的连接信号,需要定义到结构体中。,(3)所有连在一起的连线,只能定义一次。,entity v2to4dec is,port(i0,i1,en:in std_logic;,y0,y1,y2,y3:out std_logic);,end v2to4dec;,architecture v2to4dec_structure of v2to4dec is,component inv,port(i:in std_logic;,o:out std_logic);,end component;,component and3x,port(i0,i1,i2:in std_logic;,o:out std_logic);,end component;,signal i0_not,i1_not :std_logic;,begin,u1:inv port map (i0,i0_not);,u2:inv port map (i1,i1_not);,u3:and3x port map (i0_not,i1_not,en,y0);,u4:and3x port map (i0,i1_not,en,y1);,u5:and3x port map (i0_not,i1,en,y2);,u6:and3x port map (i0,i1,en,y3);,end v2to4dec_structure;,精读P62-P65 例4-16-例4-19,结构描述方式能较方便的进行多层次的结构设计。,异或门的三种描述风格,表达式:y=a(!b)+(!a)b,异或门,寄存器,(dataflow)描述风格,architecture yihuo3_dataflow of yihuo3 is,begin,y=a xor b;,end yihuo3_dataflow;,异或门的,行为,(behavior)描述风格,architecture yihuo1_behavior of yihuo1 is,begin,process(a,b),begin,if a=b then,y=0;,else,y=1;,end if;,end process;,end yihuo1_behavior;,异或门结构(structure)描述风格,Architecture a of yihuo2 is,component not2,port(a:in std_logic;,c:out std_logic);,end component;,component and2,port(a,b:in std_logic;,c:out std_logic);,end component;,component or2,port(a,b:in std_logic;,c:out std_logic);,end component;,signal tmp00,tmp01,tmp1,tmp2:std_logic;,begin,u0:not2 port map(a1,tmp00);,u1:not2 port map(b1,tmp01);,u2:and2 port map(a1,tmp01,tmp1);,u3:and2 port map(tmp00,b1,tmp2);,u4:or2 port map(tmp1,tmp2,y1);,end a;,三种描述方式的比较,描述方式,优点,缺点,适用场合,结构化描述,连接关系清晰,电路模块化清晰,电路不易理解、繁琐、复杂,电路层次化设计,
展开阅读全文