为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

full_adder全加器设计

2019-06-03 12页 doc 46KB 17阅读

用户头像

is_180829

暂无简介

举报
full_adder全加器设计 VHDL语言与数字集成电路设计报告 指导老师: 张鹰 全加器的延迟分析 引言: 全加器是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。 本次设计首先介绍一位全加器的功能,电路原理图,接着主要对全加器电路进行延迟分析,包括传输延迟和惯性延迟的分析。通过对全加器电路延迟的分析,以达到对信号运算中时间延迟的深入理解。 1. 全加器电路的功能 在介绍全加器电路功能之前,首先介绍下半加器电路,其逻辑真值表如表1: 输 入 和...
full_adder全加器设计
VHDL语言与数字集成电路设计 指导老师: 张鹰 全加器的延迟分析 引言: 全加器是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。 本次设计首先介绍一位全加器的功能,电路原理图,接着主要对全加器电路进行延迟分析,包括传输延迟和惯性延迟的分析。通过对全加器电路延迟的分析,以达到对信号运算中时间延迟的深入理解。 1. 全加器电路的功能 在介绍全加器电路功能之前,首先介绍下半加器电路,其逻辑真值表如表1: 输 入 和 进 位 a b s co 0 0 0 1 1 0 1 1 0 1 1 0 0 0 0 1       表1 半加器逻辑真值表 根据以上真值表得到半加器逻辑表达式为: s = a⊕b=[a*b+(a+b)’]’ co = a*b 全加器在半加器基础上可以实现带低位进位的功能,其电路逻辑真值表如表2: 输 入 输 出 cinb a s co 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1     表2全加器逻辑真值表 根据以上真值表可知全加器逻辑表达式: s=a⊕b⊕cin co=a*b+cin*(a⊕b) 2. 全加器电路原理图 根据以上可知,全加器可以由两个半加器组成,结构图如图1所示: 图1两个半加器组成全加器结构图 从半加器逻辑表达式得全加器整体电路原理图如图2所示: 图2全加器电路原理图 3. 全加器电路延迟分析 在以上全加器电路原理图中,只涉及到三个基本逻辑门,分别是非门,与非门,或非门,假设三个门的延迟如表3所示: 表3三个基本逻辑门的延迟模型 门 延迟 非门 与非门 或非门 输入惯性延迟 1ns 2ns 2ns 输出传输延迟 1ns 2ns 2ns         根据表3的延迟值以及图2的全加器原理图,可以对全加器的各个输入输出端口进行延迟时间分析。 对输出端口co进行分析: 输入端口a到输出端口co: a到co的最长路径为:a→ab0→ab1→ab2→ab3→ab4→a2→co,总共延迟时间为22ns; 路径中存在的最大输入电容为节点ab2的电容,此电容构成a到co的惯性延迟为8ns。 从而根据最长路径延迟22ns和惯性延迟8ns,得到a到co的输出传输延迟为22ns-8ns=14ns延迟。 输入端口b到输出端口co: b到co的最长路径为:b→ab0→ab1→ab2→ab3→ab4→a2→co,总共延迟时间也为22ns; 路径中存在的最大输入电容也为节点ab2的电容,此电容构成b到co的惯性延迟为8ns。 从而根据最长路径延迟22ns和惯性延迟8ns,得到b到co的输出传输延迟也为22ns-8ns=14ns延迟。 输入端口cin到输出端口co: cin到co的最长路径为:cin→ab3→ab4→a2→co,总共延迟时间为12ns; 路径中存在的最大输入电容为节点cin的电容,此电容构成cin到co的惯性延迟为6ns。 从而根据最长路径延迟12ns和惯性延迟6ns,得到cin到co的输出传输延迟为12ns-6ns=6ns延迟。 对输出端口s进行分析: 输入端口a到输出端口s: a到s的最长路径为:a→ab0→ab1→ab2→cin0→cin1→s,总共延迟时间为20ns; 路径中存在的最大输入电容为节点ab2的电容,此电容构成a到s的惯性延迟为8ns。 从而根据最长路径延迟20ns和惯性延迟8ns,得到a到co的输出传输延迟为20ns-8ns=12ns延迟。 输入端口b到输出端口s: b到s的最长路径为:b→ab0→ab1→ab2→cin0→cin1→s,总共延迟时间也为20ns; 路径中存在的最大输入电容也为节点ab2的电容,此电容构成b到s的惯性延迟为8ns。 从而根据最长路径延迟20ns和惯性延迟8ns,得到b到s的输出传输延迟也为20ns-8ns=12ns延迟。 输入端口cin到输出端口s: cin到s的最长路径为:cin→cin0→cin1→s,总共延迟时间为10ns; 路径中存在的最大输入电容为节点cin的电容,此电容构成cin到s的惯性延迟为6ns。 从而根据最长路径延迟10ns和惯性延迟6ns,得到cin到s的输出传输延迟为10ns-6ns=4ns延迟。 4. 全加器电路VHDL代码及modelsim仿真图: 对于全加器电路的输入惯性延迟和输出传输延迟模型可由图3表示: 图3 全加器惯性延迟和传输延迟等效模型 跟据上图延迟模型,可以写出相应VHDL代码。 对于co端口,其延迟部分的VHDL代码如下: a_buffer <=a_in after 8ns; b_buffer<=b_in after  8ns; cin_buffer<=cin_in after 6ns; a<=transport a_buffer after 14ns; b<=transport b_buffer after 14ns; cin<=transport cin_buffer after 6ns; 即可以得到输入端口a,b,cin到输出端口co的延迟描述。 对于s端口,其延迟部分的VHDL代码如下: a_buffer <=a_in after 8ns; b_buffer<=b_in after  8ns; cin_buffer<=cin_in after 6ns; a<=transport a_buffer after 12ns; b<=transport b_buffer after 12ns; cin<=transport cin_buffer after 4ns; 即可以得到输入端口a,b,cin到输出端口s的延迟描述。 不考虑延迟时的全加器VHDL代码如下: LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY work; ENTITY full_adder IS PORT ( a :  IN  STD_LOGIC; b :  IN  STD_LOGIC; cin:  IN  STD_LOGIC; co :  OUT  STD_LOGIC; s :  OUT  STD_LOGIC ); END full_adder; ARCHITECTURE adder OF full_adder IS SIGNAL    a0 :  STD_LOGIC; SIGNAL    a1 :  STD_LOGIC; SIGNAL    a2 :  STD_LOGIC; SIGNAL    ab0 :  STD_LOGIC; SIGNAL    ab1 :  STD_LOGIC; SIGNAL    ab2 :  STD_LOGIC; SIGNAL    ab3 :  STD_LOGIC; SIGNAL    ab4 :  STD_LOGIC; SIGNAL    b0 :  STD_LOGIC; SIGNAL    cin0 :  STD_LOGIC; SIGNAL    cin1 :  STD_LOGIC; SIGNAL    cin2 :  STD_LOGIC; BEGIN a2 <= NOT(ab4 OR a1); b0 <= NOT(b OR a); ab2 <= NOT(b0 OR ab1); cin2 <= NOT(cin OR ab2); s <= NOT(cin2 OR cin1); a1 <= NOT(a0); ab1 <= NOT(ab0); cin1 <= NOT(cin0); ab4 <= NOT(ab3); co <= NOT(a2); a0 <= NOT(b AND a); ab0 <= NOT(b AND a); cin0 <= NOT(cin AND ab2); ab3 <= NOT(cin AND ab2); END adder; 相应的testbench代码: LIBRARY ieee;                                              USE ieee.std_logic_1164.all;                                ENTITY full_adder_vhd_tst IS END full_adder_vhd_tst; ARCHITECTURE full_adder_arch OF full_adder_vhd_tst IS SIGNAL a : STD_LOGIC; SIGNAL b: STD_LOGIC; SIGNAL cin : STD_LOGIC; SIGNAL co : STD_LOGIC; SIGNAL s : STD_LOGIC; COMPONENT full_adder PORT ( a: IN STD_LOGIC; b: IN STD_LOGIC; cin : IN STD_LOGIC; co : OUT STD_LOGIC; s : OUT STD_LOGIC ); END COMPONENT; BEGIN i1 : full_adder PORT MAP ( a => a, b=>b, cin =>cin , co => co, s => s ); init : PROCESS                                              BEGIN a<='0'; b<='1'; cin <='1'; wait for 10ns; a<='1'; b<='1'; cin <='1'; wait for 7ns; a<='1'; b<='0'; 继续阅读
/
本文档为【full_adder全加器设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索