- 36
- 0
- 约5.02千字
- 约 5页
- 2018-01-04 发布于河南
- 举报
实验CPU算术逻辑单元
实验CPU 算术逻辑单元
姓名: 闫盼蛟 学号: 2009432017
一、实验目的
(1)掌握运算器的工作原理。
(2)验证运算器的功能。
二、实验原理
算术逻辑单元的主要功能是对二进制数据进行定点算术运算、逻辑运算和各种移位操作。算术运算包括定点加减乘除运算;逻辑运算主要有逻辑与、逻辑或、逻辑异或和逻辑非操作。ALU通常有两个数据输入端A和B,一个数据输出端Y以及标志位等。
三、实验要求
1、实验设计目标
设计一个16位算术逻辑单元,满足以下要求。
(1)16位算术逻辑单元能够进行下列运算:加法、减法、加1、减1、与、或、非和传送。用3位运算操作码OP[2..0]进行运算,控制方式如下表所示。
运算操作码OP[2..0] 运算 对标志位Z和C的影响 000 Result(A+B 影响标志位Z和C 001 Result(A+1 影响标志位Z和C 010 Result(A-B 影响标志位Z和C 011 Result(A-1 影响标志位Z和C 100 Result(A and B 影响标志位Z 101 Result(A or B 影响标志位Z 110 Result(not B 影响标志位Z 111 Result( B 不影响标志位Z和C (2)设立两个标志寄存器Z和C。当复位信号reset为低电平时,将这两个标志寄存器清零。当运算结束后,在时钟clk的上升沿改变标志寄存器Z和C的值。运算结果改变标志寄存器C、Z的情况如下:加法、减法、加1、减1运算改变Z、C;与、或、非运算改变Z,C保不变;传送操作保持Z、C不变。因此在运算结束Z、C需要两个D触发器保存。
(3)为了保存操作数A和B,设计两个16位寄存器A和B。当寄存器选择信号sel=0时,如果允许写信号write=1.,则在诗中clk的上升沿将数据输入dinput送入A寄存器;当寄存器选择信号sel=1时,如果允许写信号write=1.,则在诗中clk的上升沿将数据输入dinput送入B寄存器。
(4)算术逻辑单元用一个设计实体完成。
2.顶层设计实体的引脚要求
(1)clk对应试验台上的时钟(单脉冲)。
(2)reset对应实验台上的CPU复位信号CPU-RST。
(3)数据输入dinput对应试验台开关SD15~SD0。
(4)允许写信号write对应试验台开关SA5.
(5)OP[2..0]对应试验台开关SA2~SA0.
(6)寄存器选择信号sel对应试验台开关SA4.
(7)16为运算结果result对应实验台上的指示灯A15~A0.
(8)Z、C标志位对应试验台上的Z、C指示灯。
四、实验代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity ALU is
port(
reset,clk : in std_logic;
OP: in std_logic_vector(2 downto 0);
sel: in std_logic;
write: in std_logic;
C,Z: out std_logic;
Dinput: in std_logic_vector(15 downto 0);
result: out std_logic_vector(15 downto 0)
);
end ALU;
architecture behav of alu is
component reg is
port
(
clr: in std_logic;
D: in std_logic_vector(15 downto 0);
clock: in std_logic;
write: in std_logic;
sel: in std_logic;
Q: out std_logic_vector(15 downto 0)
);
end component;
signal z_tmp :std_logic;
signal A,B :std_logic_vector(15 downto 0);
signal result_t: std_logic_vector(16 downto 0);
begin
A_reg: reg port map
(clr = reset,
D = Dinput,
clock = clk,
write =
原创力文档

文档评论(0)