微机原理——扩展存储器设计

目录

    • 【1】存储器的层次结构
    • 【2】存储器的分类
    • 【3】SRAM
      • 1、基本原理:
      • 2、结构:
      • 3、芯片参数与引脚解读:
      • 4、CPU与SRAM的连接方式
    • 【4】DRAM
      • 1、基本原理:
      • 2、结构
      • 3、芯片引脚解读:
    • 【5】存储器系统设计
    • 【6】存储器扩展设计(重点)
      • 1、位扩展(位并联法)
      • 2、字节扩展(地址串联法)
      • 3、字节和位扩展
    • 【7】片选信号产生(译码电路)(重点)
      • 1、全地址译码
        • 例题
      • 2、部分地址译码
        • 例题
      • 3、线选译码方式
      • 4、三种译码方式的比较
      • 4、地址译码电路设计
        • 步骤:
        • 【1】基于74LS138专用译码器的设计
        • 【2】基于74LS688比较器的设计

【1】存储器的层次结构

存储器的层次结构

【2】存储器的分类

存储器的分类
这里我们拣SRAM和DRAM来讲

【3】SRAM

1、基本原理:

静态随机存取存储器(SRAM):
所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。
当电力供应停止时,SRAM储存的数据还是会消失(被称为volatile memory),这与在断电后还能储存资料的ROM或闪存是不同的。

2、结构:

⦁ 存储矩阵,决定存储器中存储单元的排列形式,有字结构和位结构两种
⦁ 地址译码器,用来选择存储单元,有线性译码和复合译码两种,通常采用复合译码
⦁ 控制逻辑与三态数据缓冲器,控制CS、WR、RD信号

3、芯片参数与引脚解读:

以6116(2K x 8)为例:
2K:表示该芯片内部存储单元的数目,这个数决定存储芯片地址线的数目
8:表示该芯片每个存储单元存储信息的位数,这个数决定存储芯片数据线的数目
引脚号如下:
芯片引脚

4、CPU与SRAM的连接方式

在这里插入图片描述
注意:地址和控制BUS是单向指向存储器,数据BUS双向。

【4】DRAM

1、基本原理:

1
2

2、结构

⦁ DRAM的地址线是复用的,即地址线分为行地址和列地址两部分。在对存储单元进行访问时,由行地址选通信号RAS把行地址送入行地址锁存器;再由列地址选通信号CAS把列地址送入列地址锁存器
⦁ CPU与DRAM之间的信息交换由DRAM控制器完成。

3、芯片引脚解读:

1

【5】存储器系统设计

所要考虑的问题:

1、总线的负载能力
2、CPU时序和存储器存取速度之间的配合
3、存储芯片的选择以及数目
4、片内寻址和片间寻址地址线的分配
5、译码电路的选取(线性译码、全译码、部分译码)
6、数据线、控制线的连接

【6】存储器扩展设计(重点)

1、位扩展(位并联法)

⦁ 位扩展指用多个存储器器件对字长进行扩充。一个地址同时控制多个存储器芯片。
进行位扩展时,模块中所有芯片的地址线和控制线互连形成整个模块的地址线和控制线,而各芯片的数据线并列(位线扩展)形成整个模块的数据线(8bit宽度)。
位扩展
为何需要位扩展?
在微机系统中,存储器是按字节来构成的,而所选择的存储器芯片的字长不足8位
时,用这样的存储器芯片构成系统所需的存储器子系统电路,就必须进行位扩展,即
用几片存储器芯片并起来,以增加存储字长。例如上图,两个4位组成一个8位。所以称为“位扩展”。

2、字节扩展(地址串联法)

⦁ 字扩展指的是增加存储器中字的数量。
进行字扩展时,模块中所有芯片的地址线、控制线和数据线互连形成整个模块的低位地址线、控制线和数据线 , CPU的高位地址线(扩展的字线)被用来译码以形成对各个芯片的选择线 —— 片选线
图

3、字节和位扩展

1
1、首先对芯片分组进行位扩展,以实现按字节编址;
2、其次设计个芯片组的片选进行字扩展,以满足容量要求;
3

【7】片选信号产生(译码电路)(重点)

译码电路

1、全地址译码

除了用于存储器芯片片内地址外,CPU总线的其他地址总线都参加芯片的片选地址译码。
特点:
存储器芯片只占用整个存储空间中的一块区域,访问该存储芯片片内单元采用唯一的地址。

例题

