本章主要内容 : A 的组成与工作原理 A 的时序 A 的编程和应用举例 2

Similar documents
PowerPoint Presentation

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

Microsoft PowerPoint - Ch CPU总线及其形成.ppt [兼容模式]

<4D F736F F F696E74202D20B5DA35D5C2CEA2B4A6C0EDC6F7B9A4D7F7D4ADC0ED2E707074>

中文手册

微机系统与接口--第5章-2.ppt

fgfdg

一、单选题(本大题共15小题,每小题1分,共15分)

<4D F736F F D20D6D0B9FABCAFB3C9B5E7C2B720BBF9D3DA B5A5D0BEC6ACBCC6CBE3BBFACFB5CDB3B5C4C9E8BCC62E646F63>

幻灯片 1

<4D F736F F F696E74202D DB4E6B4A2C6F7C9E8BCC62E BBCE6C8DDC4A3CABD5D>

管脚描述 X1 X KHz 晶振管脚 GND 地 RST 复位脚 I/O 数据输入 / 输出引脚 SCLK 串行时钟 Vcc1,Vcc2 电源供电管脚 订单信息部分 # 描述 DS1302 串行时钟芯片 8 脚 DIP DS1302S 串行时钟芯片 8 脚 SOIC 200mil DS

第七章 中断

习 题 一

查询 AD0809 供应商 捷多邦, 专业 PCB 打样工厂,24 小时加急出货 51 测试网论坛 单片机征文大赛稿件, 非本站以及作者 同意禁止转载, 欢迎会员投稿! 欢迎投票评论! 中国. 深圳.51 测试网

全国2001年10月高等教育自学考试

Ps22Pdf

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

TD

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2

第七章 中断

Microsoft Word - FPGA.doc

控制器 EtherCAT EtherCAT EtherCAT 接下一个电机驱动模块 (X4) 接下一个电机驱动模块 (X5) X11 IN X4 IN X3 OUT X5 IN X6 OUT X2 X1 X4 IN X3 OUT X5 IN X6 OUT X2 X1 SYS STA DC BUS D

93C46串行EEPROM数据读写

学年本科教学和思政工作情况汇报

26 头 孢 他 啶 注 射 剂 27 头 孢 他 美 酯 口 服 常 释 剂 型 28 头 孢 吡 肟 注 射 剂 29 头 孢 硫 脒 注 射 剂 30 头 孢 唑 肟 注 射 剂 31 头 孢 替 安 注 射 剂 32 头 孢 哌 酮 注 射 剂 33 头 孢 哌 酮 舒 巴 坦 注 射 剂

2006年国家公务员招录考试行测真题(A)

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2

第一次段考 二年級社會領域試題 郭玉華 (A)(B) (C)(D)

幻灯片 1

中文手册排版标准

(Microsoft Word - \246D\252k\267\247\255n_\275\306\277\357_.docx)

本章内容 I/O 系统的工作原理 I/O 系统的构成 数据传输方式 : 通信协议 编址方式 数据传送方式 传输同步方式 数据传输控制方式 : 程序查询 中断 DMA... I/O 设备的工作原理 键盘 显示器 打印机等 2

《微机接口技术》总复习题.doc

untitled

CH365DS1.DOC

主要内容 微型机的构成 ( 回顾 ) 总线 接口 8086 CPU 的结构及工作原理 8086 存储器 8086 系统配置 2015 年 3 月 9 日星期一 3 时 38 分 16 秒 2

Microsoft PowerPoint - CH4_1

PCM-3386用户手册.doc

lecture21

NiOS II SOPC 嵌入式系统基础教程

第三章 宏汇编语言程序设计

AT89C2051中文资料.doc

微机原理与接口技术 郭玉洁

1. 主要特性 2. 应用领域 3. 技术特点 4. 机械尺寸及引脚功能 5. 功能描述 5.1 视频输入接口 5.2 数据接口 5.3 寄存器 寄存器寻址 寄存器描述 5.4 中断信号 5.5 操作描述 初始化 单帧捕捉 连续捕捉 5.5

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th

Microsoft Word - 第1章 MCS-51单片机基础.docx

Microsoft Word - 扉页.doc

LED 显示屏驱动 IC2011V1.1 SM16125 概述 SM16125 是专为 LED 显示屏设计的驱动芯片, 内建 CMOS 位移寄存器与锁存功能, 可以将串行的输入数据转换成并行输出数据格式 SM16125 提供 16 个电流源, 可以在每个输出端口提供 3 45mA 的恒定电流, 大小

DPJJX1.DOC

一:概述

Microsoft Word - LMB402CBC-AppNote-V0.1.doc

PowerPoint 演示文稿

