当前位置:文档之家› 湘潭大学计算机原理 实验一 算术逻辑单元ALU实验报告

湘潭大学计算机原理 实验一 算术逻辑单元ALU实验报告

计算机原理与设计
实验报告
实验一算术逻辑单元ALU
姓名: XXX
学号: 2013551728
班级: 13级软件工程2班
实验日期: 2014年 10 月22 日
一.实验目的
1.理解算术逻辑单元ALU的工作原理。

2.掌握算术逻辑单元ALU的设计方法。

3.验证32位算术逻辑单元ALU的加、减、与、移位功能。

4.按给定数据,完成几种指定的算术和逻辑运算。

二.实验内容
算术逻辑单元ALU的设计如图1-1所示。

其中运算器addsub32能实现32位的加减运算。

参加运算的两个32位数据分别为A[31..0]和B[31..0],运算模式由aluc[3..0]的16种组合决定,而aluc[3..0]的值由4位2进制计数器LPM_COUNTER产生,计数时钟是Sclk(图1-1);r[31..0]为输出结果,Z为运算后的零标志位。

ALU功能如表1-1所示。

表1-1 ALU的运算功能
注1、* 表示每一位都移至下一更高有效位, “+”是逻辑或,“加”是算术加
三.实验步骤
(1)设计ALU元件
ALU元件设计代码:
module alu (a,b,aluc,r,z);
input [31:0] a,b;
input [3:0] aluc;
output [31:0] r;
output z;
assign r = cal(a,b,aluc);
assign z = ~|r;
function [31:0] cal;
input [31:0] a,b;
input [3:0] aluc;
casex (aluc)
4'bx000: cal=a+b;
4'bx100: cal=a-b;
4'bx001: cal=a&b;
4'bx101: cal=a|b;
4'bx010: cal=a^b;
4'bx110: cal={b[15:0],16'h0};
4'bx011: cal=b<<a[4:0];
4'b0111: cal=b>>a[4:0];
4'b1111: cal=$signed(b)>>>a[4:0];
endcase
endfunction
endmodule
(2)以原理图方式建立顶层文件工程
原理图如下:
(3)查看波形图波形图如下:
(4)分配引脚结构图如下:
引脚分配表如下:
四.实验任务
(1)按图1-1所示,在本验证性示例中用数据选择开关(键3控制)的高/低电平选择总线通道上的8位数据进入对应的数据锁存器lpm_latch中;即首先将键3输入高电平,用键2、键1分别向DA[7..0] 置数01010101(55H),这时在数码管4/3上显示输入的数据(55H);然后用键3输入低电平,再用键2、键1分别向DB[7..0]置数10101010(AAH),这时在数码管2/1上显示输入的数据(AAH);这时表示在图1-1中的两个锁存器中分别被锁入了加数55H和被加数AAH。

可双击图1-1的ALU元件,了解其Verilog HDL描述。

(2)键6控制时钟SCLK,可设置表1-1的aluc[3..0]=0 ~ F。

现连续按动键6,设置操作方式选择aluc[3..0]=0000(加法操作),使数码管8显示0,以验证ALU的算术运算功能:当键7设置clr=0时,数码管6/5=FF(55H+AAH=FFH);
当键7设置cn=1(复位)时,数码管7/6/5=100(Z=1);
键KEY6控制时钟SCLK,设置aluc[3..0]=0~F,KEY7设置clr=0或clr=1,验证ALU 的逻辑运算功能,并记录实验数据。

表1-2 DA[7..0],DB[7..0]设置值检查
表1-3给定了寄存器DRl=DA[7..0]和DR2=DB[7..0]的数据(十六进制),要求根据此数据对照逻辑功能表所得的理论值(要求课前完成)与实验结果值进行比较(均采用正逻辑0)。

表1-3
四.实验心得
这次实验总体难度并不大,较难的地方是由于第一次接触Quartus这个软件,所以刚开始在应用上出现了很多问题,比如不知道该如何封装元件、如何测试波形、如何设置引脚等等。

为了解决这样的问题我上网搜索了很多资料,也请教了老师和同学,最终学会了这些,让我受益很大。

相关主题