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