雙端口RAM的并口設(shè)計(jì)應(yīng)用
摘要:IDT7132/IDT7142是一種高速2k×8雙端口靜態(tài)RAM,它擁有兩套完全獨(dú)立的數(shù)據(jù)、地址和讀寫(xiě)控制線。文中分析了雙端口RAM(DPRAM)的設(shè)計(jì)方案。并以IDT7132/7142為例介紹了雙端口RAM的時(shí)序、競(jìng)爭(zhēng)和并行通訊接口設(shè)計(jì)以及雷達(dá)仿真平臺(tái)中的應(yīng)用。
關(guān)鍵詞:微處理器 雙端口RAM IDT7132/7142
數(shù)據(jù)獲取及交換是多CPU系統(tǒng)的重要組成部分。在這類(lèi)系統(tǒng)中,數(shù)據(jù)交換要求的通訊速率往往很高,平均速率一般在10k左右,有時(shí)甚至達(dá)100k以上。傳統(tǒng)的并行接口和串行接口設(shè)計(jì)無(wú)論在通信速率,還是在可靠性方面都不易滿足要求。而雙端口RAM則是一個(gè)較好的實(shí)現(xiàn)方案。它具有通訊速率高、接口設(shè)計(jì)簡(jiǎn)單等特點(diǎn),因而在設(shè)計(jì)中得到廣泛的應(yīng)用。
1 常用雙端口RAM的結(jié)構(gòu)特點(diǎn)
1.1 通用集成電路組成的雙端口
采用通用集成電路組成的雙端口RAM如圖1所示。一般的RAM只有一套地址總線、數(shù)據(jù)總線和讀寫(xiě)控制線,因此,兩端CPU芯片的三總線必須經(jīng)過(guò)緩沖隔離才能共享靜態(tài)RAM。具體工作過(guò)程是兩個(gè)CPU的地址信號(hào)和讀寫(xiě)控制信號(hào)全中接入仲裁電路,由仲裁電路判斷訪問(wèn)雙端口RAM的CPU,并使能相應(yīng)的總線緩沖器。若兩個(gè)CPU在同一段時(shí)間內(nèi)訪問(wèn)共享的RAM的發(fā)生競(jìng)爭(zhēng),則由仲裁電路迫使后訪問(wèn)的CPU處于等待狀態(tài),一旦前一個(gè)CPU訪問(wèn)結(jié)束,再由仲裁電路打開(kāi)緩沖器,以使后一個(gè)CPU接通RAM并進(jìn)行訪問(wèn)。
該電路的特點(diǎn)是成本低、簡(jiǎn)單且存儲(chǔ)量大,其容量在64k~128k之間。缺點(diǎn)是在兩個(gè)CPU發(fā)生競(jìng)爭(zhēng)時(shí),有一方CPU必須等待,因而降低了訪問(wèn)效率。
1.2 專(zhuān)用雙端口RAM芯片
目前市場(chǎng)上有多種專(zhuān)用雙端口RAM芯片,如IDT7132/7142、DS1609等。這些芯片有兩套完全獨(dú)立的數(shù)據(jù)線、地址線和讀寫(xiě)控制線,因而可使兩個(gè)CPU分時(shí)獨(dú)立訪問(wèn)其內(nèi)部RAM資源。由于雙CPU同時(shí)訪問(wèn)時(shí)的仲裁邏輯電路全部集成在雙端口RAM內(nèi)部,因而需要用戶設(shè)計(jì)的電路比較簡(jiǎn)單。雙端口RAM內(nèi)一般都有一個(gè)總線搶占優(yōu)先級(jí)比較器,只要雙CPU不同時(shí)訪問(wèn)同一存儲(chǔ)單元,那么較先送出地址的CPU將擁有該單元的本次訪問(wèn)優(yōu)先權(quán),而另一個(gè)CPU的地址與讀寫(xiě)信號(hào)將被屏蔽掉,同時(shí)通過(guò)“busy”引腳告知該CPU以使之根據(jù)需要對(duì)該單元重新訪問(wèn)或撤消訪問(wèn)。
專(zhuān)用雙端口RAM的優(yōu)點(diǎn)是通訊速度快,實(shí)時(shí)性強(qiáng),接口比較簡(jiǎn)單,兩邊CPU都可主動(dòng)進(jìn)行數(shù)據(jù)傳輸;缺點(diǎn)是成本高,需要克服競(jìng)爭(zhēng)現(xiàn)象。
以上兩種技術(shù)方案各有優(yōu)點(diǎn),在要求存儲(chǔ)量較大時(shí),一般采用通用集成電路組成的雙端口RAM;在通信實(shí)時(shí)性要求較高的而通信數(shù)據(jù)量不大時(shí),一般采用專(zhuān)用雙端口RAM芯片。
在實(shí)際應(yīng)用中,雙端口RAM與并行接口與串行接口相比,它不僅能利用其兩端口異步操作來(lái)讀寫(xiě)數(shù)據(jù),而且可用作多CPU微處理系統(tǒng)CPU的數(shù)據(jù)交換接口,從而簡(jiǎn)化了對(duì)各CPU之間數(shù)據(jù)通信規(guī)約的要求,提高了系統(tǒng)數(shù)據(jù)通信處理的可靠性,同時(shí)提高了CPU之間數(shù)據(jù)交換的實(shí)響應(yīng)速度。
2 IDT7132/7142簡(jiǎn)介
2.1 IDT7132/7142結(jié)構(gòu)與連接方式
IDT7132/7142是高速2k×8雙端口靜態(tài)RAM,可提供兩個(gè)擁有獨(dú)立的控制總線、地址總線和I/O總線端口,允許CPU獨(dú)立訪問(wèn)內(nèi)部的任何存儲(chǔ)單元。當(dāng)CE引腳出現(xiàn)下降沿時(shí),選中DPRAM即可通過(guò)控制OE或R/W來(lái)訪問(wèn)內(nèi)部存儲(chǔ)單元。IDT32一般被用作8位雙端口RAM,也可以作為主片與DIT7142從片構(gòu)成主從式16位雙端口RAM。連接方式如圖2所示:
2.2 IDT7132/7142時(shí)序圖
IDT7132/7142的時(shí)序如圖3所示,它與RAM的讀寫(xiě)時(shí)序非常類(lèi)似。當(dāng)CPU選中DPRAM時(shí),CE引腳出現(xiàn)下降沿,當(dāng)控制紆OE為高且R/W為低時(shí),CPU對(duì)內(nèi)部存儲(chǔ)單元進(jìn)行寫(xiě)操作;而當(dāng)控制線OE為低且R/W為高時(shí),CPU對(duì)內(nèi)部存儲(chǔ)單元進(jìn)行讀操作。
2.3 競(jìng)爭(zhēng)現(xiàn)象的處理
當(dāng)外部CPU通過(guò)兩個(gè)端口對(duì)雙端口RAM內(nèi)部的同一個(gè)存儲(chǔ)單元進(jìn)行操作時(shí),系統(tǒng)將出現(xiàn)競(jìng)爭(zhēng)。這種競(jìng)爭(zhēng)一般有如一兩種模式:
(1)如果兩個(gè)端口的總線訪問(wèn)地址相同,并先于片選信號(hào)CE有鏟,則片內(nèi)控制邏輯將在CEL與CER之間發(fā)生競(jìng)爭(zhēng)。
(2)如果兩個(gè)端口的片選信號(hào)CE在地址信號(hào)有效之前變低,則片內(nèi)控制邏輯將在地址信號(hào)到達(dá)時(shí)發(fā)生競(jìng)爭(zhēng)。[!--empirenews.page--]
為避免因競(jìng)爭(zhēng)而導(dǎo)致的通訊失敗,設(shè)計(jì)者提出了各種解決方案。常見(jiàn)的有三種:
(1)設(shè)置標(biāo)志位:在開(kāi)辟數(shù)據(jù)通訊區(qū)的同時(shí),可通過(guò)軟件方法在某個(gè)固定存儲(chǔ)單元設(shè)立標(biāo)志位。這種方法要求兩端CPU每次訪問(wèn)雙端口RAM之前,必須查詢(xún)、測(cè)試和設(shè)置標(biāo)志位,然后再根據(jù)標(biāo)志位的狀態(tài)決定是否可以訪問(wèn)數(shù)據(jù)區(qū);有的雙端口RAM本身就個(gè)有專(zhuān)用的一個(gè)或多個(gè)硬件標(biāo)志鎖存器和專(zhuān)門(mén)的測(cè)試和設(shè)置指令,可直接對(duì)標(biāo)志位進(jìn)行讀/寫(xiě)操作。這種方法通常用在多個(gè)處理器共享一個(gè)存儲(chǔ)器塊時(shí)。為了保證通訊數(shù)據(jù)的完整性,在采用這種方法時(shí)往往要求每個(gè)處理器能對(duì)該存儲(chǔ)器塊進(jìn)行互斥的存取。
(2)軟件查詢(xún)BUSY引腳狀態(tài):雙端口RAM必須具有解決兩個(gè)處理器同時(shí)訪問(wèn)同一單元的競(jìng)爭(zhēng)仲裁邏輯功能。當(dāng)雙方址發(fā)生沖突時(shí),競(jìng)爭(zhēng)仲裁邏輯可用來(lái)決定哪個(gè)端口訪問(wèn)有效,同時(shí)取消無(wú)效端口的訪問(wèn)操作,并將禁止端口的Busy信號(hào)置為低電平。因此Busy信號(hào)可作為處理器等待邏輯的輸入之一,即當(dāng)Busy為低電平時(shí),讓處理器進(jìn)入等待狀態(tài)。每次訪問(wèn)雙端口RAM時(shí),CPU檢查BUSY狀態(tài)以判斷是否發(fā)生競(jìng)爭(zhēng),只有BUSY為高時(shí),對(duì)雙端口RAM的操作才有效。
(3)利用硬件解決競(jìng)爭(zhēng):將BUSY信號(hào)引入READY引腳可在發(fā)生競(jìng)爭(zhēng)時(shí)使BUSY為低,從而使CPU內(nèi)部總線時(shí)序根據(jù)READY引腳狀態(tài)自動(dòng)插入WAIT信號(hào)并展寬總線,以達(dá)到分時(shí)訪問(wèn)的目的。對(duì)于80C196KC和8098等MCS-96系列微處理器,利用這種方法便可通過(guò)硬件解決競(jìng)爭(zhēng)問(wèn)題。
另外,在使用BUSY信號(hào)時(shí)必須首先將此信號(hào)接上拉電阻,其次應(yīng)在BUSY信號(hào)有效期間使處理器保持讀寫(xiě)操作經(jīng)及相應(yīng)的地址和數(shù)據(jù),但是需要說(shuō)明的是:在BUSY信號(hào)變高之前,這種情況下的所有寫(xiě)操作都是無(wú)效的,圖4所示發(fā)生競(jìng)爭(zhēng)時(shí)的時(shí)序圖。
3 RAM在雷達(dá)仿真平臺(tái)中的應(yīng)用
雷達(dá)仿真平臺(tái)是用于雷達(dá)操作手訓(xùn)練的仿真設(shè)備。該平是一個(gè)由計(jì)算機(jī)、主控CPU(80C196KC)、手輪控制CPU(8098)等組成的多機(jī)系統(tǒng)。在主控CPU判斷目標(biāo)是否進(jìn)入雷達(dá)波瓣作用范圍時(shí),必須將目標(biāo)理想諸元與雷達(dá)的高低角和方位角做比較。在雷達(dá)仿真平臺(tái)中,雷達(dá)的高低角和方位角是通過(guò)對(duì)高低手輪和方位手輪的軸角轉(zhuǎn)換而獲得的。主控CPU每隔20ms就向手輪控制CPU發(fā)送一次模擬目標(biāo)的高低角、方位角、距離以及目標(biāo)屬性等多組數(shù)據(jù)(共200字節(jié)),同時(shí)接收手輪控制CPU的數(shù)據(jù)。為了加快通迅速度,簡(jiǎn)化通訊,提高通信的實(shí)時(shí)性指標(biāo),系統(tǒng)要用了雙端口RAM(DPRAM)IDT7132/7142來(lái)進(jìn)行CPU之間的數(shù)據(jù)交換。具體電路見(jiàn)圖5。
80C196KC和8098均有READY引腳,通過(guò)80C196KC和8098的時(shí)序可知,當(dāng)READY引腳出現(xiàn)低電平時(shí),CPU可自動(dòng)插入WAIT等待周期,以延長(zhǎng)讀寫(xiě)和片選信號(hào),因此,設(shè)計(jì)時(shí)將80C196KC和8098的READY引腳與IDT7132/7142的BUSY引腳相連就可在發(fā)生競(jìng)爭(zhēng)時(shí),自動(dòng)使80C196KC或8098處于等待狀態(tài)。
在資源分配方面,該設(shè)計(jì)還劃分了電視跟蹤數(shù)據(jù)區(qū)、雷達(dá)跟蹤數(shù)據(jù)區(qū)、手輪實(shí)測(cè)值數(shù)據(jù)區(qū)和命令狀態(tài)區(qū),并明確規(guī)定了各個(gè)通訊區(qū)的任務(wù)和性質(zhì),從而簡(jiǎn)化了通訊程序,提高了通訊速度。
通過(guò)雷達(dá)仿真平臺(tái)控制系統(tǒng)的實(shí)時(shí)運(yùn)行實(shí)驗(yàn)證明:主控CPU與手輪控制CPU之間的數(shù)據(jù)交換速率很高、運(yùn)行可靠,大大提高了系統(tǒng)的實(shí)時(shí)性能。目前,該系統(tǒng)已經(jīng)通過(guò)了技術(shù)鑒定。