试卷代号 : 1061 座位号 I I I 中央广播电视大学 学年度第二学期 " 开放本科 " 期末考试 微计算机技术试题 题号 I - I 二 三 四 总 分 分数 I I I I I I 2011 年 7 月 得分 评卷人 一 选择填空 ( 每题 4 分, 共 6

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

組譯與連結(Ver6

Microsoft Word - Page0

标题

电子技术基础 ( 第 版 ) 3. 图解单相桥式整流电路 ( 图 4-1-3) 电路名称电路原理图波形图 整流电路的工作原理 1. 单相半波整流电路 u 1 u u sin t a t 1 u 0 A B VD I A VD R B

378高雄市都市計畫說明書

<4D F736F F D20B5A5C6ACBBFAD4ADC0EDD3EBD3A6D3C3BCB B3CCD0F2C9E8BCC65FB5DA33B0E65F2DD6D5B8E52D4E65772DBFB1CEF3B1ED2DB3F6B0E6C9E72E646F6378>

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx

微型计算机原理及应用试题 机电96

URISC 处理器设计一 URISC 处理器功能描述 URISC 处理器是只有一条指令的超级精简指令集计算机, 它是由 Mavaddat 和 Parham 提出的一种 RISC 结构 尽管 URISC 只有一条指令, 却也是一种通用计算机, 所有的复杂操作都可以由这条指令来完成 URISC 指令要完

<4D F736F F D203034CAB5D1E9CBC D20B5C4494F20BDD3BFDACAB5D1E92E646F63>

Microsoft Word - cat1163.doc

Microsoft Word - ha0013s.doc

Microsoft PowerPoint - vlsi_chapter02

第一部分 C 语言程序设计 C 语言程序设计同步练习答案 一 单选题 1-5 DBCAC 二 判断题 1. 错 2. 错 第 1 章绪论 第 2 章 C 语言基本数据类型 运算符和表达式 一 单选题 1-5 ADADC 6-10 ADBBA ADCAD DACBD 21-25

L29

untitled

OB1

Infrared Temperature Sensor 用户手册 Infrared Temperature Sensor 用户手册 产品特点 本模块是一款非接触式红外温度传感器, 能根据被测物体的红外辐射能量大小和波长分布来检测物体的表面温度 通讯接口是 SMBus, 支持 PWM 输出 传感器具体

KV-cache 1 KV-cache Fig.1 WorkflowofKV-cache 2.2 Key-value Key ; Key Mem-cache (FIFO) Value Value Key Mem-cache ( Value 256B 100 MB 20%

<4D F736F F D C4EAC6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FAC8ABB9FACDB3D2BBBFBCCAD4CEC4BFC6D7DBBACDCAD4BEEDBCB0B4F0B0B82DD6D8C7ECBEED2E646F63>

PowerPoint Presentation

Microsoft Word - 实验4_IO控制_INT.doc


Microsoft Word - 实验8_ADDA.doc

(2) Function 0BH: Function 0CH: (pixel, picture element) Function 0DH: Function 0FH: Function 13H:

IC芯片自主创新设计实验

计算机组成与系统结构

数字电子技术与微处理器基础

寻医问药指南(十七)

另外,AT89S52 可降至 0Hz 静态逻辑操作, 支持 2 种软件可选择节电模式 空闲模式下,CPU 停止工作, 允许 RAM 定时器/ 计数器 串口 中断继续工作 掉电保护方式下,RAM 内容被保存, 振荡器被冻结, 单片机一切工作停止, 直到下一个中断或硬件复位为止 8 位微控制器 8K 字

DaoCiDi2003TC ct-P293L02-R

技术文档

Microsoft Word - PC104

一 汇编语言计算机基础 从事计算机科学方面的工作, 汇编语言是我们必不可少缺的基础 我们的工作平台 研究对象都是机器, 而汇编语言是人和计算机沟通的最直接方式, 它描述了机器最终所要执行的指令序列 学习汇编语言可以让你充分获得底层编程的体验, 深刻理解机器运行程序的机理 二 基础知识 1. 汇编语言

Ps22Pdf

bnb.PDF

<4D F736F F D C4EAB9FABCD2B9ABCEF1D4B1D0D0D5FEC4DCC1A6B2E2D1E9A3A841C0E0A3A92E646F63>

Microsoft Word - em78 sub program.doc

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式]

一个系统只有一个 P-Bank 已经不能满足容量的需要 所以, 芯片组开始可以支持多个 P- Bank, 一次选择一个 P-Bank 工作, 这就有了芯片组支持多少 ( 物理 )Bank 的说法 而在 Intel 的定义中, 则称 P-Bank 为行 (Row), 比如 845G 芯片组支持 4 个

128K Flash EPROM 的程序?\(Bank=64K\) 切?

Transcription:

11 DMA 控制器 8237A 1

本章主要内容 : 11.1 8237A 的组成与工作原理 11.2 8237A 的时序 11.3 8237A 的编程和应用举例 2

作业 p355 1 3 5 6 3

11.1 8237A 的组成和工作原理 1 DMA 传送方式的实现方法 由专用接口芯片 DMA 控制器 ( 称 DMAC) 控制传送过程 ; 当外设需传送数据时, 通过 DMAC 向 CPU 发出总线请求 ; CPU 发出总线响应信号, 释放总线 ; DMAC 接管总线, 控制外设 内存之间直接数据传送 4

11.1 8237A 的组成和工作原理 用 DMA 方式传送数据时, 传送过程完全由 DMA 控制器 (DMAC) 控制 其基本功能 : 能向 CPU 的 HOLD 脚发出 DMA 请求信号 CPU 响应 DMA 请求后,DMAC 获得总线控制权, 由它控制数据的传送,CPU 则暂停工作 能提供读 / 写存储器或 I/O 设备的各种控制命令 确定数据传输的始址和数据长度, 每传送 1 个数据便自动修改地址 (+1 或 -1), 数据长度 -1 传送完毕, 能发出结束 DMA 传送的信号 CPU 在每个非锁定时钟周期结束后, 都会检测 HOLD 脚上有无 DAM 请求 若有, 便转入 DMA 传送周期 5

2 DMA 传送方式的特点 外设和内存之间, 直接进行数据传送, 不通过 CPU, 传送效率高 适用于在内存与高速外设 或两个高速外设之间进行大批量数据传送 电路结构复杂, 硬件开销较大 6

DMA 传送过程 CPU 内存 总线请求 总线响应 DMAC DACK DREQ 外设 7

3 DMAC 的一般结构 I/O 接口 地址总线 控制寄存器 数据总线 状态寄存器 控制总线 数据输入寄存器 中断请求 数据输出寄存器 外设 地址总线 数据总线 总线回答控制总线 地址译码器 总线请求 DMA 响应 控制寄存器 状态寄存器 地址寄存器 字节计数寄存器 DMA 控制器 DMA 请求 图单通道 DMAC 的一般结构及其与 I/O 接口的连接 计数结束信号 ( 可作为中断请求信号 ) 8

4 DMAC 的工作方式 1) 单字节传输方式在单字节传输方式下,DMA 控制器每次请求总线只传送一个字节数据, 传送完后即释放总线控制权 2) 块传输方式 ( 也称组传输方式 ) 块传输方式是指 DMA 控制器每次请求总线连续传送一个数据块, 待整个数据块全部传送完成后再释放总线控制权 9

3) 请求传输方式 此方式与块传输方式基本类似, 不同的是每传输完一个字节,DMA 控制器都要检测由 I/O 接口发来的 DMA 请求信号是否仍然有效, 如果该信号仍有效, 则继续进行 DMA 传输 ; 否则, 就暂停传输, 交还总线控制权给 CPU, 直至 DMA 请求信号再次变为有效, 数据块传输则从刚才暂停的那一点继续进行下去 10

