硬件描述语言实验五:四位加法器实验

预习报告部分

  • 实验目的:进一步练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言RTL描述方式的编写方法。
  • 实验原理:本实验用实验二“full_adder”的实体作为元件,用port map语句将下图的电路描述出来,实现四位加法器(并与实验三、实验四的加法器进行比较。)
  • 实验内容:

设计一个四位加法器,实体名称为“adder4_3”,其引脚及其功能如下表。

端口模式

端口名

数据类型

说明

in

(输入)

A

std_logic_vector(3 downto 0)

加数

B

加数

Ci

std_logic

低位进位

out

(输出)

S

std_logic_vector(3 downto 0)

Co

std_logic

高位进位

要求应用一位全加器(实验二中所实现的)按如下电路图通过结构描述方式构造四位加法器。

本实验需要用的结构描述方法,请同学们参考课本第5章5.3节及其例题:例5-16和第8章例题:例8-14和例8-15。

本实验用实验二“full_adder”的实体作为元件,用port map语句描述出来将下图的电路,实现四位加法器,并与实验三、实验四的加法器进行比较。

79fe4231f2d548239a4efa637e6e634a.png

  • 实验所用设备:PC个人计算机、Windows XP操作系统、Quartus II集成开发环境软件

五、实验步骤:①建立工程、②编辑代码、③编译及修改错误、④建立仿真波形并仿真、⑤根据仿真结果分析设计是否正确。

 

 

 

实验报告部分

  • 实验步骤:
  1. 新建文件夹,建立工程 adder4_3
  2. 将实验二的full_adder拷贝到工程目录下
  3. 输入代码,保存并编译运行
  4. 显示工程的电路图
  5. 新建仿真波形图
  6. 判断仿真波形图结果和理论值是否相符

70acb835c4e448d9ac4f448944c3c05d.png

 

二、 实验数据及结果分析

5fa43f97bfed4f3ea020a96c69e7f349.png

d7940574b96e4c22ae012e172825d0ab.png

 

通过对多组实验数据的分析,判断其符合预期结果。如图所示,如当A=0000,B=0000,ci=1时,他们的和为0001,产生的最高位进位co为0,正确。

三、实验结论

用一位全加器的实体通过结构描述的方式构造出四位加法器,这样的方式使全加器更加有效率的解决逻辑运算。并且port map和component语句得使用使代码更加简洁明了,结果更准确。

四、总结与心得体会

利用port map语句时比之前的实验更加方便,并且在调用程序时,复用性更强,可读性更高,开发效率也更高。

 

五、附录(实验源码)

   library ieee;

use ieee.std_logic_1164.all;

 

entity full_adder is

port(a,b,ci:in std_logic;

   s,co:out std_logic);

    end entity;

   

architecture rtl of full_adder is

begin

s<= a xor b xor ci;

co<=(a and b) or (a and ci) or (b and ci);

end rtl;

 

library ieee;

use ieee.std_logic_1164.all;

 

entity  adder4_3 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 fadd of  adder4_3 is

component full_adder is

port(a,b,ci:in std_logic;

      s,co: out std_logic);

end component;

signal c0,c1,c2: std_logic;

begin

 u0:full_adder port map(A(0),B(0),ci,S(0),c0);

 u1:full_adder  port map(A(1),B(1),c0,S(1),c1);

 u2:full_adder  port map(A(2),B(2),c1,S(2),c2);

 u3:full_adder  port map(A(3),B(3),c2,S(3),co);

 end fadd;

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值