
VHDL的描述风格.ppt
20页第三章第三章 VHDLVHDL的描述风格的描述风格 3.1 行为描述方式行为描述方式 3.2 数据流描述方式(数据流描述方式(RTL描述方式)描述方式)3.3 结构化描述方式结构化描述方式3.4 混合描述风格混合描述风格 总总目录目录章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节 VHDL语言是通过结构体具体描述整个设计实体的语言是通过结构体具体描述整个设计实体的逻辑功能逻辑功能 下面结合一个全加器来说明这四种描述风格,全加器下面结合一个全加器来说明这四种描述风格,全加器的端口示意图如图所示,其输入输出关系如表所示的端口示意图如图所示,其输入输出关系如表所示 通常结构体有四种不同的描述方式:通常结构体有四种不同的描述方式: VHDL通过这四种不同的描述方式从不同的侧面描述通过这四种不同的描述方式从不同的侧面描述结构体的功能前三种是最基本的描述方式,他们组合起结构体的功能前三种是最基本的描述方式,他们组合起来就成为混合描述方式来就成为混合描述方式 行为描述方式(行为描述方式(behavior)) 数据流描述方式(数据流描述方式(dataflow))或寄存器或寄存器RTL描述方式描述方式 结构化描述方式(结构化描述方式(structural)) 混合描述方式。
混合描述方式章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录全加器的输入输出关系全加器的输入输出关系 全加器框图全加器框图 输入 输出0xyc_outsum0000000101010010111010001101101101011111章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录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 ISBEGIN 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; sum <= sum_vector (n) AFTER 2*tpd; c_out <= carry_vector (n) AFTER 3*tpd; END PROCESS; END behav; 对照真值表解释程序对照真值表解释程序(0 TO 3)sum_vector初值为初值为“0101”carry_vector初值为初值为“0011”(0 TO 3) 输入输入 输出输出c_in x y c_out sum 0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 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 ISBEGIN 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.3 结构描述方式结构描述方式 结构化描述方式就是在多层次的设计中,高层次的结构化描述方式就是在多层次的设计中,高层次的设计可以调用低层次的设计模块,或直接用门电路设计设计可以调用低层次的设计模块,或直接用门电路设计单元来构成一个复杂逻辑电路的方法。
利用结构化描述单元来构成一个复杂逻辑电路的方法利用结构化描述方法将已有的设计成果方便地用于新的设计中,能大大方法将已有的设计成果方便地用于新的设计中,能大大提高设计效率在结构化描述中,建模的焦点是端口及提高设计效率在结构化描述中,建模的焦点是端口及其互连关系其互连关系 结构化描述的建模步骤如下:结构化描述的建模步骤如下:((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 ISBEGINPROSESS (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 ISBEGIN 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 ISBEGIN 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; 章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录。












