2.1 IDT7132/7142結(jié)構(gòu)與連接方式
IDT7132/7142是高速2k×8雙端口靜態(tài)RAM,可提供兩個擁有獨立的控制總線、地址總線和I/O總線端口,允許CPU獨立訪問內(nèi)部的任何存儲單元。當(dāng)CE引腳出現(xiàn)下降沿時,選中DPRAM即可通過控制OE或R/W來訪問內(nèi)部存儲單元。IDT32一般被用作8位雙端口RAM,也可以作為主片與DIT7142從片構(gòu)成主從式16位雙端口RAM。連接方式如圖2所示:
2.2 IDT7132/7142時序圖
IDT7132/7142的時序如圖3所示,它與RAM的讀寫時序非常類似。當(dāng)CPU選中DPRAM時,CE引腳出現(xiàn)下降沿,當(dāng)控制紆OE為高且R/W為低時,CPU對內(nèi)部存儲單元進行寫操作;而當(dāng)控制線OE為低且R/W為高時,CPU對內(nèi)部存儲單元進行讀操作。
2.3 競爭現(xiàn)象的處理
當(dāng)外部CPU通過兩個端口對雙端口RAM內(nèi)部的同一個存儲單元進行操作時,系統(tǒng)將出現(xiàn)競爭。這種競爭一般有如一兩種模式:

?
(1)如果兩個端口的總線訪問地址相同,并先于片選信號CE有鏟,則片內(nèi)控制邏輯將在CEL與CER之間發(fā)生競爭。
(2)如果兩個端口的片選信號CE在地址信號有效之前變低,則片內(nèi)控制邏輯將在地址信號到達時發(fā)生競爭。
為避免因競爭而導(dǎo)致的通訊失敗,設(shè)計者提出了各種解決方案。常見的有三種:
(1)設(shè)置標(biāo)志位:在開辟數(shù)據(jù)通訊區(qū)的同時,可通過軟件方法在某個固定存儲單元設(shè)立標(biāo)志位。這種方法要求兩端CPU每次訪問雙端口RAM之前,必須查詢、測試和設(shè)置標(biāo)志位,然后再根據(jù)標(biāo)志位的狀態(tài)決定是否可以訪問數(shù)據(jù)區(qū);有的雙端口RAM本身就個有專用的一個或多個硬件標(biāo)志鎖存器和專門的測試和設(shè)置指令,可直接對標(biāo)志位進行讀/寫操作。這種方法通常用在多個處理器共享一個存儲器塊時。為了保證通訊數(shù)據(jù)的完整性,在采用這種方法時往往要求每個處理器能對該存儲器塊進行互斥的存取。
(2)軟件查詢BUSY引腳狀態(tài):雙端口RAM必須具有解決兩個處理器同時訪問同一單元的競爭仲裁邏輯功能。當(dāng)雙方址發(fā)生沖突時,競爭仲裁邏輯可用來決定哪個端口訪問有效,同時取消無效端口的訪問操作,并將禁止端口的Busy信號置為低電平。因此Busy信號可作為處理器等待邏輯的輸入之一,即當(dāng)Busy為低電平時,讓處理器進入等待狀態(tài)。每次訪問雙端口RAM時,CPU檢查BUSY狀態(tài)以判斷是否發(fā)生競爭,只有BUSY為高時,對雙端口RAM的操作才有效。
(3)利用硬件解決競爭:將BUSY信號引入READY引腳可在發(fā)生競爭時使BUSY為低,從而使CPU內(nèi)部總線時序根據(jù)READY引腳狀態(tài)自動插入WAIT信號并展寬總線,以達到分時訪問的目的。對于80C196KC和8098等MCS-96系列微處理器,利用這種方法便可通過硬件解決競爭問題。

?
另外,在使用BUSY信號時必須首先將此信號接上拉電阻,其次應(yīng)在BUSY信號有效期間使處理器保持讀寫操作經(jīng)及相應(yīng)的地址和數(shù)據(jù),但是需要說明的是:在BUSY信號變高之前,這種情況下的所有寫操作都是無效的,圖4所示發(fā)生競爭時的時序圖。
