四位加法器实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四位加法器实验报告
1.实验目的:
掌握组合逻辑电路的基本分析与设计方法;
理解半加器和全加器的工作原理并掌握利用全加器构成不同字长加法器的各种方法;
学习元件例化的方式进行硬件电路设计;
学会利用软件仿真实现对数字电路的逻辑功能进行验证和分析。

2.实验仪器:
数字逻辑实验箱
3.实验内容:
A. 设计实现逐次进位加法器,进行软件仿真并在实验平台上测试。

B. 设计实现超前进位加法器,进行软件仿真并在实验平台上测试。

C.使用VHDL自带加法运算实现一个4位全加器。

4.实验代码:
A. 逐次进位加法器:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity FDFA is#定义串行加法器总体接口port(
A,B:in std_logic_vector(3 downto 0);
Ci:in std_logic;
S:out std_logic_vector(3 downto 0);
Co:out std_logic);
end entity;
architecture struct of FDFA is
component fadder is#基于一位全加器port(
a,b,ci:in std_logic;
s,co:out std_logic);
end component fadder;
signal c0,c1,c2:std_logic;
begin
U0:fadder port map(A(0),B(0),Ci,S(0),c0);
U1:fadder port map(A(1),B(1),c0,S(1),c1);
U2:fadder port map(A(2),B(2),c1,S(2),c2);
U3:fadder port map(A(3),B(3),c2,S(3),Co);
end architecture struct;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity fadder is #定义一位全加器port(
a,b,ci:in std_logic;
s,co:out std_logic);
end entity;
architecture func of fadder is
begin
co<=(a and b) or (ci and ( a xor b));
s<=a xor b xor ci;
end architecture func;
B. 超前进位加法器:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity LAC is#定义超前进位加法器总体接口port(
A,B:in std_logic_vector(3 downto 0);
Ci:in std_logic;
Co:out std_logic;
S:out std_logic_vector(3 downto 0)
);
end entity;
architecture struct of LAC is
signal wirep, wireg:std_logic_vector(3 downto 0);
signal wirec:std_logic_vector(2 downto 0);
component fadder is#基于一位全加器
port(
Ai,Bi:in std_logic;
c:in std_logic;
si:out std_logic;
pi:out std_logic;
gi:out std_logic
);
end component fadder;
component Ker is#Ker总理进位传递信号P与进位产生信号G,以及进位信号C port(
ci:in std_logic;
P:in std_logic_vector(3 downto 0);
G:in std_logic_vector(3 downto 0);
C:out std_logic_vector(3 downto 0)
);
end component Ker;
begin
U0:fadder port map(Ai=>A(0),Bi=>B(0),c=>Ci,si=>S(0),pi=>wirep(0),gi=>wireg(0));
U1:fadder port map(Ai=>A(1),Bi=>B(1),c=>wirec(0),si=>S(1),pi=>wirep(1),gi=>wireg(1));
U2:fadder port map(Ai=>A(2),Bi=>B(2),c=>wirec(1),si=>S(2),pi=>wirep(2),gi=>wireg(2));
U3:fadder port map(Ai=>A(3),Bi=>B(3),c=>wirec(2),si=>S(3),pi=>wirep(3),gi=>wireg(3));
L:Ker port map(ci=>Ci,P(0)=>wirep(0),P(1)=>wirep(1),P(2)=>wirep(2),P(3)=>wirep(3),G(0)=>wireg(0),G(1)=>wireg(1),G(2)=>w ireg(2),G(3)=>wireg(3),C(0)=>wirec(0),C(1)=>wirec(1),C(2)=>wirec(2),C(3)=>Co);
end architecture struct;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity fadder is #定义一位全加器port(
Ai,Bi:in std_logic;
c:in std_logic;
si:out std_logic;
pi:out std_logic;
gi:out std_logic
);
end entity;
architecture func of fadder is
begin
pi<=Ai xor Bi;
gi<=Ai and Bi;
si<=Ai xor Bi xor c;
end architecture func;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity Ker is#定义Ker port(
ci:in std_logic;
P:in std_logic_vector(3 downto 0);
G:in std_logic_vector(3 downto 0);
C:out std_logic_vector(3 downto 0)
);
architecture func of Ker is
begin
C(0)<=G(0) or ( P(0) and ci );
C(1)<=G(1) or ( P(1) and G(0) ) or ( P(1) and P(0) and ci );
C(2)<=G(2) or ( P(2) and G(1) ) or ( P(2) and P(1) and G(0) ) or ( P(2) and P(1) and P(0) and ci );
C(3)<=G(3) or ( P(3) and G(2) ) or ( P(3) and P(2) and G(1) ) or ( P(3) and P(2) and P(1) and G(0) ) or ( P(3) and P(2) and P(1) and P(0) and ci );
end architecture func;
C. VHDL自带加法运算实现4位全加器:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity VHDLAD is#定义VHDL自带加法运算实现4位全加器总体接口,如果加和比原来和少,则会进位port(
A,B:in std_logic_vector(3 downto 0);
Ci:in std_logic;
Co:out std_logic;
S:out std_logic_vector(3 downto 0));
end VHDLAD;
architecture bhv of VHDLAD is
signal D:std_logic_vector(3 downto 0);
begin
process(A,B,Ci,D)
begin
D <= A + B;
if(Ci = '1') then
D <= D + 1;
end if;
if(D >= A) then
S <= D;
Co <= '0';
else
S <= D;
Co <= '1';
end if;
end process;
end bhv;
5.软件仿真结果
说明下面图片每幅有14条信号线,从上到下依次为A的低位到高位(共4条)、B的低位到高位(共4条)、输入的进位信号、和的低位到高位(共4条)、输出进位信号。

A. 逐次进位加法器:
短时间,延时明显
长时间,延时不明显B. 超前进位加法器:
短时间,延时明显
长时间,延时不明显C. VHDL自带加法运算实现4位全加器:
短时间,延时明显
长时间,延时不明显
6.电路功能测试结果
完全按照设计的逻辑功能,延时感觉并不明显。

7.实验总结
3种设计的延时差异并不明显,实验过程中遇到的最大问题是多个component的通信问题,可以通过设置signal解决这一问题。

相关文档
最新文档