存储器应用实验
注:本项目与存储器数据通路实验二选一。
实验原理
实验电路如图 1所示。该电路将静态随机存取存储器RAM、只读存储器ROM和寄存器堆组织到一起,构成了一个应用电路。

该电路可以将外部数据存入寄存器堆,以及在RAM和寄存器堆之间相互传递数据,下面从几个方面阐述工作原理。
RAM存储器地址的产生
要对RAM读或写,必须要指定读写的RAM单元地址。 从图 1可知,RAM的地址A来自加法器的输出S,因此只能通过加法运算产生RAM地址。而加法的运算数据分别来自寄存器堆的RD1和立即数Imm,所以只能用RD1加上立即数来指定RAM的地址。从寄存器堆实验可知,RD1即RA1指定的寄存器的值。即
A = RD1 + Imm = R[RA1] + Imm
式中,R[n]表示编号为n的寄存器的值。
生成地址的信息路径如图 2红线所示。

特别地,如果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]
关于如何将外部数据存入寄存器堆,见后面常数存入寄存器。 |
数据信息传递路径如图 3绿线所示。

准备好地址和数据后,便可使用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单元内容。
数据信息传递路径如图 4绿线所示。

从RAM读出的数据到达WD端口后,根据寄存器堆实验中学过方法,可将数据写入寄存器堆中的某个寄存器。
常数存入寄存器
从前面寄存器数据写入RAM已经知道,写入RAM的数据只能来自于寄存器堆,也就是说,需要写入RAM的数据必须事先存放于某一寄存器中。

如图 5所示。 要写入寄存器的常数通过Imm输入引脚送入。 Imm送到了加法器的B输入端,所以要将Imm送到寄存器堆的写端口,首先要经过加法器的运算。 在前面寄存器堆实验中已经设计R0寄存器的值恒为0,可以用加法器将Imm加上R0寄存器值,就能够将Imm传送到加法器的输出端S。即
当RA1=0,S = R[0] + Imm = Imm
从加法器的输出S到寄存器堆的写端口WD,还要经过一个多路选择器,S与多路器的输入通道0连接。 当WDs=0时,多路器选择通道0,将S传递到WD。即
当WDs=0 且 RA1=0,WD = S = Imm
Imm给出的常数到达WD端口后,根据寄存器堆实验中学过方法,可将常数存入寄存器堆中的某个寄存器。
实验任务
设计任务
ROM和数码管电路可以直接复制ROM实验中已经完成的电路。 |
验证任务
依次完成以下验证任务,分析实验数据,判断结果的正确性。 若结果与预期不符,尝试分析故障现象并排除故障,提升分析问题与解决问题的能力。 最后保存仿真过程数据文件。
-
常数写入寄存器堆
从前面实验原理可知,RAM的地址需要寄存器参与运算后产生,写入RAM的数据也是来自寄存器堆。所以首先将2个不同的非零常数分别存入2个寄存器。
-
寄存器数据写入RAM
将前面已存入数据的2个寄存器的内容,一个与Imm相加作为RAM地址,另一个作为写入RAM的数据,完成RAM的写操作。
-
读出RAM数据并写入寄存器堆
将上面已经存入RAM的数据读出并写入空闲的其他寄存器。
分析结果时还应检查ROM输出的七段数据和数码管显示是否正确。 |