您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 计算机组成原理实验报告 电子科技大学
计算机专业类课程实验报告课程名称:计算机组成原理学院专业:计算机科学与工程计算机科学与技术学生姓名:**学号:20120600*****指导教师:吴晓华日期:2014年11月30日实验报告实验一一、实验名称:ALU设计实验二、实验内容和目的:(1)实验内容:设计一个4bitALU,实现两个4bit二进制数的算术运算和逻辑运算1、算术运算(加、减);2、逻辑运算(与、或、置1、清0);(2)实验目的:1.熟悉ALU的工作原理;2.掌握用硬件描述语言设计ALU的方法;三、实验原理:利用veiloghdl语言编写实现实验要求的逻辑功能实现代码。要求实现两个四位二进制数的算数运算和逻辑运算,有三个输入,分别是输入的两个四位二进制数和一个控制信号,有两个输出,分别是仅为信号和运算结果的输出。考虑到是电路的逻辑代码设计简化,采用case语句来实现。所有的输入都会对最终的结果和进位输出产生影响。在连线时,八个开关分为两组,分别控制两个四位二进制数的各位,有五个指示灯,四个显示结果的输出,一个用来显示进位信号。四、实验器材(设备、元器件)硬件平台:pc软件平台:windowsxp五、实验步骤:先利用仿真软件进行程序的编写,编译调试运行,结果无误后,在仿真软件上绑定对应开关和连线,打开电路板电源,进行控制操作,观察指示灯的亮灭情况,根据实际的逻辑结果来验证实验代码及连线的正确性,若与实际结果不相符,检查连线以及实验代码,重新进行处理。六、实验数据及结果分析:(1)实验代码:modulepz(in1,in2,se,count,c);input[3:0]in1,in2;input[2:0]se;output[3:0]count;outputc;reg[3:0]count;regc;always@(in1,in2,se)begincase(se)3'b000:{c,count}=in1+in2;3'b001:{c,count}=in1-in2;3'b010:count=in1&in2;3'b011:count=in1|in2;3'b100:count=0000;3'b101:count=1111;default:count=5'bx;endcaseendendmodule(2)实验结果照片:八.实验结论、心得体会和改进建议:(1)思考题:在进行算术运时,7(0111)+8(1000)=11117(0111)-8(1000)=1111其输出结果都是1111,为什么?答:因为计算时都采用二进制补码来运算,而前者进行相加的两个数都是正数,其补码为其本身。而后者进行补码的减法运算时,要对减数求补,转换成加法运算,所以最终所得结果相同。(2)实验结论、心得体会和改进建议:在设计逻辑电路是使用了实现该逻辑功能最简单的方式,case语句,在编写实验代码时需要注意always语句中的输出变量必须提前声明为reg型的变量。注意根据实验指导书绑定正确的接线。电子科技大学实验报告实验二一、实验名称:静态存储器的设计二、实验学时:4三、实验内容和目的:(1)实验目的:1.掌握存贮器的读写控制方法;(读信号、写信号、片选信号)2.掌握存储器的字扩展和位扩展方法;3.掌握用硬件描述语言设计存贮器的方法;4.了解存储器种类、工作原理和特点.(2)实验内容:用字扩展和位扩展的方式,设计一个32X8的静态存储器,能够对其随机的读写.其中:32表示地址的寻址空间大小,8表示数据单元的位数;四、实验原理:利用veiloghdl语言编写实现实验要求的逻辑功能实现代码。1.设计一个16X4的可随机读写的存储器模块;2.利用16X4存储器模块,通过实例化完成对所需要的存储器,因为是16X4扩展为32X8,所以将16X4两两分为一组刚好两组。3.数据、地址的输入/输出a、数据/地址的输入:开关控制;b、数据的输出:指示灯显示;4.控制信号a、片选:低有效;b、读:低有效;c、写:上升沿有效;五、实验器材(设备、元器件)硬件平台:pc软件平台:windowsxp六、实验步骤:先根据实验内容,实验目的,实验要求编写实现所需逻辑功能的实验代码,然后在仿真软件上进行编译链接运行,无误后进行宋旭单元与电路板相关接口的绑定,对电路板进行连线,练好后进行实际操作,观察电路板上指示灯的亮灭情况,根据实际的逻辑结果判断实验代码以及连线是否正确,若输出有误,则重新检查连线以及代码是否有逻辑问题。七、实验数据及结果分析:(1)实验代码:modulem(din,addr,wr,rd,cs,dout);parameterD_WIDTH=8;parameterA_WIDTH=5;input[D_WIDTH-1:0]din;input[A_WIDTH-1:0]addr;inputwr,rd,cs;output[7:0]dout;reg[D_WIDTH-1:0]ram[(2**A_WIDTH)-1:0];wire[D_WIDTH-1:0]dout;ram16_4ram16_4_1(.din(din[3:0]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs(addr[4]|cs),.dout(dout[3:0]));ram16_4ram16_4_2(.din(din[7:4]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs(addr[4]|cs),.dout(dout[7:4]));ram16_4ram16_4_3(.din(din[3:0]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs((~addr[4])|cs),.dout(dout[3:0]));ram16_4ram16_4_4(.din(din[7:4]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs((~addr[4])|cs),.dout(dout[7:4]));endmodulemoduleram16_4(din,addr,wr,rd,cs,dout);parameterD_WIDTH=4;parameterA_WIDTH=4;input[D_WIDTH-1:0]din;input[A_WIDTH-1:0]addr;inputwr,rd,cs;output[D_WIDTH-1:0]dout;reg[D_WIDTH-1:0]ram[(2**A_WIDTH)-1:0];wire[D_WIDTH-1:0]dout;always@(posedgewr)if(!cs)ram[addr]=din;assigndout=(!(rd||cs))?ram[addr]:4'bzzzz;endmodule(2)实验结果截图:八、实验结论、心得体会和改进建议:对于存储器的扩充有字扩充和位扩充,在编写实验代码时首先得编写出实验所需要的基本单元16X4的存储器,通过对该存储器模块的实例化来实现实验所需要用到的存储器,实验内容比较简单,只要按照实验要求和步骤结合实验目的进行正确操作,实验都能成功.
本文标题:计算机组成原理实验报告 电子科技大学
链接地址:https://www.777doc.com/doc-3093157 .html