第一篇:计算机组成原理实验(存储器)
实验3 半导体存储器原理实验
(一)、实验目的
(1)熟悉静态随机存储器RAM和只读存储器ROM的工作特性和使用方法;(2)熟悉半导体存储器存储和读出数据的过程;(3)了解使用半导体存储器电路时的定时要求。
(二)、实验要求
利用Quartus Ⅱ器件库提供的参数化存储单元,设计一个由128X8位的RAM和128X8位的ROM构成的存储器系统。请设计有关逻辑电路,要求仿真通过,并设计波形文件,验证该存储器系统的存储与读出。
(三)、实验原理图与仿真图
ram内所存储的数据:
rom内所存储的数据:
仿真图如下:
(四)心得体会
本次试验中,我们应该熟练掌握Quartus Ⅱ软件的使用方法;熟悉静态随机存储器RAM和只读存储器ROM的工作特性和使用方法;熟悉半导体存储器存储和读出数据的过程;了解使用半导体存储器电路时的定时要求。并且制定实验方案然后进行实验验证。要学会将学到的知识运用到实际中。
第二篇:计算机组成原理实验报告6-存储器EM实验
2.6 存储器EM实验
姓名:孙坚
学号:134173733
班级:13计算机
日期:2015.5.29
一.实验要求:利用CPTH 实验仪上的K16..K23 开关做为DBUS 的数据,其它开关做为控制信号,实现程序存储器EM 的读写操作。
二.实验目的:了解模型机中程序存储器EM 的工作原理及控制方法。
三.实验电路:
存储器EM 由一片6116RAM 构成,是用户存放程序和数据的地方。存储器EM 通过一片74HC245 与数据总线相连。存储器EM 的地址可选择由PC或MAR 提供。
存储器EM 的数据输出直接接到指令总线IBUS,指令总线IBUS 的数据还可以来自一片74HC245。当ICOE 为0 时,这片74HC245 输出中断指令B8。
EM原理图
连接线表
四.实验数据及步骤:
实验1:PC/MAR 输出地址选择
置控制信号为:
以下存贮器EM实验均由MAR提供地址
实验2:存储器EM 写实验
将地址0 写入MAR
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据00H
置控制信号为:
按STEP键, 将地址0 写入MAR
将数据11H写入EM[0]
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据11H
置控制信号为:
按STEP键, 将数据11H写入EM[0]
将地址1 写入MAR
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据01H
置控制信号为:
按STEP键, 将地址1 写入MAR
将数据22H写入EM[1]
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据22H
置控制信号为:
按STEP键,将数据22H写入EM[1]
实验3:存储器EM 读实验
将地址0 写入MAR
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据00H
置控制信号为:
按STEP键, 将地址0 写入MAR
读EM[0]
置控制信号为:
EM[0]被读出:11H
将地址1写入MAR
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据01H
置控制信号为:
按STEP键,将地址0写入MAR
读EM[1]
置控制信号为:
EM[1]被读出:22H
实验4:存储器打入IR指令寄存器/uPC实验 将地址0写入MAR
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据00H
置控制信号为:
按STEP键,将地址0写入MAR
读EM[0],写入IR及uPC
置控制信号为:
EM[0]被读出:11H 按STEP键,将EM[0]写入IR及uPC,IR=11H,uPC=10H
将地址1写入MAR
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据01H
置控制信号为:
按STEP键,将地址1写入MAR
读EM[1],写入IR及uPC
置控制信号为:
EM[1]被读出:22H 按STEP键,将地址EM[1]写入IR及uPC,IR=22H,uPC=20H
实验5:使用实验仪小键盘输入EM
1.连接J1,J2
2.打开电源
3.按TV/ME键,选择EM
4.输入两位地址,00 5.按NEXT,进入程序修改 6.按两位程序数据
7.按NEXT选择下个地址/按LAST选择上个地址 8.重复6,7 步输入程序 9.按RST结束
五.心得体会:
通过此次实验,我了解了模型机中程序存储器EM 的工作原理及控制方法。对存储器的地址的读和写都有了比较深刻的理解,并且自己实践动手的能力又进一步的增强了。
第三篇:计算机组成原理实验
ALU设计
module ALU(ALU_OP,AB_SW,F_LED_SW,LED);
input[2:0] ALU_OP,AB_SW,F_LED_SW;
output[7:0] LED;reg[7:0] LED;
reg[31:0] A,B,F;reg OF,ZF;
always@(*)begin
end
always@(*)begin
ZF=0;OF=0;case(ALU_OP)
3'b000: begin F=A&B;end 3'b001: begin F=A|B;end 3'b010: begin F=A^B;end 3'b011: begin F=~(A|B);end 3'b100: begin {OF,F}=A+B;OF=OF^F[31];end 3'b101: begin {OF,F}=A-B;OF=OF^F[31];end 3'b110: begin F=A
3'b000: begin A=32'h0000_0000;B=32'h0000_0000;end 3'b001: begin A=32'h0000_0003;B=32'h0000_0607;end 3'b010: begin A=32'h8000_0000;B=32'h8000_0000;end 3'b011: begin A=32'h7FFF_FFFF;B=32'h7FFF_FFFF;end 3'b100: begin A=32'h8000_0000;B=32'hFFFF_FFFF;end 3'b101: begin A=32'hFFFF_FFFF;B=32'h8000_0000;end 3'b110: begin A=32'h1234_5678;B=32'h3333_2222;end 3'b111: begin A=32'h9ABC_DEF0;B=32'h1111_2222;end endcase endcase
if(F==32'b0)ZF=1;end
always@(*)begin
end case(F_LED_SW)
3'b000: LED=F[7:0];3'b001: LED=F[15:8];3'b010: LED=F[23:16];3'b011: LED=F[31:24];default:begin LED[7]=ZF;LED[0]=OF;LED[6:1]=6'b0;end endcase
endmodule 管脚配置
NET “AB_SW[0]” LOC = T10;NET “AB_SW[1]” LOC = T9;NET “AB_SW[2]” LOC = V9;NET “ALU_OP[0]” LOC = M8;NET “ALU_OP[1]” LOC = N8;NET “ALU_OP[2]” LOC = U8;NET “F_LED_SW[0]” LOC = V8;NET “F_LED_SW[1]” LOC = T5;NET “F_LED_SW[2]” LOC = B8;NET “LED[0]” LOC = U16;NET “LED[1]” LOC = V16;NET “LED[2]” LOC = U15;NET “LED[3]” LOC = V15;NET “LED[4]” LOC = M11;NET “LED[5]” LOC = N11;NET “LED[6]” LOC = R11;NET “LED[7]” LOC = T11;寄存器 module jicunqi(input Clk, input Reset, input [4:0] Reg_Addr, input Write_Reg, input [1:0] Sel, input AB, output reg [7:0] LED);reg [31:0] W_Data;wire [31:0] R_Data_A,R_Data_B,LED_Data;REG RU1(Clk,Reset,Reg_Addr,Reg_Addr,Reg_Addr,W_Data,Write_Reg,R_Data_A,R_Data_B);assign LED_Data=AB?R_Data_A : R_Data_B;always @(*)begin
W_Data=32'h0000_0000;
LED=8'b0000_0000;
if(Write_Reg)
begin
case(Sel)
2'b00: W_Data= 32'h1234_5678;
2'b01: W_Data= 32'h89AB_CDEF;2'b10: W_Data= 32'h7FFF_FFFF;2'b11: W_Data= 32'hFFFF_FFFF;endcase end
else
begin
case(Sel)
2'b00: LED=LED_Data[7:0];2'b01: LED=LED_Data[15:8];2'b10: LED=LED_Data[23:16];2'b11: LED=LED_Data[31:24];
endcase end end endmodule `timescale 1ns / 1ps // REG.v module REG(input Clk, input Reset, input [4:0] R_Addr_A, input [4:0] R_Addr_B, input [4:0] W_Addr, input [31:0] W_Data, input Write_Reg, output [31:0] R_Data_A, output [31:0] R_Data_B);
reg [31:0] REG_Files[0:31];integer i;
assign R_Data_A=REG_Files[R_Addr_A];assign R_Data_B=REG_Files[R_Addr_B];
always @(posedge Clk or posedge Reset)begin
if(Reset)
begin
for(i=0;i<=31;i=i+1)
REG_Files[i]<=32'h0000_0000;
end
else
begin
if(Write_Reg)
begin
REG_Files[W_Addr]<=W_Data;
end end end endmodule
管脚配置 NET “Clk” LOC=“C9”;NET “Reset” LOC=“D9”;NET “Reg_Addr[4]” LOC=“T5”;NET “Reg_Addr[3]” LOC=“V8”;NET “Reg_Addr[2]” LOC=“U8”;NET “Reg_Addr[1]” LOC=“N8”;NET “Reg_Addr[0]” LOC=“M8”;NET “Write_Reg” LOC=“V9”;NET “Sel[1]” LOC=“T9”;NET “Sel[0]” LOC=“T10”;NET “AB” LOC=“A8”;NET “LED[7]” LOC=“T11”;NET “LED[6]” LOC=“R11”;NET “LED[5]” LOC=“N11”;NET “LED[4]” LOC=“M11”;NET “LED[3]” LOC=“V15”;NET “LED[2]” LOC=“U15”;NET “LED[1]” LOC=“V16”;NET “LED[0]” LOC=“U16”;
第四篇:计算机组成原理实验报告(运算器组成、存储器)
计算机组成原理实验报告
一、实验1 Quartus Ⅱ的使用
一.实验目的
掌握Quartus Ⅱ的基本使用方法。
了解74138(3:8)译码器、74244、74273的功能。
利用Quartus Ⅱ验证74138(3:8)译码器、74244、74273的功能。二.实验任务
熟悉Quartus Ⅱ中的管理项目、输入原理图以及仿真的设计方法与流程。
新建项目,利用原理编辑方式输入74138、74244、74273的功能特性,依照其功能表分别进行仿真,验证这三种期间的功能。
三.74138、74244、74273的原理图与仿真图 1.74138的原理图与仿真图
74244的原理图与仿真图 1.4.74273的原理图与仿真图、实验2 运算器组成实验
一、实验目的
1.掌握算术逻辑运算单元(ALU)的工作原理。2.熟悉简单运算器的数据传送通路。
3.验证4位运算器(74181)的组合功能。
4.按给定数据,完成几种指定的算术和逻辑运算。
二、实验电路
附录中的图示出了本实验所用的运算器数据通路图。8位字长的ALU由2片74181构成。2片74273构成两个操作数寄存器DR1和DR2,用来保存参与运算的数据。DR1接ALU的A数据输入端口,DR2接ALU的B数据输入端口,ALU的数据输出通过三态门74244发送到数据总线BUS7-BUS0上。参与运算的数据可通过一个三态门74244输入到数据总线上,并可送到DR1或DR2暂存。
图中尾巴上带粗短线标记的信号都是控制信号。除了T4是脉冲信号外,其他均为电位信号。nC0,nALU-BUS,nSW-BUS均为低电平有效。
三、实验任务
按所示实验电路,输入原理图,建立.bdf文件。
四.实验原理图及仿真图
给DR1存入01010101,给DR2存入10101010,然后利用ALU的直通功能,检查DR1、DR2中是否保存了所置的数。其实验原理图如下:
波形图如下:
实验3 半导体存储器原理实验
(一)、实验目的
(1)熟悉静态随机存储器RAM和只读存储器ROM的工作特性和使用方法;(2)熟悉半导体存储器存储和读出数据的过程;(3)了解使用半导体存储器电路时的定时要求。
(二)、实验要求
利用Quartus Ⅱ器件库提供的参数化存储单元,设计一个由128X8位的RAM和128X8位的ROM构成的存储器系统。请设计有关逻辑电路,要求仿真通过,并设计波形文件,验证该存储器系统的存储与读出。
(三)、实验原理图与仿真图
ram内所存储的数据:
rom内所存储的数据:
仿真图如下:
(四)心得体会
本次试验中,我们应该熟练掌握Quartus Ⅱ软件的使用方法;熟悉静态随机存储器RAM和只读存储器ROM的工作特性和使用方法;熟悉半导体存储器存储和读出数据的过程;了解使用半导体存储器电路时的定时要求。并且制定实验方案然后进行实验验证。要学会将学到的知识运用到实际中。
四、实验4 数据通路的组成与故障分析实验
(一)、实验目的
(1)将运算器模块与存储器模块进行连接;(2)进一步熟悉计算机的数据通路;
(3)炼分析问题与解决问题的能力,学会在出现故障的情况下,独立分析故障现象并排除故障。
(二)、实验电路
设计一实验电路图,把前面进行的运算器实验模块与存储器实验模块两部分电路连接在一起。RAM和ROM的输出都可以送至寄存器R1和R2作为运算器的输入,而运算器的结果可以送入R3暂存,然后送入RAM的指定单元。整个电路总线结构的形式自行设计。
(三)、实验原理图与仿真图
ram内所存储的数据:
rom内所存储的数据:
原理图如下: 仿真图如下: 五.心得体会
实验前我们应该先要对我们将要做的实验充分的了解,将原理弄懂,同时也要熟悉我们实验所使用的软件的用法,这对我们都是至关重要的,并且会使我们在实验时节省很多时间;然后,根据实验要求设计出总体方案,再根据方案进行实验。通过这次课程设计我懂得了理论与实际相结合的重要性,只有把所学的理论知识与实践相结合起来,从理论中得出结论,将结论用于实践,才能提高自己的实际动手能力和独立思考的能力。
第五篇:_计算机组成原理实验2
计算机组成原理实验日志
实验题目:
进位、移位控制实验
实验目的:
(1)了解带进位控制的运算器的组成结构;(2)验证带进位控制的运算器的功能。(3)了解移位发生器74LS299的功能;(4)验证移位控制电路的组合功能。实验主要步骤:
一、进位
(1)按图1.2-2连接实验电路并检查无误。(2)打开电源开关。
(3)用输入开关向暂存器DR1和DR2置数,方法同前。
(4)关闭数据输入三态门(SW-B=1),打开ALU输出三态门(ALU-B=0),并使LDDR1=0、LDDR2=0,关闭寄存器打入控制门。
(5)对进位标志清零。实验板上“SWITCH UNIT”单元中的CLR开关为标志CY、ZI的清零开关,它为零状态时是清零状态,所以将此开关做1→0→1操作,即可使标志位清零。
注意:进位标志指示灯CY亮时表示进位标志为“0”,无进位;标志指示灯CY灭时表示进位为“1”,有进位。
图1.2-1 带进位运算器通路图
图1.2-2 带进位运算实验接线图
(6)验证带进位运算及进位锁存功能。使Cn=1,AR=0,进行带进位算术运算。例如,做加法运算,使ALU-B=0,S3、S2、S1、S0、M的状态为1、0、0、1、0,此时数据总线上显示的数据为DR1加DR2加当前进位标志的和,但这时的进位状态位还没有打入进位锁存器中,(它是要靠T4节拍来打入的。)这个结果是否有进位产生,则要按动微动开关KK2,若进位标志灯亮,则无进位,反之则有进位。因为做加法运算时数据总线一直显示的数据为DR1+DR2+CY,所以当有进位输入到进位锁存器时,总线显示的数据将为加上当前进位锁存器中锁存的进位的结果。
二、移位
(1)按图1.3-2连接实验电路并检查无误。(2)打开电源开关。(3)向移位寄存器置数。
①拨动输入开关,形成二进制数01101011(或其它数值)。
②使SWITCH UNIT单元中的开关SW-B=0,打开数据输入三态门。③使S0=
1、S1=1,并按动微动开关KK2,则将二进制数01101011置入了移位寄存器。
④使SW-B=1,关闭数据输入三态门。(4)移位运算操作。
①参照表1.3-1中的内容,先将S1、S0置为0、0,检查移位寄存器单元装入的数是否正确,然后通过改变S0、S1、M、299-B的状态,并按动微动开关KK2,观察移位结果。
②根据移位控制电路功能表1.3-1中的内容,分析移位运算的结果是否正确。
图1.3-2 移位运算实验接线图
实验结果: 一.进位
向DR1中置入80H 向DR2中置入 80H CY初始位置为亮 0 加法完成后 CY为灭总线显示01H 二.移位
输入00011000 移位后 00110000 心得体会:
通过本次实验了解了的带进位的加法和移位器的原理。