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

目录

    • 【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,一经查实,立即删除!

相关文章

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 表示…

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

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

黑白图片颜色反转并保存

将图像的黑白颜色反转并保存 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

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

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

Error: Flash Download failed - Target DLL has been cancelled

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

我也谈委托与事件

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

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

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

SQL SERVER的锁机制(四)——概述(各种事务隔离级别发生的影响)

SQL SERVER的锁机制&#xff08;一&#xff09;——概述&#xff08;锁的种类与范围&#xff09; SQL SERVER的锁机制&#xff08;二&#xff09;——概述&#xff08;锁的兼容性与可以锁定的资源&#xff09; 本文上接SQL SERVER的锁机制&#xff08;三&#xff09;——概述&a…

如何测定拼色染液中,各染料在不同染色时间时,染液中残留染料量及织物上吸附上染的染料量?

如何测定拼色染液中,各染料在不同染色时间时,染液中残留染料量及织物上吸附上染的染料量? 标准答案: 通常依据各染料对特定波长光的吸光度具有加和性;吸光度值符合朗伯比尔定律,吸光度与浓度成正比;吸光度值分光光度计可以读出;通过联立方程,可以求出拼色各染料在染液中…

oracle云数据库 免费的吗,使用免费的Oracle云服务-创建ATP数据库

前面我们讲了在Oracle的云主机安装数据库&#xff0c;虽然现在安装数据库已经很简单了&#xff0c;但是真正要在生产环境使用&#xff0c;还是需要进行很多配置和优化的&#xff0c;这通常需要专业的人员。而ATP(自治事务性数据库服务)正是Oracle云提供的非常强大的数据库云服务…

请分析比较下列四种染料在相同浓度和相同温度的水染液中的聚集度大小?

请分析比较下列四种染料在相同浓度和相同温度的水染液中的聚集度大小? 标准答案: 染料聚集度从大到小的顺序为:3〉1〉4〉2 比较1-4染料结构差异,1、2共轭体系较短,3、4共轭体系较长,1、3磺酸基在端部,2、4磺酸基在中间; 染料3共轭体系长,范德华力大,而水溶性磺酸基团…

VC++动态链接库深入浅出(转)

1.概论  先来阐述一下DLL(Dynamic Linkable Library)的概念&#xff0c;你可以简单的把DLL看成一种仓库&#xff0c;它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库&#xff0d;静态链接库&#xff0d;动态链接库”的时代。 静态链接库与动态链…

《Two Dozen Short Lessons in Haskell》(二十)分数

《Two Dozen Short Lessons in Haskell》&#xff08;Copyright © 1995, 1996, 1997 by Rex Page&#xff0c;有人翻译为Haskell二十四学时教程&#xff0c;该书如果不用于赢利&#xff0c;可以任意发布&#xff0c;但需要保留他们的copyright&#xff09;这本书是学习 Ha…

数字图像课程工程大作业分析

试题分析&#xff1a; 在连续的视频中对火焰及水柱的轨迹检测&#xff0c;效果如图。 ** 提示&#xff1a; 1、火焰可利用亮度和颜色 2、水柱的轨迹需要先用背景差分获得水柱的连通域&#xff0c;然后利用连通域上的像素点进行曲线的拟合&#xff0c;水枪的位置视为已知&#…

设计电子商务网站的10个技巧(转自ITEye)

导读&#xff1a;随着先进科学技术的应用&#xff0c;人们无需外出逛几个小时来“猎”东西&#xff0c;直接坐在家里就可以购买所需商品&#xff0c;支付服务费用。你只需一台电脑就能搞定。人们习惯了周到的服务和漂亮的橱窗&#xff0c;对网店的选择也不例外。因此&#xff0…

C++语法:vector的使用

【1】vector的创建与元素插入【2】vector元素的访问【3】vector的基本使用技巧【4】vector的几个重要操作【1】vector的创建与元素插入 std::vector<cv::Point> points; //vector容器中保存的类型是Point for (int i 0;i < 10;i) {float x rng.uniform(0, img.cols…

C++语法:求vector中的最大值及其位置

代码&#xff1a; #include <iostream> #include <vector> #include <algorithm> using namespace std;int main(){vector<int> a { 2,4,6,7,1,0,8,9,6,3,2 };auto maxPosition max_element(a.begin(), a.end());cout << *maxPosition <&l…

C#编码简单性之函数篇(如何编写简短的C#代码,随时更新)

作者&#xff1a;陈勇出处&#xff1a;blog.csdn.net/cheny_com这是编码简单性系列中的其中一篇&#xff0c;之前几篇包括代码篇和语义篇。因为要积累案例&#xff0c;会随时更新。之前提到&#xff1a;编码简单性的“心法”就是&#xff1a;只要屏幕上有任何两部分代码看上去相…

R学习笔记(1):R是什么

本文最新版已更新至http://thinkinside.tk/2013/05/03/r_notes_1_what.html 在学习量化投资的时候&#xff0c;我发现了R&#xff08;www.r-project.org&#xff09;。R到底是什么呢&#xff1f;在开始之前&#xff0c;先看看R的神奇之处。 1. R初窥 从CRAN&#xff08;The Co…