4位加法器实验报告

硬件描述语言实验

题目:

四位全加器

学 院 数学与计算机学院 学科门类 xxxxxxxxxx 专 业 xxxxxxxxxx 学 号 姓 名 x 指导教师 xxxx

20xx年 x 月xx日

1

1、实验目的:练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言行为描述的编写方法。

2、实验环境:PC个人计算机、Windows XP操作系统、Quartus II集成开发环境软件。 3、实验要求:设计一个四位加法器,其引脚及其功能如下表。

端口模式 in B (输入) Ci out (输出) 4、实验步骤:

(1)用RTL描述方式描述4位加法器

①RTL描述方式是一种明确规定寄存器描述的方法,它要求在描述时要么采用寄存器硬件的一一对应的直接描述,要么采用寄存器之间的功能描述。RTL描述方式可以进行逻辑综合,这是其他描述方式所不具备的特点。 ②编辑代码

这种描述方法详细描述了加法器的计算过程,即写出了每一位的计算和进位方法。模块内部(构造体说明部分)需要定义三个连接线,定义语句为:signal c0,c1,c2 : std_logic 代码如下: library ieee;

use ieee.std_logic_1164.all; entity adder4 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 rtl of adder4 is signal c0,c1,c2:std_logic;

S Co std_logic std_logic_vector(3 downto 0) std_logic 低位进位 和 高位进位 端口名 A std_logic_vector(3 downto 0) 加数 数据类型 说明 加数 2

begin

s(0) <= a (0) xor b(0) xor ci;

c0<= (a(0) and b(0)) or (a(0) and ci) or (b(0) and ci); s(1) <= a (1) xor b(1) xor c0;

c1<= (a(1) and b(1)) or (a(1) and c0) or (b(1) and c0); s(2) <= a (2) xor b(2) xor c1;

c2<= (a(2) and b(2)) or (a(2) and c1) or (b(2) and c1); s(3) <= a (3) xor b(3) xor c2;

co<= (a(3) and b(3)) or (a(3) and c2) or (b(3) and c2); end architecture rtl; ③仿真结果

(2)用行为描述方式描述4位加法器

①行为描述是对系统数学模型的描述,其抽象程度比寄存器传输描述方式和结构描述方式更高。在行为描述方式的程序中大量采用算术运算、关系运算等难以进行逻辑综合和不能进行逻辑综合的VHDL语句。 ②编辑代码

VHDL语言可以进行高层次抽象的行为描述,而不用描述硬件电路的具体逻辑关系。可以用

s<=a+b+ci;

来描述加法器,这种描述方法需要用到ieee库中ieee.std_logic_unsigned.all。

为了能够生成进位,四位加法器在内部应得到五位的和,因此两个加数也应扩充为五位。扩充字长可应用并置运算完成。如下语句将四位信号a在最高端并置一个’0’而成为五位信

3

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4