詳細(xì)解讀ISA總線存儲(chǔ)器周期的注意事項(xiàng)
ISA總線基于IBM鼻祖計(jì)算機(jī)所具有的1MB空間的8位總線,擴(kuò)展成為具有16MB空間的16位總線。在兼容性保持方面給予了足夠的重視,具體地說(shuō)就是將ISA總線分成兩個(gè)插口(CardEdge),與16位擴(kuò)展相關(guān)的信號(hào)都被分配到小的插口(添加的)上。除此之外,我們還可看到在信號(hào)關(guān)系方面,為了保持兼容性也做了相當(dāng)細(xì)致的工作。
本文引用地址:http://butianyuan.cn/article/201808/385083.htm下面,我們將在利用擴(kuò)展部分及存儲(chǔ)器空間的基礎(chǔ)上針對(duì)必須注意的信號(hào)進(jìn)行解說(shuō)。在說(shuō)明中,我們假設(shè)將ISA總線的插口中靠近面板一側(cè)(較寬的一側(cè))的稱為8位總線部分,將另一個(gè)插口稱為16位擴(kuò)展部分。
1. 地址
地址總線以不同的信號(hào)名稱交疊存在,8位總線部分為SA0~SA19,16位擴(kuò)展部分為L(zhǎng)A17~LA23。PC/AT的思路是將主存儲(chǔ)器也擴(kuò)展到ISA總線上,因此,只要認(rèn)為可以在1M字節(jié)(100000h地址)以上的范圍內(nèi)簡(jiǎn)單配置以128K字節(jié)為單位的擴(kuò)展存儲(chǔ)器卡、擁有到LA17為止的地址即可。
2. 存儲(chǔ)器讀/寫(xiě)信號(hào)
存儲(chǔ)器的讀/寫(xiě)信號(hào)在8位總線部分具有SMEMR及SMEMW信號(hào),而在16位擴(kuò)展部分具有MEMR及MEMW信號(hào)。
兩者雖然具有完全相同的意思,但有效的范圍不同。MEMR和MEMW在進(jìn)行ISA總線的存儲(chǔ)器存取操作中必須有效,而SMEMR及SMEMW只在存取1M字節(jié)以內(nèi)的范圍(000000h~0FFFFFh)時(shí)有效。
這是為了保持低位的兼容性。由于8位總線的存儲(chǔ)器空間為1M字節(jié),所以地址總線只有20根(SA0~SA19)。因此,單從8位總線的地址看,不能區(qū)分CPU連接了0地址、100000h地址還是200000h地址等。如果將原來(lái)的8位總線卡插人ISA總線,則當(dāng)訪問(wèn)1M字節(jié)以上的空間時(shí),若SMEMR及SMEMW也有效,就是非常糟糕的事情了。因此,設(shè)計(jì)時(shí)就需要將其設(shè)計(jì)成只能在1M字節(jié)以內(nèi)的空間訪問(wèn)時(shí)有效。
曲于本次將SRAM主板放置在000000h~0DFFFFh地址,所以利用了SMEMR及SMEMW信號(hào)。
3. 刷新
由于曾有過(guò)在ISA總線上利用DRAM對(duì)主存儲(chǔ)器進(jìn)行擴(kuò)展的想法,所以刷新周期大約為15.6μs。該刷新操作與REFRESH信號(hào)一起有效,在地址低位的8位(SA0~SA7)上附上刷新地址,就可以形成存儲(chǔ)器讀取周期。
這類似于啞元的存儲(chǔ)器讀取周期,本次為了以防萬(wàn)一,將其設(shè)為不應(yīng)答。
4. 等待關(guān)系
本次不利用與等待相關(guān)的信號(hào),僅做一些說(shuō)明。
ISA總線還包括為了延長(zhǎng)CPU總線周期的等待信號(hào)(IOCHRDY)以及縮短總線周期、提升速度的SRDY(有時(shí)也表示為ZWS及OWS)信號(hào)。
在目地端針對(duì)主機(jī)的要求不能立即應(yīng)答的情況下,利用IO-CHRDY等待總線周期的結(jié)束,以低電平表示Not Ready,也就是等待的意思。由于借助ISA總線的上拉電阻通常將其設(shè)置為高電平,所以只要不做任何更改,它將不會(huì)處于等待狀態(tài),只是執(zhí)行普通的總線周期。
SRDY信號(hào)則相反,是能夠縮短總線周期的信號(hào)。ISA總線的情況下,16位存儲(chǔ)器存取操作(MEMCS16有效)雖然能夠在3個(gè)周期內(nèi)完成,但為了能讓通常需要6個(gè)周期完成的8位存儲(chǔ)器存取操作縮短到3個(gè)周期,就可以利用SRDY信號(hào)。
5. 8位存儲(chǔ)器周期
ISA總線的8位存儲(chǔ)器存取周期如圖所示,并列了標(biāo)準(zhǔn)周期、利用了IOCHRDY信號(hào)的插人一個(gè)等待的示例以及利用了SRDY信號(hào)的不等待存取的操作示例。
圖 ISA總線的8位存儲(chǔ)器存取周期
由于SYSCLK通常為8MHz,所以一個(gè)周期為125ns?,F(xiàn)如今SRAM的存取時(shí)間在100ns以內(nèi)的非常普通,所以可以說(shuō)這是非常緩慢的總線周期。8位存儲(chǔ)器周期如果不采用等待信號(hào),則可以在6個(gè)周期內(nèi)完成存取操作。
BALE在高電平期間地址發(fā)生變化,地址(SA0~SA19)確定后,BALE變?yōu)榈碗娖?,指?SMEMR/ SMEMW)有效后開(kāi)始存取操作。
因?yàn)樽鳛楦呶坏刂返腖A17~LA23在BALE變?yōu)榈碗娖胶螅谝?guī)格上是不定的,所以需要提前在BALE上鎖存譯碼結(jié)果,鎖存LA。事實(shí)上,曲于在主板上特意改變LA沒(méi)有任何意義,所以,LA并不是不定的,一般是與SA同樣保持輸出狀態(tài)。盡管如此,在這方面也需要加以注意。由于本次配置的地址在1M字節(jié)以內(nèi)的范圍(0D0000h)內(nèi),不會(huì)利用到LA,因而不必注意此處。
在寫(xiě)操作時(shí),指令(SMEMW)有效之前盡早確定數(shù)據(jù),存儲(chǔ)器由于是在SMEMW的上升沿提取數(shù)據(jù)的,所以對(duì)于建立時(shí)間,可以說(shuō)有足夠的富余時(shí)間。指令有效之后,主機(jī)與時(shí)鐘的上升同步監(jiān)視IO—CHRDY信號(hào),如果IOCHRDY變?yōu)榈碗娖剑筒迦氲却盘?hào)。
本次不是特別需要等待信號(hào),因此只按照原來(lái)的默認(rèn)時(shí)序進(jìn)行。在結(jié)束第6個(gè)周期時(shí)指令無(wú)效。在進(jìn)行讀操作時(shí),以這樣的時(shí)序提取數(shù)據(jù)。
評(píng)論