实验CPU算术逻辑单元.docVIP

  • 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)

1亿VIP精品文档

相关文档