8257 计数器寄存器


我们有四个计数器,范围从 CR3-0,每个计数器包含 16 位。当 CR 被 16 位宽的处理器访问时,寄存器的最低有效字节和最高有效字节以交替方式访问,从最低有效字节开始。此外,M/L* 触发器在此提供帮助。关于使用 DMA 传输的字节数的信息包含在计数器寄存器中,在每次 DMA 数据传输中递减 1。当计数器寄存器变为 0 时,最后一次 DMA 数据传输导致 8257 的终端计数 (TC) 输出激活。在四个通道中,只有一个输出读取 8257 的状态端口由处理器读取,以找出哪个通道负责激活 8257 的输出。

虽然计数器寄存器为 16 位宽,但仅使用寄存器的 14 位最低有效位来指定使用直接内存访问方案传输的字节数。因此,对于数据传输,最多可以编程 214 = 16K = 16,384 字节。假设 N 是使用 DMA 数据传输要传输的字节数,这里我们必须在计数器寄存器的 14 位最低有效位中加载 (N-1) 个字节。如果计数器寄存器在 14 位最低有效位中已加载 0 值,则在此过程中仅传输一个字节。

DMA 传输的类型由计数器寄存器的最高两位指定。它可以通过直接内存访问读取,也可以写入 DMA 并进行验证。下表有助于理解位 15 和位 14 的操作。

位 15位 14操作
00DMA 验证
01DMA 写入
10DMA 读取
11非法

在给定表中,当位 15 等于 1 时,8257 生成 MR* 和 IOW* 信号。当位 14 等于 1 时,它生成 MW* 和 IOR* 信号。现在在下表中,当两位位 15 和位 14 均为 0 时,DMA 执行验证,当位 15 为 0 且位 14 为 1 时,DMA 读取内容。当位 15 为 1 且位 14 为 0 时,DMA 写入。当这两位都为 1 时,这是一个非法操作,不会执行。

位 15位 14操作
00DMA 验证
01DMA 读取
10DMA 写入
11非法

更新于: 2019年7月30日

518 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告