第6章 基本输入输出及DMA.ppt
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在级联方式下,当第二级8237的请求得到 响应时,第一级8237仅应输出HRQ 信号 而不能输出地址及控制信号,第二级的 8237才是真正的主控制器,而第一级的 8237 仅应起到传递DREQ请求信号及DACK 应答信号的作用
(1)I/O接口到存储器的传送。
当进行由I/O接口到存储器的数据传送时, 来自I/O接口的数据利用DMAC送出的IOR控 制信号,将数据输送到系统数据总线 D0~D7上,同时,DMAC送出存储器单元地 址及MEMW控制信号,将存在于D0~D7上的 数据写入所选中的存储单元中。这样就完 成了由I/O接口到存储器一个字节的传送。 同时DMAC修改内部地址及字节数寄存器的 内容
8237 的各个通道在进行DMA 传送时, 有四种工作方式
(1)单字节传送方式
每次DMA 操作仅传送一个字节的数据, 完成一个字节的数据传送后,8237 将当 前地址寄存器的内容加1(或减1),并 将当前字节数寄存器的内容减1,每传送 完这一个字节,DMAC 就将总线控制权交 回CPU
(2)数据块传送
• CPU 正在访存
• CPU 与 DMA 同时请求访存
此时 CPU 将总线控制权让给 DMA
主存工作时间
t
CPU控制 并使用主存
DMA控制 并使用主存
(2)周期扩展
特殊的时钟发生器/驱动器电路 CPU时钟周期加宽,不操作 限制:DAM传送时一次只传送一个字节
(3) CPU停机方式
控制简单
CPU 处于不工作状态或保持状态 未充分发挥 CPU 对主存的利用率
4.外部引脚
IO R 1
40
IO W
MEMR
MEMW
NC
5
RE ADY
35
HLD A
AD STB
AEN
HRQ 10
CS
30
CL K
RE SE T
DA CK2
DA CK3
15
DRE Q3
25
DRE Q2
DRE Q1
DRE Q0
GN D 20
21
DMAC8237引脚图
A7 A6 A5 A4 EOP
A3 A2 A1 A0 VCC(+ 5V) D B0 D B1 D B2 D B3 D B4 DA CK0 DA CK1 D B5 D B6 D B7
主要包含以下几个部分: (1)四个独立的DMA通道 每个通道都有一个16 位的基地址寄存器,一个 16 位的基字节数计数器, 一个16位的当前地 址寄存器和一个16 位的当前字节数计数器及一 个8 位的方式寄存器,方式寄存器接收并保存 来自于CPU 的方式控制字,使本通道能够工作 于不同的方式下
(2)定时及控制逻辑电路 对在DMA请求服务之前,CPU编程对给定的命令字 和方式控制字进行译码,以确定DMA的工作方式, 并控制产生所需要的定时信号;
(5)8237 的数据引线
地址引线都有三态缓冲器,因而可以接地可以释放 总线
3.8237 的工作周期 它具有两种主要的工作周期,即空闲周期和
有效周期,每一个周期又是由若干时钟周期所 组成的。
(1)空闲周期(lade cycle) 当8237的任一通道都无DMA请求时,则其处
于空闲周期或称为SI 状态,空闲周期由一系 列的时钟周期组成,在空闲周期中的每一个时 钟周期,8237只做两项工作。
采样各通道的DREQ请求输入线,只要无DMA 请求,则其始终停留在SI状态;
由CPU对8237进行读/写操作,即采样片选信 号CS,只要CS信号变为有效的低电平,则表明 CPU要对8237 进行读/写操作,当8237采样CS 为低电平而DREQ 也为低,即外部设备没有向 8237发DMA请求的情况下,则进入CPU对8237 的编程操作状态,CPU可以向8237的内部寄存 器进行写操作,以决定或者改变8237 的工作 方式,或者对8237 内部的相关寄存器进行读 操作,以了解8237 的工作状态
(2)DMA 传送过程示意
数据传送
CPU
DMA请求
初始化:
主存起始地址 DMA
设备地址 DMA
传送数据个数 启动设备
DMA
数据传送: 继续执行主程序 同时完成一批数据传送
否
允许传送?
是
主存地址送总线 数据送I/O设备(或主存 ) 主存地址 加 1 传送个数 减 1
后处理: 中断服务程序 做 DMA 结束处理
FFFFFH
I/O地址空间
0000H
FFFFH
I/O空间 (64KB)
程序控制的输入输出 中断传送方式 DMA工作方式
6.2.1 程序控制的输入输出
1.无条件传送方式
D7~D0
地址总线 M/IO WR
RD
端口 译码 器
输出 锁存 器
往输出 设备
输入 锁存 器
来自输 入设备
2.查询传送方式
CPU对8237 进行读/写操作时,由地址信号 A3~A0来选择8237 内部的不同寄存器(组), 由读/写控制信号IOR 及IOW来控制读/写操作。 由于8237 内部的地址寄存器和字节数计数器 都是16 位的,而数据线是8 位的,所以在 8237 的内部,有一个高/低字节触发器,称为 字节指针寄存器,由它来控制8 位信息是写入 16 位寄存器的高8 位还是低8 位,该触发器 的状态交替变化,当其状态为0 时,进行低字 节的读/写操作;而当其状态为1 时,则进行 高字节的读/写操作
在这种传送方式下,DMAC一旦获得总 线控制权,便开始连续传送数据。每传 送一个字节,自动修改当前地址及当前 字节数寄存器的内容,直到将所有规定 的字节全部传送完,或收到外部EOP信号, DMAC才结束传送,将总线控制权交给CPU, 一次所传送数据块的最大长度可达64 KB, 数据块传送结束后可自动初始化。
继续执行主程序
否
数据块
传送结束?
是 向CPU申请 程序中断
(3) 后处理
校验送入主存的数是否正确 是否继续用 DMA 测试传送过程是否正确,错则转诊断程序 由中断服务程序完成
1.DMA 控制器芯片Intel 8237的性能 (1)含有4 个相互独立的通道,每个通道有独立 的地址寄存器和字节数寄存器,而控制寄存器、 状态寄存器为四个通道所共用。 (2)每个通道的DMA 请求可以分别被允许/禁止 (3)每个通道的DMA 请求有不同的优先权,可以 通过程序设置为固定的或者是旋转的方式。
控制 逻辑
状态寄存器 (or 三态门)
命令寄存器
输入/输出接口
数据线
接 状态线 外
设
控制线
4. 外设接口的编址方式
(1)统一编址方式
地址空间(共1MB)
0
(2)独立编址方式
内存地址空间
00000H
EFFFFH F0000H
FFFFFH
内存地址 (960KB)
I/O地址 (64KB)
内存空间 (1MB)
(4)通道中地址寄存器的长度为16 位,因而一 次DMA 传送的最大数据块的长度为64K 字节。
(5)8237 有4 种工作方式,分别为:单字节传送、 数据块传送、请求传送、级联方式。
(6)允许用EOP 输入。信号来结束DMA 传送或重 新初始化。
(7)8237 可以级联以增加通道数
2.内部结构
程命令寄存器,可以选择通道0 和通道1两个通道实现 由存储器到存储器的传送。在进行传送时,采用数据块 传送方式,由通道0 送出内存源区域的地址和MEWR控制 信号,将选中内存单元的的数据读到8237的暂存寄存器 中,通道0修改地址及字节数寄存器的值;接着由通道1 输出内存目的区域的地址及MEMW控制信号,将存放在暂 存寄存器中的数据,通过系统数据总线,写入到内存的 目的区域中去,尔后通道1修改地址和字节数寄存器的 内容,通道1的字节计数器减到零或外部输入EOP 时可 结束一次DMA传输过程
主存工作时间
t
CPU控制 并使用主存
CPU不执行程序
DMA控制 并使用主存
DMA不工作
DMA工作
DMA不工作
4.DMA的传送方式
(1)单字节传送 (2)成组传送 (3)请求传送方式(查询传送)
单字节传送
5. DMA 的工作过程
DMA 传送过程:
初始化、数据传送、后处理 (1) 初始化
通过几条输入输出指令预置如下信息 • 通知 DMA 控制逻辑传送方向(入/出) • 设备地址 DMA 的 DAR • 主存地址 DMA 的 AR • 传送字数 DMA 的 WC
(1) 中断传送方式的原理: 中断方式:CPU和外设可并行工作,当外设需 要CPU为它服务时,向CPU发出申请,CPU接 到申请后,暂停自己的工作去为外设服务, 服务结束后再回去继续原来的工作。
(2) 中断过程:
主程序 中断服务程序
中断申请
断点
6.2.3 DMA工作方式
1.DMA方式的提出
DMA方式:CPU交出总线控制权,在DMA控制 器控制下内存和外设直接进行信 息交换。
1.输入/输出设备 2.外设接口的功能
格式转换功能 提供联络信号功能 协调定时差异功能 电平转换功能 地址译码功能 时序控制功能 可编程功能
3. 外设接口的一般结构
CPU
接口 电路
I/O 设备
AB
接 主 DB 机
CB
译码 电路
数据输入寄存
I/O
DMAC
外设
2. DMA控制器的功能
向CPU发总线请求 实行对总线的控制 向地址总线发送地址信号,并自动修改地址 发送读/写控制信号 控制传送字节个数 向CPU发送结束信号,交回总线控制权
3. DMA操作基本方法 (1)周期挪用(或周期窃取)
DMA 访问主存有三种可能 • CPU 此时不访存
(3)优先级编码逻辑 对通道进行优先级编码,确定在同时接收到不同 通道的DMA 请求时,能够确定相应的先后次序。 通道的优先级可以通过编程确定为是固定的或是 旋转的
(4)共用寄存器 整个芯片还有一些共用的的寄存器:包括1个16位 的地址暂存寄存器,1个16 位的字节数暂存寄存器, 1个8 位的状态寄存器,1个8位的命令寄存器,1个8 位的暂存寄存器,1个4 位的屏蔽寄存器和1个4 位 的请求寄存器等,我们将对这些寄存器的功能与作 用,作较为详细的介绍。8237 内部寄存器的类型和 数量如表6-1 所示,其中,凡数量为4个的寄存器, 则每个通道一个,凡数量只有一个的,则为各通道 所公用
S0 状态是DMA 服务的第一个状态,在这个状态下, 8237 已接收了外设的请求,向CPU 发出了DMA 请求 信号HRQ,但尚未收到CPU 对DMA 请求的应答信号 HLDA;而S1 状态则是实际的DMA 传送工作状态,当 8237 接收到CPU 发来的HLDA 应答信号时,就可以由 S0 状态转入Si 状态,开始DMA 传送。在内存与外设 之间进行DMA传送时,通常一个Si周期由4 个时钟周 期组成,即S1,S2,S3,S4,但当外设速度较慢时, 可以插入SW 等待周期;而在内存的不同区域之间进 行DMA 传送时,由于需要依次完成从存储器读和向存 储器写的操作,所以完成每一次传送需要8 个时钟周 期,在前四个周期S11,S12,S13,S14 完成从存储 器源区域的读操作,后四个时钟周期S21,S22,S23, S24 完成向存储器目的区域的写操作
输 数据 锁
入
存
设
器
备
R
+5V
DQ
数
据 缓
数据
冲
器
三 态 缓 冲 器
地址 译码
查询方式输入的接口电路
RD D7~D0 地址总线
M/IO RD
数
据
数据 锁 选通信号
存
输
器
出 ACK
设
备
R
QD
+5V
状
态
寄
存
器
数据总线
端口 译码
WR 地址总线
RD M/IO
BUSY
查询方式输出的接口电路
6.2.2 中断传送方式
(3)请求传送
只要DREQ有效,DMA传送就一直进行,直到 连续传送到字节计数器为0或外部输入使EOP变 低或DREQ变为无效时为止
(4)级联方式
利用这种方式可以把多个8237 连接在一 起,以便扩充系统的DMA通道数。下一级 的HRQ接到上一级的某一通道的DREQ上, 而上一级的响应信号DACK可接下一级的 HLDA上
(2)有效周期(Active Cycle) 当处于空闲状态的8237 的某一通道接收到
外设提出的DMA 请求DREQ 时,它立即向CPU 输出HRQ 有效信号,在未收到CPU回答时, 8237仍处于编程状态,又称初始状态,记为S0 状态。
经过若干个S0 状态后,当8237 收到来自于 CPU 的HLDA 应答信号后,则进入工作周期, 或称为有效周期,或者说8237由S0状态进入了 S1状态
(2)存储器到I/O 接口
DMAC送出存储器地址及MEMW控制信号, 将选中的存储单元的内容读出放在数据 总线D0~D7上,接着DMAC送出IOW控制信 号,将数据写到规定的(预选中)端口 中去,而后MDAC自动修改内部的地址及 字节数寄存器的内容
(3)存储器到存储器 8237 具有存储器到存储器的传送功能,利用8237 编