例:在8088CPU工作在最大方式组成的微机应用系统中,扩充设计8KB的
SRAM电路,SRAM芯片用Intel6264。若分配给该SRAM的起始地址为62000H~
63FFFH,片选信号(CS1) 为低电平有效。请用全地址译码方法设计该SRAM存储器的
片选信号形成电路

分析:
1、Intel 6264

8K ×8位的SRAM
1

2、8K ×8位:8KB,所以只需要1片6264,不需要扩展
3、8086/8088CPU的地址总线均为20位,8086/8088CPU的寻址范围为1MB; 8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据。可寻址的内存空间为1MB。
4、6264片内地址线有13根:A0~A12,所以CPU总线的低13位直接与片内地址引脚相连接,作为片内寻址,来选择片内具体单元。
5、由于采用全译码方式,CPU高7位A19~A13全部参加译码。且芯片数量是1MB/8KB=128片。所以有128个片选地址。2^7=128.
62000H/2000H=49(10000H=8*2000H)转换成二进制:0110001
6、片选信号是低电平有效,所以在地址译码设计中,若采用门电路,注意:A19~A13所有1进行逻辑与非,所有0进行逻辑或。
7、系统总线IO/M‘也参加译码
最终结果:
1
总结:…感觉步骤还挺多的,不过按照这个流程走一遍,第二次做的时候就很简单了。

2、部分地址译码

也称局部地址译码。片选信号不是由地址线中所有不在存储器上的地址线译码产生,而是只有部分高位地址线被送入译码电路产生片选信号。
特点:某些高位地址线被省略而不参加地址译码,简化了地址译码电路,但地址空间有重叠。
例如,在8088 CPU组成的微机系统中,存储器芯片采用8KB容量的6264芯片。在设计地址译码时,地址线A19未参加译码,只有A13—A18 6条地址线参加译码。这时每块6264将占有两个8KB的内存空间。也就是说,内存空间发生了重叠现象,其重叠情况如图6.23所示。从图中可以看到,连接到内存空间最低8KB地址区的那一块6264芯片,实际占有的内存地址空间为:00000H—01FFFH、80000H—81FFFH。它占有了两个8KB的内存空间。可以依此类推,如果有两条高位地址线不参加地址译码,那么就会使4个存储空间发生重叠; 3条高位地址线不参加地址译码,则会产生8个重叠空间。重叠空间数满足下述关系:重叠空间数=2",其中,n为不参加地址译码的高位地址线。

例题

例:在8088 CPU工作在最小方式组成的微机应用系统中,扩充设计8KB的SRAM电路,SRAM芯片用Intel6264。若分配给该SRAM的地址范围为00000H~0FFFFH,片选信号(CS)为低电平有效。请用部分地址译码方法设计该SRAM存储器的片选信号形成电路。
分析:
1、6264的容量是8KB,然而00000H0FFFFH是64KB,所以重叠区域有64KB/8KB=8个,且2<sup>3=8,所以三条高位地址线不做译码,如A15A13
2、IO/M‘=0参加译码
1

3、线选译码方式

高位
线选法:选择除存储器芯片片内寻址以外的高位地址线中的某一条,作为存储器芯片的片选信号。
由于片选的地址线每次寻址时只能有一位有效,不允许同时有多位有效,这才保证每次只选中一个芯片或一个芯片组。
优点:选择芯片不需要外加逻辑电路,姨妈线路简单。
缺点:把地址空间分成了相互隔离的区域,且地址重叠区域多,不能充分利用系统的存储器空间。

4、三种译码方式的比较

全译码:

系统所有地址线全部都应该参与译码
低段地址线应直接接在模块上,寻址模块内单元;
中段地址线译码后产生片选信号区分不同模块;
高段地址线可用作片选信号有效的使能控制;

部分译码:

高端地址信号不参与译码,会造成地址空间的重叠和不连续

线译码;

电路结构简单,但系统必须保证参与片选的地址线不能同时为有效电平;
同部分译码法一样,因为有地址信号不参与译码,也存在地址重叠及不连续的问题

4、地址译码电路设计

步骤:

1、根据系统中实际存储器容量,确定存储器在整个寻址空间中的位置
2、根据所选用存储芯片的容量,画出地址分配图,地址分配表
3、根据地址分配图或分配表确定译码方法并画出相应的地址位图
4、选用合适期间,画出译码电路

