基本概念 當前,為了滿足通信、多媒體和數字處理等高端套用,片上系統己不僅僅集成一個處理器,而更多的是將多個處理器集成到系統中,甚至還需要結合片外的處理器共同工作。典型的套用是將CPU與DSP (Digital singnal processor)集成到系統中,其中CPU負責系統的複雜控制,DSP負責系統的複雜計算,通過片上系統,集中規劃,將兩類處理器有機的結合起來,充分發揮各自的優勢,完成系統的各項功能。由於系統集成了多個處理器,每個處理器相當於系統的一個主機,各個處理器在與共享資源間通信時,存在一定的邏輯衝突,造成了系統內部通信的一系列問題。
主流的多處理器通信方式有以下四類:
(2)Mailbox硬體通信機制;
(3)DMA數據搬運通信機制;
(4)串口主從模式通信機制。
多處理器通信機制 主流的多處理器通信方式有以下四類。
共享存儲器通信機制 共享存儲器方式比較適合多處理器對於共享存儲的處理,其實現方式是設立共享存儲狀態查詢位來進行通信和識別。實現時在一個存儲器中放有共享存儲器的狀態標誌,該狀態標誌類似於信號燈。每次需要訪問共享存儲的主機設備需先訪問該狀態標誌,如果此時存儲器被其他處理器占用則等待其他設備訪問結束後再進行訪問。這種方法實現簡單,需要配置的控制信息也較少。由於對狀態標誌需要進行識別,因此會增加一定的
軟體複雜度 。
Mailbox硬體通信機制 Mailbox作為
多處理器系統 中處理器間進程同步和數據交換的硬體機制,其優點是套用相對的廣,速度快。採用Mailbox的方式,主要是通過傳輸控制信息的方式進行多處理器通信。根據系統要求,可以定義不同的Mail來實現系統行為。例如:可以定義固定流量的數據傳輸,也可以定義固定區塊的數據傳輸。通信雙方的數據傳輸,屬於片內並行數據傳輸,因此實時性好,速度快。同時還可以兼容中斷和查詢模式,減小控制CP U的處理時間壓力。如果單純用於固定的數據傳輸則Mail設計簡單。但如果Mail定義的類型較多,會增加一定的Mail識別難度及識別時間。
DMA數據搬運通信機制 DMA (direct memory access)方式能夠有效地縮減數據通信對處理器的時間占用,在傳送大量數據時能發揮一定的作用。主要使用在程式更新及成片數據搬運方面。DMA可以作為輔助解決多處理器通信的部件。
串口主從模式通信機制 串口主從模式主要使用串口通信設備完成,將多個處理器分為主設備與從設備。當主處理器需要數據時就通過DART (Universal asynchronous receiver/ transmitter)向從處理器傳送請求數據命令,從處理器通過串口將數據傳送去主處理器。由於串口通信延時較大,主處理器必須等待所有的數據從DART傳入主處理器區域的SRAM進行組合,或者主處理器自身進行組合後,再處理方可使用,導致通信效率較低。同樣從處理器在通信期間也不能向對應的存儲區進行數據更新操作。所以傳輸和處理時間需要重點考慮。
使用串口主從模式進行通信優點在於對軟體程式方面的依賴較少,缺點在於對內部電路結構有一定依賴性,傳輸模式單一,時間久.若設計複雜的通信協定,則對軟體編程壓力大。
多CPU系統中的數據共享 數據共享是指多個CPU之間通過一個或幾個存貯器來傳遞相互間的信息。通常一個CPU將要傳遞的數據,寫入到存貯器的固定區域,然後通知另一個CPU去取出數據,對數據進行處理。將處理的結果再寫入到存貯器某一區域,通知有關CPU取走並進行處理。
數據共享是多CPU系統傳遞信息、協調任務的一種重要手段。通常共享的存貯器可以是雙連線埠RAM,也可以是串口
。在實際中要根據系統的實時性要求進行選擇。一般,對於實時性要求高、需要傳輸大量數據的系統宜選用雙連線埠RAM作為共享存貯器,如音頻、視頻信號的分析處理,否則宜選用價格相對便宜的串口
作為共享存貯器(如24C02,93C46等),以最佳化設計降低成本。
多CPU之間的通信 利用雙連線埠RAM實現CPU之間通信 雙連線埠RAM是一種高速的存儲器晶片,有兩套地址匯流排、數據匯流排和控制匯流排,並有一套競爭裁決電路。因此,2個CPU在仲裁電路控制下,可以通過各自的地址匯流排、數據匯流排對其進行讀寫操作,方便地進行CPU之間的數據交換。常用的CMOS
雙口RAM 有IDT7132, ID7102等。利用雙連線埠RAM組成的多CPU系統原理如圖1所示:
圖1
該系統特點是數據交換量大、速度快,適用於快速數據傳輸,但是系統的成本較高。能否用單連線埠RAM實現雙連線埠的功能呢,答案是肯定的。
利用單連線埠RAM實現CPU之間的通信 顧名思義,單連線埠RAM只有一套地址匯流排、數據匯流排、控制匯流排。要實現雙連線埠RAM的功能,就必須由硬體電路將一套匯流排變成兩套匯流排,分屬2個CPU控制。另外還必須設計一套競爭仲裁電路,防止2個CPU同時對RAM的操作衝突。好在這種接口電路的設計並不是太困難,74HC244, 74HC245再加一些門電路就能解決問題。
利用串口EPROM實現CPU之間的通信 串口
由於其引線少,價格低廉,在嵌入式系統中得到了廣泛的套用。下面以共享25C02為例,介紹多CPU之間的數據傳輸。原理如圖2所示:
圖2
圖2中CPU1與CPU2通過共享25C02,CPU2與CPU3通過共享25C02完成他們之間的通信。
利用串列匯流排實現多CPU之間的通信 隨著計算機技術的發展,計算機的串口通信越來越多樣化。同步串口通信、異步串口通信、
匯流排、
SPI匯流排 、USB等,由於其實用性好,越來越為設計者所關注。特別是在多CPU嵌入式系統中,各個CPU通過串列匯流排相連可以方便地進行多CPU之間的通信。
(Inter Intergrated Circuit)匯流排是由Philips公司提出並註冊的一種匯流排接口標準,是一種主從結構的二線同步匯流排,其中一根是同步移位時鐘SCL,另一根為數據線SDA。各CPU通過2條線相連,其原理如圖3所示:
圖3
系統中的CPU可以選用帶有
匯流排接口的,如Philips公司的80C652, P87LC764等,其通信軟體包可以在網上下載,對於不帶
匯流排接口的CPU,可以通過I/O模擬Iz C匯流排,相應軟體可從網上下載,也可自己編寫。
有4種工作模式、主傳送模式、主接收模式、從傳送模式、從接收模式。根據各子系統需要,合理選用其工作模式即構成
匯流排多CPU通信系統。Iz C匯流排的數據傳送格式如圖4所示:
圖4
S為Start信號,SLA為從機地址,也可以是通信地址;R/W為讀寫控制位;A為ACK應答位;DATA0~DATA7為數據位元組;S/P為下一個start或stop信號。
(2)利用SPl匯流排實現多CPU之間通信
SPI( Serial Peripheral Interface)匯流排是由Motorola公司提出並擁有商標的一種匯流排接口標準,是一種4線同步串列匯流排。4根線分別是:片選CS;串列移位SCK;串列移位數據輸入SI;串列移位輸出SO。在同一時刻串列數據移位輸入、輸出不能同時進行,因此,可以將二者連在一起,共用一根口線(即三線同步串列併線)。
如圖5所示是典型的基於 SPI匯流排組成的多CPU系統:
圖5
系統中的CPU可以採用帶有SPI匯流排接口的單片機。對於沒有SPI匯流排接口的單片機系統,可使用普通I/O口模擬SPI匯流排,其通信程式自編。利用SPI匯流排組成的一個三級多CPU系統運行結果良好。利用串列匯流排實現多CPU通信,其優點是:連線簡單、方便、可靠,產品性價比好;缺點是數據傳輸速度慢,實時性差,不宜用於數據量大、通信頻繁的多CPU系統。