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

89 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags:
- 接口与通讯技术
- 82C37A
- DMA
- 选择题
- 重点复习
create time: 2026-06-28 16:30
---
# DMA 控制器 82C37A 选择题考点
## 概述
82C37A 是选择题中出现频率最高的芯片(3套试卷共考9题)。核心考点围绕**状态周期、握手信号、传输方式、初始化方式字、字节计数器**五个维度展开。
## 正文
### 1. DMA 状态周期(S1~S4)
```mermaid
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 写
判断依据:**以存储器的视角**决定读/写。
```mermaid
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 个!
## 关联笔记
- [[接口与通讯技术/复习文档/82C37A DMA控制器]]
- [[DMA控制器82C37A|填空题专题:82C37A DMA控制器]]
- [[中断控制器82C59A 选择题考点]]