推荐-湘潭大学计算机原理 实验一 算术逻辑单元alu实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机原理与设计

实验报告

实验一算术逻辑单元ALU

姓名: XXX

学号: 20XX551728

班级: 13级软件工程2班

实验日期: 20XX年 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<

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设置=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这个软件,所以刚开始在应用上出现了很多问题,比如不知道该如何封装元件、如何测试波形、如何设置引脚等等。为了解决这样的问题我上网搜索了很多资料,也请教了老师和同学,最终学会了这些,让我受益很大。

相关文档
最新文档