《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 基于共享存儲器的多處理機并行快速通信
基于共享存儲器的多處理機并行快速通信
馬利平,,葛海波,,歐陽磊
摘要: 本文提出了當(dāng)多處理機系統(tǒng)工作時,為了實現(xiàn)快速有效的通信,,采用使多處理器共享存儲囂方案,。IDT7134雙口RAM是本方案選擇的共享存儲器,。針對該方案,本文給出了接口電路的硬件設(shè)計和軟件設(shè)計,。在接口電路設(shè)計中,,重點介紹了IDT7134和CPU的連接;在軟件設(shè)計當(dāng)中,,重點介紹了如何處理地址爭用,,通過設(shè)置一些標(biāo)志位來使多處理機在訪問共享存儲器的同一地址時避免沖突,從而有效地實現(xiàn)了數(shù)據(jù)的高速傳輸,。本方案經(jīng)理論和實踐證明是可行并有效的,。
Abstract:
Key words :

    隨著信息技術(shù)的發(fā)展,消費電子產(chǎn)品,、工業(yè)儀表等電子設(shè)備對信息處理速度要求的增高,,在多CPU系統(tǒng)當(dāng)中,往往有大量的數(shù)據(jù)需要交換,。通常情況下,,CPU之間進行數(shù)據(jù)交換的方式有3種:串行口數(shù)據(jù)交換,、I/O口數(shù)據(jù)交換和共享存儲器數(shù)據(jù)交換。串行口數(shù)據(jù)交換方式是指利用CPU本身提供的串行口或在CPU芯片基礎(chǔ)上用軟硬件開發(fā)一個串行口實現(xiàn)雙CPU數(shù)據(jù)交換,,該方式實現(xiàn)起來相對簡單,,適用于兩個CPU數(shù)據(jù)交換信息量不是很大,且實時性要求不高的場合,。I/O口數(shù)據(jù)交換方式是指在雙CPU之間增加緩沖器或鎖存器實現(xiàn)數(shù)據(jù)交換目的,,但這種方式下的數(shù)據(jù)交換信息量受到很大限制,速度也不高,,適用于交換信息量很小且實時性要求不高的場合,。共享存儲器數(shù)據(jù)交換方式可分為兩種:一種是兩個CPU中的一個CPU提供直接存儲器存取(DirectMemory Access,DMA)功能,;另一種采用雙口RAM來實現(xiàn),。前者兩片CPU不能同時訪問共享存儲器,雖然數(shù)據(jù)交換信息量大,,但設(shè)計復(fù)雜,、編程難度大;后者可同時訪問共享存儲器,,數(shù)據(jù)傳輸量大,、傳輸速度快、接口電路簡單,、軟件編程容易,。鑒于此,本文采用雙口RAM IDT7134來實現(xiàn)高速并行通信,,多處理機選擇8051系列STC89C54的8位單片機,,共兩片,來實現(xiàn)雙機通信,。

1 器件介紹
1.1 STC89C54單片機簡介
    STC89C54RD+系列單片機是中國宏晶科技公司生產(chǎn)的8位的51單片機系列,,具有低功耗,高速,,抗靜電,,抗干擾,ISP/IAP在系統(tǒng)可編程/在應(yīng)用可編程,,無需編程器/仿真器等等特點,。STC89C54的在線編程電路如圖1所示。

a.jpg


    STC89C54工作電壓是5 V,。工作頻率可高達80 MHz,。在本設(shè)計系統(tǒng)中選定晶振頻率為22.1184 MHz。Flash程序存儲器字節(jié)是16 K,。RAM數(shù)據(jù)存儲器字節(jié)是1 280,。EEPROM字節(jié)是16 K,。有2個串口UART,8個中斷源,,3個16位的定時器,,比以前的51單片機多了4個I/O口。
    STC89C54可以使用匯編語言進行設(shè)計,,也可以使用Keil C語言設(shè)計,,讀者可以根據(jù)需要靈活使用,本文使用的是Keil C語言,,調(diào)試編譯成功后用STC_ISP.exe工具將生成的2進制代碼或16進制代碼下載到STC單片機中。
1.2 IDT7134雙口RAM
    IDT7134是美國IDT公司生產(chǎn)的4 Kx8的4 K字節(jié)(4 Kx8位)存儲容量的高速靜態(tài)隨機存取雙口寄存器(DPSRAM)(COMS),。功耗較低:工作狀態(tài)下700 mW,,待機狀態(tài)下1~5mW。雙口RAM的每一個端口具有獨立的I/O口線,,地址和控制信號線,,可以同時對存儲器的任何地址進行操作。原理框圖如圖2所示,。

b.jpg


    IDT7134時序與RAM的時序類似,,當(dāng)端口沒有被選中時,即是c.jpg為高,,無論其他端口如何配置,,輸出一律為高阻態(tài);當(dāng)有CPU選中某一端口時,,相應(yīng)端口的c.jpg出現(xiàn)下降沿,,無論d.jpg為高還是低,只要e.jpg為低時,,CPU對該端口進行寫操作,;而當(dāng)d.jpg為低時且e.jpg為高時,CPU對該端口進行讀操作,。真值表如表1所示,。

