← 返回 计组与微机控制

计组与微机控制

4.2 SRAM6116

4.2 SRAM6116

SRAM6116:

1. 芯片概览:2K x 8 的存储空间

· 容量:6116 能存储的数据总量为 2K × 8 bit = 16K bit,也就是 2048 个字节。

· 结构:这 2048 个存储单元在芯片内部被排列成了一个“128×128”的矩阵。

· 寻址:芯片有 11 根地址线(A10 ~ A0),刚好覆盖 2KB 的存储空间。

· 数据:它通过 I/O7 ~ I/O0 这 8 根双向数据线与外界交换数据。

· 工艺:属于静态 RAM,只要保持通电,数据就不会丢失,也无需刷新。

· 封装:采用 24 引脚的 DIP 或 SOIC 封装。

4.2 SRAM6116 ? 1

2. 引脚详解:地址、数据与三根控制线

6116 的 24 个引脚大致分为三类,尤其是三根控制线是重点。

· 地址线 (A10 ~ A0, 11 根):输入引脚,用于选择要访问的存储单元。

· 数据线 (I/O7 ~ I/O0, 8 根):双向、三态引脚,用于读写数据。

· 核心控制线:

· 片选 (CS, Chip Select):低电平有效。当 CS=0 时,芯片被选中;CS=1 时,芯片未选中,数据线呈高阻态,拒绝任何读写操作。

· 输出使能 (OE, Output Enable):低电平有效。仅在读操作时使用,将其置 0 会打开内部的三态缓冲器,允许芯片将数据“推送”到 I/O 引脚上。

· 写使能 (WE, Write Enable):低电平有效。这是一个“写入许可”信号,当其为 0 时,数据总线上的数据将被写入到地址线指定的存储单元。

4.2 SRAM6116 ? 2

5跟控制线:2根电源是VCC GND,3根是信号线OE WE CE

3. 功能真值表:三种状态

这三种控制信号 (CE, OE, WE) 的各种组合,定义了芯片的四种工作状态:

4.2 SRAM6116 ? 3

模式 CE OE WE 数据线 (I/O) 状态

未选中 1 (H) X X 高阻态 (High-Z)

输出 (读) 0 (L) 0 (L) 1 (H) 输出数据 (Dout)

输入 (写) 0 (L) X 0 (L) 输入数据 (Din)

输出禁用 0 (L) 1 (H) 1 (H) 高阻态 (High-Z)

当 WE 和 OE 同为低电平 (0) 时,6116 会尝试同时进行读写,这种冲突状态是绝对要避免的。

4. 读写时序流程:CPU 与芯片的对话

这是芯片工作的灵魂,需要理解 CPU 是如何按步骤操作这些引脚的。

读操作 (CPU 从 6116 读数据):

1. 地址建立:CPU 将目标地址放到地址总线 A10~A0 上,并保持稳定。

2. 选中芯片:CPU 通过地址译码逻辑向 CS 引脚发送 低电平,激活芯片。

3. 配置模式:CPU 使 WE 保持高电平(宣布“我不写”),同时将 OE 拉低(宣布“请输出”)。

4. 数据输出:芯片内部将对应地址单元的数据送到输出缓冲器,并通过被 OE 开启的三态门,将数据“推”到数据总线 I/O7~I/O0 上。

5. 读取数据:CPU 在数据总线上锁存数据,完成读取。

6. 结束操作:总线周期结束后,CPU 将 CS 和 OE 置为无效(高电平),数据总线恢复高阻态。

2. 写操作 (CPU 向 6116 写数据):

1. 地址建立:CPU 将目标地址放到 A10~A0 上,并保持稳定(CE 为高)。

2. 选中芯片 & 数据准备:CPU 将 CS 拉低,并将要写入的数据放到 I/O7~I/O0 上。

3. 发送写入脉冲:CPU 向 WE 引脚发送一个低电平脉冲。数据线上的数据在 WE 的上升沿被锁存进芯片。

4. 数据写入:在 WE 为低期间,芯片内部将数据总线上的数据写入到地址线指定的存储单元。

5. 结束操作:写入完成后,WE 和 CS 恢复高电平,芯片重新进入待机模式。

这只是数据线上和类似于8086CPU之间配合IO口的操作,但是具体要把数据放在寄存器的哪个位置呢,还需要看是如何选址的

5. 系统集成:高位片选与低位片内寻址

