8259A是如何区分不同控制字的

•8259A内部有7个寄存器,分为两组:初始化命令寄存器组和操作命令寄存器组。初始化命令寄存器组包括4个寄存器:ICW1~ICW4对应的寄存器。操作命 令寄存器组包括3个寄存器:OCW1~OCW3对应的寄存器。


 •由于8259A只有一条地址线A0,所以它只能有两个端口地址,而8259A有7个命令字,每个命令字要写入相应的寄存器。为此,采取以下几点措施:
第一,以端口地址区分;
第二,把命令字中的某些位作为特征码来区分;

第三,以命令字的写入顺序来区分。


由表7.1可见,8259A只有一根端口选择线A0,这说明其内部只有两个I/O端口,对应于A0=0和1,分别叫做0口和1口。CPU只能通过这两个端口来实现对8259A中各寄存器的读/写操作。

表7.2给出了表7.1中各信号线对8259A读/写操作的控制真值表。其中D4、D3两位是初始化命令字(ICWi)或操作命令字(OCWi)中的标志特征位。对该表说明如下:

 

表7.2  A0对8259A读/写操作的控制作用

A0

D4

D3

读  写  操  作

0

0

1

0

0

0

数据总线→OCW2

0

0

1

0

0

1

数据总线→OCW3

0

0

1

0

1

×

数据总线→ICW1

1

0

1

0

×

×

数据总线→OCW1、ICW2、ICW3、ICW4

0

0

0

1

 

 

IRR、ISR、中断级BCD码→数据总线

1

0

0

1

 

 

IMR→数据总线

×

×

1

1

×

×

禁止

×

1

×

×

×

×

禁止

 

 (1) OCW2、OCW3、ICW1和IRR、ISR、中断BCD都是通过0口(A0=0)来访问的,但因为前三个命令寄存器是只写的,而后三者是只读的,因此可通过读/写控制信号等于10或01来区分对它们的寻址。

(2) 同样,对通过同一端口——1口(A0=1)来访问的OCW1、ICW2、ICW3、ICW4和IMR,也可通过等于10或01来区分。

(3) 对既是同一端口(0口)、又都是只写寄存器的OCW2、OCW3和ICW1的访问是通过在命令字中引入两位标志位D4、D3来区分的。

(4) 对既是同一端口(1口)、又都是只写寄存器的ICW2、ICW3、ICW4和OCW1的访问,需要通过严格遵守规定的写入顺序来得到保证。8259A内部设置了与规定顺序相一致的时序控制逻辑。

(5) 对既是同一端口(0口),又都是只读寄存器的IRR、ISR和中断级BCD码的访问,决定于在读出之前,CPU写入芯片的操作命令字OCW3的内容。


另可参考:http://course.cug.edu.cn/21cn/%E5%BE%AE%E5%9E%8B%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%8A%80%E6%9C%AF/content/chapter5/5-4/5-4-0.htm


  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值