计算机组成与体系结构第二次试验:存储器实验

  • Post author:
  • Post category:其他




前言

为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!



一、实验目的

本实验的主要内容是了解 RAM(Random Access Memory,静态随机存储器)和ROM(Read Only Memory,只读存储器)的工作特性;掌握存储器与总线的连接及存储器地址空间映射的原理。通过设计一个8位字长的存储器电路,包括ROM和RAM两个地址相互独立的存储器,实现对ROM和RAM存储器的数据读写操作及数据成批导入 ROM 的操作。



二、实验环境

操作系统:Win10

实验用软件:Proteus 8



三、实验内容

本实验的存储器电路如图2-1所示,由地址输入单元、存储器及地址选择电路组成。存储器电路中共有两条总线:12位地址总线ABUS_[0.11]和8位数据总线DBUS[0.7]。图左边是拨码开关构成的12位地址输入端,其连接在地址总线ABUS[0…11]上,通过三个绿色数码管输出显示12位地址信息。图2-1右边则是存储器ROM、RAM及其地址选择电路。

ROM和RAM存储器内部有三态门结构,其数据输出端直接连在数据总线DBUS_[0…7]上,通过两个红色数码管显示8位数据信息。

存储器是用来存储信息的部件,是计算机的重要组成部分,常见的半导体存储器类型主要有ROM和BAM。ROM一般容量较大,在断电的时候仍然可以保存数据:ROM只能读出数据,不能写人数据。而RAM存储器一般容量较小,在断电之后就丢失数据;RAM既可读出数据,又可写入数据。本实验中使用的ROM存储器是2764(8K

bit),RAM存储器是6116(2K

bit)。

如图2-2所示,ROM芯片2764的数据线D-D,接到数据总线,地址线Ao

As由地址锁存器74LS273给出,用来对ROM片内存储单元寻址,其余地址线As

A12接地。2764有两个控制端:CE(片选)和OE(读)。RAM芯片6116的数据线Do

D,接到数据总线,地址线A0

A7由地址锁存器74LS273给出,用来对RAM片内存储单元寻址,其余地址线As-A1o接地。6116有三个控制端:CE(片选)、OE(读)和WE(写)。

存储器电路控制信号的逻辑功能见表2-1所示。值得注意的是,在对ROM或RAM读写的时候,首先必须在存储器的片选有效(CE=0)的前提下,才能对相应的存储器读(OE=0)

或写(WE=0)。例如,对ROM芯片2764进行读操作,必须令使能ROM CE-0且ROM OE=0。

存储器片选信号ROM_CE和RAM_CE是由地址信号的高4位ABUS_8~ABUS_11经过片选逻辑电路自动形成的,不需要拨码开关控制。

其次,必须在地址锁存器(74LS273)ROM_AR、RAM_AR锁存地址信号,才能选中存储器片内相应的单元。地址锁存器ROM_AR和RAM_AR的输入都连接至地址总线ABUS_0

~ABUS_7,在其CLK端开关出现上升沿跳变的时候,地址总线ABUS_0-ABUS_7的数据打入ROM_AR或RAM_AR锁存。锁存后无论地址总线ABUS如何变化,选中的存储单元也不会发生改变,可以进行稳定的读写操作(存储器数据端输入或输出)。

存储器电路设计的最重要环节是存储器与地址总线的连接,因为连接方式决定了存储器地址空间的映射关系,即决定了每个存储器芯片在整个存储空间中的地址范围。12位地址总线的理论地址空间为4KB(000H

FFFH),本实验将其中最低的512B的地址分配为ROM区(000H

1FFH),最高的128B地址为RAM区(F80H~FFFH),其余留空,如图2-3所示。

存储器电路的设计一般将地址总线区分为低位地址线和高位地址线两部分:低位地址线直接和存储器芯片的地址信号连接作为片内地址译码,而高位地址线的连接主要用来产生片选信号(称为片间地址译码),以决定每个芯片在整个存储系统中的地址范围。

在本实验中,12位地址总线分为低8位地址线和高4位地址线。低8位地址线ABUS0


ABUS7分别与ROM和RAM芯片的地址线Ao

A7共用;高4位地址线ABUS_8~ABUS_11则通过两个3-8译码器进行译码,如图2-2所示。低位3-8译码器U13最低2位之一输出有效,则片选ROM芯片(“负逻辑”判断,使用与门);同样,高位3-8译码器U15最高1位输出与地址线A同时有效,则片选RAM芯片(“负逻辑”判断,A7先反相,再使用或门)。

值得注意的是,相同的存储器地址空间映射,可以有不同的片选电路实现方法(例如使用“正逻辑”判断)。



四、实验步骤

1)按照“2.3ROM批量导人数据的技巧”小节所述,将project.asm文件编译的hex二进制文件加载到ROM芯片2764,并且查看ROM烧写的数据段是否正确。

2)启动仿真前,令ROMOE=RAMOE=RAM_WE=1;启动仿真后,令SW_BUS=0,手动拨码开关输人024H到地址总线ABUS_[0…11](绿色数码管显示)。

3)令地址锁存信号ROM_CLK上升沿跳变0→1,将地址总线上的024H打入地址锁存器ROMAR;令ROMOE=0,使能ROM存储器2764输出,在数据总线DBUS[0…7](红色数码管显示)上查看存储单元[024H]读出的内容。

4)手动拨码开关,向地址锁存器RAMAR打入地址F80H;令RAMWE=0,使能RAM存储器6116输入,把存储单元[024H]的内容写入存储单元[F80H]。再令RAM_WE=1,结束对RAM存储器的写人操作。

5)令ROM_OE=1(禁止ROM存储器2764输出)且RAM_OE=0(允许RAM存储器6116输出),在数据总线DBUS_[0.7]上观察存储单元[F80H]的写入内容是否正确。

6)按照上述操作,把ROM存储器单元[024H]、[028H]、[02CH]、[030H]的内容依次写入RAM存储器单元[F80H]、[F81H]、[F82H]、[F83H],查看写入RAM的数据是否正确。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



五、实验结果

在这里插入图片描述

在这里插入图片描述



六、实验总结

  1. 假设把project.asm文件中的某个ORG语句改为“ORG0224H”,请问该ORG定义的数据段还能被访问到么?如果不能,是数据批量导入ROM出错么?请修改ROM的地址片选电路,保证“ORG0224H”所定义的数据段能被访问到。

    答:不能。应该是数据批量导入ROM出错。
  2. 为何ROM和RAM需要使用两个独立的3-8译码器?假设RAM的片选电路与ROM的片选电路共用一个3-8译码器,即ROM所在3-8译码器的最低2个端口给ROM使用,最高1个端口给RAM使用。请给出ROM和RAM的地址空间范围。

    答:因为ROM和RAM两个操作方式和功能均不一,前者只读,后者可读可写;两者的空间地址范围不一。RAM:0XXH ~ 8XXH;ROM:X00H~XFFH;
  3. 假设RAM的地址空间范围改为800H-8FFH,请问存储器地址片选电路如何修改?假设再把ROM的地址空间范围改为600H~7FFH,请问存储器地址片选电路又如何修改?

    答:前者RAM范围只需调整最低两个端口;后者ROM需要调整三个端口。

心得体会:

进行本次实验操作时,实验器件多,连线复杂,哪怕连线完成、实验图做好后,依然不了解这个图的用途及原理。之后,本人通过查阅资料、同学讨论等等方式对本次实验有了大概的理解,同时,本次实验步骤复杂,稍不留意就容易前功尽弃,需要我们在做实验时谨慎再谨慎。



版权声明:本文为sjx3161原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。