6116 作为数据“仓库”,需要被 CPU 编入内存地图,才能被正确使用。

· 寻址原则:CPU 发出的地址被分成两部分:“高位地址选芯片”,“低位地址进芯片”。

· 低位地址:A10 ~ A0 这 11 根线直接连到 6116 的 A10~A0 引脚,负责在 2KB 空间内找到具体的字节。

· 高位地址:A19~A11 进入地址译码器(如 74LS138),译码器的输出再连到 6116 的 CS,负责在众多芯片中选中 6116。

· 示例地址范围:假设 6116 基地址被译码为 0x40000,则其寻址范围是 0x40000 ~ 0x407FF。其中 0x40000 是高位基址,0x7FF 是低位偏移。

这种官话太敷衍了,我一步步说吧

先看图

4.2 SRAM6116 ? 4

一、先分清两个概念

· 片选 (Chip Select):决定 哪一片芯片被激活(在多个芯片组成的系统中)。

· 位选 (Byte/Word Select):在已经被选中的芯片内部,选择具体的某一个存储单元(也就是“字选”或“地址译码”)。

对于 单颗 6116 来说:

· 片选:由 CS 引脚控制(低有效):CS = 0 表示选中这颗芯片;CS = 1 表示不选,芯片数据引脚高阻。

· 位选:由地址线 A10 ~ A0 决定:共有 11 根地址线,可以访问 2K = 2048 个不同的存储单元。

在多芯片系统中,“片选”信号通常由 CPU 的高位地址通过译码器产生;“位选”则直接把低位地址接到 6116 的 A10~A0。

二、6116 进行“片选 + 位选”的完整流程

假设你有一块 6116,已经正确连接到 CPU 的总线(地址、数据、控制)。

第 1 步:CPU 发出完整地址

CPU 将要访问的内存地址(例如 20 位)放到地址总线上。

· 高位地址(比如 A19 ~ A11) → 送往外部的地址译码器。

· 低位地址(A10 ~ A0) → 直接连接到 6116 的 A10 ~ A0 引脚。

第 2 步:外部译码器产生片选信号

外部译码器(如 74LS138)根据高位地址的数值,判断是否应该选中 6116:

· 如果地址落在 6116 的地址范围内 → 译码器输出 CS = 0(低有效)。

· 否则 → CS = 1,6116 不会被选中,所有数据引脚呈高阻,本次访问无效。

第 3 步:6116 片选判断

6116 内部逻辑检测 CS 引脚:

· 若 CS = 1 → 芯片忽略所有其他操作,I/O0~7 高阻。

· 若 CS = 0 → 芯片被激活,继续执行下一步。

第 4 步:位选(片内地址译码)

在 CS = 0 的前提下,6116 内部的行/列译码器根据 A10 ~ A0 的值,从 2048 个存储单元中 唯一定位 到其中一个单元。

· 这 11 根地址线同时参与译码,不存在“先传行后传列”的分时(那是 DRAM 的做法)。

第 5 步:根据 OE 和 WE 执行读或写

现在芯片已被选中,并且具体的单元也已被定位。接下来:(就是刚刚4. 读写时序流程)

· 读操作:OE = 0(输出使能有效),WE = 1 → 选中单元的数据被送到 I/O0~7 上,CPU 读取。

· 写操作:WE = 0(写使能有效),OE 通常置 1 → CPU 把数据放到 I/O0~7 上,然后 WE 上升沿将数据锁入选中单元。

第 6 步:结束访问(总线周期结束)

· 控制信号(CS、OE、WE)恢复无效电平(高)。

· I/O0~7 恢复高阻,释放数据总线。

流程就是:

高位译码选芯片 —→ CS 变低被激活。

低位地址进芯片 —→ 唯一定位某单元。

OE 为 0 向外读,WE 为 0 向内写。

CE、OE、WE 相配合,总线高阻不冲突。

总结

· 6116 是一个 2K x 8 的静态 RAM,用 11 根地址线选择 2048 个存储单元。

· 它通过 三根控制线 (CS, OE, WE) 协同工作,共同决定芯片是“读”、“写”还是“高阻”。

· 读操作:CS=0, WE=1, OE=0。

· 写操作:CS=0, WE=0。

· 在系统应用中遵循“高位地址线译码选芯片(片选),低位地址线直连芯片地址脚(字选)”的原则,来为 6116 分配唯一的内存地址。