以DMA 方式输出一个字节数据的工作过8086 收回总线控制权图5 DMA 操作过程 8086 和总线控制逻辑 HOLD HLDA 2 发送总线请求 3 总线允许程控制总线 地址总线 数据总线 5 DMA 请求得到确认 4 8 9 6 内存 内存把数据送数据总线 接口 DMA 控制器 1 7 I/O 设备 接口锁存数据 接口准备就绪, 发送 DMA 请求 DMA 控制器把地址送地址总线撤消总线请求 11

5 DMA 操作过程 若从外设往内存输入一个数据块 ( 输入过程 ), 在单字节传输方式下, 主要工作过程为 : 从 I/O 接口向 DMA 控制器发送 DMA 请求信号 ; DMA 控制器向 CPU 发总线请求信号, 当得到 CPU 送来的总线允许信号后, DMA 控制器获得总线控制权 ; DMA 控制器将其地址寄存器的内容送到地址总线上 ; DMA 控制器往 I/O 接口发送 DMA 响应信号, 并接着发出 I/O 接口的读信号, 使 I/O 接口把数据送到数据总线上 ; DMA 控制器发出存储器写信号, 使数据传送到由地址总线的地址所指向的内存单元 ; 地址寄存器加 1; 字节计数器减 1; 如果字节计数寄存器的值不为零, 则发送 DMA 请求, 否则进入下一步 ; DMA 控制器释放总线 12

11.1.1 8237A 的内部结构 237A 的主要特性 1. 具有四个独立的 DMA 通道, 每个通道都具有 64K 的存贮器寻址能力, 即一次传送的最大长度为 64K 字节 2. 可实现内存与外设之间的高速大批量数据传送, 也可实现内存两个不同区域之间的高速数据传送 3. 每个通道的 DMA 请求均可分别允许或禁止, 且各通道的 DMA 请求可由软件设置为固定或循环优先权 4. 具有请求传送 单字节传送 数据块传送和级联传送四种工作方式 5. 可用级联方式任意扩展 DMA 通道数目 6.DMA 传送结束信号可由内部计数产生, 也可由外部输入提供 7. 单一的 +5V 电源,40 个引脚双列直插式封装 8. 采用 5MHz 时钟, 传送速率可达 1.6M 字节 / 秒 13

11.1.1 8237A 的内部结构 图 11.1 8237A 的内部结构 图 11.1 8237A 的内部结构 14

1. 时序与控制逻辑 从态时, 接收系统时钟 复位 片选和读 / 写等信号, 完成相应控制操作 ; 主态时, 向系统发控制信号 2. 优先级编码电路 对同时提出 DMA 请求的多个通道进行排队判优, 决定哪个通道优先级最高 可选固定或循环优先级 某个优先级高的设备服务时, 禁止其它通道请求 3. 数据和地址缓冲器组 8237A 的 A 7 ~A 4 A 3 ~A 0 为地址线 ; DB 7 ~DB 0 在从态时传输数据, 主态时传送地址 ; 它们都与三态缓冲器相连, 便于接管或释放 15

4. 命令控制逻辑 从态时接收 CPU 送来的寄存器选择信号 (A 3 ~A 0 ), 选择寄存器 ; 主态时译码方式字的 D 1 D 0, 以确定操作类型 A 3 ~A 0 与 #IOR #IOW 配合组成各种操作命令 5. 内部寄存器组 每通道有 16 位基址寄存器 基字计数器 当前地址寄存器 当前字计数器以及 6 位工作方式寄存器 片内还有命令寄存器 屏蔽寄存器 请求寄存器 状态寄存器和暂存寄存器 不可编程的字数暂存器和地址暂存器 16

11.1.2 8237A 的引脚功能 17

8237A 引脚功能 1. CLK 时钟信号, 输入 8237A 时钟频率 3MHz,8237A-5 为 5MHz 2. #CS 片选信号, 输入, 低电平有效从态方式下选中 8237A, 接受 CPU 对它的编程等 3. READY 准备好, 输入, 高电平有效慢速 I/O 设备或存储器参与 DMA 传送时, 可使 READY 变低, 让 8237A 在 DMA 周期中插入等待周期 T W; 当它们准备就绪时 READY 变高 4. A 3 ~A 0 低 4 位地址线从态为输入, 寻址 8237A 内部寄存器, 实现编程 ; 主态时输出要访问内存的低 4 位地址 18

5. A 7 ~A 4 4 位地址线始终是输出或浮空, 主态时输出 4 位地址信息 A 7 ~A 4 6. DB 7 ~DB 0 8 位数据线与系统数据总线连 从态时,CPU 经数据线读取各有关寄存器内容, 并对各寄存器编程 主态时, 由它们输出高 8 位地址 A 15 ~A 8, 并由 AD STB 信号将它们锁存到外部的高 8 位地址锁存器中, 与 A 7 ~A 0 输出的低 8 位地址构成 16 位地址 存储器 - 存储器传送方式下, 源存储器读出的数据, 经它们送暂存寄存器, 暂存器中数据再经它们写到目的存储单元中 19

7. AEN 地址允许信号, 输出, 高电平有效送出锁存的高 8 位地址, 与芯片输出的低 8 位地址一起构成 16 位内存偏址 同时使连到 CPU 的地址锁存器无效, 保证地址线上的信号来自 DMAC 8. ADSTB 地址选通信号, 输出, 高电平有效选通外部地址锁存器, 将 DB 7 ~DB 0 上的高 8 位地址送到外部的地址锁存器 9. #IOR I/O 读信号, 双向从态时, 控制 CPU 读取 8237A 内部寄存器 主态时, 与 #MEMW 配合, 控制数据由外设传到存储器中 20

10. #IOW I/O 写信号, 双向, 低电平有效从态时, 控制 CPU 对 8237A 内部寄存器编程 主态时, 与 #MEMR 相配合, 控制数据从存储器传送到外设 11. #MEMR 存储器读, 输出, 低电平有效主态时, 可与 #IOW 配合, 实现存储器 外设传送, 也可控制内存间数据传送, 从源地址单元中读出数据 从态时无效 12. #MEMW 存储器写, 输出, 低电平有效主态时, 可与 #IOR 配合, 实现存储器 外设传送, 也可控制内存间数据传送, 把数据写入目的单元 从态时无效 21

