當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]多個(gè)單片機(jī)通過串行總線度串行接口(I2C、SPI)存儲(chǔ)芯片可以構(gòu)成簡(jiǎn)捷、高效的多主機(jī)系統(tǒng)。多主機(jī)系統(tǒng)需要解決好共用串行總線的仲裁問題,本文給出利用優(yōu)先編碼器74HCl48和譯碼器74HCl38實(shí)現(xiàn)硬件仲裁的解決方法。

摘要 多個(gè)單片機(jī)通過串行總線度串行接口(I2C、SPI)存儲(chǔ)芯片可以構(gòu)成簡(jiǎn)捷、高效的多主機(jī)系統(tǒng)。多主機(jī)系統(tǒng)需要解決好共用串行總線的仲裁問題,本文給出利用優(yōu)先編碼器74HCl48和譯碼器74HCl38實(shí)現(xiàn)硬件仲裁的解決方法。與軟件實(shí)現(xiàn)總線仲裁相比,該方法簡(jiǎn)單可靠,實(shí)時(shí)性高,可實(shí)現(xiàn)總線的預(yù)約功能,適用于由各種不同類型的CPU構(gòu)成的多機(jī)系統(tǒng),進(jìn)一步提高多主機(jī)系統(tǒng)的性能。
關(guān)鍵詞 多主機(jī)系統(tǒng) 串行總線 I2C SPI硬件仲裁優(yōu)先編碼器


引 言
    隨著單片機(jī)技術(shù)的發(fā)展和單片機(jī)芯片價(jià)格的下降,利用多個(gè)相同類型或不同類型的單片機(jī)構(gòu)成一個(gè)多單片機(jī)系統(tǒng),可以獲得良好的系統(tǒng)靈活性和性能價(jià)格比,如可以用一個(gè)AT89C52單片機(jī)作多功能外圍器件芯片。系統(tǒng)內(nèi)多個(gè)單片機(jī)之間的通信可以有多種方式,如硬件UART、片內(nèi)SPI/I2C總線、軟件模擬SPI/I2C總線、I/O口、雙口RAM和基于I2C總線及FRAM的通信方式。其中,基于串行總線(SPI或I2C)及串行接口存儲(chǔ)芯片(FRAM或SRAM,如DSl302芯片內(nèi)的SRAM)的通信方式是一種簡(jiǎn)單、高效、實(shí)用的解決方法。此時(shí),系統(tǒng)可以有多個(gè)主機(jī),需要解決串行總線的仲裁問題,即在某一個(gè)時(shí)刻只允許一個(gè)主機(jī)占用串行總線。在參考文獻(xiàn)[1]和[4]中,分別采用測(cè)試序列和時(shí)間片的軟件仲裁方法實(shí)現(xiàn),需要占用CPU的處理時(shí)間,且在仲裁過程中有可能受到外部干擾,因此對(duì)軟件編程的可靠性有較高的要求。本設(shè)
計(jì)利用優(yōu)先編碼器74HCl48和譯碼器74HCl38,通過硬件方式進(jìn)行總線仲裁.使仲裁所需時(shí)間大為縮短,可靠性得到提高。
    下面著重以n=8個(gè)主機(jī)系統(tǒng)為例說明串行總線硬件仲裁的實(shí)現(xiàn)方法,并將其推廣到n>8的多機(jī)系統(tǒng)中。

1 譯碼器74HCl38功能簡(jiǎn)介
    74HCl38是十分常見的三線一八線譯碼器。該譯碼器有3個(gè)輸入A2、Al、A0,它們總共有8種狀態(tài)的組合,可以譯出8個(gè)輸出信號(hào)Y0~Y7。從表1所列的74HCl38真值表中可以看出:當(dāng)STA、STB、STC不滿足使能條件時(shí),Y0~Y7輸出為1,均為無效信號(hào);而當(dāng)74HCl38滿足使能條件時(shí),Y0~Y7其中一個(gè)為0,即有一路有效信號(hào)(由A2、Al、AO決定),其余為1。(74HCl38引腳排列參見圖1)

