存储器数据通路实验

注:本项目与存储器应用实验二选一。

实验目的

  1. 掌握RAM和ROM存储器的工作特性和使用方法。

  2. 理解实验电路的操作时序,掌握数据通路信息加工过程。

  3. 锻炼分析问题与解决问题的能力。

实验原理

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

存储器数据通路
图 1. 存储器数据通路

该电路可以将外部数据存入寄存器堆,进行ALU运算,以及在RAM和寄存器堆之间相互传递数据,下面从几个方面阐述工作原理。

ALU运算结果存入寄存器堆

运算器数据通路实验中已经熟悉了ALU运算的信息加工、传递路径,图 1的不同之处在于写入寄存器堆的数据除了来自ALU的运算结果,还可以来自存储器读出的数据,因此增加了一个2选1多路器进行选择。

信息加工、传递路径如图 2所示。在运算器数据通路实验中已经知道,ALU的运算数可以是两个寄存器的值,也可以是一个寄存器和立即数Imm,由Ys控制的多路器进行选择,图 2的蓝色路径表示了这两种选择。

mem path2 5
图 2. 读出RAM数据写入寄存器的信息传递路径

存储器地址的产生

要对RAM读或写,必须要指定读写的RAM单元地址。 从图 1可知,RAM的地址A来自ALU的输出F,通常使用加法运算产生RAM地址。而加法的运算数据分别来自寄存器堆的RD1和立即数Imm,所以需要用RD1加上立即数来指定RAM的地址。从寄存器堆实验可知,RD1即RA1指定的寄存器的值。即

A = RD1 + Imm = R[RA1] + Imm

式中,R[n]表示编号为n的寄存器的值。

生成地址的信息路径如图 3红线所示。

mem path2 2
图 3. 存储器地址生成的信息路径

特别地,如果RA1=0,即RD1为R0寄存器的值;根据寄存器堆实验的设计,R0寄存器的值恒为0,则

A = R[0] + Imm = Imm

同理,如果外部输入Imm=0,则

A = R[RA1]

寄存器数据写入RAM

要将数据写入RAM,不仅要提供RAM地址,还需提供要写入的数据。 RAM的数据输入DI来自寄存器堆的读端口2,所以只能将某一寄存器的值写入RAM的存储单元。即

DI = RD2 = R[RA2]

数据信息传递路径如图 4绿色通路所示。

mem path2 3
图 4. 寄存器数据写入RAM的信息传递路径

准备好地址和数据后,便可使用RAM实验中学习的方法写入存储器。

读出RAM数据写入寄存器

从RAM读出的数据通过DO端口输出,要将DO数据传送到寄存器堆的写端口WD,中间还经过了一个多路选择器,DO与多路器的输入通道1连接。 WDs是该多路器的选择信号,同时它也是RAM的输出使能控制信号。当WDs=1时,允许RAM输出数据,同时多路器选择通道1,将DO传递到WD。即

当WDs=1,WD = DO = RAM[A]

式中,RAM[A]表示以A为地址的RAM单元内容。

信息传递路径如图 5绿色通路所示。

mem path2 4
图 5. 读出RAM数据写入寄存器的信息传递路径

从RAM读出的数据到达WD端口后,根据寄存器堆实验中学过方法,可将数据写入寄存器堆中的某个寄存器。

实验任务

设计任务

用Digital仿真软件按照图 1绘制电路图。

  1. 可以在前面运算器数据通路实验电路图的基础上扩充。

  2. ROM和数码管电路可以直接复制ROM实验中完成的电路。

验证任务

依次完成以下验证任务,分析实验数据,判断结果的正确性。 若结果与预期不符,尝试分析故障现象并排除故障,提升分析问题与解决问题的能力。 最后保存仿真过程数据文件。

  1. 常数写入寄存器堆

    从前面实验原理可知,RAM的地址需要寄存器参与运算后产生,写入RAM的数据也是来自寄存器堆。所以首先将2个不同的非零常数分别存入2个寄存器。

  2. 寄存器数据写入RAM

    将前面已存入数据的2个寄存器的内容,一个与Imm相加作为RAM地址,另一个作为写入RAM的数据,完成RAM的写操作。

  3. 读出RAM数据并写入寄存器

    将上面已经存入RAM的数据读出并写入空闲的其他寄存器。

分析结果时还应检查ROM输出的七段数据和数码管显示是否正确。
思考与拓展

如果需要将ALU运算结果存入RAM存储器,如何操作?