某微机系统地址总线为16位,实际存储器容量为16KB,ROM区和RAM区各占8KB。其中,ROM采用2KB的EPROM,RAM采用1KB的RAM,试设计译码电路.
1、该系统的寻址空间最大为64KB,假定实际存储器占用最低16KB的存储空间,即地址为0000H3FFFH。其中0000H1FFFH为EPROM区,2000H~3FFFH为RAM区。
2、根据所采用的存储芯片容量,可画出地址分配图;地址分配表
在这里插入图片描述
对于ROM来说每个子区域为2KB=2^11,需要11位地址线作为片内寻址:A0~A10;
对于RAM来说每个子区域为1KB=2^10,需要10位地址线作为片内寻址:A0~A9;
采用3—8译码器,前四根指向4片ROM,后四根加上一个A10构成二次译码,指向8片RAM;
在这里插入图片描述

【1】基于74LS138专用译码器的设计

引脚
在这里插入图片描述
真值表
在这里插入图片描述
例题1:在某 8088微处理器系统中,需要用8片6264构成一个64KB的存储器。其地址分配在0000H~0FFFFH内存空间,地址译码采用全译码方式,用74LS138作译码器,请画出存储器译码电路。
分析:
1、6264片内地址线有13根:A0~A12,所以CPU总线的低13位直接与片内地址引脚相连接,作为片内寻址,来选择片内具体单元。
2、由于采用全译码方式,CPU高7位A19~A13全部参加译码。且芯片数量是8片。
这里我们只是用A13~A15作为译码器的输入,这样正好有8种输出。A16到A19作为选通信号3,全为0.
1

【2】基于74LS688比较器的设计

引脚
在这里插入图片描述
工作原理:
在这里插入图片描述
例:利用 74LS688设计译码电路,输出端(P= Q)'作为Intel 62128 SRAM的CS片选信号,分配给Intel 62128的地址范围为74000H~77FFFH。画出8088 CPU工作在最大方式下的译码电路。
分析:
74000H转换成2进制:0111 0100, 0000 0000 0000
77FFFH转换成2进制:0111 0111 ,1111 1111 1111
观察发现前6位都是一样的,这样就可以定位大的范围,就可以确定Q的值了:101110(从低位到高位)
所以结果如下:
结果
如果需要改变内存芯片的地址,只需要改变Q那边开关就行了。所以这种结构可以为改变内存地址带来方便。
如果不需要改变地址,则可以直接给定Q边的编码就行了。


参考链接:

SRAM
《微机原理与接口技术.楼顺天版》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

floatvalue 重写_Java Number floatValue()方法与示例

floatvalue 重写Number类floatValue()方法 (Number Class floatValue() method) floatValue() method is available in java.lang package. floatValue()方法在java.lang包中可用。 floatValue() method is used to return the value denoted by this Number object converted …

array_column php什么版本可以用,array_column兼容php5.5以下版本

gistfile1.txt// ----------------------------------------------------------------------// |获取二维数组中指定的一列&#xff0c;PHP5.5以后有专用函数array_column()// ----------------------------------------------------------------------// |param array $arr// …

。net学习之控件的使用注意点

