当前课程知识点:微机原理与接口技术 > 第9周 半导体存储器 > 第40讲 只读存储器ROM > ROM_02
我们这门课里也带给大家
一个具体的EEPROM的型号
叫98C64A
它的容量也是8K×8位的
大家可以看到我们选择这些芯片的用心
大家的容量都是8K的
而且它都是乘8位的
所以这也就是和我们8088
这个CPU去对接的
因为它的原理都是类似的
8位 32位 64位
其实也就是像人一样长大了而已
眼睛还是眼睛 鼻子还是鼻子 对吧
有很多的基本的构件实际上变化不大
只是在上面不断的叠加了很多功能
就像一个婴儿是没有什么力气的
但是你作为一个小伙子
它力气就很大 是一样的
好 这样子的话 所以它对于这个芯片来讲
也有13根片内地址 8位数据信号
因为它可以在线的读 也可以在线的写
所以它有读允许#OE和写允许#WE
同样它有片选信号#CE端
跟我们6264或者EPROM比起来一样的
如果和6264去比
它又少 又多出一个端来
就是6264的CS2
所以这个芯片实际上它在引脚上
跟6264也是兼容的
那么少出来这个引脚是什么呢
是这样一个引脚
叫READY/#BUSY
这个引脚使得这个型号的芯片
它有一个非常独特的特点
这个芯片是半导体存储器
也就是说它属于主机系统的范畴
但是只有这个READ/#BUSY这个端
这个状态是要通过接口和系统连接的
所以我们也可以认为这个端
它属于一个外部设备的范畴
只有这个端处于READY状态
大家看READY上面是没有横杠的
也就是处于高电平状态的时候
我们才可以写
如果这一端位于低电平状态
也就是说BUSY状态
那么就表示它现在不可以写
因为你每写入 对于这种ROM型的芯片
每写入一个字节它有一个处理的过程
这个过程时间比较长
不能像RAM那样哗哗地写进去
所以它一旦处理的过程中
它是不允许再接受下一个字节的写入
它要呈现一个BUSY状态
因此呢 我们每一次的写状态
写操作我们都要去看这个READY端的眼色
看它是高电平我们才可以写
它不是高电平就不可以写
这个是这个芯片它的一个特点
由此我们就有了这样子的一个工作时序
也就是说大家看 最上边
就是13位的地址信号如果是有效
那么这个时候如果我们是写操作的话
#OE端就全程为高电平
那么#WE端是低电平
那么如果这个时候READY端
为高电平 也就是表示可以写的话
数据就写进去了
那么如果写完了以后呢
它要对这个数处理
所以紧接着这个READY/#BUSY端就呈现低电平
呈现一个忙状态
那么它就不能再写
所以#BUSY为低电平的时候
大家会看到对应的写允许信号也是无效的
这个就是又再次给大家呈现了
98C64A它的工作特点或者原理
所以对于EEPROM98C64A的应用是这样
我们用文字来总结一下就是可以通过程序
来实现对芯片的读或者写操作
当然读是谁没问题的
就是主要是对它进行可以通过
程序来在线进行写操作
但是呢 写要有条件
在写入的时候
READY端必须呈现为高电平
它才能够完成一字节的写入
对于98C64A它只具有
按字节写的这种方式
那么就是说在这个为高电平
它可以实现一字节的写
那么我们如何能够知道
这个是高电平还是低电平
也就是我们如何能知道
我们现在能不能写呢
我们有三种可以供你选择的方法
首先我们如果去买这一片98C64A
这个芯片它有相应的技术参数
这个参数里头其中有一条
就表示它每完成一次写操作
这样一个周期是100个微秒
这个是它的一个参数
所以这个参数就表示
你写一个字节需要100us才能写下一个字节
所以我们马上就可以想到这样个办法
我们写完一个字节
我们定时100us我们再去写下一个字节
这个没问题
但是这里要提醒大家的一点的是
在实际的工程应用中
因为我们虽然这可能从一条流水线在一批次
生产出了这样一些芯片
但是它们在性能上还是存在一些微小的差别
就是说它在技术手册上
提供你100us完成一次写操作
但是它这是一个均值
不一定是绝对的
所以通常从工程应用的角度要打一些余量
这个余量通常为20%
那么也就是说我们可能需要定时120us
我们再写一个字节进去
那么这样子的话它的效率就会不是那么高
因为有可能有些芯片它大概说不定99us
它就完成了一次写操作
你是不是又浪费了那么21个微秒 是吧
但是这毕竟是一种办法
第二种办法呢
我们可以通过不断的去观察
或者说查询
这个READY端的状态
就像我们前边讲and text指令的时候
我们举过那个例子
我们说我们通过读取READY端的状态
然后去看一下
这一个状态到底是高还是低
如果是高电平我们就可以写
如果是低电平就不可以写
这就是另外一种工作方式
我们称为查询的工作方式
这种工作方式在下边
我们下一周讲接口的时候我们会
跟大家详细的解释这种工作方式
怎么样去实现
还有一种方式
不管是刚才我们说定时的方式查询的方式
实际上主导方都是CPU
也就是我自己定时100多个微秒
我去完成一次写
或者说我不断地问你
你好了没有 然后好了我再去写
这是两种
还有一种我不用管你
我自己做我自己的事情
等你的READY端为高电平时候
你来告诉我 对吧
这也是一种办法
这种方法我们称为中断的方法
也就是说当READY端呈现高电平的时候
它把这个高电平信号反馈给CPU
然后CPU看到它为高电平马上完成一次写操作
这是三种方法
这三种方法从刚才的描述上
大家其实已经能够感觉到
效率最低的就是第一种方法
其次是第二种方法
最好是第三种方法
当然后两种方法因为牵扯到接口控制
我们会在那些内容里头
我们再详细的解释
所以下边我们用第一种方法作为示例
来给大家介绍一下98C64A如何应用
这个例子是这样
将一片98C64A接到系统总线上
然后告诉你
要让它在整个地址空间的地址范围
是3E000到3FFFFH这样的一个范围
这个地址范围同样的
你去用计算机算一下
它也正好是8K个地址编码
说明用这一片芯片就可以了
现在要你要设计它的线路图
然后要编程
把每一个单元里都去写入
66H这样一个工作
我们同样把这个题目做一个简单的分析
我们首先要实现
将这个芯片和系统进行连接
按照我们上一讲所学到的那些
存储器芯片和系统连接的方法
总而言之 主要的就实现译码电路
第一步就是要把这个高位地址确定出来
然后我们再去设计相应的译码器
当然这硬件设计完了以后
按照题目的要求我们还需要编程
所以我们要做软件的设计
就是循环的将每一个单元里写入66H
这样 一共写多少次呢 一共8K个单元
所以写8K次就完了
按照我们刚才说的三种方法
我们用第一种方法定时写入的方法
这个芯片我们说了
它的技术参数里说100us写入一个字节
所以我们可以定时120个微秒
然后写入一个字节 一共写8K个字节
我们按照刚才题目给定的条件
我们来确定它的地址范围
从这个地址范围里
用二进制写出来就是这样一个地址范围
这个红颜色的就是它的高位地址
这个高位地址大家也看到
首地址尾地址它的高7位是一样的
那么高位地址一旦出来我们就知道了
A19要是低电平
A18是低电平
其他是高电平等等
那么下边的工作
就是把这些低电平高电平组合出来
产生一个低电平输出
这就是我们完成的这个译码电路的一个示例
再次说一下
译码电路的设计不是唯一的方法
你可以用我们现在这个
课件上看到的这个方式
你实际上也可以完全换一种方式
用其他的门电路来实现也可以
都没有关系 只要逻辑上正确就可以了
这里就提示一点
就是这里的读写控制信号
一定要作为译码器的输入信号
这里的#MEMW #MWMR
这样子做
一个是作为一种可靠性
也就是说只有在对这个芯片
进行读或者写操作的时候
它后续的芯片才允许被选中
也就是说译码器才允许工作
如果你不对它读也不对它写
也就是CPU自己在自己肚子里
做加减乘除的时候
那你这个译码器就不能工作
也就是说那个芯片就不能被选中
所以这是从一个可靠的角度
还有呢对于某一些性质的芯片
当你这个读写控制信号
不作为译码器输入的时候
有可能这个芯片根本就不可能工作起来
这个在我们后续讲接口的时候
我们会用一个具体的示例
来为大家解释
硬件设计完了
我们下边就是软件的编程了
这就是我们循环写入8K个单元
每个单元里都写66H的一个程序
我们首先完成的是
将段基地址写入到DS里
刚才根据我们的地址范围
是3E0000到3FFFF
所以呢 我们简单的就认为
3E00H就是段地址了
因为它的片内地址
对于这一个具体的芯片来讲
第一个单元的片内地址肯定是13位0
最后一个片内地址肯定是13位1
所以这个就是段基地址
然后呢 我们从0开始写
写8K个单元 8K的十进制数等于多少呢
就是8192
就是写8192次 是吧
然后我们就开始把66H
一个一个地循环写进去
每写一个字节
一定要去定时至少100us
刚才我们说
从工程应用的角度要定时120us
所以要去调用一个定时子程序
调用完了以后
好 回来 如果没有写完的话
我们再去写下一个字节
当然这个时候就要修改指针了
所以这个程序如果我们现在想
把这个66H写入到SRAM6264里头
这个程序该怎么改呢
大家考虑一下
就对比一下这样一个芯片
8K个单元里每个单元里都写66H
和6264芯片每个单元里也写66H
它们在软件程序设计上
区别在哪里
把问题留给大家
如果答不上来 我们论坛上来讨论
好 这个就是有关EEPROM芯片
我们用这个案例来介绍就到这里
最后我们简单的说一下
我们所谓的闪速存储器也就是Flash
这是我们今天真正人人
都整天手边都具有的一种半导体存储器
我们所有的U盘 包括我们的数码相机
我们的手机里边的存储卡等等
都属于这种Flash性质的存储器芯片
这种芯片实际上它的本质
属于EEPROM类型的芯片
那么为什么单独作为一种类型叫Flash
Flash的意思就是闪速 为什么闪速
就意味着它快 对吧
那么它的快在哪里呢
除了它一些半导体芯片
这个本身性质上的一些区别之外
在同时代的Flash里头
它的很重要的一点
就是它每一次不是通过刚才
我们说的READY/#BUSY端的状态
来决定能不能去写
我们刚才说98C64A那个READY端的状态
到底是高电平还是低电平
实际上是通过接口读进来的
那么一旦通过接口速度就慢的很多了 对吧
因为它就变成了一个外部设备的范畴
那么Flash芯片呢 我们决定它能不能写呢
我们不是通过这样的接口
去读取它当前的状态
而是通过读取它内部的状态寄存器的
状态来确定它能不能写
Flash芯片呢
它内部通常是用一个状态寄存器来反映
它现在到底可不可以写操作的
那么这个状态寄存器的状态
是CPU通过CPU总线直接读进来的
而不需要通过接口
这样的话速度就快的很多了
那么读进来以后
它去看这个状态寄存器
相应的那一位的状态
好 确定它可以
接着它再去发布相应的写操作命令
就已经进行写操作了
这个就是Flash它能之所以叫Flash
一个最核心的一个原因
Flash芯片它可以在线
它既然属于EEPROM
所以它也可以在线的写在线的读
那么它和SRAM的区别在哪里
主要的当然是它掉电以后信息不丢失
这是它和所以RAM型芯片的主要的区别
另外呢 它的写电压要相应的要高一点
和普通EEPROM芯片的主要的区别
就是它不是通过读取 通过接口
去读取READY端的状态来确定能不能写操作的
而是通过读取状态寄存器的状态来写操作
同样的我们也可以把这样一个芯片
它的工作方式简单的说一下
它有读出
有编程写入
有擦除这样三种
这个是和所有ROM芯片都是一样的
它的读操作除了和普通EEPROM芯片一样
具有读内存单元的内容之外
它还可以要读状态寄存器
因为它必须确定能不能进行写操作
另外呢 它还要可以读出它的一些厂家标记
都可以在里头读
它的写操作呢
可以写数据 这没问题
同时呢它还多了一样
可以实现软件的写保护
就是以防止意外的进行写操作了
这是我们现在有的U盘里
旁边有一个推的这个暗扣
推上去就不可以进行写操作了
这就是这个意思
那么它的擦除呢
EEPROM跟EPROM比较起来已经有了进步了
EPROM我们说光照 紫外光照射擦除
所以一擦就整个芯片就被擦光了
而EEPROM因为它可以在线的擦除
所以它可以一个单元一个单元擦
而Flash芯片呢
除了按字节来擦
它可以分块来擦 它也可以整片来擦
除此之外 它还可以擦除挂起
也就是说擦到中间它可以暂停的意思
这个就是Flash
Flash芯片因为它今天的发展很快
它的很多的新型的型号都非常的多
我们就不再这里做更详细的解释了
它的基本原理
和我们的EEPROM有类似的地方
另外它读状态寄存器
根据状态寄存器的状态
来决定是不是进行写操作
有关状态寄存器这些概念
我们会在后边的可编程接口里也会借用过来
给大家解释
所以那部分学完后
大家再回来去理解Flash
也就没有什么特别惊奇的东西了
所以有关Flah芯片
如果大家未来做设计需要具体的还要使用的话
可以去参照一些具体的技术手册
就是说你选哪一个型号
你看它的手册上具有哪些性质
你去直接去用就可以了 在我们这里
给大家一些简单的普适性的介绍
科普性的介绍就到这里
好 有关我们只读存储器的学习
今天就到这里
-第1讲 关于本课程
--关于本课程
-第2讲 微型计算机系统
--微机系统_01
--微机系统_02
-第3讲 微型计算机一般工作过程
-第4讲 数制与编码
--计算机中的编码
-第5讲 计算机中数的表示与运算
--数的表示
--符号数的表示
--数的表示与运算
-第6讲 基本逻辑运算与逻辑电路
-第7讲 本周小结
--本周小结
-第1周 微型计算机基础概论--第一周单元测验
-第8讲 8088微处理器
-第9讲 8088 CPU主要引线及机构
-第2周 8088微处理器--第二周单元测验
-第10讲 实模式存储器寻址
-第11讲 8088系统总线
--8088系统总线
-第12讲 微处理器小结
--微处理器小结
-单元测验--作业
-第13讲 指令概述
--指令概述
-第14讲 寻址方式
--寻址方式
-第15讲 通用数据传送指令
-第16讲 地址传送指令
--地址传送指令
-第17讲 输入输出指令
--输入输出指令
-第4周 数据传送指令--第四周单元测验
-第18讲 算术运算指令
--加法运算指令
--减法指令
--乘除运算指令
-第19讲 逻辑运算指令
-第20讲 移位操作指令
--移位操作指令
-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验
-第21讲 关于串操作指令的说明
--串操作指令说明
-第22讲 串传送与串比较
--串传送与串比较
-第23讲 串扫描指令
--串扫描指令
-第24讲 串装入与串存储指令
-第六周单元测验--作业
-第25讲 程序控制指令说明
-第26讲 转移类指令
--无条件转移指令
--条件转移指令
-第27讲 循环控制指令
--循环控制指令
-第28讲 过程调用指令
--过程调用指令
-第29讲 中断指令
--中断指令
-第30讲 处理器控制指令
--处理器控制指令
-第31讲 指令系统小结
--指令系统小结
-第7周 程序与处理器控制--第七周单元测验
-第7周 程序与处理器控制--第七周作业
-第32讲 汇编语言源程序
-- 汇编语言源程序_01
-- 汇编语言源程序_02
-第33讲 伪指令
--数据定义伪指令
--其它伪指令
-第34讲 系统功能调用
-第35讲 汇编语言程序设计示例详解
--程序设计示例1
-第36讲 汇编语言程序设计小结
-第8周 汇编语言程序设计--第八周单元测验
-第8周 汇编语言程序设计--第八周作业
-第37讲 半导体存储器概述
--半导体存储器概述
-第38讲 内存单元编址
--存储单元编址
-第39讲 随机存取存储器RAM
-- RAM_01
--RAM_02
-第40讲 只读存储器ROM
--ROM_01
--ROM_02
-第九周单元测验--作业
-第41讲 半导体存储器扩展
--存储器扩展_2
-第42讲 半导体存储器小结
--半导体存储器小结
-第十周单元测验--作业
-第十周作业--作业
-第43讲 基本I/O接口
-第44讲 简单接口芯片
--简单接口芯片
-第45讲 基本输入输出方法
--基本I/O方法
-第46讲 简单I/O控制系统设计
-第47讲 中断技术
--中断技术1
--中断技术2
-第48讲 输入输出与中断技术小结
--本周小结
-第十一周单元测验--作业
-第49讲 可编程定时计数器
-第50讲 可编程并行接口
-第51讲 可编程接口小结
--本周小结_01
--本周小结_02
-第十二周单元测验
-第52讲 模拟量的输入输出
--模拟量的输入输出
-第53讲 D/A转换器
-第54讲 A/D转换器
-- A/D转换器_01
-第十三周单元测验--作业
-第55讲 I/O接口系统综合设计示例详解I
-第56讲 综合设计示例详解II
-第57讲 结束语
--结束语