资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,YANGTZE NORMAL UNIVERSITY,第三章,VHDL,的描述风格,3.1,行为描述方式,3.2,数据流描述方式(,RTL,描述方式),3.3,结构化描述方式,3.4,混合描述风格,VHDL,语言是通过,结构体,具体描述整个,设计实体,的逻辑功能。通常结构体有四种不同的描述方式:,行为描述方式,(,behavior,)、,数据流描述方式,(,dataflow,)或寄存器,RTL,描述方式、,结构化描述,方式(,structural,)以及,混合描述,方式。,VHDL,通过这四种不同的描述方式从不同的侧面描述结构体的功能。前三种是最基本的描述方式,他们组合起来就成为混合描述方式。,下面结合一个全加器来说明这四种描述风格,全加器的端口示意图如图所示,其输入输出关系如表所示。,全加器的输入输出关系,输入,输出,c_in,x y,c_out,sum,0 0 0,0 0,0 0 1,0 1,0 1 0,0 1,0 1 1,1 0,1 0 0,0 1,1 0 1,1 0,1 1 0,1 0,1 1 1,1 1,全加器框图,3.1,行为描述方式,行为描述输入与输出间转换的行为,,不需包含任何结构信息,它对设计实体按算法的路径来描述。行为描述在,EDA,工程中通常被称为高层次描述,,设计工程师只需要注意正确的实体行为、准确的函数模型和精确的输出结果就可以了,无需关注实体的电路组织和门级实现。,例,:,基于全加器真值表采用行为描述方式设计的全加器(,1,位二进制数全加,),LIBRARY IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,ENTITY,full_adder,IS,GENERIC,(,tpd,:TIME:=10 ns,);,PORT,(,x,,,y,,,c_in,:IN STD_LOGIC;,Sum,c_out,:OUT STD_LOGIC);,END,full_adder,;,ARCHITECTURE,behav,OF,full_adder,IS,BEGIN,PROCESS,(,x,y,c_in,),VARIABLE n:INTEGER;,CONSTANT,sum_vector,:STD_LOGIC_VECTOR(0 TO 3):=“0101”;,CONSTANT,carry_vector,:STD_LOGIC_VECTOR(0 TO 3):=“0011”;,BEGIN,n:=0;,IF x=1 THEN,n:=n+1;,END IF;,IF y=1 THEN,n:=n+1;,END IF;,IF,c_in,=1 THEN,n:=n+1;,END IF;-,(0 TO 3),sum=,sum_vector,(,n,)AFTER 2*,tpd,;,-,sum_vector,初值为“,0101,”,c_out,=,carry_vector,(,n,)AFTER 3*,tpd,;,-,carry_vector,初值为“,0011”,END,PROCESS,;,-(0 TO 3),END,behav,;,输入,输出,c_in,x y,c_out,sum,0 0 0,0 0,0 0 1,0 1,0 1 0,0 1,0 1 1,1 0,1 0 0,0 1,1 0 1,1 0,1 1 0,1 0,1 1 1,1 1,对照真值表解释程序,3.2,数据流描述方式,数据流描述方式表示行为,也隐含表示结构,它描述了数据流的运动路线、运动方向和运动结果。,对于全加器,,用布尔方程描述其逻辑功能如下,:,s=x XOR y,sum=s XOR,c_in,c_out,=(x AND y)OR(s AND,c_in,),下面是基于上述布尔方程的数据流风格的描述,:,例:采用数据流描述方式的全加器,LIBRARY IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,ENTITY,full_adder,IS,GENERIC,(,tpd,:TIME:=10 ns,);,PORT,(,x,,,y,,,c_in,:IN STD_LOGIC;,Sum,c_out,:OUT STD_LOGIC);,END,full_adder,;,ARCHITECTURE,dataflow,OF,full_adder,IS,BEGIN,s,=,x XOR y AFTER,tpd,;,sum,=,s XOR,c_in,AFTER,tpd,;,c_out,=,(x AND y)OR(s AND,c_in,),AFTER 2*,tpd,;,END,dataflow,;,3.23,结构描述方式,结构化描述方式就是在多层次的设计中,高层次的设计可以调用低层次的设计模块,或直接用门电路设计单元来构成一个复杂逻辑电路的方法。,利用结构化描述方法将已有的设计成果方便地用于新的设计中,,能大大提高设计效率。在结构化描述中,建模的焦点是端口及其互连关系。,结构化描述的建模步骤如下:,(,1,)元件说明,(,2,)元件例化,(,3,)元件配置,元件说明用于描述局部接口;元件例化是要相对于其他元件来放置该元件;元件配置用于指定元件所用的设计实体。,对于上图给出的全加器端口结构,可以认为它是由,两个半加器和一个或门,组成的,。,基于上图所示的结构,可以写出全加器的结构化描述设计程序如下。,例:全加器的结构化描述,LIBRARY IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,ENTITY,half_adder,IS,GENERIC,(,tpd,:,TIME:=10 ns,);,PORT,(,in1,in2:IN STD_LOGIC;,sum,carry:OUT STD_LOGIC);,END,half_adder,;,ARCHITECTURE,behavioral,OF,half_adder,IS,BEGIN,PROSESS(in1,in2),BEGIN,sum=in1 XOR in2 AFTER,tpd,;,carry=in1 AND in2 AFTER,tpd,;,END PROCESS;,END,behavioral,;-,半加器设计完毕,LIBRARY IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,ENTITY,or_gate,IS,GENERIC,(,tpd,:,TIME:=10 ns,);,PORT,(,in1,in2:IN STD_LOGIC;,out1:OUT STD_LOGIC);,END,or_gate,;,ARCHITECTURE,structural,OF,or_gate,IS,BEGIN,out1=in1 OR in2 AFTER,tpd,;,END,structural,;-,或门设计完毕,LIBRARY IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,ENTITY,full_adder,IS,GENERIC,(,tpd,:,TIME,:,=10 ns,);,PORT,(,x,,,y,,,c_in,:IN STD_LOGIC;,Sum,c_out,:OUT STD_LOGIC);,END,full_adder,;,ARCHITECTURE,structural,OF,full_adder,IS,COMPONENT,half_adder,PORT,(,in1,in2:IN STD_LOGIC;,sum,carry:OUT STD_LOGIC);,END,COMPONENT,;,COMPONENT,or_gate,PORT,(,in1,in2:IN STD_LOGIC;,out1:OUT STD_LOGIC);,END,COMPONENT,;,SIGNAL a,b,c:STD_LOGIC,;,FOR u1,u2:,half_adder,USE ENTITY,WORK.half_adder,(behavioral);,FOR u3:,or_gate,USE ENTITY WORK.,or_gate,(structural);,BEGIN,u1:,half_adder,PORT MAP(x,y,b,a);,u2:,half_adder,PORT MAP(,c_in,b,sum,c);,u3:,or_gate,PORT MAP(c,a,c_out,);,END,structural,;,由上例可见,对于一个复杂的电子系统,可以将其分解为若干个子系统,每个子系统再分解成模块,形成多层次设计。这样,可以使更多的设计者同时进行合作。在多层次设计中,每个层次都可以作为一个元件,再构成一个模块或系统,可以先分别仿真每个元件,然后再整体调试。所以说结构化描述不仅是一种设计方法,而且是一种设计思想,是大型电子系统高层次设计的重要手段。,3.4,混合描述风格,在实际设计工作中,可以采用上述三种描述方式的任意组合,这就是混合描述。同样还是图所给出端口结构的全加器模型,其混合描述方式如下。,例,:,全加器的混合描述,LIBRARY IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,ENTITY,xor_gate,IS,GENERIC,(,tpd,:,TIME,:,=10 ns,);,PORT,(,in1,,,in2:IN STD_LOGIC;,out1:OUT STD_LOGIC);,END,xor_gate,;,ARCHITECTURE,behavioral,OF,xor_gate,IS,BEGIN,out1=in1 XOR in2 AFTER,tpd,;,END,behavioral,;,LIBRARY IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,ENTITY,full_adder,IS,GENERIC,(,tpd,:,TIME,:,=10 ns,);,PORT,(,x,,,y,,,c_in,:IN STD_LOGIC;,Sum,c_out,:OUT STD_LOGIC);,END,full_adder,;,ARCHITECTURE,mix,OF,full_adder,IS,COMPONENT,xor_gate,PORT,(,in1,in2:IN STD_LOGIC;,out1:OUT STD_LOGIC);,END,COMPONENT,;,SIGNAL,s,:STD_LOGIC;,FOR ALL:,xor_gate,USE ENTITY WORK.,xor_gate,(,behavioral,);,BEGIN,u1:,xor_gate,PORT MAP(x,y,s,);,u2:,xor_gate,PORT MAP(,s,c_in,sum);,c_out,=,(x AND y)OR(s AND,c_in,)AFTER 2*,tpd,;,END,mix,;,
展开阅读全文