计算机组成原理实验报告 电子科技大学

更新时间:2024-07-03 11:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机专业类课程

实验报 告

课程名称:计算机组成原理

学院专业:计算机科学与工程 计算机科学与技术学生姓名:**

学 号:20120600***** 指导教师:吴晓华

日 期:2014年11月30日

实 验 报 告

实验一

一、实验名称:

ALU设计实验

二、实验内容和目的 :

(1)实验内容:

设计一个4bit ALU,实现两个4bit二进制数的算术运算和逻辑运算

1、算术运算(加、减);

2、逻辑运算(与、或、置1、清0);

(2)实验目的:

1.熟悉ALU的工作原理;

2. 掌握用硬件描述语言设计ALU的方法;

三、实验原理:

利用veilog hdl语言编写实现实验要求的逻辑功能实现代码。要求

实现两个四位二进制数的算数运算和逻辑运算,有三个输入,分别

是输入的两个四位二进制数和一个控制信号,有两个输出,分别是

仅为信号和运算结果的输出。考虑到是电路的逻辑代码设计简化,

采用case语句来实现。所有的输入都会对最终的结果和进位输出产

生影响。在连线时,八个开关分为两组,分别控制两个四位二进制

数的各位,有五个指示灯,四个显示结果的输出,一个用来显示进

位信号。

四、实验器材(设备、元器件)

硬件平台:pc

软件平台:windows xp

五、实验步骤:

先利用仿真软件进行程序的编写,编译调试运行,结果无误后,在

仿真软件上绑定对应开关和连线,打开电路板电源,进行控制操

作,观察指示灯的亮灭情况,根据实际的逻辑结果来验证实验代码

及连线的正确性,若与实际结果不相符,检查连线以及实验代码,

重新进行处理。

六、实验数据及结果分析:

(1)实验代码:

module pz(in1,in2,se,count,c); input[3:0] in1,in2; input[2:0] se; output[3:0] count; output c; reg[3:0] count; reg c;

always@(in1,in2,se) begin case(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; endcase end

endmodule

(2)实验结果照片:

八.实验结论、心得体会和改进建议: (1)思考题: 在进行算术运时,

7(0111)+8(1000)=1111 7(0111)- 8(1000)=1111

其输出结果都是1111,为什么?

答:因为计算时都采用二进制补码来运算,而前者进行相加的两个数都是正数,其补码为其本身。而后者进行补码的减法运算

时,要对减数求补,转换成加法运算,所以最终所得结果相同。

(2)实验结论、心得体会和改进建议:

在设计逻辑电路是使用了实现该逻辑功能最简单的方式,case语句,在编写实验代码时需要注意always语句中的输出变量必须提前声明为reg型的变量。注意根据实验指导书绑定正确的接线。

电 子 科 技 大 学

实 验 报 告

实验二

一、实验名称:

静态存储器的设计

二、实验学时:4

三、实验内容和目的:

(1)实验目的:

1.掌握存贮器的读写控制方法;(读信号、写信号、片选信号)

2.掌握存储器的字扩展和位扩展方法;

3.掌握用硬件描述语言设计存贮器的方法;

4.了解存储器种类、工作原理和特点.

(2)实验内容:

用字扩展和位扩展的方式,设计一个 32X8的静态存储器,能

够对其随机的读写.

其中: 32表示地址的寻址空间大小,8表示数据单元的位数;

四、实验原理:

利用veilog hdl语言编写实现实验要求的逻辑功能实现代码。

1.设计一个16X4的可随机读写的存储器模块;

2.利用16X4存储器模块,通过实例化完成对所需要的存储器,因为

是16X4扩展为32X 8,所以将16X4两两分为一组刚好两组 。

3.数据、地址的输入/输出

a 、数据/地址的输入: 开关控制;

b 、数据的输出: 指示灯显示;

4.控制信号

a 、片选: 低有效;

b 、读: 低有效;

c 、写: 上升沿有效;

五、实验器材(设备、元器件)

硬件平台:pc

软件平台:windows xp

六、实验步骤:

先根据实验内容,实验目的,实验要求编写实现所需逻辑功能的实

验代码,然后在仿真软件上进行编译链接运行,无误后进行宋旭单

元与电路板相关接口的绑定,对电路板进行连线,练好后进行实际

操作,观察电路板上指示灯的亮灭情况,根据实际的逻辑结果判断

实验代码以及连线是否正确,若输出有误,则重新检查连线以及代

码是否有逻辑问题。

七、实验数据及结果分析: (1)实验代码:

module m(din,addr,wr,rd,cs,dout);

reg[D_WIDTH-1:0] ram[(2**A_WIDTH)-1:0]; wire [D_WIDTH-1:0] dout; input[D_WIDTH-1:0] din; input[A_WIDTH-1:0] addr; input wr,rd,cs; output [7:0]dout; parameter D_WIDTH = 8; parameter A_WIDTH = 5;

ram16_4

ram16_4_1(.din(din[3:0]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs(addr[4]|cs),.dout(dout[3:0]));

ram16_4

ram16_4_2(.din(din[7:4]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs(addr[4]|cs),.dout(dout[7:4]));

ram16_4

ram16_4_3(.din(din[3:0]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs((~addr[4])|cs),.dout(dout[3:0]));

ram16_4

ram16_4_4(.din(din[7:4]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs((~addr[4])|cs),.dout(dout[7:4]));

endmodule

module ram16_4(din,addr,wr,rd,cs,dout);

parameter D_WIDTH = 4; parameter A_WIDTH = 4;

input[D_WIDTH-1:0] din; input[A_WIDTH-1:0] addr; input wr,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 @(posedge wr) if (!cs)

ram[addr] <= din;

assign dout = (!(rd||cs))?ram[addr]:4'bzzzz;

endmodule

(2)实验结果截图:

八、实验结论、心得体会和改进建议:

对于存储器的扩充有字扩充和位扩充,在编写实验代码时首先得编

写出实验所需要的基本单元16X4的存储器,通过对该存储器模块的

实例化来实现实验所需要用到的存储器,实验内容比较简单,只要

按照实验要求和步骤结合实验目的进行正确操作,实验都能成功.

本文来源:https://www.bwwdw.com/article/8gs.html

Top