13. DREQ 3 ~DREQ 0 通道 3~0 的 DMA 请求信号, 输入外设请求 DMA 服务时, 向这些引脚发请求信号, 有效极性由编程确定 固定优先级时,DREQ 0 的优先级最高, 编程可改变优先级 14. HRQ 保持请求信号, 输出, 高电平有效向 CPU 的 HOLD 端发出的 DMA 请求信号, 可从 8237A 任一个未被屏蔽的通道发出 15. HLDA 保持响应信号, 输入, 高电平有效与 CPU 的 HLDA 相连,CPU 收到 HRQ 信号后, 至少经过 1 个时钟周期后, 使 HLDA 变高, 表示已让出总线控制权,8237A 收到 HLDA 信号后, 便开始 DMA 传送 22

16. DACK 3 ~DACK 0 通道 3~0 的 DMA 响应信号, 输出其有效电平极性由编程确定 相应通道开始 DMA 传送后,DACK i 有效, 通知外部电路现已进入 DMA 周期 17. #EOP 传输过程结束信号, 双向, 低电平有效 DMA 传送中, 任一通道的字计数器减为 0, 再由 0 减为 FFFFH 而终止计数时, 会在 #EOP 引脚上输出低电平信号, 表示 DMA 传输结束 也可在 #EOP 脚上输入低电平信号来终止 DMA 传送 若通道设置成自动预置状态, 该通道完成一次 DMA 传送, 出现 #EOP 信号后, 又能自动恢复有关寄存器的初值, 继续执行另一次 DMA 传送 23

11.2.3 8237A 的内部寄存器 24

11.2.3 8237A 的内部寄存器 1. 当前地址寄存器 16 位, 每通道 1 个, 存放 DMA 传送的存储器地址值 每传送 1 个数据, 地址值自动 +1 或 -1, 指向下个单元 编程时可写入初值, 也可被读出, 但每次只能读 / 写 8 位, 所以读 / 写要两次完成 自动预置操作方式, 在 #EOP 有效时, 会重装入基地址值 2. 当前字计数寄存器 16 位, 每通道 1 个, 编程时置其初值为实际传送字节数少 1 每传送 1 字节, 自动 1 由 0 减到 FFFFH 时, 将产生终止计数信号 TC 自动预置操作方式, 在 #EOP 有效时, 会重装入基字计数寄存器的内容 25

11.2.3 8237A 的内部寄存器 3. 基地址寄存器 16 位, 每通道 1 个, 存放通道当前地址寄存器初值, 与当前地址寄存器地址一样, 编程时写入相同值 其内容不能读出和修改 用在自动预置操作时, 使当前地址寄存器恢复到初值 4. 基字计数寄存器 16 位, 每通道 1 个, 存放通道当前字计数器初值, 该值也是编程时与当前字计数器一起写入的 其内容不能读出和修改, 用于自动预置操作时, 使当前字计数器恢复到初值 26

11.2.3 8237A 的内部寄存器 5. 命令寄存器 8 位, 控制 8237A 的操作 由 CPU 编程来设置 8327A 操作方式, 复位时清除 D7 D6 D5 D4 D3 D2 D1 D0 0 DACK 低电平有效 1 DACK 高电平有效 0 DREQ 高电平有效 1 DREQ 低电平有效 0 正常写 1 扩展写若 D3=1 0 固定优先级 1 循环优先级 0 禁止存储器到存储器传送 1 允许存储器到存储器传送 0 禁止通道 0 地址保持 1 允许通道 0 地址保持若 D0=0 0 控制器允许 1 控制器禁止 0 普通时序 1 压缩时序若 D0=1 27

11.2.3 8237A 的内部寄存器 5. 命令寄存器 D0 位能否进行存储器 存储器传送,D0=1 允许 并规定先用通道 0 从源单元读入 1 字节放入暂存器, 然后由通道 1 把该字节写到目的单元, 接着两通道的地址分别 +1 或 1, 通道 1 的字计数器 1, 它减为 0 时产生终止计数信号 TC, 并输出信号 #EOP, 终止 DMA 服务 D1 位存储器 存储器传送时, 通道 0 地址能否保持不变 D1=1, 通道 0 在传送中保持同一地址, 从而可把该单元中的数写入一组存储单元 D1=0 禁止 当 D0=0 时这种方法无效 D2 位允许或禁止 8237A 工作,D2=0 允许,D2=1 则禁止 D3 位和 D5 位有关时序的操作, 见后面时序讨论 D4 位优先权控制 D4=0 为固定优先权, 通道 0 优先级最高 ;D4=1 为循环优先权, 刚服务过的通道 i 优先权最低, 而通道 i+1 优先权最高 随着 DMA 操作不断进行优先权不断循环, 防止某通道长时间占用总线 D6 位决定 DREQ 的有效电平,0 高电平有效,1 则低电平有效 D7 位决定 DACK 的有效电平,1 高电平有效,0 则低电平有效 28

11.2.3 8237A 的内部寄存器 6. 工作方式寄存器 6 位, 每通道 1 个, 选择 DMA 的传送方式和类型等 29

11.2.3 8237A 的内部寄存器 6. 工作方式寄存器 D1D0 位选择通道, 并进一步由 D2~D7 指定选定通道的工作方式 这样 4 个通道可合用 1 个方式寄存器 D3D2 位决定所选通道的 DMA 操作类型 从 3 种 DMA 传送类型中选定一种 : 10: 读传送, 存储器 I/O 设备, 发 #MEMR,#IOW 01: 写传送, 存储器 I/O 设备, 发 #MEMW,#IOR 00: 校验传送, 伪传送,8237A 产生地址信息和 #EOP 信号, 不会发出读写控制信号, 用于测试 D4 位所选通道是否进行自动预置操作如果 D4=1, 则选择自动预置 D5 位方向控制位 D5=0 数据传送由低址向高址方向进行, 每传送 1 字节, 地址 +1 D5=1 时传送方向相反 D7D6 位定义所选通道操作方式 30

