雙口RAM在組合導航系統中的應用
導航系統是負責將載體從起始點(diǎn)引導到目的地的系統裝置。近年來(lái),隨著(zhù)計算機技術(shù)和衛星通信技術(shù)的發(fā)展和實(shí)際應用,使得導航系統的精確性和可靠性達到了更高的要求,促使導航系統向綜合化和容錯化方向發(fā)展,進(jìn)而發(fā)展了以慣性導航為主體的各種組合導航系統。在眾多組合導航系統中,INS/GPS組合導航系統更是發(fā)展迅速,在軍用和民用領(lǐng)域均已獲得廣泛應用,而且愈來(lái)愈受到重視。就INS/GPS組合導航系統而言,除了要完成大量的導航解算工作外,還要完成控制、人機接口、與外部系統的通信等功能。由于導航系統對實(shí)時(shí)性要求較高,采用單個(gè)CPU來(lái)實(shí)現上述功能是不現實(shí)的。在研制某彈載INS/GPS組合導航系統時(shí),針對彈載導航系統體積小、重量輕、功耗小的特點(diǎn),設計了一種嵌入式高速處理系統。該系統采用TI公司的TMS320VC33和TMS320F240組成雙DSP系統,即由兩個(gè)DSP構成一個(gè)主從式系統完成相應功能。主從式系統設計的關(guān)鍵是主機與從機之間的數據通信。主從機之間的數據通信主要有串行、并行、DMA及雙口RAM四種方式。綜合各種通信方式的優(yōu)缺點(diǎn),考慮到導航系統實(shí)時(shí)性高、數據量大的特點(diǎn),筆者以雙口RAM器件 CY7C028作為共享存儲器,通過(guò)獨特的軟件分區處理設計有效地實(shí)現了導航系統中的主計算機與從計算機之間的通信。
1 雙口RAM芯片CY7C028的內部結構及工作原理
CY7C028是CYPRESS公司研制的64K×16低功耗CMOS型靜態(tài)雙口RAM,最大訪(fǎng)問(wèn)時(shí)間為12/15/20ns,可與大多數高速處理器配合使用,無(wú)需插入等待狀態(tài)。采用主從模式時(shí)可以方便地將數據總線(xiàn)擴展成32位或更寬。其內部功能框圖如圖1所示。
雙口RAM芯片CY7C028作為一種性能優(yōu)越的快速通信器件,在多CPU的高速數字系統中非常適用。其特點(diǎn)是:提供兩套完全獨立的數據線(xiàn)、地址線(xiàn)、讀寫(xiě)控制線(xiàn),允許兩個(gè)CPU對雙端口存儲器同時(shí)進(jìn)行操作;具有兩套完全的中斷邏輯,用于實(shí)現兩個(gè)CPU之間的握手信號;具有完全獨立的忙邏輯,可保證兩個(gè)CPU對同一地址單元進(jìn)行正確的讀寫(xiě)操作。當兩個(gè)CPU對雙口RAM存取時(shí),存在以下四種情況:
(1) 兩個(gè)CPU不同時(shí)對同一地址單元存取數據。
(2) 兩個(gè)CPU同時(shí)對同一地址單元讀出數據。
(3) 兩個(gè)CPU同時(shí)對同一地址單元寫(xiě)入數據。
(4) 兩個(gè)CPU同時(shí)對同一地址單元操作,一個(gè)寫(xiě)入數據,另一個(gè)讀出數據。
不難看出,在第一和第二種情況下,兩個(gè)端口的存取不會(huì )出現錯誤,而第三種情況會(huì )出現寫(xiě)入錯誤,第四種情況會(huì )出現讀出錯誤。為了避免兩個(gè)CPU對同一地址單元進(jìn)行訪(fǎng)問(wèn)時(shí)由于地址數據爭用而造成的數據讀寫(xiě)錯誤,CY7C028主要提供了以下幾種工作方式[1],下面逐一介紹。
1.1 硬件判優(yōu)方式
雙口RAM CY7C028具有解決兩個(gè)處理器同時(shí)訪(fǎng)問(wèn)同一地址單元的硬件仲裁邏輯。在雙口RAM的兩套控制線(xiàn)中,各有一個(gè)BUSY引腳。當兩端的CPU不對雙口RAM的同一地址單元存取時(shí),BUSYL=H、BUSYR=H,可正常存儲;當兩端的CPU對雙口RAM同一地址單元存取時(shí),哪個(gè)端口的存取請求信號出現在后,則其對應的BUSY=L,禁止其存取數據;在無(wú)法判定兩個(gè)端口存取請求信號出現的先后順序時(shí),控制線(xiàn)BUSYL、BUSYR只有一個(gè)為低電平。這樣,就能保證對應于BUSY=H的端口能進(jìn)行正常存取,對應于BUSY=L的端口不能存取,從而避免了兩個(gè)CPU同時(shí)競爭地址資源而引發(fā)錯誤的可能。
1.2 中斷判優(yōu)方式
中斷判優(yōu)方式又稱(chēng)郵箱判優(yōu)方式。CY7C028具有兩套中斷邏輯,通過(guò)兩個(gè)INT引腳分別接到兩個(gè)CPU的中斷引腳上,以實(shí)現CPU的握手。在雙口RAM的數據傳送中,兩端的CPU都把雙口RAM作為自己存儲器的一部分。當兩個(gè)CPU需要數據傳送時(shí),假設左端CPUL向右端CPUR傳送,首先CPUL將需要傳送的數據存放到雙口RAM某段約定的地址單元中,然后向雙口RAM的最高奇地址單元0xFFFF即右端口的郵箱進(jìn)行寫(xiě)操作,用以向CPUR發(fā)出一個(gè)中斷,這樣CPUR就進(jìn)入其相應的中斷服務(wù)子程序,將約定地址單元的數據讀出,然后對雙口RAM右端口的郵箱進(jìn)行寫(xiě)操作,用以清除該中斷。
評論