8237A的工作模式
# F. G4 ^& C6 h; M& B
8237A在有效周期内有四种工作模式:单字节传送模式、数据块传送模式、请求传送模
: l; `& N, i' E) ]5 k; H. U2 M式和级连模式。
- P# F! b, v1 p. q; D* K7 i
1)单字节传送模式
7 V6 \& ~# i/ W5 C/ H9 Y! c
在这种模式下,DMA传送每次仅传送一个字节。传送之后,字节数寄存器减1,地址寄存器加1或减1,并释放总线,将总线控制权交还给CPU。若传送后字节数寄存器从0减到FFFFH(简称过零),表示计数已到终点(产生TC),则终止DMA传送或重新初始化。
. ^% d1 v1 }/ Z* ^* s 对于这种模式,DMA请求DREQ应维持到DACK变为有效。如果在整个一次传输过程中DREQ都保持有效,HRQ也会变成无效,在传送一个字节后释放总线。但HRQ很快再次变成有效,8237A接受到新的HLDA有效信号后,又开始传送下一个字节。
. t' e: c. N" c+ {( H 单字节传送模式的特点是:一次传送一个字节,效率较低,但可保证在两次DMA传送之间CPU有机会重新获得总线控制权,至少执行一个CPU总线周期。
0 b5 w' A( g& {! X. X; E 2)数据块传送模式
/ w5 z L7 h+ t
在这种模式下,8237A由DREQ启动就连续传送数据,直到字节计数器过零,或者由外部输入有效的EOP信号终止DMA传送。DREQ只需维持有效到DACK有效。
: h9 [/ Y! X3 G& Y0 E- F 数据块传送模式的特点是:一次请求传送一个数据块,效率高,但整个DMA传送期间CPU长时间无法控制总线,此期间如果有其他DMA请求或中断请求,也不能响应。
: }& f* x9 e' O: J. b6 W! X; V- ^ 3)请求传送模式
) [3 |: E* q6 f9 ~. A
在这种模式下,8237A可以连续传送数据,但出现以下三种情况之一时传送会停止:
" h c5 i# ^/ S/ p ①字节计数器过零,发生TC;
* t7 D/ i7 c% e. h8 m. {% f' d5 n
②由外部输入一个有效的EOP信号;
5 f) |' _0 P- K& s: e& {3 D
③DREQ信号变为无效(一般是外设准备好的数据已传送完)。 ,
! e" a; {8 @: a' P+ e: s9 ?# u
当由第三种情况使传送停下来时,8237A释放总线,CPU可继续工作。而DMA操作的地址和字节数的当前值,仍保持在相应通道的现行地址和现行字节数寄存器中。只要外设准备好了要传送的数据,由DREQ再次有效就可以使传送继续下去。因此,该模式的特点是,可由外设控制DMA传送的过程。使用起来比较灵活。
7 E" Z( d# Q G/ e# A9 p 4)级联模式
, k3 y2 C2 \- n3 L& Q 一片8237A提供4个:DMA通道,当要使用的DMA通道数超过4个时,就需要将
' v# I4 ~* G, D) n& {; v/ C两片或多片8237A级联起来。级联模式用于8237A的级联。图6.34所示是二级级联 的例子。其中,第二级芯片的HRQ和HLDA信号分别连接到第一级的DREQ和DACK上。第二级芯片的优先权等级与所连通道的优先权级别相对应。这种情况下,第一级的连接通道只起两个作用:一是优先权连接的作用,即将第二级的4个DMA通道纳入到第一级的优先权管理机制;二是向CPU输出HRQ和传递HLDA。该连接通道并不输出任何其他信号,实际的DMA操作由第二级芯片完成。在该例中,第一级8237A的通道0和通道3在程序设置时应置为级联模式。
/ B! ~/ ~; X. i7 u7 [. Y i2 N; |) I* k( X1 Z; A' u/ Q; v% Y P
8 `8 f; @% k5 Z. P, Y, W& t l
. Y$ }, P! a1 l! ]
& y- r; G" s2 O9 v. A1 Q 级联模式用于扩充DMA的通道数,它并不进行DMA传送。级联的级数可根据需要确定。