11.2.3 8237A 的内部寄存器 6. 工作方式寄存器 有 4 种传送方式 : 1) 单字节传送方式每次 DMA 操作只传送 1 字节 之后字计数器 1, 地址寄存器 +1 或 1,HRQ 无效, 释放系统总线 当字计数器由 0 减为 FFFFH 时, 产生终止信号 TC 此后即使 DREQ 继续有效,8237A 的 HRQ 输出仍进入无效状态并让出总线, 由 CPU 控制至少一个总线周期 2) 数据块传输方式进入 DMA 服务后, 可连续传输一批数据, 直到字计数器由 0 减为 FFFFH 产生 TC 信号, 或从外部送来 #EOP 信号时, 才释放总线, 结束 DMA 传输 31

11.2.3 8237A 的内部寄存器 6. 工作方式寄存器 3) 请求传送方式也连续传送数据, 直到字计数器由 0 减为 FFFFH 产生 TC, 或外界送来 #EOP 信号 但每传送 1 字节后, 都要测试 DREQ 端, 一旦发现此信号无效, 马上停止 地址和字计数器的中间值会被保存在通道的现行地址和字计数器中, 外设准备好新数据时, 可使 DREQ 再变为有效, 又从断点处继续进行传输 4) 级联传送方式连接多个 8237A 以扩充 DMA 通道, 连线见下页图 主片 DREQ 从片 HRQ, 主片 DACK 从片 HLDA, 主片 HRQ 和 HLDA 与 CPU 的 HOLD 和 HLDA 相连 1 块主片可连 4 块从片 主片置为级联传送, 从片设成其它三种方式 32

11.2.3 8237A 的内部寄存器 4) 级联传送方式 33

11.2.3 8237A 的内部寄存器 7. 请求寄存器 D7 D6 D5 D4 D3 D2 D1 D0 无关 00 选择通道 0 01 选择通道 1 10 选择通道 2 11 选择通道 3 0 清除请求 1 设置请求 相应请求位置 1 时, 对应通道可产生 DMA 请求 相应位可由 DREQ 信号置 1, 也可写入通道请求字来置 1 或清 0 D1 D0 位选通道号,D2 位为请求位 请求位不能屏蔽, 其优先权受优先权逻辑控制,TC 或外部的 #EOP 信号能将相应的请求位清 0,RESET 信号则使整个请求寄存器清 0 34

11.2.3 8237A 的内部寄存器 8. 屏蔽寄存器 4 位,1 个 / 通道 禁止 / 允许对应通道的 DREQ 请求进入请求寄存器 有两种屏蔽字格式, 端口地址不同 1) 通道屏蔽字可对该寄存器写入通道屏蔽字来对单个屏蔽位置 1/ 复位 35

11.2.3 8237A 的内部寄存器 8. 屏蔽寄存器 2) 主屏蔽字还允许用主屏蔽命令设置通道的屏蔽触发器 D3~D0 位对应通道 3~0 的屏蔽位,1 屏蔽,0 清除屏蔽 可写入主屏蔽字, 一次完成 4 个通道的屏蔽位设置 可用软件同时清除 4 个通道的屏蔽位 36

11.2.3 8237A 的内部寄存器 9. 状态寄存器 8 位状态寄存器存放状态信息, 供 CPU 读出 如 D3~D0 中置 1 的通道, 已达计数终点 TC 或外部送来了 #EOP 信号 D7-D4 中置 1 的通道,DMA 请求还未处理 复位或被读出后, 相应状态位被清除 状态字格式 : D7 D6 D5 D4 D3 D2 D1 D0 1 通道 3 有请求 1 通道 2 有请求 1 通道 1 有请求 1 通道 0 有请求 1 通道 0 传输结束 1 通道 1 传输结束 1 通道 2 传输结束 1 通道 3 传输结束 37

11.2.3 8237A 的内部寄存器 10. 暂存寄存器在存储器与存储器传送时, 保存所传送的数据 其中始终保存着最后 1 个传送的字节,RESET 信号会将其清除 编程状态下, 可由 CPU 读出这个字节 38

11.2.3 8237A 的内部寄存器 11. 软件命令编程状态下,8237A 可执行 3 个附加的特殊软件命令, 只要对特定端口进行一次写操作, 命令就会生效 1) 清除先 / 后触发器 8237A 仅 8 根数据线, 而地址寄存器和字计数器均为 16 位, CPU 要分两次读写 先 / 后触发器控制高低字节读写次序 清 0 读写低 8 位, 随后自动置 1, 读写高 8 位 接着又清 0, 对该触发器所在的寄存器执行一次写操作便清 0, 复位和 #EOP 信号有效也将它清为 0 2) 主清命令主清命令也称为复位命令, 功能与 RESET 信号同, 它可使命令寄存器 状态寄存器 请求寄存器 暂存寄存器和内部先 / 后触发器均清 0, 而把屏蔽寄存器置 1 复位后,8237A 进入空闲状态 3) 清除屏蔽寄存器该命令能清除 4 个通道的全部屏蔽位, 允许各通道接受 DMA 请 求 39

11.2.3 8237A 的内部寄存器 12. 各寄存器的端口地址 对 8237A 内部寄存器读写时,#CS 端必须为低电平, 该信号由高位地址经 I/O 译码后产生 A3~A0 线选择不同寄存器, 共占 16 个 I/O 端口地址 常将它们与地址总线低 4 位 A3~A0 相连, 选择各寄存器 40

11.2.3 8237A 的内部寄存器 例如,PC/XT 机中, 地址 A9~A4=000000 时, 经 I/O 译码电路选中 8237A, 使其 #CS 有效 地址 A3~A0 与 8237A 的 A3~A0 脚连接实现片内寻址 因此基地址 =00H, 记为 DMA=00H 由此可得其他寄存器的地址, 如 DMA+00H 为通道 0 基地址与当前地址寄存器地址 DMA+08H 为状态寄存器地址 41

11.2.3 8237A 的内部寄存器 42

