您好,欢迎访问三七文档
湘潭大学实验报告课程名称:计算机原理与组成实验名称:_算数逻辑单元ALU_页数:5专业:软件工程班级:一班同组者姓名:组别:学号:2015551331姓名:周佳倩实验日期:_2016年10月13日一、实验目的1.理解算术逻辑单元ALU的工作原理。2.掌握算术逻辑单元ALU的设计方法。3.验证32位算术逻辑单元ALU的加、减、与、移位功能。4.按给定数据,完成几种指定的算术和逻辑运算。二、实验要求1.做好实验预习,掌握运算器的数据传送通路和ALU的功能特性,并熟悉本实验中所用的控制台开关的作用和使用方法。2.写出实验报告,内容是:1)实验目的;2)按理论分析值填写好表1-2、表1-3,给出对应的仿真波形。3)列表比较实验数据(2)的理论分析值与实验结果值;并对结果进行分析。实验结果与理论分析值比较,有没有不同?为什么?4)通过本实验,你对运算器ALU有何认识,有什么心得体会?三、实验原理(1)设计ALU元件在QuartusII环境下,用文本输入编辑器TextEditor输入ALU.V算术逻辑单元文件,编译VerilogHDL文件,并将ALU.V文件制作成一个可调用的原理图元件。(2)以原理图方式建立顶层文件工程选择图形方式。根据图1-1输入实验电路图,从QuartusII的基本元件库中将各元件调入图形编辑窗口、连线,添加输入输出引脚。将所设计的图形文件ALU_sy.bdf保存到原先建立的文件夹中,将当前文件设置成工程文件,以后的操作就都是对当前工程文件进行的。(3)器件选择选择Cyclone系列,在Devices中选择器件EP1C12QC240C8。编译,引脚锁定,再编译。引脚锁定后需要再次进行编译,才能将锁定信息确定下来,同时生成芯片编程/配置所需要的各种文件。(4)芯片编程Programming(可以直接选择光盘中的示例已完成的设计进行验证实验)打开编程窗口。将配置文件ALU_sy.sof下载进GW48系列现代计算机组成原理系统中的FPGA中。(5)选择实验系统的电路模式是NO.0,验证ALU的运算器的算术运算和逻辑运算功能.根据表1-1,从键盘输入数据A[7..0]和B[7..0],并设置S[3..0]、M、Cy,验证ALU运算器的算术运算和逻辑运算功能,记录实验数据。图1-1算术逻辑单元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-1ALU的运算功能选择端alucALU功能3210*000BAR加*001BAR与*010BAR*100BAF-*101BAR*110位逻辑左移将16BR0011位逻辑左移]0..4[ABR0111位逻辑右移]0..4[ABR1111位算数右移]0..4[ABR注1、*表示每一位都移至下一更高有效位,“+”是逻辑或,“加”是算术加五、实验环境与设备1.实验软件:Quartus13.02.实验器材:SOPC_EDA现代计算机组成原理系统Cw48Cp++3.实验操作系统:MicrosoftwindowsXP六、实验代码设计(行符号说明)ALU原件设计代码:modulealu(a,b,aluc,r,z);input[31:0]a,b;//输入两个32位数据input[3:0]aluc;//用16种组合表示9种运算模式output[31:0]r;//输出结果outputz;//零标志位assignr=cal(a,b,aluc);assignz=~|r;//把r的所有32位或起来再取反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};//逻辑左移16位4'bx011:cal=ba[4:0];//逻辑左移[4..0]位4'b0111:cal=ba[4:0];//逻辑右移[4..0]位4'b1111:cal=$signed(b)a[4:0];//算数右移[4..0]位endcaseendfunctionendmodule将8位输入扩展成32位:moduleext8to32(a,s);input[7:0]a;output[31:0]s;assigns={4{a}};//把a扩展为32位endmodule七、实验检验与测试仿真波形:八、测试数据验证ALU的逻辑运算功能,ALU模块功能可参照表1-1,并记录实验数据。表1-2DA[7..0],DB[7..0]设置值检查R[7..0]Z寄存器内容ALUC3210CLRDA[7..0]DB[7..0]00101010101101010101010表1-3给定了寄存器DRl=DA[7..0]和DR2=DB[7..0]的数据(十六进制)根据此数据对照逻辑功能表所得的理论值(要求课前完成)与实验结果值进行比较(均采用正逻辑0)表1-3ALUC3210DA[7.0]DB[7..0]ALU功能运算结果R[7..0](CLR=0)0000AA55加法FF0001AA55按位与000010AA55异或FF0011AA55逻辑左移[4..0]位000100FF01减法FF0101FF01逻辑或FF0110FF01逻辑左移16位000111FF01逻辑右移[4..0]位001000FFFF加法FE1001FFFF按位与FF1010FFFF异或001011FFFF无0011005501减法5411015501逻辑或5511105501逻辑左移16位0011115501算数右移[4..0]位08九、实验过程中出现的问题及处理情况(包括实验现象、原因分析、排除故障方法等)1.编写的代码编译不成功,出错原因是语法错误,没注意符号格式。2.电路图编译时出错,原因是线路为连接到位。3.在仿真过程中,有几条输出波形图出现错误,没有波形是直线,原因是画电路图时,线路连接错误。
本文标题:算数逻辑单元ALU
链接地址:https://www.777doc.com/doc-2096910 .html