8237A DMA控制器是一种高性能的可编程设备,常用于早期个人计算机系统中的数据传输。它可以处理四个独立的DMA通道,每个通道的传输速率在5MHz时钟频率下能达到1.6MB/s,最大传输长度可达64KB。每个通道的DMA请求可单独开启或关闭,且具有可编程的优先级,可以是固定优先级或循环优先级。这种灵活性使得8237A能够有效地为多个外部设备服务,或者同时使用通道0和1进行存储器到存储器的直接数据传输。
8237A芯片采用40引脚封装,其对外引脚信号包括CS(片选)、HRQ(总线请求)和AEN(地址使能),这些信号在8237A作为从模块或主模块工作时有着不同的作用。作为从模块时,它接收16位地址并根据高12位地址产生片选信号,使用IOR和IOW进行读写操作。作为主模块时,它提供内存地址到总线,并输出读写控制信号如IOR、IOW、MEMR和MEMW。
8237A有四种工作模式:
1. 单字节传输模式:每次请求总线传输一个字节后立即释放总线。
2. 块传输模式:在DREQ启动后连续传输,直到预设字节数完成或收到EOP信号。
3. 请求传输模式:每传输一个字节后检查DREQ,如果有效则继续,无效则停止,等待DREQ再次有效。
4. 级联传输模式:通过级联多个8237A,扩展DMA通道数量,最多可扩展至16个通道。
8237A的编程结构主要包括模式寄存器、控制寄存器、状态寄存器、请求寄存器、屏蔽寄存器和综合屏蔽寄存器。模式寄存器决定了通道的工作模式、传输类型、通道选择和自动预置功能。控制寄存器用于设置传输方向、地址增量和其他控制选项。状态寄存器显示了当前通道的状态,包括DMA请求状态。请求寄存器和屏蔽寄存器则用于管理和响应来自I/O接口的硬件或软件DMA请求。
此外,8237A还包含一个8位的暂存寄存器,用于内存到内存传输时暂时保存数据,便于从源地址读取并写入目标地址。CPU可以通过特定的软件命令与8237A交互,这些命令分为普通软件命令和特殊软件命令,前者与写入的端口地址和数据总线上的位模式有关,后者则是特定的功能调用。
8237A DMA控制器的这些特性使其成为高效数据传输的核心组件,尤其在需要快速大量数据交换的系统中,它的存在显著提升了系统的性能和效率。