ISA 总线
ISA 总线是 IBM PC/AT 机(CPU 是 80286)所用的系统总线:PC/AT 总线经
过标准化之后的名称,IEEE 将 ISA 总线作为 IEEE P996 推荐标准,这是一个 16
位兼 8 位的总线标准。如果忽略标准化细节,则可认为 16 位 ISA 总线就是 PC
/AT 总线。由于 IBM PC/AT 与 IBM PC、IBM PC/XT 机(CPU 都是 8088)所
用的 Pc 总线兼容,所以可认为 8 位 ISA 总线(16 位 ISA 总的低 8 位部分)就是 PC
总线。
引脚信号
图 9.1 所示为 16 位 ISA 总线板卡(又称 I/O 扩展板或接口板)及插槽外形
示意图,元件面和焊接面共有 31+18 个引脚(A1~A31、B1~B31、C1~C18 和 D1~
D18),其中 A1~A31、Bl~B31 是低 8 位部分即 8 位 ISA 总线所用的信号。8 位
ISA 总线板卡及插槽与该图的区别在于没有 36 个引脚(C1 一 C18 和 D1~D18)
那部分。显然,8 位 ISA 总线板卡可以插在 16 位的插槽中。表 9.1 给出了 16 位
ISA 总线前 62 个引脚(亦是 8 位 ISA 总线的全部引脚)信号定义,表 9.2 给出了
16 位 ISA 总线的后 36 个引脚信号定义。
下面对引脚信号做一些简要说明,首先是 62 线部分(8 位 ISA 总线)。
①D7~DO:8 位数据线,双向,三态。对于 16 位 ISA 总线,它们是数据线
的低 8 位。
②A19~A0:20 位地址线,输出。
③SMEMR(上划线)、SMEMW(上划线):存储器读、写命令,输出,低电平有效。
④IOR(上划线)、IOW(上划线):I/O 读、写命令,输出,低电平有效
⑤AEN:地址允许信号,输出,高电平有效。该信号由 DMAC 发出,为高表示
DMAC 正在控制系统总线进行 DMA 传送,所以它可用于指示 DMA 总线周期。
⑥BALE:总线地址锁存允许,输出。该信号在 CPU 总线周期的 Tl 期间有效,
可作为 CPU 总线周期的指示。
⑦I/O CH RAY:I/O 通道准备好,输入,高电平有效。该引脚信号与 808
6 的 READY 功能相同,用于插入等待时钟周期。
⑧I/OCHCK(上划线):I/0 通道校验,输入,低电平有效。它有效表示板卡
上出现奇偶校验错。
⑨IRQ7~IRQ2:6 个中断请求信号,输入,分别接到中断控制逻辑的主 8259A 的
中断请求输入端 IR7~IR2(参看第五章的图 5.23)。这些信号由低到高的跳变表
示中断请求,但应一直保持高电平,直到 CPU 响应中断为止。它们的优先级别
与所连接的 IR 线相同,即 IRQ2 在这 6 个请求信号中级别最高,IRQ7 的级别最
低。
⑩DRQ3~DRQl:3 个 DMA 请求信号,输入,高电平有效。它们分别接到
DMA 控制器
8237A 的 DMA 请求输入端 DREQ3~DREQl。因此,优先级别与它们相对应(D
RQ1 的级别最高,DRQ 3 的级别最低)。
⑪DACK3(上划线)~DACKl(上划线):3 个 DMA 响应信号,输出,低电平
有效。
⑫T/C:计数结束信号,输出,高电平有效。它由 DMAC 发出,用于表
示进行 DMA 传送的通道编程时规定传送字节数已经传送完。但它没有说明是哪
个通道,这要结合 DMA 响应信号 DACK(上划线)来判断。
⑬OSC:振荡器的输出脉冲。
⑭CLK:系统时钟信号,输出。系统时钟的频率通常在 4.77 MHz 一 8
MHz 内选择,最高频率为 8.3 MHz。CLK 是由()SC 的输出 3 分频产生的,也就是
说()SC 的频率应是 CLK 的 3 倍。
⑮RESET:系统复位信号,输出,高电平有效。该信号有效时表示系统正
处于复位状态,可利用该信号复位总线板卡上的有关电路。
⑯NOWS:零等待状态,输入,低电平有效。用于缩短按照缺省设置应等
待的时钟数,当它有效时,不再插入等待时钟。
⑰REFRESH(上划线):刷新信号,双向,低电平有效,由总线主控器的
刷新逻辑产生。该信号有效表示存储器正处于刷新周期,
以下是对 36 线部分
16 位 ISA 总线的高 8 位)的简要说明:
⑱ SDl5~SD8:数据总线的高 8 位,双向,三态。
⑲SBHE:总线高字节传送允许,三态信号。该信号用来表示 SDl5~SD8
上正进行数据传送。
⑳LA23~LAl7:非锁存的地址线,在 BALE 为高电平时有效。将它们锁
存起来,并和已锁存的低位地址线(A19~A0)组合在一起,可形成 24 位地址线,
因而使系统的寻址能力扩大到 16 MB。
_MEMR(上划线),MEMW(上划线):存储器读、写信号,低电平有效。这
两个信号在所有的存储器读或写周期有效。相比之下,前面所介绍的 SMEMR(上
划线)和 SMEMW(上划线)仅当访问存储器的低 1 MB 时才有效。
+MEMCSl6(上划线):存储器片选 16,输入,低电平有效。该信号用来表示当
前的数据传输是具有一个等待时钟的 16 位存储器总线周期。
1 I/OCCSl6(上划线):I/O 片选 16,输入,低电平有效。该信号为集
电极开路,为低表示当前的数据传输是具有一个等待时钟的 16 位 I/O 总线周期。
2
MASTER(上划线):总线主控信号,输入,在 ISA 总线的主控器初始
化总线周期时产生,低电平有效。该信号与 I/O 通道上的 I/0 处理器的 DRQ
线一起用于获取对系统总线的控制权。
3
259A。
IRQl5~IRQ10:6 个中断请求信号,输入,接到中断控制逻辑的从 8
4 DRQ7~DRQ5、DACK7(上划线)~DACK5(上划线)、DACK0(上划线):通
道 7~5 的 DMA 请求和相应的 DMA 响应信号(另有一个通道 0 的响应信号)。这
3 个通道可进行 16 位 DMA 传送。
ISA 总线时序
ISA 总线的时序和 8086/8088 的时序基本相同,但也有一些区别。有了 8086
/8088 时序基础,对 ISA 总线时序的理解主要在于以下几点:
①地址和数据已不再分时复用信号线,因此在整个总线周期内有效。
②和 8086/8088 的最大模式一样,存储器读/写和 I/O 读/写的控制信号已
分开,进行一种操作只需一个控制信号。
③一个典型的存储器读/写周期还是由 T1、T2、T3 和 T4 组成,而 I/O 读/
写周期和 DMA 周期都自动插入了一个等待时钟周期。
④I/O CH RAY 相当于 8086/8088 时序中的:READY 信号,当总线板卡上
的存储器或 I/0 电路较慢时,可利用该信号迫使 CPU 插入等待时钟周期,但等
待时钟周期不得超过 10 个。
⑤8 位 ISA 总线在存储器读/写周期可用到 20 位地址,而 16 位.|SA 总线在
存储器读/写周期中可使用 24 位地址。但由于受 I/O 指令的限制,8 位和 16
位 ISA 总线的 I/0 读/写周期都只能使用低 16 位地址。
⑥BALE 在 CPU 总线周期的 T1 期间有效,它的基本作用是进行地址锁存,但
也可以作为一个新的 CPU 总线周期已开始的标志。
⑦AEN 有效表示 DMAC 正在控制系统总线,所以它可以作为系统处于 DMA
总线周期的标志。
ISA 总线接口
执行 ISA 总线规范的电路称为。ISA 总线接口。通过 ISA 总线接口可以为系
统扩充存储器,也可以扩充 I/O 设备。在实际应用中对后者的需求更大,因为
机器主板上一般已经或者可以安装足够的存储器,而 I/O 设备是各种各样的,
系统对 I/O 设备的需求也不尽相同。正因为如此,ISA 总线又被归类于 I/O 扩
展总线。注意,I/O 设备是一个广义的概念,可以是像打印机、硬盘那样实实
在在的设备,也可以是像 A/D 转换器、D/A 转换器、计数器那样的电路。当
I/O 设备是一个电路时,通常和总线接口做在一个总线板卡上,习惯称之为某
某接口板(如 A/D 接口板)或某某接口(如 D/A 接口)。
从 ISA 总线的引脚信号以及总线时序看,和 8086/8088 最大模式时的系统
三总线以及 8086/8088 的总线周期时序差别不大,因此,在设计 ISA 总线接口
特别是 I/O 接口时,除了下面三点需要注意外,可以采用与设计 8086/8088
接口几乎相同的方法。这三点是:
1.当设计非 DMA 方式的 I/O 接口时,应把 AEN 为低作为该接口工作的使能
条件,以确保在总线上进行 DMA 传送时该接口不工作,否则 DMA 传送时所发出的
地址与该接口设计地址相同时该接口会误操作。
2.系统对 ISA 总线上的 I/O 端口地址采用部分译码方法,只译码 A9~AO 或
A10~A0,在选择接口地址时应避开系统已占用的地址以及它们的重叠区。
③如果所要设计的接口中包含需要 CPU 插入等待时钟的功能,则需设计
一个 I/0 CHRAY 产生电路,以便在必要时使总线上的 I/O CH RAY 线为低电平。
但该电路与总线上的 I/O CH RAY 线的电气连接以及有效信号出现和持续时
间等方面有一些要求,实际应用时需再参阅其详细资料。
第六章已经举了一个 ISA 总线接口的例子——可编程定时中断请求产生
电路。为使读者进一步了解 ISA 总线接口的设计,这里再举一例。
例 9.1 设计能采集 24 路脉冲量的 8 位 ISA 总线接口,要求基地址可
变。
为了能读取计数器的工作状态,这里选用 8254。适当选取采样时间间隔,可保证
在下一次采样之前 16 位的计数器不会计满(即记录的脉冲数不超过 65535),这样用 8 片 8
254 即可。为使占用的端口地址连续且译码电路简单,这里用一片 3 线一 8 线译码器(74LSl
38)来产生 8 个 8254 片选信号。读取计数器的值一般采用程序直接控制方式,即该接口工作
于非 DMA 方式,因此应把 AEN 为低作为该接口工作的使能条件。显然,这应安排在能对
整个接口电路起作用的地方。这里的做法是:将 AEN 作为基地址可变电路中的二进制数比
较器 74LS688 的使能信号,当 AEN 为低时,74LS688 能工作,从而使译码器 74LSl38
以及作为数据缓冲器的 74LS245 在本接口所用任一地址出现时也能工作,此时
能对 8254 进行正常读/写;当总线中有 DMA 操作时,AEN 变成高电平,74LS
688 被禁止,使得 74LSl38 和 74LS245 也被禁止,于是,8254 与外界的联系被
切断,不会被误操作。
图 9.2 所示是该接口的具体电路图,读者可以自行分析,并参考进行
一些.ISA 总线接口设计。