ISA总线(或称工业标准结构总线)在与IBM兼容的PC系统刚起步时就已出现了(约1982年)。实际上,任何早期PC中的功能卡均可插入最先进的基于Pentium4的计算机中,并且发挥作用。这是因为在所有这些计算机都有ISA总线接口,从而与早期的PC仍然兼容。ISA总线最近在家用计算机中已几乎不用了,但仍用于许多工业应用,且越来越受到限制。
ISA总线已经不同于它的早期版本。ISA总线已从最初的8位标准总线发展为在大多数系统中广泛应用的16位标准总线。在发展过程中甚至出现过一种称为EISA(扩展ISA)总线的32位标准总线,但已基本消失。在一些比较老的主板上仍保留有ISA插槽,既可以插入8位ISA卡,又可以插入16位ISA卡。32位的印制电路板则经常是PCI卡。8位ISA总线接口
引脚A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A17A18A19A20A21A22A23A24A25A26A27A28A29信号名称I/OCHCKD7D6D5D4D3D2D1D0IOCHRAYAENA19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2输入输出II/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/O引脚B1B2B3B4B5B6B7B8B9B10B11B12B13B14B15B16B17B18B19B20B21B22B23B24B25B26B27B28B29信号名称GNDRESET+5VIRQ2-5VDRQ2-12VNOWS+12VGND/SMEMW/SMEMR/IOW/IOR/DACK3DRQ3/DACK1DRQ1/REFRESHCLKIRQ7IRQ6IRQ5IRQ4IRQ3/DACK2T/CBALE+5VI/OI/OI/OI/OIOIOI/OIOOOOOII/OIIIIOIOIOI输入输出A30A31A1A0I/OI/OB30B31OSCGNDI1、下面对引脚信号做一些简要说明:D7~D0:8位数据线,双向,三态。2、A19~A0:20位地址线,输出。
3、/SMEMR、/SMEMW:存储器读、写命令,输出,低电平有效。4、/IOR、/IOW:I/O读、写命令,输出,低电平有效。5、AEN:地址允许信号,输出,高电平有效。该信号由DMAC发出,为高表示DMAC正在控制系统进行DMA传送,所以它可以用于指示DMA总线周期。
6、BALE:总线地址锁存允许,输出。该信号在CPU总线周期的T1周期有效,可作为CPU总线周期的指示。7、I/OCHRAY:I/O通道准备好,输入,高电平有效。该引脚信号与8086的READY功能相同,用于插入等待时钟周期。
8、/I/OCHCK:I/O通道校验,输入,低电平有效。它有效表示板卡上出现奇偶校验错。
9、IRQ7~IRQ2:6个中断请求信号,输入,分别接到中断控制逻辑的主8259A的中断请求输入端IR7~IR2.这些信号由低到高的跳变表示中断请求,但应一直保持高电平,直到CPU响应中断为止。它们的优先级别与所连接的IR线相同,即IRQ2在这6个请求信号中级别最高,IRQ7的级别最低。
10、DRQ3~DRQ1:3个DMA请求信号,输入,高电平有效。它们分别接到DMA控制器8237A的DMA请求输入端DREQ3~DREQ1.因此优先级别与它们相对应(DRQ1的级别最高,DRQ3的级别最低)。
11、/DACK3~/DACK1:3个DMA响应信号,输出,低电平有效。
12、T/C:计数结束信号,输出,高电平有效。它由DMA发出,用于表示进行DMA传送的通道编程时规定传送字节数已经传送完。但它没有说明是哪个通道,这要结合DMA响应信号DACK来判断。13、OSC:振荡器的输出脉冲。
14、CLK:系统时钟信号,输出。系统时钟的频率通常在4.77MHZ~8MHZ内选择,最高频率位8.3MHZCLK是由OSC的输出3分频产生的,也就是说OSC的频率应是CLK的3倍。
15、RESET:系统复位信号,输出,高电平有效。该信号有效时表示系统正在处于复位状态,可利用该信号复位总线板卡上的有关电路。
16、NOWS:零等待状态,输入,低电平有效。用于缩短按照缺省设置应等待的时钟数,当它有效时,不再插入等待时钟。17、/REFRESH:刷新信号,双向,低电平有效,由总线主控制器的刷新逻辑产生。该信号有效表示存储器正在处于刷新周期。
下面示例是一个8位ISA总线输出接口,它假设有一组4个8位锁存器需要连接到PC上,用于传输32位并行数据,则这个任务可以通过购买ISA接口卡来完成。此卡不仅提供ISA总线使用的边缘连接器,其背面还为接口连接器准备了空间。可把一个37引脚的超小型D型连接器插在卡的背面,用来把32位数据传输到外部设备。
下图给出了提供32位并行TTL数据的ISA总线的一个简单接口。
在电路中ISA卡的输出由标示为P1的带37个引脚的连接器提供。电路的输出连到P1上,P1的地线已经接好。必须给外界提供地线,否则并行端口上的TTL数据将不起作用。如果需要,每个74LS374锁存器的输出控制引脚(^OC)也可以不与地线相连,而是接到P1的4个剩余引脚上,这样就允许外部电路控制锁存器的输出。
一个小的DIP开关被接到U7的两个输出上。这样,如果与其他的卡发生地址冲突,则可以改变地址。但这种情况一般不太可能发生,除非打算在同一个系统中使用两个ISA卡。此系统中地址线A2没有被译码,因此在这里它是一个无关项。下表给出了每个锁存器的地址及S1的每一位置。
注意,在同一时间,两个开关中只能有一个闭合,而且对于每个开关设置,每个端口有两个可能地址,这是因为A2没有连接。
上图I/O端口分配表DIP开关锁存器U2锁存器U4锁存器U6锁存器U8
0608H或0609H或060AH或060BH或
1-4闭合
060CH060DH060EH060FH0E08H或0E09H或0E0AH或0E0BH或
2-3闭合
0E0CH0E0DH0E0EH0E0FH
在PC中,ISA总线被设计工作在I/O地址0000H~03FFH。ISA卡有的可以,有的不可以超出这个地址范围工作,这取决于主板的型号以及主板的制造商。较新的系统常允许ISA的I/O端口地址高于03FFH,而较早的系统则不允许。
此例中,由3个74LS138译码完成端口的译码,如果使用可编程逻辑器件,则端口的译码将更有效和更经济。
下图给出了使用可编程逻辑器件的电路图。
下面示例是一个8位ISA总线输入接口,一对ADC0804模/数转换器被接到ISA总线上。一个9引脚的DB9连接器与转换器相连。译码I/O端口地址的任务更加复杂,因为每个转换器需要一个写脉冲来启动转换;而且一旦信号由模拟输入数据转换为数字信号,还需要一个读脉冲去读这个数字信号;另外还需要一个脉冲选择^INTR输出。
注意^INTR输出被接到数据总线D0位,当^INTR被输入给微处理器时,AL最低位即被测试,以检查转换器是否处于“忙”状态。
8位ISA总线输入接口I/O端口分配
设备端口号开始ADC(U3)1200H读INTR(U3)1200H读ADC(U3)1202H
1201H开始ADC(U5)
1201H读INTR(U5)
读ADC(U5)1203H
16位ISA总线接口
下表接上面8位ISA总线接口
引脚C1C2C3C4C5C6C7C8C9C10C11C12C13C14C15C16C17C18信号名称SBHELA23LA22LA21LA20LA19LA18LA17/MEMR/MEMWSD8SD9SD10SD11SD12SD13SD14SD15输入输出II/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/OI/O引脚D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15D16D17D18信号名称/MEMCS16/I/OCS16IRQ10IRQ11IRQ12IRQ14IRQ15/DACK0DRQ0/DACK5DRQ5/DACK6DRQ6/DACK7DRQ7+5V/MASTERGND输入输出I/OI/OOOOOOIOIOIOIOIO下面是16位ISA总线剩下信号的说明:
a)SD15~SD8:数据总线的高8位,双向,三态。
b)SBHE:总线高字节传送允许,三态信号。该信号用来表示SD15~SD8上
正进行数据传送。
c)LA23~LS17:非锁存的地址线,在BALE为高电平时有效。将它们锁存起
来,并和已锁存的低位地址线(A19~A0)组合在一起,可形成24位地址线,因而使系统的寻址能力扩大到16MB。
d)/MEMR,/MEMW:存储器读,写信号,低电平有效。这两个信号在所有的
存储器读和写周期有效。相比之下,前面所介绍的/SMEMR和/SMEMW仅当访问存储器的低1MB才有效。
e)/MEMCS16:存储器片选16,输入,低电平有效。该信号用来表示当前的
数据传输是具有一个等待时钟的16位存储器总线周期。
f)/I/OCS16:I/O片选16,输入,低电平有效。该信号为集电极开路,为
低表示当前的数据传输是具有一个等待时钟的16位I/O总线周期。g)/MASTER:总线主控信号,输入,在ISA总线的主控器初始化总线周期时
产生,低电平有效。该信号与I/O通道上的I/O处理器的DRQ线一起用于获取对系统总线的控制权。h)IRQ15~IRQ10:6个中断请求信号,输入,接到中断控制逻辑的从8259A。i)DRQ7~DRQ5、/DACK7~/DACK5、/DACK0:通道7~5的DMA请求和相应的
DMA响应信号(另一个通道0的响应信号)。这3个通道可进行16位DMA传输。
ISA总线时序
ISA总线时序和8086/8088的时序基本相同,但也有一些区别。对ISA总线时序的理解主要在于以下几点:
1、地址和数据已不再分时复用信号线,因此在整个总线周期内有效。
2、和8086/8088的最大模式一样,存储器读/写和I/O读/写的控制信号已分开,进行一种操作只需一个控制信号。
3、一个典型的存储器读/写周期还是由T1,T2,T3和T4组成,而I/O读/写周期和DMA周期都自动插入了一个等待时钟周期。
4、I/OCHRAY相当于8086/8088时序中:READY信号,当总线板卡上的存储器或I/O电路较慢时,可利用该信号迫使CPU插入等待时钟周期,但等待时钟周期不得超过10个。
5、8位ISA总线在存储器读/写周期可用到20位地址,而16位ISA总线在存储器读/写周期中可使用24位地址。但由于受I/O指令的限制,8位和16位ISA总线的I/O读/写周期都只能使用低16位地址。6、BALE在CPU总线周期的T1期间有效,它的基本作用是进行地址锁存,但也可以作为一个新的CPU总线周期已开始的标志。
7、AEN有效表示DMAC正在控制系统总线,所以它可以作为系统处于DMA总线周期的标志。关于ISA总线更详细的规范请查看ISA(PC104)总线规范。
因篇幅问题不能全部显示,请点此查看更多更全内容