11.2.3 8237A 的内部寄存器 几点说明 : 请求触发器每通道一位, 四个通道的请求触发器占用同一个端口地址, 实际上构成一个 4 位的寄存器, 屏蔽触发器也是一样 控制寄存器和状态寄存器共用一个端口地址, 一个为只读, 一个为只写 写屏蔽字时有两种方式 : 某一通道的屏蔽字, 应写到 1010 端口 ; 主 ( 四个 ) 通道屏蔽字, 则写入 1111 端口 43

各通道的基地址寄存器和当前地址寄存器的端口 地址低四位是 : 0000 0 通道 0010 1 通道 0100 2 通道 0110 3 通道 各通道的基字节数寄存器和当前字节计数器的端 口地址低四位是 : 0001 0 通道 0011 1 通道 0101 2 通道 0111 3 通道 44

8237A 内有一个先 / 后触发器, 占 1 位, 当其为 0 时对 16 位寄存器的低 8 位进行读 / 写操作, 当其为 1 时, 则对高 8 位进行读 / 写操作, 且每读或写一次, 先 / 后触发器的状态就自动翻转一次 8237A 复位后, 先 / 后触发器为 0; 8237A 除可用 RESET=1 信号进行硬件控制的复位外, 还可以用主清除命令进行软件控制的复位 软件复位是通过对 1101 端口进行写操作实现的 45

8237A 的总线模式 主模式 ( 主动态 ) 在 DMA 操作其间,8237A 就处于主模式, 这时它管理系统总线, 发出地址和有关控制信号使数据在内存和外设端口之间或内存两个不同区域之间传递 从模式 ( 被动态 ) 所谓从模式是指在没有进行 DMA 操作时,8237A 象其他接口芯片一样, 可被 CPU 访问 即向其有关内部寄存器写入工作方式控制字, 传送地址及字节数等, 也可读取其状态信息 46

11.2 8237A 的时序 11.2.1 外设和内存间的 DMA 数据传送时序 CS 47

8237A 有两类工作周期 : 空闲周期 (Idle Cycle) 和有效周期 (Active Cycle) 每个周期含状态 SI SO S1 S2 S3 S4 和 SW, 每个状态为 1 个时钟周期 SI 为非操作状态, 未接到 DMA 请求时便进入 SI 状态, 此状态下, 可由 CPU 编程, 预置操作方式 SO 是 DMA 服务的第 1 个状态, 这时 8237A 已向 CPU 的 HOLD 脚发出 DMA 请求, 但还没收到 CPU 的回答 S1 S2 S3 S4 是 DMA 服务的工作状态, 必要时慢速设备还可用 READY 线, 在 S2 和 S4 或 S3 和 S4 之间插入等待状态 SW 48

11.2.2 空闲周期 有效周期和扩展写周期 1. 空闲周期 复位后或无 DMA 请求时处于空闲周期,DMA 处于从态方式 在每个时钟周期,8237A 都对 DREQ 线采样, 看有无 DMA 请求, 若无请求, 就一直处于 SI 状态 还采样 #CS, 若 #CS=0 以及 DREQ=0( 无效 ) 便进入程序状态 这时,CPU 可对它编程, 把数据写入内部寄存器, 或从中读出内容进行检查 49

2. 有效周期在 SI 状态采样到 DMA 请求信号 DREQ 1 向 CPU 发 DMA 请求信号 HRQ 2, 并进入有效周期 SO 状态, 等待 CPU 发出允许 DMA 操作的 HLDA 仍可接受 CPU 访问,SO 是由从态转至主态的过渡阶段 在 SO 周期上升沿采到 HLDA=1 3, 表示 CPU 已交出总线控制权, 下个周期便进入 DMA 传送状态周期 S1,DMA 进入主态工作方式 50

2. 有效周期完整 DMA 传送周期包含 S1 S2 S3 S4 共 4 个状态 S1 状态地址允许信号 AEN 有效 4 要访问的存储单元的高 8 位地址 A 15 ~A 8 送到数据总线 DB 7 ~DB 0 上 5 发地址选通信号 ADSTB6 进入 S2 周期后其下降沿将把高 8 位地址锁存到外部地址锁存器中 8237A 将低 8 位地址 A 7 ~A 0 直接送到地址总线 7, 在整个 DMA 传送中都要保持住 51

S2 状态修改存储单元的低 16 位地址,8237A 从 DB 7 ~DB 0 线上输出地址高 8 位 A 15 ~A 8, 从 A 7 ~A 0 线上输出低 8 位 另外,8237A 向外设送出 DMA 响应信号 DACK8, 并使读或写信号有效, 以实现外设 内存间数据交换 DREQ 信号应保持到 DACK 有效后 9, 图中的多条斜线表示失效的时间范围 S3 状态正常时序才有 S310, 用来延长读脉冲, 即延长取数时间 压缩时序无 S3, 直接由 S2 进入 S4 52

S4 状态对传输模式进行测试, 若不是数据块传输或请求传送方式, 测试后立即回到 S1 或 S2 状态 数据块传送方式,S4 后应接着传送下个字节, 地址高 8 位传送 256 字节后才变一次, 大部分情况不用锁存高 8 位地址的 S1 状态, 可直接从 S4 进 S2, 从输出低 8 位地址起执行新的读写命令 ⑾, 直到传送完毕, 又进入 SI 周期, 等待新的请求 53

3. 扩展写周期正常时序一般含 3 个状态 S2 S3 和 S4 为加快传送可用压缩时序, 传送压缩在 S2 和 S4 内, 但只用在连续传送数据的 DMA 操作中 无论正常或压缩时序, 只要修正高 8 位地址就要有 S1 外设较慢时采用正常时序, 如仍不能满足, 就要通过 READY 信号使 8237A 插入等待状态 SW 有些设备是用 8237A 送出的 # I O W 或 # MEMW 下降沿产生 READY 响应的, 而它们要在传送过程最后才送出 为使 READY 提前, 应将写脉冲拉宽并提前, 即采用扩展写信号方法 (12) 当命令寄存器 D 5 =1 时, 写信号被扩展到 2 个时钟周期 在 S3 后半周期检测 READY 信号, 若 =0 则插入等待状态 SW( 图中未画出 ), 直到 READY=1 才进入 S4 54

