微处理器 - 8257 DMA 控制器
DMA 代表直接内存访问。它由 Intel 设计,用于以最快的速率传输数据。它允许设备直接将数据传入/传出内存,而无需 CPU 的任何干扰。
使用 DMA 控制器,设备请求 CPU 保存其数据、地址和控制总线,因此设备可以自由地将数据直接传入/传出内存。只有在从 CPU 接收到 HLDA 信号后,才会启动 DMA 数据传输。
DMA 操作如何执行?
以下是 DMA − 执行的操作顺序
最初,当任何设备必须在设备和内存之间发送数据时,该设备必须向 DMA 控制器发送 DMA 请求 (DRQ)。
DMA 控制器向 CPU 发送保持请求 (HRQ),并等待 CPU 断言 HLDA。
然后微处理器将所有数据总线、地址总线和控制总线置于三态。 CPU 放弃对总线的控制并通过 HLDA 信号确认 HOLD 请求。
现在 CPU 处于 HOLD 状态,DMA 控制器必须管理 CPU、内存和 I/O 设备之间的总线操作。
8257 的功能
以下是 8257 的一些突出功能的列表 −
它有四个通道,可用于四个 I/O 设备。
每个通道都有 16 位地址和 14 位计数器。
每个通道最多可以传输 64kb 的数据。
每个通道都可以独立编程。
每个通道都可以执行读取传输、写入传输和验证传输操作。
它向外围设备生成 MARK 信号,表示已传输 128 个字节。
它需要单相时钟。
其频率范围为 250Hz 至 3MHz。
它以 2 种模式运行,即 主模式 和 从模式。
8257 架构
下图显示了 8257 的架构 −
8257 引脚说明
下图显示了 8257 DMA 控制器的引脚图−
DRQ0−DRQ3
这些是四个单独的通道 DMA 请求输入,外围设备使用这些通道来使用 DMA 服务。当选择固定优先级模式时,DRQ0 具有最高优先级,而 DRQ3 具有最低优先级。
DACKo − DACK3
这些是低电平有效的 DMA 确认线,用于向请求外围设备更新 CPU 对其请求的状态。这些线路还可以用作请求设备的选通线路。
Do − D7
这些是双向数据线,用于将系统总线与 DMA 控制器的内部数据总线连接起来。在从属模式下,它将命令字传送到 8257,并将状态字从 8257 传送出去。在主模式下,这些线路用于将生成的地址的高位字节发送到锁存器。该地址进一步使用 ADSTB 信号锁存。
IOR
它是一条低电平有效的双向三态输入线,CPU 使用它在从属模式下读取 8257 的内部寄存器。在主模式下,它用于在内存写入周期中从外围设备读取数据。
IOW
它是一条低电平有效双向三态线,用于将数据总线的内容加载到 8 位模式寄存器或 16 位 DMA 地址寄存器或终端计数寄存器的高/低字节。在主模式下,它用于在 DMA 内存读取周期中将数据加载到外围设备。
CLK
它是 8257 内部操作所需的时钟频率信号。
RESET
此信号用于通过禁用所有 DMA 通道来重置 DMA 控制器。
Ao - A3
这是四条最低有效地址线。在从模式下,它们充当输入,选择要读取或写入的寄存器之一。在主模式下,它们是 8257 生成的四个最低有效内存地址输出线。
CS
它是一条低电平有效的片选线。在从模式下,它启用对 8257 的读/写操作。在主模式下,它禁用对 8257 的读/写操作。
A4 - A7
这些是主模式下 DMA 生成的低字节地址的高半字节。
READY
它是一个高电平有效的异步输入信号,通过插入等待状态使 DMA 准备就绪。
HRQ
此信号用于接收来自输出设备的保持请求信号。在从模式下,它与 DRQ 输入线 8257 相连。在主模式下,它与 CPU 的 HOLD 输入相连。
HLDA
它是保持确认信号,当它设置为 1 时,它向 DMA 控制器指示总线已被 CPU 授予请求外设。
MEMR
它是低内存读取信号,用于在 DMA 读取周期期间从寻址内存位置读取数据。
MEMW
它是有效的低三态信号,用于在 DMA 写入操作期间将数据写入寻址内存位置。
ADST
此信号用于将 DMA 控制器生成的内存地址的高字节转换为锁存器。
AEN
此信号用于禁用地址总线/数据总线。
TC
代表"终端计数",指示当前对当前外围设备的 DMA 周期。
MARK
从开始每 128 个周期或其整数倍后将激活标记。它表示当前 DMA 周期是自上次 MARK 输出到所选外围设备以来的第 128 个周期。
Vcc
它是电路操作所需的电源信号。