首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

详细解读ISA总线存储器周期的注意事项

详细解读ISA总线存储器周期的注意事项

ISA总线基于IBM鼻祖计算机所具有的1MB空间的8位总线,扩展成为具有16MB空间的16位总线。在兼容性保持方面给予了足够的重视,具体地说就是将ISA总线分成两个插口(CardEdge),与16位扩展相关的信号都被分配到小的插口(添加的)上。除此之外,我们还可看到在信号关系方面,为了保持兼容性也做了相当细致的工作。
下面,我们将在利用扩展部分及存储器空间的基础上针对必须注意的信号进行解说。在说明中,我们假设将ISA总线的插口中靠近面板一侧(较宽的一侧)的称为8位总线部分,将另一个插口称为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个周期时指令无效。在进行读操作时,以这样的时序提取数据。

返回列表