8237A的应用
6 t& O- F' Z3 @5 i 1.8237A在IBM PC/XT机中的应用
3 r* z, C* x w0 }6 f0 ]9 w' ]
IBM PC/XT机中使用了一片8237A-5。通道0用于DRAM的刷新;通道2和通道3分别用于内存与软盘和硬盘之间的高速数据传输;通道1可由用户使用;当使用串行同步通信适配器(sDLC卡)时,通道1用于同步通信,在内存与SDLC卡间传输数据。由于通道0用于刷新操作,因此PC/XT机的8237A在应用时受到一定限制:不能进行存储器与存储器之间的数据传输,因为该方式要使用通道0和通道1;不能采用数据块传送模式,因为长时间的占用系统总线会影响刷新的定时进行;必须采用固定优先权,因为刷新要求优先级最高。
6 Q5 `- M) Q9 O; D r6 v 在PC/XT机中,DMA控制电路由一片8237A-5、页面寄存器74LS670、DMA地址锁存器74LS373、DMA地址驱动器74LS244等组成,如图6.40所示。
7 a2 f. Q' L+ k, i- `, t# w) u2 G5 _
3 S( w7 S, L- L$ r+ q, i+ b6 U1 o" k+ E
& K6 J, k3 `: P' i
. i/ J, M* V# u 对该电路做全面说明将涉及许多细节,这里仅就控制电路的组成做一些解释。读者如需深入了解,可查阅有关文献。
8 A% h) w! J6 |/ K 8237A每个通道的最大传送长度为64 KB,故它提供16位地址。但XT机使用20位地址总线。所以,在DMA传输时,DMA控制电路还要提供高4位地址A19~A16,称之为页面地址。为此,采用寄存器堆电路74LS670作为页面寄存器。74LS670含有4个4位寄存器,正好用来存放4个DMA通道所需的高4位地址。它的4位数据输入端接到系统数据总线的D3~DO,4位数据输出端接到系统地址总线的A19~A16。它的控制端WRITE(上划线)为低电平时,数据从数据输入端写入由WA和WB编码所指定的寄存器中;它的控制端READ(上划线)为低电平时,数据从由RA和RB编码所指定的寄存器中读出送至数据输出端。
P% ~" _" ~ ]8 ?7 K6 A/ E9 L
由图6.40可见,页面寄存器读出的控制条件是DMA AEN(上划线),即DMA操作期间可进行读出,输出页面地址。页面寄存器写入的控制条件是WRT DMAPG(上划线),当对指定范围的I/0地址执行写操作时,WRT DMAPG(上划线)信号为低电平,对页面寄存器进行写入。
, v' Q7 ]$ i' Z4 ]9 V1 q7 y* R 驱动器7415244在DMA AEN(上划线)有效时将DMA传送要用到的低8位地址(A7~A0)送上地址总线。地址锁存器74LS373用来锁存高8位地址(A15~A8)。在DMA AEN(上划线)有效期间,地址锁存器中的高8位地址也被送上地址总线。
) @# ]) ?& `, z; k* ^
关于高8位地址的锁存需要做一些说明。锁存发生在S1状态,锁存控制信号是
/ S; b3 e) Z5 u) g
ADsTB。对于单传送模式,每一个DMA周期都从S1状态开始,因此每一个DMA周期都将本周期要访问的存储单元的高8位地址通过数据总线锁存到外部的地址锁存器中。对于数据块传送模式和请求传送模式,下一个DMA周期应接着传送下一个字节,通常情况下,地址的高8位是相同的,只是低8位需要增量或减量。所以,输出和锁存高8位地址的S1状态不再需要,而直接进入S2状态。这样安排可缩短DMA周期的长度,从而提高DMA传输的效率。注意,仅低8位的变化,只可给出256个不同的地址,所以,8237A每隔256次传输(256个DMA周期)需要执行一次Sl状态,以输出和锁存新的高8位地址。
: I- J+ \# B+ @2 g7 R/ L; S
在PC/XT机中,8237A的寄存器和软件命令共占用16个I/O地址空间。8237A的片选信号DMA CS(上划线)在A9A8A7A6A5=00000时有效(A4没有参加译码),即端口地址范围为00H~1FH。实际应用中取A4为O,所以8237A使用的地址为OOH~OFH。8237A还占用了4个I/0地址(80H、83H、8lH、82H)分别作为通道0~3的页面寄存器的地址。
# \( q: y; w4 [# X/ [5 r5 d 2.8237A在IBM PC/AT机中的应用
% p3 }/ W, k. i$ M3 Z7 [* z
IBM PC/AT机中使用了两片8237A-5(分别称为DMACl和DMAC2),并将DMACl作为从级,级联到DMAC2的通道0上。这样,就为系统提供了7个DMA通道。
7 [3 M/ P/ b4 i$ B8 [0 l DMACl包含通道0~3(CH0~CH3),这些通道支持8位I/O设备(接口)与8位或16位系统存储器之间的8位数据传送,每个通道能够传送的数据量最大为64 KB。DMAC2包含通道4~7(CH4~CH7)。通道4已用于级联,不能用于其他目的。通道5—7支持16位I/O设备(接口)与16位系统存储器之间的16位数据传送,每个通道能够传送的数据量最大为128KB。在PC/AT机中,除了通道4用于级联外,系统仅利用通道2作为软盘DMA传输,所以其他通道用户都可以使用。
7 X" }. ^. G- F0 w
DMACl占用的I/O端口地址和PC/XT机相同(OOH~1FH)。由于DMAC2支持16位传输,而16位传输时总是进行双字节读/写,所以DMAC2占用了OCO~ODEH间的16个偶地址。Pc/AT机的地址总线为24根,但8237A仅能管理16位地址,所以系统中DMA控制电路中的页面寄存器需要8位(采用74LS612作为页面寄存器)。在。PC/AT机中,7个通道(通道0~3、通道5~7)的页面寄存器的I/O地址分别为87H、83H、81H、82H、8BH、89H、8AH。
& i9 w4 E# o2 U! H- C
3.与AT兼容高档PC系列机中的DMA逻辑
7 { j# X3 J3 h d0 \' A1 }
在与AT兼容的高档PC系列机中,一般采用高集成度的多功能I/O芯片(如较早的
) l& R3 g/ a9 J/ j# C82C206、82357等),其内部集成有与PC/AT机中两片级联的8237A相兼容的逻辑,其性能也有显著提高。不仅能进行8位和16位的传输,还可以进行32位的传输。DMA的工作频率也大大提高。
/ ^ | Z. ?" _9 Y3 k' r
4.应用举例
3 n& r4 o- L$ r( v& D4 _
这里举一个简单的DMA应用例子——利用PC/XT机的8237A的通道l进行单字节写传送,要求把来自外设的4