1 實(shí)現(xiàn)雙處理器的一般方法
① 使用雙口RAM。這種方法方便地實(shí)現(xiàn)了CPU之間的通信,在選擇CPU接口時(shí)具有較大的靈活性;但這種方法會增加電路設(shè)計(jì)的難度和成本。
② 利用I/O口進(jìn)行并行通信。這種方法既要用I/O口傳送數(shù)據(jù),又要用I/O口來進(jìn)行傳送的控制,因此占用較多的I/O口;而且控制過程涉及進(jìn)行通信的兩個(gè)CPU,軟件設(shè)計(jì)比較復(fù)雜。
③ 利用串口進(jìn)行通信。使用UART或I2C總線來聯(lián)系CPU也是常用的方法。這種方法實(shí)現(xiàn)簡單,只是傳輸速度較慢。
④共享內(nèi)存。共享內(nèi)存實(shí)際上又有兩種不同實(shí)現(xiàn)。第一種如LON網(wǎng)絡(luò)的Neuron節(jié)點(diǎn)芯片,利用不同時(shí)序?qū)崿F(xiàn)共享內(nèi)存。這種方法必須制成專用芯片,把CPU和RAM封裝在一起,一般情況下實(shí)現(xiàn)困難。第二種如96系列單片機(jī),使用HOLD線先掛起其中一單片機(jī)的總線,以使用其內(nèi)存。這種方法簡單而且傳輸速度快,在具有HOLD功能的CPU系統(tǒng)中經(jīng)常使用這種方法實(shí)現(xiàn)雙CPU。
2 使用共享內(nèi)存法實(shí)現(xiàn)雙CPU通信
由于51單片機(jī)沒有HOLD功能,一般不能使用共享內(nèi)存法實(shí)現(xiàn)雙CPU通信。這里介紹一種方法,使一般51單片機(jī)能夠用共享內(nèi)存實(shí)現(xiàn)雙CPU通信。該方法電路簡單,軟硬件實(shí)現(xiàn)容易;數(shù)據(jù)傳輸速度快,而且占用系統(tǒng)資源少(不使用I/O口傳遞數(shù)據(jù),而用一部分地址空間作為數(shù)據(jù)傳送的媒體),能充分發(fā)揮雙CPU的作用。下面具體介紹這種方法。
2.1 基本設(shè)計(jì)方案
首先,甲機(jī)劃出一部分片外RAM的地址空間作為數(shù)據(jù)傳輸?shù)膶iT通道(一般可用高端地址空間);同時(shí),把這個(gè)地址空間映射到接收數(shù)據(jù)的乙機(jī)端的相同大小片外RAM地址空間(乙機(jī)端可以直接訪問到)。兩邊需要傳遞數(shù)據(jù)時(shí),甲機(jī)就直接向這個(gè)地址讀寫數(shù)據(jù)。讀寫數(shù)據(jù)之前,兩邊要先聯(lián)絡(luò),做好數(shù)據(jù)傳輸前的準(zhǔn)備。
兩邊數(shù)據(jù)線要用開關(guān)門電路隔開,可以用三態(tài)門。地址線也按照設(shè)計(jì)者的安排,甲機(jī)端經(jīng)過開關(guān)門電路直接映射到乙機(jī)端特定片外RAM地址。因?yàn)榧讬C(jī)要在乙機(jī)這邊讀寫數(shù)據(jù),所以甲機(jī)對片外RAM的讀寫選通信號也要經(jīng)過開關(guān)接到乙機(jī)讀寫端。發(fā)送數(shù)據(jù)前,要打開這些開關(guān)門電路。這樣,甲機(jī)就可以在乙機(jī)的片外RAM中讀寫數(shù)據(jù)了。
最后,還有一個(gè)重要工作。兩邊的CPU有自己獨(dú)立的工作,彼此獨(dú)立地在自己的數(shù)據(jù)線和地址線運(yùn)行程序,要共用乙機(jī)的RAM來實(shí)現(xiàn)通信就必須在傳送通信數(shù)據(jù)期間讓乙機(jī)交出總線控制權(quán),而51單片機(jī)又不具備96單片機(jī)的HOLD功能,怎樣才能讓乙機(jī)交出總線控制權(quán)?這里要用其它方法。51系列單片機(jī)本身有ID工作方式(空閑狀態(tài)),ID方式可以用中斷喚醒。我們可以利用ID工作方式讓乙機(jī)暫停工作,從而讓甲機(jī)CPU在乙機(jī)這邊存取數(shù)據(jù)。
2.2 具體實(shí)現(xiàn)方法
圖1是兩個(gè)51單片機(jī)組成的雙機(jī)系統(tǒng)。我們把左邊甲機(jī)的普通片外RAM地址尋址空間分為0000H~7FFFH和8000H~0FFFFH兩個(gè)不同的區(qū)域。其中,0000H~7FFFH可作為普通片外RAM空間,8000H~0FFFFH可作為數(shù)據(jù)傳輸通道。在這里,我們把8000H~803FH的片外RAM尋址空間映射到右端乙機(jī)的0000H~003FH的地址空間。(其實(shí)甲機(jī)8000H以上的任意地址都會映射到相應(yīng)的乙機(jī)0000H ~003FH空間。這里為簡單起見,只用甲機(jī)的最高位地址線直接線選,并約定甲