2 優(yōu)先編碼器74HCl48功能簡(jiǎn)介

    74HCl48是八線一三線的優(yōu)先編碼器。該編碼器有8個(gè)信號(hào)輸入端,3個(gè)二進(jìn)制碼輸出端。此外,電路還設(shè)置了輸入使能端EI,輸出使能端EO和優(yōu)先編碼器工作狀態(tài)標(biāo)志GS。從表2所列的74HCl48真值表中可以看出:當(dāng)EI=1時(shí),不論8個(gè)輸入端為何種狀態(tài),3個(gè)輸出端均為高電平,且輸出使能端和狀態(tài)標(biāo)志端均為高電平,編碼器處于非工作狀態(tài);當(dāng)EI=O,且至少有一個(gè)輸入端有編碼請(qǐng)求信號(hào)(邏輯O)時(shí),GS為0,表明編碼器處于工作狀態(tài),否則為1。由真值表可知,在8個(gè)輸入端均無低電平輸入信號(hào)和只有輸入O端(優(yōu)先級(jí)別最低位)時(shí),A2AlAO均為111,此時(shí)可由GS的狀態(tài)加以區(qū)別。當(dāng)GS=1時(shí),表示無輸入信號(hào),A2A1A0=111為非編碼輸出;當(dāng)GS=O時(shí),A2AlA0=111表示響應(yīng)輸入O端為低電平時(shí)的編碼輸出。E0只有在EI為0,且所有輸入端為l時(shí),輸出為0,用于級(jí)聯(lián)。
    由表2可知,輸入優(yōu)先級(jí)別的次序依次為17,16,15,14,13,12,11,10。輸入有效信號(hào)為低電平,當(dāng)某一輸入端有低電平輸入,且比它優(yōu)先級(jí)別高的輸入端無低電平時(shí),輸出端才輸出相對(duì)應(yīng)的輸入端的代碼;同時(shí),74HC148的編碼輸出為反碼。例如,當(dāng)17為O時(shí),編碼輸出為000。(74HC148引腳排列參見圖1)

3 硬件仲裁的實(shí)現(xiàn)
   
利用74HC148和74HCl38可實(shí)現(xiàn)8個(gè)主機(jī)的硬件仲裁,電路原理如圖1所示。該電路以I2C總線芯片(如FM24C64)作為數(shù)據(jù)交換芯片。電路提供3種類型的信號(hào):Ask、Reply、Status。Ask為總線請(qǐng)求信號(hào),Reply為總線請(qǐng)求的返回信號(hào),Status為總線狀態(tài)。從圖1可知,Ask的有效請(qǐng)求信號(hào)為低電平。當(dāng)Ask0~Ask7都為高電平時(shí),GS(Status)輸出為高電平,此時(shí)74HCl38處于無效的工作狀態(tài),Reply0~Reply7均為高電平信號(hào)。只有當(dāng)AskO~Ask7中至少有一個(gè)低電平時(shí),GS(Status)輸出為低電平,使74HCl38處于譯碼狀態(tài),Reply0~Reply7至少有一個(gè)低電平輸出,故Starus為低電平表示總線被占用。

    每個(gè)主機(jī)需要提供3個(gè)I/O口作為控制線和狀態(tài)線用于總線仲裁,2個(gè)I/0口用于讀寫I2C總線。
    以CPUA為例,當(dāng)CPUA需要占用總線時(shí),首先檢查Status的狀態(tài),若為高電平,說明總線沒有被占用,若為低電平,說明總線已被占用;當(dāng)CPU沒有占用總線時(shí),CPUA可以發(fā)出總線申請(qǐng)信號(hào)(將Ask0置為低電平)。此時(shí),也有可能有多個(gè)CPU同時(shí)發(fā)出總線申請(qǐng)信號(hào),但只有優(yōu)先級(jí)別最高的CPU申請(qǐng)有效。因此,CPUA隨即檢查Reply0的電平,若為低電平,則說明成功申請(qǐng)到總線,可以對(duì)I2C總線進(jìn)行數(shù)據(jù)操作;否則,總線被其他CPU所占用,需要在Status為高電平時(shí)繼續(xù)申請(qǐng)。
    以圖1為例,其中CPUH的優(yōu)先級(jí)最高。必須說明的是,由于74HCl48輸出的編碼為反碼,當(dāng)74HCl48的17輸入為低電平時(shí),編碼輸出應(yīng)為000,經(jīng)74HC138譯碼輸出Y0為低電平。同樣,16對(duì)應(yīng)Yl,依此類推。
    CPU在發(fā)出申請(qǐng)之后,如果沒有成功獲得總線,就必須立即撤消總線申請(qǐng)信號(hào)(Ask置為高電平),否則將影響其他CPU的總線申請(qǐng);如果成功獲得總線,則在完成數(shù)據(jù)處理后,也必須立即撤消總線申請(qǐng)信號(hào)。
    有關(guān)的軟件編程也是相當(dāng)簡(jiǎn)單的,以MCS51單片機(jī)為例;


    在軟件方面,還需要對(duì)I2C芯片(如FM24C64,8 KB)的地址空間進(jìn)行分配。可以根據(jù)需要給每一個(gè)主機(jī)分配一個(gè)連續(xù)的地址空間,空間大小可以不等,例如CPUA獲得AddrA的地址空間。在AddrA中,再進(jìn)行細(xì)分,例如CPUC與CPUA通信的地址為AddrAC。當(dāng)CPUC需要傳送數(shù)據(jù)給CPUA時(shí),只需將數(shù)據(jù)寫入AddrAC的地址中,而由CPUA在獲得總線后讀取AddrAC的數(shù)據(jù),從而完成數(shù)據(jù)傳送的過程。使用I2C芯片作為數(shù)據(jù)芯片,必須保證在每一個(gè)CPU沒有獲得總線的情況下,對(duì)應(yīng)的SDA和SCL口線保持為高電平。
    圖l可用于主機(jī)數(shù)量小于或等于8個(gè)的情況。
    當(dāng)主機(jī)數(shù)量大于8個(gè)(如16個(gè))時(shí),可以利用2片74HCl48通過級(jí)聯(lián)實(shí)現(xiàn)十六線一四線的優(yōu)先編碼,同時(shí)利用2片74HCl38通過級(jí)聯(lián)實(shí)現(xiàn)四線一十六線譯碼。級(jí)聯(lián)的方法請(qǐng)見參考文獻(xiàn)[5]。必須注意的是,級(jí)聯(lián)后,某個(gè)CPU的Ask和Reply必須是一一對(duì)應(yīng)的。

