8257 编程
从对 8257 的描述研究中,我们知道它由 40 个引脚组成,并且它在从模式和主模式下工作时的条件。从微处理器的角度来看,I/O 端口是一个专门用于 DMA 控制应用程序的芯片,不用于接口 I/O 设备,以实现与处理器的數據傳輸。该芯片仅用于控制四个 I/O 端口的 DMA 数据传输。每个 I/O 端口都存在一个相应的 DMA 通道。该芯片提供了 DMA 数据传输所需的所有功能。地址寄存器的概念如下。
每个 DMA 通道都包含一个地址寄存器和一个计数寄存器。这些寄存器长度为 16 位。在每个 16 位中,有四个 AR 标记为 AR3-0。除了四个 CR 外,还有控制寄存器和状态寄存器。它们是独立的 8 位寄存器,但具有相同的地址。处理器只能写入控制寄存器,但可以读取状态寄存器。
我们有四个计数器,从 CR3-0 开始,每个计数器都包含 16 位。当 CR 访问 16 位宽的处理器时,寄存器的最低有效字节和最高有效字节以交替的方式访问,从最低有效字节开始。此外,M/L* 触发器在此处提供帮助。使用 DMA 传输的字节数信息包含在计数器寄存器中,对于 DMA 数据传输中的每个字节,计数器寄存器递减 1。当计数器寄存器变为 0 时,最后一次 DMA 数据传输导致 8257 激活终端计数 (TC) 输出。在四个通道中,只有一个输出读取 8257 的状态端口由处理器读取,以找出哪个通道负责激活 8257 的输出。
处理器在活动状态下写入 8257 的控制寄存器以配置其工作目的。为了找出 8257 的状态,处理器读取处理器的状态寄存器。控制寄存器的长度为 8 位,处理器只能写入,不能读取。只有当 CS* 为 0,A3-0 为 1000,并且 IOW* 为 0 时,才会选择它。
状态寄存器的长度为 8 位。处理器只能读取而不能写入,只有当 CS* 为 0,A3-0 为 1000,并且 IOR* 为 0 时,才会选择它。
图。Intel 8257 的程序员视图一览。