实验三 存储器和总线实验

实验三 存储器和总线实验

一、实验目的
1、掌握静态随机存储器RAM工作特性及存储器RAM的数据读写方法。
2、了解只读存储器数据写入方法
二、实验内容
1、按照实验步骤完成RAM数据读写,利用存储器和总线传输数据。
2、利用80C51完成ROM数据批量写入并验证。
三、实验平台
Proteus仿真软件
四、实验原理
在这里插入图片描述

图1-1 存储器实验原理图
实验所用的半导体静态存储器电路原理如图1-1所示,该静态存储器由一片6116(2Kx8)构成,其数据线(D7D0)以8芯扁平线方式和数据总线(D7D0)相连接,地址线由地址锁存器(74LS273)给出,该锁存器的输入/输出通过8芯扁平线分别连至数据总线接口和存储器地址接口。地址显示单元显示AD7~AD0的内容。数据开关经一三态门(74LS245)以8芯扁平线方式连至数据总线接口,分时给出地址和数据。6116有3根控制线:(片选线)、(读线)、(写线)。当片选有效CS=0时,OE=0时进行读操作,WR=0时进行写操作。本实验中将OE引脚接地,在此情况下,当CS=0、WR=1时进行读操作,CS=0、WR=0时进行写操作,其写时间与T3脉冲宽度一致。实验时T3脉冲由【单步】命令键产生,其它电平控制信号由二进制开关模拟,其中CE、SW-B、LDAR为高电平有效,而WE为读/写(W/R)控制信号,当WE=0时进行读操作,当WE=1时进行写操作。
74LS138译码器:
74LS138 为3 线-8 线译码器,共有 54/74S138和 54/74LS138两种线路结构型式,其工作原理如下:
当一个选通端(E1)为高电平,另两个选通端((/E2))和(/E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。(即输出为Y0至Y7的非)比如:A2A1A0=110时,则Y6输出端输出低电平信号。
利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。
若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。
可用在8086的译码电路中,扩展内存。
在这里插入图片描述

四、实验电路图
在这里插入图片描述

图1-2 RAM存储电路
五、实验内容
(一)RAM数据读写
1、内部总线数据写入存储器
给存储器的00H、01H、02H、03H、04H、05H、06H、07H地址单元中分别写入数据11H、12H、13H、14H、15H、16H、17H、18H:(记录结果)
2、读存储器的数据到总线上
依次读出00H、01H、02H、03H、04H、05H、06H、07H存储单元中的内容,并记录结果
在这里插入图片描述

3、利用80C51烧写数据到ROM,并验证烧写内容
在这里插入图片描述

1-3存储器通路图
(二):二进制数据批量导入ROM(具体步骤参考附录:ROM数据烧入方法步骤)
● 新建文本文件(.txt),按照下列格式输入数据。然后,把.txt后缀改名为.asm后缀:
ORG 0024H
DB 55H
DB 55H
DB 55H
DB 55H

DB	01H			
DB 	01H		        
DB 	01H			
DB	01H
			
DB	0FFH			
DB	0FFH		        
DB	0FFH			
DB	0FFH	

DB	01H			
DB 	01H		        
DB 	01H			
DB	01H	        

END
注:
上述代码中 *空行为了方便观察,没有任何实际意义, “ORG xxxxH”规定存储数据的首地址,可以从0000H开始,也可以从任意地址开始。每一行“DB xxH”是一个存储单元存放的数据(注:16进制A~F前面要加0),从首地址开始,按顺序存放。中间的空行 仅仅为阅读方便,没有实际意义。文件必须以“END”作为结束
(三):查看项目中存储器ROM和RAM的内容
● 在proteus项目的仿真过程下按“暂停”,在点击菜单栏里的Debug,在弹出的菜单列表最下方有Memory Contents-ROM/RAM,如左下图所示。项目里有多少个存储器,就有多少个Memory Contents可供选择。点击所需查看存储器对应的Memory Contents-选项,则弹出如右下图所示的当前存储器内容,其中蓝色为地址,黑色为存储单元中的数据,按顺序从左到右,从上到下排列显示。值得注意的是,右下图显示的存储器地址是存储器芯片地址线A0~A7所指定的地址,即实验原理所述的低位“片内地址”。而“片内地址”加上存储器片选信号译码所用的高位“片间地址”,才是地址空间的真实地址。
在这里插入图片描述
在这里插入图片描述

(四):存储器ROM和RAM的读写
(1) 依照上述实验1步骤,加载project.asm文件编译的hex二进制文件到ROM芯片2764。依照上述实验2方法,查看ROM烧写是否正确。
(2)令图5-16各个开关的初始状态为:ROM_OE=1,RAM_OE=1,RAM_WE=1,SW_BUS=0。允许拨码开关给地址总线ABUS_[0…11]赋值
(3)操作拨码开关,向地址锁存器ROM_AR打入地址024H,然后2764输出使能(ROM_OE=0), 在数据总线DBUS_[0…7]的红色数码显示管上查看存储单元024H读出的内容。再操作拨码开关,向地址锁存器RAM_AR打入地址F80H,6116输入使能(RAM_WE=0)把存储单元024H的内容写入存储单元F80H。● 2764输出失效(ROM_OE=1), 6116输出使能(RAM_OE=0),在数据总线的红色数码显示管上查看存储单元F80H写入的内容是否正确。记录查看结果
1、ROM寻址:
按照上述操作,把ROM地址024H、028H、02CH、030H的内容依次写入RAM地址F80H、F81H、F82H、F83H。依照上述实验2方法,查看RAM的写入是否正确,记录查看结果
六、思考题
1、是不是烧写入ROM的ASM文件里面定义的所有数据都可以被访问到?假设把实验1中的ASM文件开头改为“ORG 0224H”,请问烧写进去的数据还能被读出么?如果不能,ROM的片选电路要如何修改?
不能被读出,U16的2端口接U13的Y2
在这里插入图片描述

2、假如RAM的范围改为800H~8FFH,请问片选电路的逻辑组合形式是怎样的?
U14的1接口接RAM-AR-H48的Q3,U14的2接口接U15的Y0
在这里插入图片描述

3、为何ROM和RAM需要使用两个独立的3-8译码器?若RAM的片选电路与ROM的片选电路共用一个3-8译码器,即ROM所在3-8译码器的最低2个端口给ROM使用,最高1个端口给RAM 使用。此时ROM和RAM的地址范围各自为多少?
使用一个3-8译码器不能使得数据的互通
ROM:000H-1FFH
RAM:780H-7FFH

在这里插入图片描述

  • 20
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半夏风情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值