jQuery使用 1、自定义属性的使用<script>$(#xwjj_i_main br[brinfoPd_KangQiao_Subject_Xwjj_br_1]).hide();</script> 2、ready代码块$(document).ready(function(){ //你的代码}); 3、简单的特效hide&#xff08;&#xff09;$("a").click(function()…

09-CNN手写数字识别

CNN卷积神经网络的本质就是卷积运算 维度的调整&#xff1a; tf.reshape(imageInput,[-1,28,28,1]) imageInput为[None,784]&#xff0c;N行* 784维 调整为 M28行28列*1通道 即&#xff1a;二维转化为四维数据 参数一&#xff1a;等价于运算结果M 参数二&#xff1a;28 28 表示…

【转】左值与右值

出处&#xff1a;http://www.embedded.com/electronics-blogs/programming-pointers/4023341/Lvalues-and-Rvalues C and C enforce subtle differences on the expressions to the left and right of the assignment operator If youve been programming in either C or C for…

Opencv将处理后的视频保存出现的问题

问题描述&#xff1a; 代码运行过程中&#xff0c;imshow出来的每帧的效果图是正确的&#xff0c;但是按照网上的方法保存下来却是0kb&#xff0c;打开不了。 参考的网上的一些方法&#xff0c;均是失败的&#xff0c;具体原因我也不清楚&#xff1a; 1、例如我这样设置&#x…

Java Number shortValue()方法与示例

Number类shortValue()方法 (Number Class shortValue() method) shortValue() method is available in java.lang package. shortValue()方法在java.lang包中可用。 shortValue() method is used to return the value denoted by this Number object converted to type short (…

MATLAB可以打开gms文件吗,gms文件扩展名,gms文件怎么打开?

.gms文件类型&#xff1a;Gesture and Motion Signal File扩展名为.gms的文件是一个数据文件。文件说明&#xff1a;Low-level, binary, minimal but generic format used to organize and store Gesture and Motion Signals in a flexible and optimized way; gesture-related…

黑白图片颜色反转并保存

将图像的黑白颜色反转并保存 import cv2 # opencv读取图像 img cv2.imread(rE:\Python-workspace\OpenCV\OpenCV/YY.png, 1) cv2.imshow(img, img) img_shape img.shape # 图像大小(565, 650, 3) print(img_shape) h img_shape[0] w img_shape[1] # 彩色图像转换为灰度图…

家猫WEB系统

现在只放源码在些.为它写应用很简单有空整理文档演示地址:jiamaocode.com/os/ 源码&#xff1a;http://jiamaocode.com/ProCts/2011/04/14/1918/1918.html转载于:https://www.cnblogs.com/jiamao/archive/2011/04/16/2018339.html

C# DataRow数组转换为DataTable

public DataTable ToDataTable(DataRow[] rows) { if (rows null || rows.Length 0) return null; DataTable tmp rows[0].Table.Clone(); // 复制DataRow的表结构 foreach (DataRow row in rows) tmp.Rows.Add(row); // 将DataRow添加…

plesk 运行不了php,如何在Plesk中使用composer(使用其他版本的PHP运行Composer)

对于基于Plesk的服务器, composer的默认安装将使用系统安装的PHP版本, 而不使用Plesk所安装的任何版本。尽管Composer至少需要PHP 5.3.2, 但是当你尝试在需要特定版本PHP的项目中安装依赖项时, 就会出现问题。例如, 如果你有一个至少需要PHP 7.2的项目, 并且系统的默认PHP安装是…

Java Calendar hashCode()方法与示例

日历类hashCode()方法 (Calendar Class hashCode() method) hashCode() method is available in java.util package. hashCode()方法在java.util包中可用。 hashCode() method is used to retrieve the hash code value of this Calendar. hashCode()方法用于检索此Calendar的哈…

Error: Flash Download failed - Target DLL has been cancelled

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 由于换了新电脑,keil重装了下,然而之前的MCU的支持包没有安装,以及一些其他的问题,导致可以编译但是不能将程序烧录到单片…

设计一个较为合理的实验方案来研究芳纶纤维的染色热力学性能

请你设计一个较为合理的实验方案来研究芳纶纤维的染色热力学性能?包括吸附等温线、亲和力、染色热和染色熵的测定,并指出实验中应注意哪些事项来减少实验误差? 标准答案: 染色热力学理论研究染色平衡问题。研究染色热力学性能:首先研究选择适宜的染料 吸附等温线类型测定…

我也谈委托与事件

虽然在博客园里面已经有很多关于C#委托和事件的文章&#xff0c;但是为了自己在学习的过程中&#xff0c;加深对委托的理解&#xff0c;我还是决定写一下自己的心得体会。以备他日在回来复习。委托&#xff08;delegate&#xff09;是一个类&#xff0c;但是这个类在声明的时候…

php错误拦截机制,php拦截异常怎么写-PHP问题

php拦截异常可以通过PHP的错误、异常机制及其内建数set_exception_handler、set_error_handler、register_shutdown_function 来写。首先我们定义错误拦截类&#xff0c;该类用于将错误、异常拦截下来&#xff0c;用我们自己定义的处理方式进行处理&#xff0c;该类放在文件名为…

智能车复工日记【4】:关于图像的上下位机的调整问题总结

系列文章 【智能车Code review】—曲率计算、最小二乘法拟合 【智能车Code review】——坡道图像与控制处理 【智能车Code review】——拐点的寻找 【智能车Code review】——小S与中S道路判断 【智能车Code review】——环岛的判定与补线操作 智能车复工日记【1】——菜单索引…

设计合理的实验方案来研究阳离子改性棉织物与未改性棉的染色动力学性能

染色动力学性能研究染色的什么问题?设计合理的实验方案来研究阳离子改性棉织物与未改性棉的染色动力学性能?并指出如何计算反映染色动力学的主要参数? 标准答案: 染色动力学研究染色速率问题。 为了研究阳离子改性棉纤维及未改性棉纤维对活性染料染色动力学性能,首先要测…

Java ArrayList toArray()方法及示例

ArrayList类的toArray()方法 (ArrayList Class toArray() method) Syntax: 句法&#xff1a; public Object[] toArray();public T[] toArray(T[] elements);toArray() method is available in java.util package. toArray()方法在java.util包中可用。 toArray() method is us…