ISA总线基于IBM鼻祖计算机所具有的1MB空间的8位总线,扩展成为具有16MB空间的16位总线。在兼容性保持方面给予了足够的重视,具体地说就是将ISA总线分成两个插口(CardEdge),与16位扩展相关的信号都被分配到小的插口(添加的)上。除此之外,我们还可看到在信号关系方面,为了保持兼容性也做了相当细致的工作。
1. 地址
地址总线以不同的信号名称交叠存在,8位总线部分为 SA0~SA19,16位扩展部分为LA17~LA23。PC/AT的思路是将主存储器也扩展到ISA总线上,因此,只要认为可以在1M字节(100000h地址)以上的范围内简单配置以128K字节为单位的扩展存储器卡、拥有到LA17为止的地址即可。
2. 存储器读/写信号
存储器的读/写信号在8位总线部分具有SMEMR及SMEMW信号,而在16位扩展部分具有MEMR及MEMW信号。
两者虽然具有完全相同的意思,但有效的范围不同。MEMR和MEMW在进行ISA总线的存储器存取操作中必须有效,而SMEMR及SMEMW只在存取1M字节以内的范围(000000h~0FFFFFh)时有效。
这是为了保持低位的兼容性。由于8位总线的存储器空间为1M字节,所以地址总线只有20根(SA0~SA19)。因此,单从8位总线的地址看,不能区分 CPU连接了0地址、100000h地址还是200000h地址等。如果将原来的8位总线卡插人ISA总线,则当访问1M字节以上的空间时,若SMEMR 及SMEMW也有效,就是非常糟糕的事情了。因此,设计时就需要将其设计成只能在1M字节以内的空间访问时有效。
曲于本次将SRAM主板放置在000000h~0DFFFFh地址,所以利用了SMEMR及SMEMW信号。
3. 刷新
由于曾有过在ISA总线上利用DRAM对主存储器进行扩展的想法,所以刷新周期大约为15.6μs。该刷新操作与REFRESH信号一起有效,在地址低位的8位(SA0~SA7)上附上刷新地址,就可以形成存储器读取周期。
这类似于哑元的存储器读取周期,本次为了以防万一,将其设为不应答。
4. 等待关系
本次不利用与等待相关的信号,仅做一些说明。
ISA总线还包括为了延长CPU总线周期的等待信号(IOCHRDY)以及缩短总线周期、提升速度的SRDY(有时也表示为ZWS及OWS)信号。
在目地端针对主机的要求不能立即应答的情况下,利用IO-CHRDY等待总线周期的结束,以低电平表示Not Ready,也就是等待的意思。由于借助ISA总线的上拉电阻通常将其设置为高电平,所以只要不做任何更改,它将不会处于等待状态,只是执行普通的总线周期。
SRDY信号则相反,是能够缩短总线周期的信号。ISA总线的情况下,16位存储器存取操作(MEMCS16有效)虽然能够在3个周期内完成,但为了能让通常需要6个周期完成的8位存储器存取操作缩短到3个周期,就可以利用SRDY信号。
5. 8位存储器周期
ISA总线的8位存储器存取周期如图所示,并列了标准周期、利用了IOCHRDY信号的插人一个等待的示例以及利用了SRDY信号的不等待存取的操作示例。
图 ISA总线的8位存储器存取周期
由于SYSCLK通常为8MHz,所以一个周期为125ns。现如今SRAM的存取时间在100ns以内的非常普通,所以可以说这是非常缓慢的总线周期。8位存储器周期如果不采用等待信号,则可以在6个周期内完成存取操作。
BALE在高电平期间地址发生变化,地址(SA0~SA19)确定后,BALE变为低电平,指令(SMEMR/ SMEMW)有效后开始存取操作。
因为作为高位地址的LA17~LA23在BALE变为低电平后,在规格上是不定的,所以需要提前在BALE上锁存译码结果,锁存LA。事实上,曲于在主板上特意改变LA没有任何意义,所以,LA并不是不定的,一般是与SA同样保持输出状态。尽管如此,在这方面也需要加以注意。由于本次配置的地址在1M字节以内的范围(0D0000h)内,不会利用到LA,因而不必注意此处。
在写操作时,指令(SMEMW)有效之前尽早确定数据,存储器由于是在SMEMW的上升沿提取数据的,所以对于建立时间,可以说有足够的富余时间。指令有效之后,主机与时钟的上升同步监视IO—CHRDY信号,如果IOCHRDY变为低电平,就插入等待信号。
本次不是特别需要等待信号,因此只按照原来的默认时序进行。在结束第6个周期时指令无效。在进行读操作时,以这样的时序提取数据。