您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 湘潭大学 计算机组成与原理 算术逻辑单元ALU设计 实验报告
湘潭大学实验报告课程名称 计算机原理与设计 实验名称算术逻辑单元ALU设计实验 页数 专业 班级 同组者姓名 无组别 学号 姓名 实验日期一、实验目的a)理解算术逻辑单元ALU的工作原理。 b)掌握算术逻辑单元ALU的设计方法。 c)验证32位算术逻辑单元ALU的加、减、与、移位功能。 d)按给定数据,完成几种指定的算术和逻辑运算。 二、实验要求1、做好实验预习,掌握运算器的数据传送通路和ALU的功能特性,并熟悉本实验中所用的控制台开关的作用和使用方法。 2、写出实验报告,内容是: ①实验目的; ②按理论分析值填写好表1-2、表1-3,给出对应的仿真波形。 ③列表比较实验数据(2)的理论分析值与实验结果值;并对结果进行分析。实验结果与理论分析值比较,有没有不同?为什么? ④通过本实验,你对运算器ALU有何认识,有什么心得体会? 三、实验原理算术逻辑单元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的运算功能 选择端aluc ALU功能 3 2 1 0 * 0 0 0 BAR加= * 0 0 1 BAR与= * 0 1 0 BAR⊕= * 1 0 0 BAF-= * 1 0 1 BAR+= * 1 1 0 位逻辑左移将16BR= 0 0 1 1 位逻辑左移]0..4[ABR= 0 1 1 1 位逻辑右移]0..4[ABR= 1 1 1 1 位算数右移]0..4[ABR= 注1、* 表示每一位都移至下一更高有效位, “+”是逻辑或,“加”是算术加 四、实验内容1.用Verilog HDL实现输入暂存器lpm_latch的功能,及模式选择计数器LPM_COUNTER的功能。 2.用Verilog HDL表达整个ALU实验电路的功能,对电路进行仿真、引脚锁定、并在实验台上实现其功能。 3.用Verilog HDL设计一个64位的ALU,实现基本的算术逻辑运算。 4.对ALU进行算术运算和逻辑运算的功能仿真,并记录仿真波形。 五、实验环境与设备GW48CP+主系统、pc机六、实验代码设计(含符号说明)ALU代码:modulealu(a,b,aluc,r,z);input[31:0]a,b;//输入端a,b,设置为32位input[3:0]aluc;//输入端aluc,设置为4位output[31:0]r;//输出端r,设置为32位outputz;//输出端zassignr=cal(a,b,aluc);//通过关系为r负值assignz=~|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=ba[4:0];4'b0111:cal=ba[4:0];4'b1111:cal=$signed(b)a[4:0];endcaseendfunctionendmoduleext8to32代码:moduleext8to32(a,s);input[7:0]a;//输入端a,设置为8位output[31:0]s;//输出端s,设置为32位assigns={4{a}};endmodule七、实验检验与测试(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的逻辑运算功能,并记录实验数据。 (3) 验证ALU的算术运算和逻辑运算功能,ALU模块功能可参照表1-1。 表1-3给定了寄存器DRl=DA[7..0]和DR2=DB[7..0]的数据(十六进制),要 求根据此数据对照逻辑功能表所得的理论值(要求课前完成)与实验结果值进行比较(均采用正逻辑0)。 仿真结果波形图: 引脚分配截图: 八、测试数据表1-2 DA[7..0],DB[7..0]设置值检查 R[7..0] Z 寄存器内容 ALUC3 2 1 0 CLR DA[7..0] DB[7..0] FF 0 01010101 1010101010 0000 0 00 1 01010101 1010101010 0000 1 表1-3 ALUC3 2 1 0 DA[7..0] DB[7..0] ALU功能 运算结果R[7..0](CLR=0) 0000 AA 55 R=A+B FF 0001 AA 55 R=A与B 00 0010 AA 55 BAR⊕= FF 0011 AA 55 R:将B逻辑左移A[4..0]位 00 0100 FF 01 R=A-B FE 0101 FF 01 R=A+B FF 0110 FF 01 R:将B逻辑左移16位 00 0111 FF 01 R:将B逻辑右移A[4..0]位 00 1000 FF FF R=A+B FE 1001 FF FF 按位与 FF 1010 FF FF 异或 00 1011 FF FF 无 00 1100 55 01 R=A-B 54 1101 55 01 逻辑或 55 1110 55 01 逻辑左移16位 00 1111 55 01 算术右移[4..0]位 08 九、实验过程中出现的问题及处理情况(包括实验现象、原因分析、排故障的方法等)1.输入代码后,编译程序出现编译错误:反复对照课本,核对代码后修正错误,编译成功;2.将电脑连接GW48CP系统,下载程序时,出现不识别硬件的情况:百度了解到可能是pc端缺少usb驱动控件,之后根据网上的教程,利用Quarstus工具包中只带的驱动包进行驱动安装,安装成功后,硬件识别成功,顺利将源程序下载到GW48CP系统中;3.在GW48CP系统中,测试源程序实际运行情况的时候,出现了与理论推算不相符的情况:经过反复核对排查,发现是硬件引脚设置错误,对引脚设置重新修改后,重新编译源程序,并下载到GW48CP系统后,测试结果与理论相符,实验成功。
本文标题:湘潭大学 计算机组成与原理 算术逻辑单元ALU设计 实验报告
链接地址:https://www.777doc.com/doc-4282753 .html