存储器数据通路实验
实验原理
图 1是本实验的存储器数据通路,该数据通路使用了前面实验中的ALU、三端口寄存器堆和RAM、ROM存储器。 和运算器数据通路实验相比,运算部分基本没有变化,新增加了存储器。 DI是RAM的数据输入端口,写入RAM的数据由寄存器堆的RD2读端口提供。 RAM的地址A来自ALU运算结果F。 RAM的读出数据DO通过多路器连接到寄存器堆的写端口WD,可以写入寄存器堆。 ROM作为七段译码器,连接数码管显示WD端口的数值。

运算相关的信息加工过程在运算器数据通路实验中已经熟悉。 下面着重分析存储器相关的信息传递路径。
寄存器数据写入RAM的信息传递路径
要将数据写入RAM,需准备要写入的数据并提供要写入单元的地址。 RAM的数据输入DI来自寄存器堆的读端口2,所以只能将某一寄存器的值写入RAM的存储单元;换句话说,需要写入RAM的数据必须先存放于某一寄存器中。 RAM的地址A来自ALU的输出F,因此只能通过ALU运算(通常用加法运算)产生RAM地址。从运算器数据通路实验已经知道,ALU的运算数据可以来自RD1、RD2或立即数Imm;但这里RD2已用于提供要写入RAM的数据,所以只能用RD1加上立即数来指定RAM的地址。 信息传递路径如图 2绿色通路所示。

读出RAM数据写入寄存器的信息传递路径
RAM的地址仍然由ALU产生,RAM输出数据DO要传送到寄存器堆的写端口WD需要经过多路器的选择。 信息传递路径如图 3绿色通路所示。

实验任务
验证任务
通过仿真验证数据通路,并保存仿真过程数据文件。
-
常数写入寄存器堆
将2个非零常数存入R2、R3寄存器。 信息传递路径与运算器数据通路实验基本相同,不同之处是寄存器堆写端口WD增加了一个多路选择器,写入数据来自ALU的运算结果时,WDsel应为0。
-
ALU运算结果存入寄存器
-
以寄存器R2、R3作为运算数,执行某种ALU运算,运算结果存入R1寄存器;
-
以寄存器R2和立即数(ImmediateData)作为运算数,运算结果存入R3;
-
-
寄存器数据写入RAM
理解图 2信息传递路径,完成以下验证。
-
以R2作为RAM的地址,将R1的内容写入该地址单元;
-
以立即数Imm作为RAM的地址,将R3的内容写入该地址单元。
注意立即数应与R2的值不相同,以免覆盖上面写入的单元。
RAM地址A=RD1+Imm。 若要以R2作为RAM的地址,则RA1=2,同时使Imm=0。 若要以立即数Imm作为RAM的地址,则应使用R0的值(恒为0)作为RD1,即RA1=0。
-
-
读出RAM数据并写入寄存器
理解图 3信息传递路径,先后将上面写入RAM两个存储单元的内容读出,分别存入R3和R1寄存器。即:
-
以立即数Imm作为RAM的地址,读出该地址单元的内容并写入R1寄存器;
-
以R2作为RAM的地址,读出该地址单元的内容并写入R3寄存器。
-