11.3 8237A 的编程和应用举例 11.3.1 PC/XT 机中的 DMA 控制逻辑 1. 各通道功能 PC/XT 中用 1 片 8237A-5 构成 DMA 控制电路, 提供 4 个通道的 8 位 DMA 传输 使用固定优先级, 通道 0 优先级最高, 通道 3 最低 各通道功能 : 通道 0 用于动态 RAM 的刷新通道 1 为用户保留通道 2 用于软盘 DMA 传送通道 3 用作硬盘 DMA 传送 PC/XT 的 BIOS 初始化系统时, 禁止了 8237A 存储器 存储器传送方式, 只能实现外设 内存间的高速数据交换 其 DMA 控制逻辑包括 DMA 控制和应答控制两部分 55

2. DMA 控制电路 DMA 控制电路如图 11.11, 由 8237A-5 DMA 控制器 地址驱动器 地址锁存器和页面寄存器等器件组成 56

2. DMA 控制电路 在 DMA 服务期间, 直接从 8237A-5 的 A 7 ~A 4 和 A 3 ~A 0 输出低 8 位地址, 在整个 DMA 传输周期中这些地址信号都是稳定的, 它们被送到地址驱动器 U12(74LS244) 的输入端 仅在 S1 S2 状态, 从数据线 DB 7 ~DB 0 输出高 8 位地址 A 15 ~A 8, 要用锁存器由 ADSTB 选通信号将其锁存 PC 存储器有 20 根地址线,1MB 空间, 而 8237A-5 只能提供 16 位地址 (64KB) 为此,PC/XT 用 1 个页面寄存器 74LS670(U10) 产生高 4 位地址 A 19 ~A 16, 8237A-5 则管理低 16 位地址 A 15 ~A 0 这样便可在 1M 范围内寻址 但在 DMA 传输过程中, 页面寄存器值固定在某个 64KB 的地址范围 57

2. DMA 控制电路 页面寄存器内含 4 个可读写寄存器, 每个对应 1 个 DMA 通道, 长 4 位 每个通道, 数据总线 D 3 ~D 0 接页面寄存器的 4 位输入, 4 位输出接地址总线 A 19 ~A 16 当控制信号 #WRITE=0 时, 可从数据总线 D 3 ~D 0 将最高 4 位地址写入该通道页面寄存器 寄存器号由 WA WB 译码产生,WA WB 分别与地址总线的最低两位 A 1 A 0 相连, 其编码如表 11.3 58

2. DMA 控制电路 当控制端 #READ=0 时, 将某个内部寄存器的地址信息读出,RA RB 编码确定读出的寄存器号, 读出功能编码如表 11.4 59

2. DMA 控制电路 #WRITE 信号与页寄存器片选信号 #WRTDMAPG 相连, 当 A 9 ~A 5 =00100 时可选中页寄存器 因此 CPU 对 80H~9FH 地址执行输出指令时, #WRTDMAPG=0, 写入 D 3 ~D 0 上的内容 在 ROM BIOS 中, 页面寄存器写入地址与通道号的对应关系为 : 83H 为通道 1 81H 为通道 2 82H 为通道 3 通道 0 未用 60

2. DMA 控制电路在 DMA 传输并输出页面地址时, 来自总线使用权仲裁电路的 #DMAAEN=0, 它连到 U11 的 #OE, U12 的 #1G #2G, 可输出低 16 位地址 A 15 ~A 0 ; 同时, 它还与页面寄存器的 #READ 相连, 可将 74LS670 内部寄存器中的页面地址信息送到地址总线 A 19 ~A 16 上 RA 连 DACK 3,RB 连 DACK 2, 它们的电平选择通道 通道 2 传送时,RB = DACK 2 =0, 选中 1 号寄存器 ; 通道 3 传送时,RA = DACK 3 =0, 选中 2 号寄存器 ; 通道 1 传送时,RA = RB =1, 选中 3 号寄存器 通道 0 对应 0 号寄存器, 但 0 号寄存器未用, 因通道 0 用于动态 RMA 刷新, 不必使用页面寄存器 61

3. DMA 应答控制电路 在 DMA 控制逻辑中, 外设必须有 DMA 应答电路, 实现与 8237A 的通信联络, 具有发 DMA 请求, 接收 8237A 发回的应答信号 DACK, 接收 #EOP 信号而发中断请求等功能 如外设速度较慢, 还要有能向 8237A 发出插入等待状态的 READY 信号的逻辑电路 希望 DMA 服务时, 外设通过 I/O 扩展槽中 PC 总线的 DRQ 3 ~DRQ 1, 把请求信号送到 8237A-5 相应的 DREQ 端 ; 进入 DMA 服务时,8237A-5 向请求服务的设备输出回答信号 DACK, 允许外设与内存间进行数据传输 62

11.3.2 8237A 的一般编程方法不同应用场合, 对 8237A 的编程方法也不同 假定在外设 内存间进行 DMA 数据传送, 编程方法如下 1. 编程步骤利用 8237A 实现外设与内存间的数据传送时, 可按以下几步对它进行初始化编程 : (1) 输出主清命令, 使 8237A 复位 (2) 写入基地址和当前地址寄存器, 确定起始地址 (3) 写入基字和当前字计数器, 确定要传送的字节数 (4) 写入方式寄存器, 指定工作方式 (5) 写入屏蔽寄存器 (6) 写入命令寄存器 此后 8237A 待命 若外设经 DRQ 1 ~DRQ 3 将 DMA 请求信号送到某个通道的 DREQ 脚上, 便启动该通道的传送 (7) 写入请求寄存器 ( 只在数据块传送方式用到,PC/XT 不支持 ) 63

2. 编程举例 某系统中用 8237A 设计了 DMA 传输电路, 芯片基地址为 00H 要求用通道 0 从外设 ( 如磁盘 ) 输入 1 个 1K 字节数据块, 传送到内存中 6000H 开始区域中, 每传送 1 字节, 地址 +1, 采用数据块连续传送方式, 禁止自动预置, 外设的 DMA 请求信号 DREQ 和响应信号 DACK 均为高电平有效 则初始化 8237A 的程序如下 : DMA EQU 00H ;8237A 的基 ( 端口 ) 地址为 00H ; 输出主清命令 OUT DMA+0DH,AL ; 发主清命令 ; 将基地址 6000H 写入通道 0 基地址和当前地址寄存器, 分两次进行 MOV AX,6000H ; 基地址和当前地址寄存器 OUT DMA+00H,AL ; 先写入低 8 位地址 MOV AL,AH OUT DMA+00H,AL ; 后写入高 8 位地址 64