4 總線預(yù)約
   
由于8個(gè)主機(jī)的請(qǐng)求線Ask0~Ask7存在不同的優(yōu)先級(jí),當(dāng)系統(tǒng)對(duì)實(shí)時(shí)性能要求較高時(shí),可以通過3個(gè)控制線實(shí)現(xiàn)總線預(yù)約功能。本文以MCS5l系列單片機(jī)CPUA為例說明。
    方法一:將Status狀態(tài)線經(jīng)“非”門后接入CPUA外部中斷INTO或INTl(外部中斷設(shè)置為下降沿觸發(fā)),當(dāng)其他高優(yōu)先級(jí)釋放總線后,Status端出現(xiàn)下降沿,使CPUA進(jìn)入中斷,使得CPUA可及時(shí)獲得總線。
    方法二:將Reply0接至CPUA的外部中斷INT0或INTl(外部中斷設(shè)置為下降沿觸發(fā)),當(dāng)CPUA需要盡快獲得總線時(shí),將AskO置為低電平;當(dāng)其他高優(yōu)先級(jí)釋放總線后,Reply0即由高電平變?yōu)榈碗娖?,CPUA進(jìn)入中斷,從而獲得總線。


結(jié)語
   
利用74HCl48和74HCl38組成多主機(jī)系統(tǒng)的硬件仲裁邏輯,電路簡(jiǎn)單、可靠,CPU的處理時(shí)間極短,性能穩(wěn)定。筆者已將該技術(shù)應(yīng)用于實(shí)際的數(shù)據(jù)采集系統(tǒng)中,系統(tǒng)運(yùn)行可靠。在串行芯片的選擇上,鐵電存儲(chǔ)器(FM系列)存儲(chǔ)速度快(I2C總線頻率可達(dá)lMHz,SPI總線頻率可達(dá)25MHz),寫入數(shù)據(jù)沒有延時(shí),讀寫次數(shù)為100億次,低功耗操作,容量大,可以由軟件模擬實(shí)現(xiàn)I2C和SPI總線,適合各種類型的單片機(jī),是十分理想的存儲(chǔ)芯片。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