Files
final-exam/接口与通讯技术/重点复习/选择题专题/DMA控制器82C37A.md
T

3.3 KiB
Raw Blame History

tags, create time
tags create time
接口与通讯技术
82C37A
DMA
选择题
重点复习
2026-06-28 16:30

DMA 控制器 82C37A 选择题考点

概述

82C37A 是选择题中出现频率最高的芯片(3套试卷共考9题)。核心考点围绕状态周期、握手信号、传输方式、初始化方式字、字节计数器五个维度展开。

正文

1. DMA 状态周期(S1~S4)

graph LR
    S1["S1<br/>输出地址高8位<br/>仅高8位变化时才插入"] --> S2["S2<br/>输出地址低8位<br/>读/写控制有效"] --> S3["S3<br/>数据传输"] --> S4["S4<br/>周期结束"]
    style S1 fill:#ffd,stroke:#333,color:#000

[!important] 高频考点 S1 状态只有在存储器地址的高 8 位发生变化时才会出现。 地址高8位不变时可跳过 S1,提高传输效率。

2. DMA 握手信号(4个关键信号)

信号 方向 含义 考试角度
DREQ I/O → DMA I/O 设备请求 DMA 传输 请求源
HRQ DMA → CPU DMA 请求占用总线 尚未获得总线
HLDA CPU → DMA CPU 确认交出总线 标志 DMA 已获得总线控制权 ✅
DACK DMA → I/O DMA 确认选中该 I/O 表示该 I/O 被选中 ✅

[!question] 思考题 HRQ 和 HLDA 有什么区别?为什么不能只靠 HRQ 判断 DMA 获得了总线?

答:HRQ 是 DMA 的"请求",HLDA 是 CPU 的"应答"。只有 CPU 发出 HLDA 后,DMA 才真正获得总线控制权。HRQ 有效只表示"我想要",HLDA 有效才表示"你得到了"。

3. DMA 四种传输方式

方式 释放总线条件 适用场景
单字节方式 每传完 1 个字节立即释放 CPU 需频繁介入
请求方式 DREQ 无效时释放(DREQ 有效则连续传) I/O 速度不确定
块方式 整个数据块传完才释放 大批量连续传输
级联方式 用于多片级联 扩展 DMA 通道

[!tip] 解题口诀

  • 题干出现"每操作一个数据就释放"→ 单字节方式
  • 题干出现"DREQ 是否维持有效决定是否释放"→ 请求方式

4. 初始化方式字:DMA 读 vs DMA 写

判断依据:以存储器的视角决定读/写。

graph TD
    A["数据采集<br/>外设→存储器"] --> B["对存储器是写操作<br/>→ DMA 写"]
    C["数据输出<br/>存储器→外设"] --> D["对存储器是读操作<br/>→ DMA 读"]
    style B fill:#dfd,stroke:#333,color:#000
    style D fill:#dfd,stroke:#333,color:#000

[!example] 真题 采用 DMA 方式进行数据采集(外设→存储器),对 82C37A 初始化时应按照 DMA 写 写入方式字。

5. 字节计数器

82C37A 的字节计数器为 8 位,范围 0~255:

\text{实际传输字节数} = \text{装载值} + 1
  • 传 256 个数据 → 装载值 = 256 − 1 = 0FFH
  • 传 1 个数据 → 装载值 = 00H

[!warning] 易错点 计数器是"减1计数器",从装载值递减到 0 时传输结束,共传输 N+1 个字节。不是装载 N 就传 N 个!

关联笔记