8259A 的编程

•8259A内部有7个寄存器,分为两组:初始化命令寄存器组和操作命令寄存器组。初始化命令寄存器组包括4个寄存器:ICW1~ICW4对应的寄存器。操作命 令寄存器组包括3个寄存器:OCW1~OCW3对应的寄存器。
•由于8259A只有一条地址线A0,所以它只能有两个端口地址,而8259A有7个命令字,每个命令字要写入相应的寄存器。为此,采取以下几点措施:
第一,以端口地址区分;
第二,把命令字中的某些位作为特征码来区分;
第三,以命令字的写入顺序来区分。
图2.4.3 8259A的ICW写入顺序
图ICW控制字
图2.4.4 8259A初始化命令字格式
图OCW控制字

2.5 DMA控制器8237A

•DMA控制器占用总线有三种方式:
1.CPU停机方式
•在这种方式中,当DMA操作时,CPU释放总线,暂时放弃对总线的控制权,即暂时脱离总线,处于“浮空”状态。这种方式可进行单字节或多字节传送,但降低了CPU的利用率,影响CPU对中断的响应,以及对动态存储器的刷新。
2.周期扩展
•周期扩展实质上就是延长CPU的时钟周期,让CPU的工作速度减慢,从而使DMA操作。这种方式也是迫使CPU“停止”工作的方式。该方式使用专门的时钟发生器,在DMA操作期间,启用二套时钟系统:扩展时钟(周期延长的时钟)给CPU,正常时钟给DMA,CPU在扩展时钟内操作不往下进行,扩展时钟结束后(此时DMA操作也已完成)再继续进行。这种方式降低了CPU的速度,并由于时钟周期加宽(扩展)有限,故一次只能传送一个字节。
3.周期窃取
•这种方式的基本思想是:当CPU不使用总线时进行DMA操作。一般来说,一个CPU在工作时总有一些时间不使用总线,比如在取完指令操作码后,CPU要进行指令译码,或内部进行算逻操作等,CPU均不使用总线,DMA控制器可在这些时间接管总线,控制DMA操作。这种方式不影响CPU工作,但需要有专门的硬件来识别可用周期,识别电路比较复杂,而且数据传送不连续,也不规则,因而使用不多。