VHDL硬件描述语言四位加法器实验报告概要.doc
文本预览下载声明
题目:硬件描述语言实验四:四位加法器
姓名:***** 学号: ******
地点: 主楼402 时间: 3月21日
一、实验目的:进一步练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言基本设计实体的编写方法。
二、实验环境:PC个人计算机、Windows XP操作系统、Quartus II集成开发环境软件。
三、设计要求:采用三种方式设计一个四位加法器,实体名称分别为“adder4”、“adder4_2”、和“adder_3”,四位加法器的引脚与功能如下表。
端口模式
端口名
数据类型
说明
in
(输入)
a
std_logic_vector(3 downto 0)
加数
b
加数
ci
std_logic
低位进位
out
(输出)
s
std_logic_vector(3 downto 0)
和
co
std_logic
高位进位
四、实验步骤:
1、采用寄存器传输的描述方式:
首先新建一个工程,命名为“adder4”,然后编辑代码。注意在模块内部(构造体说明部分)需要定义三个连接线,定义语句为:
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;
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 rtl;
仿真波形图如下:
仿真电路图如下:
由上图可知设计是正确的。
采用行为描述方式:
首先新建一个工程,命名为“adder4_2”,然后编辑代码。在编写代码过程中应注意以下几个要点:
1、VHDL语言可以进行高层次抽象的行为描述,而不用描述硬件电路的具体逻辑关系。例如在描述加法器时,可以用如下语句:
s = a + b + ci;
上述描述方法需要用到ieee库中的ieee.std_logic_unsigned.all。
2、为了能够生成进位,四位加法器在内部应得到五位的和,因此两个加数也应扩充为五位。扩充字长可应用并置运算完成。如下语句将四位信号a在最高端并置一个’0’而成为五位信号aa:
aa = ‘0’ a;
将五位信号ss的低四位赋值给四位信号s的语句如下:
s = ss(3 downto 0);
和的最高位作为加法器的进位输出。
代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity adder4_2 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_2 is
signal aa,bb,ss:std_logic_vector(4 downto 0);
begin
aa = 0a;
bb = 0b;
ss = aa+bb+ci;
s = ss(3 downto 0);
co= ss(4);
end rtl;
仿真波形图如下:
仿真电路图如下:
由上图可知设计是正确的。
采用
显示全部