当前课程知识点:微机原理与接口技术 > 第9周 半导体存储器 > 第38讲 内存单元编址 > 存储单元编址
大家好
在学习完半导体存储器
的一些基本概念之后
我们这一讲来开始学习
我们随机存取存储器
也就是RAM
我们回顾一下我们上一讲的内容
随机存取存储器
它的特点就是
可以随时的读或者写操作
但是它的不足
就是它掉电以后信息会丢失
也就是说它需要后备电源
这个大家应该有体会
就是今天我们一旦关机之后
我们内存里面的东西
实际上是没有了的
作为随机存取存储器 也就是RAM
它的主要的两种类型
一个叫做静态RAM 就是SRAM
还有一个动态DRAM
这两种RAM的区别
就是它们的存储元是不一样的
SRAM的存储元
是用双稳态电路来做的
而DRAM的存储元
主要是用电容来够构成的
学习这一部分
我们将以这个RAM型
特别是主要以SRAM芯片为例子
来介绍如何来设计半导体存储器接口
也就是说
从这一部分开始
我们将给大家最后的要求就是
要能够利用已有的存储器芯片
构造一个需要的存储空间
为了实现这一点
我们这一讲
我们先给大家做一些铺垫的知识
也就是说准备的知识
半导体存储器单元
或者说内存单元的编址
我们在前边已经在学第二章的时候
我们就提到
任何一个内存单元的地址都是由
段地址和偏移地址合起来构成的
也就是说
从程序员的角度来讲
它的每一个内存单元地址
都是一个逻辑地址
但是因为是逻辑地址
所以它是逻辑上的地址
它是面向程序员的地址
而不是在我们现在芯片这样
一个级别上的物理上的一个存在
我们下边要说的地址
不是我们前边说的那个
由段地址和偏移地址合成的
构成的物理地址
而是从我们这个硬件逻辑层面
就是说这个芯片这个层面
我们来描述每一个内存单元
它的地址是怎么样的构成
或者从芯片这个角度
或者在整个系统中
地址是如何去编写或者构成的
为了学习这一点
我们现在要先给大家介绍
8088的总线信号
我们知道8088CPU
是一个40个管脚的
一个集成电路芯片
那么每一个引脚
它都有它特定的一些信号
但是因为CPU本身它的这个特性
就是它的能力 它的能量
或者说它的这种 驱动力都不足
它不可能
由它直接去驱动外边的其他的芯片
我们在前边实际上
我们给大家介绍
最小模式和最大模式的时候
我们曾今给过大家两个
最小模式下的一个最小系统示意图
以及最大模式下的最小系统示意图
如果想不起来
请大家回忆前面的视频
也就是说
在一个8088系统中间
CPU它和外边的地址总线的连接
中间需要通过地址锁存器
和数据总线的连接要通过数据收发器
和控制总线的连接需要通过总线控制器
也就是说
它的外围都要有一系列的这些芯片
这些芯片共同我们把它可以说
它构成了一个8088的总线系统
那么所以我们从这个总线的角度
现在我们因为是已经到了这个芯片外边
我们讲内存了 是吧?
我们从内存这个反过来去看芯片
我们看到的不是CPU
我们看到的是它的总线
这个 现在这堵墙
那么现在
等于说我们不再关心
CPU本身的引脚信号了
我们关心
由总线这个外边所连接出去的信号
总线我们上次讲了 刚才我们说
8088的20位地址信号
通过地址锁存器
和外边的地址总线连接
这20位的地址信号用来确定
要访问的某一个内存单元的地址
好 这一样的
通过假设地址锁存器
就是现在这个8088总线
这堵墙这个里边的一个东西
好 它就输出了20位地址信号
这个地址信号就指向了某一个内存单元
指向内存单元干什么呢?
我们对内存无非就是读或者写
所以这个时候CPU会发出
读或者写信号
还有就是IO/#M这个信号
IO/#M这个信号为低电平的时候
表示现在要访问内存
那么 这个是CPU的引脚
通过这堵墙
也就是通过总线控制器
因为读和写还有IO/#M这都属于控制信号
它通过总线控制器后
总线控制器本身也是个可编程的一个芯片
它会把这些信号进行分解
比如现在要访问内存
它就会把它分解出两根访问内存的信号
又叫#MEMW #MEMR
这个MEM是内存的缩写
W就是Write的缩写
R就是Read的缩写
所以未来我们在这一章里头学习的时候
我们所访问内存的读写信号
我们都将使用
这个8088 这两位总线信号
就是内存的读和写信号
这些信号以及其他的信号合在一起
会构成访问存储器
那么除了访问内存
我们实际上CPU还可能访问接口
对吧?
当我们IO/#M等于高电平的时候
我们这个时候地址总线上的地址信号
就是指向了 接口系统中
输入输出系统中
某个接口上面的某个端口
那么访问端口的信号需要哪些呢?
这个时候它的读和写信号
就会被分解成这样两类信号了
这里的IO表示Input Output 的缩写
就是输入输出接口的意思
同样的W表示写
R表示读
所以这个时候就是说
当你的读或者写
就是Write或者Read信号
某一个为低电平
IO/M这个引脚为高电平的时候
总线控制器会在
#IOR或者#IOW端输出低电平有效
这个时候表示要访问的是某一个端口
那么访问端口所需要的地址
只有16位
这一点我们在下一章的学习中
我们会再给大家介绍到为什么是这样
所以下边我们这一章
我们学的是内存
所以我们将始终使用的是上面这一种
访问内存的读写信号
地址信号 数据信号 以及其他的信号
我们举个例子
假设IO/#M等于低电平
那么如果这个时候Read等于低电平
那么这个时候会生成MEMR信号
如果这个时候Write为低电平
那么会生成MEMW信号
任何一个存储单元
在整个内存空间中
它都有唯一的地址
那么现在如果这个内存单元
也就是在任何一个时刻上
我们说它一定存在在一片芯片上
这一片芯片不一定是真正的一片
后面我们就会说了
我们现在假设它就在这一片芯片上
那么也就是说
在这一片芯片上
这样一个单元
一定要有一个
整个内存主空间中的地址
现在假设
我们用这样一个只有4个单元的存储器
来作为例子
来解释它的这个地址怎么样的构成
假设这样一个4个单元的这个芯片
要想区分这4个单元
我们很容易能够想到
它的地址码的长度
至少需要2位
因为第一位 第一个单元是00
最后一个单元是11
然后是01 10 对吧
那么如果我们 这个存储器空间
我们就要4个单元的存储空间
那么这一片芯片就够了
两位地址信号就可以了 就OK了
但是如果我们现在这4个单元太小
我们希望有8个单元 怎么办呢
我们需要再加一个
那么如果我们还需要再一片
要12个单元怎么办呢?
那么我们同样的还需要再一片
那么这个时候我们会发现
第一片芯片上的第一个单元的地址是0
第二片芯片上的第一个单元还是0
第三片芯片上的第一个单元还是0
那么如果这个时候
我们用一条MOVE指令
往零号单元去写数据的话
我们写一次把3个单元都写了
因为它们3个单元都是0地址
那么大家看
我们写4次 肯定把4个单元全写完
所以从程序员的角度
我们还是只知道只有4个单元
而不是现在看到的12个单元
怎么样去区分?
大家也很容易想到
我们把地址码扩大就可以了
现在我们有12个单元
所以我们的地址码要多少位呢?
至少得4位 对吧?
2的4次方等于16
所以我们需要去扩展两位
这个也一样 这个也一样
所以这样的话
我们第一片芯片第一个单元的地址就是0000
第二片芯片的第一个单元的地址
就是0100
然后后面是1000
这样我们就真正的有了12个单元
那么现在红颜色的这个地址
和黑颜色的地址
就等于共同构成了一个内存单元的地址
如果我们把红颜色的地址称为高位地址
黑颜色的地址称为低位地址的话
那么我们每一个内存单元的地址
就是由两个部分来构成的
也就是它的所谓的高位地址
和低位地址 这两部分
我们这个高位地址用来干什么?
从这个图 大家应该已经容易想出来了
高位地址就是用来选择
我们要找的那个单元到底在哪个芯片上
也就是说
这个高位地址是用来区分这三个芯片的
所以我们把这高位地址叫片选地址
它的目的就是用来选择芯片
只有选中了这个芯片
然后我们才能说
到底在这个芯片上去找哪个单元
比如现在我们的高位地址是00
那么现在我们首先要确定
我们未来要找的那个单元
一定在现在的第一片芯片上
那么具体在这个芯片上的第一个单元
还是最后一个单元
那看后边黑颜色的这两位
也就是它的低两位
如果低两位是11
那么就是这个芯片上的最后一个单元
否则就不是 对吧
如果高位地址是10
我们要找的单元肯定不在第一个芯片上
肯定在最后这个芯片上
那么具体在最后这个芯片的哪一个单元
我们再去看最后两位
所以 在这样一个图里头大家可以看到
这三片容量相同的芯片
他们的低位地址都是一样的
都是从00到11 00到11
唯一能够实现对它们每个单元的区分
就是由高位地址去区分
所以低位地址也称为片内地址
是用来选择芯片上的单元
我们把这个图重新画在这里
如何来知道我高位就是00的时候
正好就选中了第一片芯片呢?
所以每一个芯片的底下
会有一个这样子的一个信号
这个信号我们成为片选信号
通常都是低电平有效的
在我们整个这门课里
我们除了
一片芯片上的一个片选信号以外
其他所有的芯片的片选信号
都是低电平有效
这个理由也很简单
因为很多的干扰信号都是尖峰脉冲
所以低电平相对来讲比较可靠
所以片选信号
通常上面有一横杠
就表示它是低电平有效的
那么 每一个芯片上
都有类似这样的一个引脚
当这个引脚上出现低电平的时候
那么我们这个芯片就被选中了
被选中就意味着它被激活了
激活就意味着它可以工作了
具体是找这个就是相当于就被找到了
就像有人给你打了招呼
具体要想说什么话那他接着再说 对吧
所以当这个片选信号有效的时候
这个芯片会被选中
下面我们用一个示意的图
来描述一下这个片选信号的作用
现在假设
我们的高位地址就是红颜色的两位
也就是说我们假设地址总线上
地址总线的宽度一共就只有4位了
那么是这样
当高位地址出现00的时候
我们通过一个电路输出了一个低电平
这个低电平正好就接到了
现在第一片芯片的这个片选端
好了 因为这个时候
这个片选端上 发现它接收到了低电平
所以现在第一个单元
第一个芯片就被选中了
好 那么
到底选中这个芯片上哪个单元呢?
那么 这个时侯看黑颜色就是低两位地址
也就是说
如果我们现在用MOVE指令
去读取这个零号单元的内容的话
那么这个零号单元的地址是0000
其中的高两位的00
是来自于地址总线上的高两位
因为这高两位
通过这个电路 产生了一个低电平
这个低电平的作用就激活了这个芯片
然后 低两位地址
就指向了这个芯片上的第一个单元
然后它们合在一起
现在就指向了这个叫0000这个单元
然MOVE指令就把这个单元内容可以读出来
那么如果我们这个时候高位地址改变了
变成了01
那么这个时候
这个电路就不能够再使这一端输出
那么这个电路这个时候
就不能再使这一端输出低电平
而必须要使得另外一个端输出低电平
另外这个端输出了低电平到哪呢
走到了第二个芯片的片选端
那么也就是说
这个芯片的高两位地址正好是01
也就是高位地址总线上出现01的时候
这个芯片应该被激活
然后接着就等于相当于
要找的单元在个芯片上
具体在找到哪个单元再看低两位地址
同样的如果这个时候高位地址
又变成了10
那么 现在的这个引脚
也就不能再输出低电平了
它需要把低电平送到哪里呢?
送到这个芯片的片选端
中间的这个框框是个什么玩意儿呢?
这个就是所谓就是译码电路
所以译码电路的作用
就是将输入的一组高位地址信号
或者输入的一组二进制信号
通过这样子的变换
产生了一个确定的输出
这个确定的输出可能是一个
虽然它的输出端可能有多位
也可能有一位
但是
它在任意一个时刻只有一位
输出的是有效信号
这个有效信号如果假设是低电平的话
我们就可以简单的描述为
将输入的一组二进制信号
变成一个确定的低电平输出
这样子的一个电路就称为译码电路
这也就是未来我们要设计半导体存储器接口
所需要的关键的部件
好 有关这样一个铺垫的知识
我们就介绍到这里
到下一讲我们会具体的用一个型号的芯片
来给大家介绍
如何来设计具体的译码电路
-第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讲 结束语
--结束语