【微机原理与接口技术】学习笔记9 DMA控制器8237A

本文深入探讨了8237A DMA控制器的组成、工作原理、内部结构及引脚功能,详细讲解了其时序、编程方法与应用实例,特别关注于IBM-PC微机中的DMA系统配置与初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


9.1 8237A 的组成与工作原理

9.1.1 DMA传送

DMA 方式传送数据时,传送过程完全由 DMA 控制器(DMAC)控制。其基本功能:

  • DMAC 能向CPU的 HOLD 脚发出 DMA 请求信号。
  • CPU响应 DMA 请求后,DMAC 获得总线控制权,由它控制数据的传送,CPU则暂停工作。
  • 能提供读/写存储器或I/O设备的各种控制命令。
  • 确定数据传输的始址和数据长度(CPU配置的),每传送1个数据便自动修改地址(+1-1),数据长度 -1
  • 传送完毕,能发出结束 DMA 传送的信号。
  • CPU在每个非锁定时钟周期结束后,都会检测 HOLD 脚上有无 DMA 请求?若有,便转入 DMA 传送周期。

8237A 是高性能可编程 DMA 控制器,主要特点:

  • 4 个通道,每通道64K 地址(16位)和字节计数能力(16位)。
  • 4 种传送方式:单字节传送、数据块传送、请求传送、级联传送。
  • 每个通道的 DMA 请求可被允许或禁止。4 个通道的 DMA 请求有不同优先级,优先级可以是固定的,也可以是循环的。
  • 任一通道完成数据传送后,会自动产生过程结束信号 EOPEnd of Process,不常用),结束 DMA 传送;还可从外界输入 EOP 信号,中止正执行的DMA 传送。

8237A 的两种工作状态
1)从态方式
开始 DMA 传送前,8237A系统总线的从属设备,由CPU对它进行编程,如指定通道、传送方式和类型、内存单元起始地址、地址是递增还是递减以及要传送的总字节数等等;CPU也可读取 DMAC 的状态。
2)主态方式
8237A 取得总线控制权后,它就完全控制了系统,使I/O设备和存储器之间或者存储器与存储器之间进行直接的数据传送。

8237A 芯片的内部结构和外部连接与这两种工作状态密切相关。

9.1.2 8237A的内部结构

  1. 时序与控制逻辑
    从态时接收系统时钟、复位、片选和读/写等信号,完成相应控制操作;主态时, 向系统发控制信号
    其中与设备相连的是 IOR ‾ , IOW ‾ \overline {\text{IOR}},\overline {\text{IOW}} IOR,IOW ,其他的要么和CPU相连,要么和系统总线相连。
    MEMR ‾ , MEMW ‾ \overline {\text {MEMR}},\overline {\text{MEMW}} MEMR,MEMW 是主态时进行内存读写的命令。

  2. 优先级编码电路
    对同时提出 DMA 请求 HRQ(Hold Request) 的多个通道进行排队判优,决定哪个通道优先级最高,然后进行响应 HLDA(Hold Acknowledge)
    可选固定或循环优先级。某个优先级高的设备服务时,禁止其它通道请求。

  3. 数据和地址缓冲器组
    8237A的 A7~A4(单向输出)、A3~A0(双向:从态时 A3-A0 输入有4根线,说明占了 16 个端口地址;主态时:A3-A0A7-A4DB7-DB0 共16根地址线往内存输出,读或写数据) 为地址线;
    DB7~DB0从态时传输(CPU配置或读取DMA的)数据主态时传送地址。它们都与三态缓冲器相连,便于接管或释放。

  4. 命令控制逻辑
    从态时接收CPU送来的寄存器选择信号A3~A0),选择寄存器;主态时译码方式字D1D0 ,以确定操作类型。A3~A0 IOR \text{IOR} IOR IOW \text{IOW} IOW 配合组成各种操作命令。

  5. 内部寄存器组
    每通道有 16 位基址寄存器、基字计数器、当前地址寄存器、当前字计数器以及 6 位工作方式寄存器。
    片内还有命令寄存器、屏蔽寄存器、请求寄存器、状态寄存器和暂存寄存器。
    不可编程的字数暂存器和地址暂存器。

9.1.3 8237A的引脚功能

8237A40 引脚 DIP 封装, 引脚排列:

  1. CLK 时钟信号,输入
    8237A 时钟频率 3MHz8237A-55MHz
  2. CS ‾ \overline \text{CS} CS 片选信号,输入,低电平有效。
    从态方式下选中 8237A ,接受CPU对它的编程等。
  3. READY 准备好,输入,高电平有效
    慢速 I/O 设备或存储器参与 DMA 传送时,可使 READY 变低,让 8237ADMA 周期中插入等待周期 TW ;当它们准备就绪时 READY 变高。
  4. A3~A04 位地址线
    从态为输入,寻址 8237A 内部寄存器,实现编程;主态时输出要访问内存的低 4 位地址。
  5. A7-A44 位地址线
    始终是输出或浮空,主态时输出 4 位地址信息 A7-A4
  6. DB7-DB0 8 位数据线,与系统数据总线相连。
    • 从态时,CPU经过数据线读取各有关寄存器内容,并对各寄存器编程。
    • 主态时,由它们输出高 8 位地址 A15-A8 ,并由 ADSTB 信号将它们锁存到外部的高 8 位地址寄存器中,与 A7-A0 输出的低 8 位地址构成 16 位地址。
    • 存储器-存储器传送方式下,源存储器读出的数据,经它们送暂存寄存器,暂存器中数据再经它们写到目的存储单元中。
  7. AEN 地址允许信号,输出,高电平有效
    送出锁存的高 8 位地址,与芯片输出的低 8 位地址一起构成 16 位内存偏址。同时使连到CPU的地址锁存器无效,保证地址线上的信号来自 DMAC
  8. ADSTB 地址选通信号,输出,高电平有效
    选通外部地址锁存器,将 DB7~DB0 上的高 8 位地址送到外部的地址锁存器。
  9. IOR ‾ \overline {\text{IOR}} IOR I/O 读信号,双向。
    从态时,控制CPU读取 8237A 内部寄存器
    主态时,与 MEMW
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

memcpy0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值