; 把要传送的总字节数 1K=400H 减 1 后, ; 送到基字计数器和当前字计数器 MOV AX,0400H ; 总字节数 DEC AX ; 总字节数减 1 OUT DMA+01H,AL ; 先写入字节数的低 8 位 MOV AL,AH OUT DMA+01H,AL ; 后写入字节数的高 8 位 ; 写入方式字 : 通道 0, 数据块传送, 地址增量, 禁止自动预置, 写传送 MOV AL,10000100B ; 方式字 OUT DMA+0BH,AL ; 写入方式字 ; 写屏蔽字, 通道 0, 屏蔽位清 0 MOV AL,00B ; 屏蔽字 OUT DMA+0AH,AL ; 写入 8237A ; 写入命令字 :DACK 和 DREQ 为高电平, 固定优先级, 非存储器间传送传送 ; ( 不扩展写, 正常时序, 禁止通道 0 地址保持不变, 禁止存储器到存储器 ) MOV AL,10000000B ; 命令字 OUT DMA+08H,AL ; 写入 8237A ; 写请求字 : 通道 0 请求 MOV AL,04B ; 请求字 OUT DMA+09H,AL ; 写入请求字, 用软件方法启动 8237A 工作 65

11.3.3 PC/XT 机上的 DMA 控制器的使用 * PC/XT 机上对 8237A 进行初始化和测试的程序 PC/XT 上,8237A 的基地址为 00H 开机后要对 8237A 测试 方法 : 先对 8 个寄存器 ( 地址 DMA+0~DMA+7) 都写入 FFFFH, 然后读出, 看与写入值是否相等? 再写入 0000H, 进行同样测试 如发现读出值不同于写入值, 测试便没有通过 DMA EQU 00H ;DMA 基地址 ; 先送命令字, 禁止 8237A 工作 MOV AL,04 ; 命令字 : 禁止 8237A 工作 OUT DMA+08H,AL ; 输出命令字到 8237A OUT DMA+0DH,AL ; 发总清命令 66

; 第一遍, 将通道 0~3 的基地址和当前地址寄存器 ; 均置为 FFFFH, 第二遍均置为 0000H MOV DX,DMA ; 通道 0 的地址寄存器端口 MOV AL,0FFH ;AL=0FFH C8: MOV CX,0008H ; 循环次数为 8 WRITE: MOV BH,AL ; 放进 BX 以便比较 MOV BL,AL ; 第 1 遍 AL=FFH, 第 2 遍 00H OUT DX,AL ; 写入低 8 位 OUT DX,AL ; 写入高 8 位 INC DX ; 建立下个寄存器口地址 LOOP WRITE ; 写 4 个通道,8 个端口 67

; 通道 0 方式字 : 单字节, 地址增量, 自动预置, 读传送 MOV AL,58H ; 通道 0 方式字 OUT DMA+0BH,AL ; 写入通道 0 ; 设置命令字 :DACK 低有效, DREQ 高有效, 正常时序 ; 滞后写, 固定优先权, 允许 DMA 工作, 禁止存储器到 ; 存储器操作 MOV AL,00H ;8237A 命令字 OUT DMA+08H,AL ; 输出到 8237A ; 通道 1~3 方式字 : 单字节, 地址增量, 禁止自动预置, ; 校验传输 MOV AL,41H ; 通道 1 方式字 OUT DMA+0BH,AL ; 写入通道 1 MOV AL,42H ; 通道 2 方式字 OUT DMA+0BH,AL ; 写入通道 2 68

MOV AL,43H ; 通道 3 方式字 OUT DMA+0BH,AL ; 写入通道 3 ; 设置屏蔽字, 清 04 个通道屏蔽位, 都去除屏蔽 MOV AL,00H ; 屏蔽字 OUT DMA+0FH,AL ; 输出到 8237A ; 对通道 0~3 的地址值和计数值进行测试, 看读出的 ; 值是否与写入的值 ( 在 BX 中 ) 相等 MOV DX,DMA ; 指向通道 0 地址寄存器 MOV CX,0008 ; 循环次数 READ: IN AL,DX ; 读低字节 MOV AH,AL ; 存入 AH IN AL,DX ; 读高字节进 AL CMP AX,BX ; 读出值 = 写入值吗? JNE STOP ; 不等, 转 STOP 69

INC DX ; 相等, 指向下个寄存器 LOOP READ ; 测下个寄存器 MOV DX,DMA ; 测完, 指向 8237A 基地址 INC AL ;AL AL+1 JZ C8 ;AL=00H 写入此值再测一遍 ;AL=01H, 结束测试 ; 继续对 8237A 初始化 STOP: HLT ; 如出错, 则停机 70

课堂练习 设某 8088 系统使用一片 8237A, 现欲将内存地址为 8000H 开始的 100 个字节数据以 DMA 方式输出到某外设, 已知 8237A 的端口地址为 20H~2FH, 并规定 8237A 通道 1 工作在方式 2, 硬件启动 试编写初始化程序段 71

解 : 根据以上已知条件和要求, 初始化程序段为 : OUT 2DH,AL; 发主清命令 MOV AL,89H; 方式字 : 选通道 1, 读传送, 禁止自动预置, 方式 2, 地址递增 OUT 2BH,AL MOV AL,80H; 写命令字 : 普通时序, 存储器到外设传送, 固定优先级 OUT 28H,AL; 正常写,DREQ DACK 高电平有效 MOV AL,00H; 写基地址和当前地址寄存器 OUT 22H,AL MOV AL,80H OUT 22H,AL MOV AL,64H ; 写基字节寄存器和当前字节计数器 OUT 23H,AL MOV AL,0 OUT 23H,AL MOV AL,00H; 清除所有通道屏蔽 OUT 2FH,AL 72

本章结束 作业 p355 1 3 5 6 73