计算机组成原理实验报告_计算机组成原理实验三
计算机组成原理实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“计算机组成原理实验三”。
课程名称:计算机组成原理学
院:计算机科学与工程专
业:计算机科学与技术指导教师:廖建明学生姓名:林怡学
号:实验成绩:日
期:实验报告
2012060020023
2014 年 11
日月
电 子 科 技 大 学
实
验
报
告
一、实验一:ALU设计实验
二、实验室名称:主楼A2-411 实验学时:4
三、实验目的:
1.熟悉ALU的工作原理。2.掌握多个ALU的扩展方法。
3.掌握用硬件描述语言设计ALU的方法。
4.掌握数据的暂存和分时传送的方法。
四、实验内容
设计一个8bit ALU,实现两个8bit二进制数的算术运算和逻辑运算, ★算术运算(加、减);★逻辑运算(与、或、置
1、清0);实验要求:
1.设计一个4bitALU模块;
2.如何用4bitALU实现8bitALU的功能?
3.数据的输入/输出
输入: 只有8个开关,如何分时输入数据?
输出: 8个指示灯(数据),1个指示灯(进位/借位)
4.控制端输入
模式控制:(算术 / 逻辑)
运算方式控制:(+、-/ and、or、set、clr)
分时控制位:(输入数据的使能端)
数据输入控制脉冲:
五、实验原理: 实验原理图如图一:
图一
由图可知,ALU模块有四个输入,分别为寄存器A、B,模式控制端M与逻辑/算术运算方式控制端SE。输出为四位的D,同时还有一个进位/借位端cout。
其中M端为一位的输入,当M=1时,模块将用于逻辑运算,而M=0时,模块将进行算术运算。而两种运算模式下,两位的输入端SE的不同的值又将控制+、-/ and、or、set、clr等不同的运算方式。所以可以考虑采用if..else..结合case模块的方式来实现always块中的功能描述。
六、实验器材:
PC机、Xilinx ise7.1 集成开发坏境、pq208芯片一块
七、实验步骤:
1、在Xilinx ise7.1 集成开发坏境中输入实验代码,保存并验证其正确性;
2、将模块中使用到的开关与pq208的各个引脚的标号对应起来,并在xilinx中将其设置好;
3、将所需的开关与pq208的对应引脚用电线连接起来,之后将验证正确的代码下载到pq208芯片中;
4、根据实验要求操作各开关,观察指示灯的结果以验证实验的正确性;
实验代码如下:
module alu(A,B,M,SE,D,cout);input [3:0] A;input [3:0] B;input M;input [1:0] SE;output [3:0] D;output cout;reg [3:0] D;reg cout;always @(A,B,M,SE)begin
// 逻辑运算模式 if(M)begin case(SE)2'b00:D=A&B;//与运算 2'b01:D=A|B;//或运算 2'b10:D=4'b1111;//置1 2'b11:D=4'b0000;//置0 endcase end
else //算术运算模式
begin
case(SE)
2'b00: {cout,D}=A+B;//加法运算 2'b01:{cout,D}=A+B;2'b10: {cout,D}=A-B;//减法运算 2'b11:{cout,D}=A-B;endcase end end endmodule
I/O 端口与指示灯的连接方式: A[3:0] 与K1,K2,K3,K4相连,B[3:0]与K5,K6,K7,K8相连,M与K10相连,SE与K12,K11相连,cout与L5相连,输出端D[3:0]分别与L4,L3,L2,L1相连。
八、实验数据及结果分析:
电路图如图二、三所示:
图二
图三 图三中,当输入为0-1时,发现指示灯结果如为D[3:0]=1111 且cout=1。分析后可知,这个结果是由于-1的四位二进制补码表示为1111。
九、总结、改进建议及心得体会:
通过本次实验,我不仅完成了Verilog HDL语言从书本知识到实践的转化,同时也加深了对计算机CPU中的ALU模块的各种功能的了解。把自己设计的ALU模块加载到pq208芯片上进行仿真验证,非常好地锻炼了我的动手能力,看到自己写出的代码能够有实质性的成果展示也更好的调动了我的积极性。
总体来说,这次实验是非常有收获的。
电 子 科 技 大 学
实
验
报
告
一、实验二:存贮器设计实验
二、实验室名称:主楼A2-411 实验学时:4
三、实验目的:
1.掌握存贮器的读写控制方法,(读信号、写信号、片选信号)。2.掌握存储器的字扩展和位扩展方法。3.掌握用硬件描述语言设计存贮器的方法。4.了解存储器种类、工作原理和特点。
四、实验原理: 实验原理图如下图:
分析上图可知,我们要把16*4的存储器扩展为一个32*8的存储器模块,总共需要4块16*4的存储器模块。我们首先需要把两块16*4的模块连接在一起扩展为一块16*8的存储器模块,再对两块16*8的模块进行字扩展,最终把它们扩展为一块32*8的静态存储器模块。
五、实验内容:
用字扩展和位扩展的方式,设计一个32X8的静态存储器,能够对其随机的读写。其中:32表示地址的寻址空间大小,8表示数据单元的位数。要求:
1.设计一个16X4的可随机读写的存储器模块。
2.利用16X4存储器模块,如何通过级连实现32X8的存储器的功能。3.数据、地址的输入/输出
数据/地址的输入:开关控制。
数据的输出:指示灯显示。4.控制信号
片选:低有效。
读:低有效。
写:上升沿有效。
六、实验器材:
PC机、Xilinx ise7.1 集成开发坏境、pq208芯片一块
七、实验步骤:
1、把两块16*4的存储器模块位扩展为16*8的存储器模块;
2、继续把两块16*8的存储器模块字扩展为一块32*8的存储器模块;
3、在Xilinx ise7.1 集成开发坏境中把写好的实验代码保存;
4、将模块中使用到的开关与pq208的各个引脚的标号对应起来,将所需的开关与pq208的对应引脚用电线连接起来,之后将验证正确的代码下载到pq208芯片中;
5、根据实验要求操作各开关,对存储器进行读写操作并观察指示灯的结果以验证实验的正确性;
实验代码如下: 16*4存储器设计模块
module ram16_4(din,addr,wr,rd,cs,dout);
parameter D_WIDTH = 4;
parameter A_WIDTH = 4;
input[D_WIDTH-1:0] din;
//D[3:0] input[A_WIDTH-1:0] addr;
//AD[3:0] input wr,rd,cs;output[D_WIDTH-1:0]dout;
reg [D_WIDTH-1:0] ram [(2**A_WIDTH)-1:0];//16*4
wire [D_WIDTH-1:0] dout;
always @(posedge wr)
if(!cs)
ram[addr]
aign dout =(!(rd||cs))?ram[addr]:4'bzzzz;
//rd cs同时为低电平 ram[addr] endmodule 16*8存储器设计模块
module ram16_8(d,ad,wr,rd,cs,dout);
input[4:0] ad;input[7:0] d;input wr,rd,cs;output[7:0] dout;ram16_4 m1(.din(d[3:0]),.addr(ad[3:0]),.wr(wr),.rd(rd),.cs(ad[4]|cs),.dout(dout[3:0]));ram16_4 m2(.din(d[7:4]),.addr(ad[3:0]),.wr(wr),.rd(rd),.cs(~ad[4]|cs),.dout(dout[7:4]));endmodule
32*8存储器设计模块
module ram32_8(d,ad,wr,rd,cs,dout);
input[4:0] ad;input[7:0] d;input wr,rd,cs;output[7:0] dout;ram16_8 ram16_8_1(.d(d[3:0]),.ad(ad[3:0]),.wr(wr),.rd(rd),.cs(ad[4]|cs),.dout(dout[3:0]));ram16_8 ram16_8_2(.d(d[7:4]),.ad(ad[3:0]),.wr(wr),.rd(rd),.cs(~ad[4]|cs),.dout(dout[7:4]));endmodule
八、实验数据及结果分析:
实验结果图如下:
九、总结、改进建议及心得体会:
本实验对存储器模块进行了字扩展和位扩展,将16*4的模块扩展为32*8的存储器模块,加深了我对于存储器扩展这部分知识的理解,同时让我对于Verilog HDL语言中的模块调用这部分的机制有了更深入的体会。
在验证实验结果的环节,自己动手操作对存储器模块进行读写操作也使我对于存储器这个计算机的重要组成部分有了一个更加感性的认识,对于它的寻址方式,片选逻辑等机制都有了更深层次的掌握。