f.jpg


    IDT7134應(yīng)用在那些不能容忍等待狀態(tài)的系統(tǒng)當(dāng)中。IDT7134允許兩個端口同時訪問存儲器,,但是當(dāng)兩個端口同時訪問存儲器某個相同地址時,,出現(xiàn)了沖突。這時用戶為了保持信號完整性,,必須采取一些措施,。筆者采取的措施是將雙口RAM分成2個區(qū),第1個區(qū)是CPU1寫,,CPU2讀,,第2個區(qū)是CPU2寫,,CPU1讀。兩個區(qū)的數(shù)據(jù)各用兩個地址空間存放標(biāo)志,。第一個地址空間用于告知對方此塊數(shù)據(jù)是新送來的或者是已經(jīng)被取走,。這樣兩邊傳送數(shù)據(jù)時既不會發(fā)生同一批數(shù)據(jù)被處理兩次的現(xiàn)象,也不會發(fā)生舊數(shù)據(jù)還未取走即被新一批數(shù)據(jù)覆盞掉的結(jié)果,。第二個地址空間用于告訴對方目前該地址是使用還是沒使用,,以便對方做出相應(yīng)的裁決,避免爭用,。這樣做也有利于本端口使用前先查詢再操作,,避免爭用,等待,,提高了效率,。

2 硬件電路設(shè)計
    基于雙口RAM的雙CPU快速并行通信硬件電路設(shè)計框圖如圖3所示。圖中左右2個CPU即CPU1(左),,CPU2(右)采取在線可編程的方式從PC機得到它的程序,。由于IDT7134共有4K地址,需要12根地址線查找相應(yīng)的地址,,用74HC373進行了P0地址的低位鎖存,,用P2口直接輸出高位地址。CPU1把采集到的信息通過IDT7134傳給CPU2做相關(guān)的處理,,CPU2把自己采集,、處理的信息通過IDT7134傳給CPU1。

g.jpg


    在硬件電路設(shè)計當(dāng)中,,尤其是在IDT7134和CPU的連接當(dāng)中,,特別要注意幾根控制線的連接。根據(jù)STC89C54的原理和IDT7134的原理再結(jié)合經(jīng)驗,,STC89C54的寫控制P3.6接到IDT7134的寫允許端口,。STC89C54的讀控制P3.7接到IDT7134的輸出允許端口,STC89C54的P2.7接到IDT7134的片選端口,。另外要注意STC89C54的ALE端要接74HC373的鎖存使能G端口,。STC89C54的EA端口要接高電平。圖4給出了STC89C 54與IDT7134的部分連接圖,。

h.jpg



3 軟件設(shè)計
    定義2個IDT7134的存儲區(qū):unsignedcharxdata*xRAM1=0x0000和unsigned char xdata*xRAM2=0x0800,,既是把IDT7134的4096個地址平分,分別作為CPU1存儲,,CPU2讀取的存儲專區(qū)1,;后者作為CPU2存取,CPU1讀取的專區(qū)2,。在每一個專區(qū),,只允許專有的動作,,其他的操作視作非法操作。
     接下來第二步是設(shè)定標(biāo)志位,。對CPU1,,CPU2的操作分別設(shè)定3個相應(yīng)的標(biāo)志位:CPU1有cpu1_updata_flag(為0時表示存儲專區(qū)1未更新,不必讀??;為1時表示存儲專區(qū)1已更新,可以讀取),;cpu1_writing_flag(為0時表示未對該存儲專區(qū)1寫入操作,,可以在數(shù)據(jù)有更新的情況下對該數(shù)據(jù)區(qū)進行讀取,;為1時表示正對該數(shù)據(jù)區(qū)進行寫操作,,禁止讀取);cpu1_reading_flag(為0時表示未對存儲專區(qū)2進行讀操作,,如果存儲專區(qū)2的數(shù)據(jù)未更新,,則CPU2可以對其進行寫入操作),。同理,,CPU2也有相應(yīng)的3個標(biāo)志:cpu2_updata_flag,cpu2_writing_flag,,cpu2_ rading_flag,,并具有類似的含義。
    系統(tǒng)上電后,,先自檢,,一切正常后,復(fù)位,。復(fù)位后,,所有的標(biāo)志位置為0,然后進行相應(yīng)的數(shù)據(jù)傳輸,。CPU1和CPU2相應(yīng)的工作流程如圖5所示,。

i.jpg



4 結(jié)束語
    本并行通信采用IDT7134雙口RAM,實驗表明具有功率損耗小,,傳輸速率高,,實時性好,可靠性高,。該系統(tǒng)可廣泛應(yīng)用在數(shù)據(jù)采集,、多機通信系統(tǒng)中,并對其他的嵌入式系統(tǒng)有一定的借鑒作用,。
    根據(jù)目前的實踐情況來看,,下一步是把雙口RAM應(yīng)用在多處理機中,,為此需要解決多處理機的地址爭用問題,需要提出更優(yōu)良的算法以實現(xiàn)有效性和實時性,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。