第一范文网 - 专业文章范例文档资料分享平台

全加器

来源:用户分享 时间:2025/5/25 2:25:25 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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 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; END behav;

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 结构描述方式

结构化描述方式就是在多层次的设计中,高层次的设计可以调用低层次的设计模块,或直接用门电路设计单元来构成一个复杂逻辑电路的方法。利用结构化描述方法将已有的设计成果方便地用于新的设计中,能大大提高设计效率。在结构化描述中,建模的焦点是端口及其互连关系。

结构化描述的建模步骤如下: (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;

由上例可见,对于一个复杂的电子系统,可以将其分解为若干个子系统,每个子系统再分解成模块,形成多层次设计。这样,可以使更多的设计者同时进行合作。在多层次设计中,每个层次都可以作为一个元件,再构成一个模块或系统,可以先分别仿真每个元件,然后再整体调试。所以说结构化描述不仅是一种设计方法,而且是一种设计思想,是大型电子系统高层次设计的重要手段。 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;

搜索更多关于: 全加器 的文档
全加器.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6gdm1796ox8mqar1rxat_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top