【计算机组成与体系结构Ⅰ】实验4 存储器原理实验

您所在的位置:网站首页 计算机组成与结构教材分析 【计算机组成与体系结构Ⅰ】实验4 存储器原理实验

【计算机组成与体系结构Ⅰ】实验4 存储器原理实验

2024-07-16 17:53| 来源: 网络整理| 查看: 265

一、实验目的

1:了解双端口静态存储器IDT7132的工作特性及使用方法。

2:了解半导体存储器如何读写。

二、实验总结

0:实验内容

双端口存储器RAM:

    左端口的数据部分与数据总线DBUS7-DBUS0相联;右端口的数据引脚与指令传输线IN7-IN0连接,显示地址和IR中的数据用IR/DBUS切换。左端口地址由AR1提供,右端口地址由AR2(两片74HC298)提供,向AR1、AR2输入地址时注意,应切换AR1/AR2开关。地址和输入数据均由SW7-SW0输入,左、右地址分别存在AR1、AR2中,并在输入时要注意AR1/AR2的切换。

左端口

右端口

CEL#(低有效)

芯片CER#(内部经过一个反向器,低有效),但是控制信号CER=1(高有效)

LRW(1=读,0=写)

RRW(1=读,0=写,RRW已接固定高电平

OEL#(低电平,仿真已经设置)

OER#(OER#固定接低电平)

实验步骤:

Step1:控制信号接线, 如下表所示。

开关

K0

K1

K2

K3

K4

K5

K6

控制信号

CEL#

LRW

CER

LDAR1

LDAR2

SW_BUS#

LDIR

Step2:DP=1,DB=0,DZ=0。

Step3:合上电源,按CLR#。

Step4:从左端口写入数据,IR/DBUS=DBUS,AR1/AR2=AR1,向10H单元写入11H数据。

Step5:从右端口读出数据,AR1/AR2=AR2,IR/DBUS=IR,读出存储器10H单元的数据,数据送入IR中并在指示灯上显示。

上述操作的各步骤中控制信号的内容如下表所示:

K0

K1

K2

K3

K4

K5

K6

执行的操作内容

CEL#

LRW

CER

LDAR1

LDAR2

SW_BUS#

LDIR

1

1

0

1

0

0

0

地址10H写入AR1

此时SW7至SW0为:00010000

0

0

0

0

0

0

0

11H写入M[10H]

此时SW7至SW0为:00010001

1

1

0

1

0

0

0

地址10H写入AR1

此时SW7至SW0为:00010000

0

1

0

0

0

1

0

左端口读出M[10H]

1

1

0

0

1

0

0

地址10H写入AR2

1

1

1

0

0

0

1

右端口读出M[10H]

 

其中将11H写入10H地址后,可以双击双端口RAM,观察到数据成功写入给定的地址中,如下图所示(地址10H,值11H):

 

从左端口读出M[10H]如下图所示:

从右端口读出M[10H]如下图所示:

 

Step6:将控制器产生的控制信号与存储器部分的接线端孔相连接,即控制器的输出LDAR1、AR1_INC、SW_BUS#、CEL#、LRW依次与数据通路的对应信号连接,时序发生器的输入TJI接控制存储器的输出TJ。通过SWC、SWB、SWA的设置选择KWE写存储器,后续采用KRD读存储器。

(1)令DP = 0,DB = 0,DZ = 0,使实验系统处于连续运行状态。令SWC = 0、SWB = 1、SWA = 0,使实验系统处于写双端口存储器工作方式KWE。

按CLR#按钮,使实验系统处于初始状态。置SW7—SW0为80H,按QD按钮,将80H写入AR1。置SW7—SW0为01H,按QD按钮,将01H写入存储器80H单元。AR1自动加1,变为81H。置SW7—SW0为02H,按QD按钮,将02H写入存储器81H单元。AR1自动加1,变为82H。

(2)令DP = 0,DB = 0,DZ =0,使实验系统处于连续运行状态。令SWC = 0、SWB = 0、SWA = 1,使实验系统处于读双端口存储器工作方式KRD。

按CLR#按钮,使实验系统处于初始状态。置SW7—SW0为80H,按QD按钮,将80H写入AR1。按QD按钮,读出该存储单元的数据。按QD,AR1自动加1,变为81H。按QD可读出该单元的存储数据。

1:实验中问题及解决方法

无。

2:在什么情况下出现冲突?出现冲突后,左/右端口在何种条件下可被访问?

在 LRW置为1,CEL#置为0,CER置为1的情况下,会出现冲突,即左右端口同时读主存的同一个存储单元。

出现冲突后,左右端口在以下条件下可被访问:①如果CER不变,则需要将CEL#置为1,使得左端口为无效;或者将LRW置为0,使得左端口执行写操作而非读操作,此时可以安全访问。②如果CEL#和LRW不变,则需要将CER置为0,使得右端口为无效,此时可以安全访问。

在实际的硬件电路中,双端口存储器器件采用以下方式来判断两个端口的信号(即增加BUSY标志判断优先级,或按照两端口读写的先后顺序):

3:实验总结

 

IDT7132的右端口无法写入数据,只能进行读出数据。当RRW=1时执行读操作,当RRW=0时执行写操作。本实验中RRW 已接固定高电平,故只能读出数据。本实验数据线共8条,地址线共11条(8条为SW7至SW0,3条为SWC、SWB、SWA),地址的总容量为2^11*8位,其中SWC~SWA的功能为片选。LRW为控制双端口RAM左侧进行读写操作的信号,AR1_INC为控制地址寄存器1地址自增的信号。AR1_INC在Step1~Step5中置为0,在Step6中会置为1,使得地址自动实现增加1。将寄存器R0中的数据存入给定地址中:首先通过SW_BUS置地址,存入AR1中,双端口RAM从AR1中读取地址;然后将R0寄存器的数据通过DR2直通到ALU中,从A端输出到DBUS内,(或者将R0寄存器的数据写入RS0中,从B端输出到DBUS内),双端口RAM从DBUS中写入数据进入给定地址。

 

存储器由若干个存储单元构成,实现对地址和数据的存储功能;存储单元由若干个存储位元构成,一个存储单元可以对应一个地址或数据;存储位元是0/1存储的最小单位,硬件上存储每一位的高低电平。 控制台方式开关 SWC、SWB、SWA的工作方式如下表所示:

SWC

SWB

SWA

工作方式

0

0

0

PR,启动程序

0

0

1

KRD,读取端口存储器

0

1

0

KWE,写双端口存储器

0

1

1

KLD,加载寄存器堆

1

0

0

KRR,读寄存器堆

当SW_BUS# = 0,LRW = 1,CEL# = 0的时候,有多个器件同时向总线输出,会发生数据冲突,即SW控制台向数据总线输入数据,同时双端口RAM向数据总线输入数据。在虚拟实验中,报错如下图所示:

 

三、仿真分析

打开仿真软件,仿真面板左下角【数据通路总体图】,参照本实验指导“数据通路总体图”和存储器原理图,从存储器左端口在10H单元存入数据AAH后,并从做左端口读出10H单元中的数据,存入寄存器R1中,并从B端口读出R1的内容输出到总线。写出实现这个功能所需步骤中操作控制信号,按照操作控制信号有效的先后顺序写出。

1:向地址寄存器AR1写入地址10H,此时SW_BUS# =0,LDAR1=1,其余信号设为无效,QD脉冲后完成操作。

2:向双端口RAM左侧写入数据AAH,并存入10H中,此时SW_BUS# =0,CEL# =0,LRW=0,其余信号设为无效,QD脉冲后完成操作。

3:双击双端口RAM,可以查看到地址10H中已经存入AAH,说明存入有效。

4:从双端口RAM左侧读出10H存储的数据,此时CEL# =0,LRW=1,其余信号设为无效,不需要QD脉冲即可在DBUS上读出数据。可以查看到DBUS上端红色的数据显示10101010,说明成功读取。同时由于AR1中的地址没改变,所以不需要重新给AR1写入所读取的存储单元的地址。

5:将读取的数据写入暂存器ER,此时CEL# =0,LRW=1,LDER=1,其余信号设为无效,QD脉冲后完成操作。可以查看到暂存器上端紫色的数据显示为10101010,说明成功写入。

6:将暂存器ER的数据写入RF的R1寄存器中,此时WRD=1,WR1=0,WR0=1,其余信号设为无效,QD脉冲后完成操作。可以查看到寄存器RF左端第二个橙色的数据显示为10101010,说明成功写入R1寄存器。

7:从B端口读出R1的内容输出到总线,此时WR1=0,WR0=1,RS1=0,RS0=1,RS_BUS# =0,其余信号设为无效,不需要QD脉冲即可在DBUS上读出数据。可以查看到DBUS上端红色的数据显示10101010,说明成功读取R1寄存器。 8:流程完成后的最终结果如下图所示:

四、问题回答

 

根据数据通路总图分析,指令和数据输入到存储器采用在哪种控制台方式?若程序执行应该在哪种控制台方式?

指令和数据输入到存储器时,可以采用PR控制台方式,即SWC=SWB=SWA=0。因为此时人工控制QD来启动相应程序。

如果程序执行第一个红框的内容时,可以采用KRD控制台方式,即SWC=SWB=0,SWA=1。因为第一个红框先通过SW7至SW0向AR1输入地址,然后从RAM左端口读出对应的数据到DBUS上,按QD后AR1中的地址自增1,而后重复从左端口读出数据的过程。即从起始输入的地址开始,连续对后面的存储单元读取数据,直到按下CLR#终止操作为止。

如果程序执行第二个红框的内容时,可以采用KWE控制台方式,即SWC=SWA=0,SWB=1。因为第二个红框先通过SW7至SW0向AR1输入地址,然后从RAM左端口写入对应的数据进地址,按QD后AR1中的地址自增1,而后重复从左端口写入数据的过程。即从起始输入的地址开始,连续对后面的存储单元写入数据,直到按下CLR#终止操作为止。

各控制台方式的具体内容如下表所示:

控制台方式

具体内容

PR

PR是启动程序方式。

首先在 SW7 一 SW0 指定启动地址,按启动按钮 QD 后,启动程序运行。

KRD

KRD是读取端口存储器方式。

(l)首先在 SW7 一 SW0 置好存储器地址; 按 QD 按钮,则将此地址打入地址寄存器 ARl,并读出该地址存储器内容到数据总线 DBUS。

(2)每按一次 QD 按钮,地址寄存器 ARl 加 l,并读出新地址存储器内容到数据总线 DBUS。

依次进行下去,直到按复位按钮 CLR#为止。

KWE

KWE是写双端口存储器方式。

(l)首先在 SW7 一 SW0 置好存储器地址; 按 QD 按钮,则首先将此地址打入地址寄存器 ARl,然后等待输入数据。

(2)在 SW7 一 SWO 置好数据,按 QD 按钮,首先写数据到 ARl 指定的存储器单元,然后地址寄存器 ARl 加 l,等待新的输入数据。

依次进行下去,直到按复位按钮 CLR#为止。

KLD

KLD是加载寄存器堆方式,用于对寄存器堆加载。

(1)首先在 SW7 一 SW0 置好 存储器地址,按 QD 按钮,则将此地址打入地址寄存器 ARl 和地址寄存器 AR1。

(2)在 SW7 一 SW0 置好数据,数据的低 2 位 Dl、D0 为寄存器堆中的寄存器号,按一次 QD 按钮,则 写数据到 ARl 指定的存储器单元;然后将写入的数据从右端口读出,并送入指令寄存器 IR。

(3)在 SW7 一 SW0 置好数据,该数据为写入寄存器的数据,寄存器号由 IR 低 2 位指定。 按 QD 按钮,则首先将此数据写入寄存器 ER,然后将 ER 中的数据写入指定的寄存器。

(4) 返回(2),依次进行下去,直到按复位按钮 CLR#为止。

KRR

KRR是读寄存器堆方式,用于读寄存器堆中的寄存器。

(1)首先在 SW7 一 SW0 置好存储器地址,按 QD 按钮,则将此地址打入地址寄存器 ARl 和地址寄存器 AR1。

(2) 在 SW7 一 SW0 置好数据,数据的 D3、D2 位为寄存器堆中的寄存器号,按一次 QD 按钮。 则与数据到 ARl 指定的存储器单元;然后将写入的数据从右端口读出,并送入指令寄存器

IR。同时将 IR3、IR2 指定的寄存器送往数据总线 DBUS。拨动开关 IR/DBUS 可看到 IR 的值和 IR 指定的寄存器的值。

(3)返回(2),依次进行下去,直到按复位按钮 CLR#为止。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3