<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 采用分而治之的方法設計嵌入式系統

采用分而治之的方法設計嵌入式系統

——
作者:賽普拉斯半導體 Jon Pearson 時(shí)間:2007-08-21 來(lái)源:嵌入式在線(xiàn) 收藏
其中有一個(gè)很明顯的發(fā)展趨勢:將復雜的問(wèn)題分為若干個(gè)較小、較簡(jiǎn)單且更加明確的問(wèn)題,并針對具體的任務(wù)運用合適的工具。即使是最為普通的系統也適用于這一原則,它可以縮短設計周期,提高系統的靈活性和可維護性。關(guān)鍵在于采用一種通用的通信策略。

  主控制器和從控制器

  最基本的原理就是:用主控制器進(jìn)行集中決策,再交由從控制器分別執行。在最為復雜的系統中,這種方法必不可少,并能夠自動(dòng)執行。比如,手機中的主處理器用于決定屏幕的顯示內容以及外設(如LCD顯示控制器或無(wú)線(xiàn)電收發(fā)器)需要完成的工作,而不會(huì )直接控制顯示的各個(gè)像素或是無(wú)線(xiàn)電的編/解碼。主控制器將告知顯示器需要顯示什么信息,并由顯示器來(lái)決定如何顯示;同樣,主控制器向收發(fā)器提供需要編碼的音頻信號,而收發(fā)器則提供解碼后的信號。

  在其他系統中,任務(wù)的劃分或許不那么明顯,但基本思想都是相同的。如果一個(gè)中央主控制器能夠與遠程從設備以及本地設備進(jìn)行通信,那么整個(gè)系統中就可以有統一的控制。另外,為了使一個(gè)分布式系統獲得成功,需要對接口作明確的定義。

  雖然有許多標準的通信方法,但在主/從系統中,最常用的是RS23 2串行接口、SPI和I2C。采用這些通信接口的從設備包括較低級的ADC、DAC、串行EEPROM、各類(lèi)數字,以及較高級的電壓排序和監控器件以及閉環(huán)風(fēng)扇控制器等。

  將任務(wù)分而治之

  在目前嵌入式市場(chǎng)的從器件以及可被用作主控制器或定制從控制器的中,比較流行的通信方法是I2C。這主要是由于I2C價(jià)格較低,只需雙線(xiàn)/引腳和兩個(gè)上拉電阻器即可構成,并且簡(jiǎn)單易用。就分布式嵌入系統而言,I2C(400kHz)往往是最佳選擇。

  將任務(wù)分而治之的關(guān)鍵在于:簡(jiǎn)單的問(wèn)題要比復雜的問(wèn)題更加容易解決。此外,將器件彼此分開(kāi)可以減少它們之間的耦合,并提高系統的可靠性。如果能夠正確地分配功能、定義接口,就可以避免普遍存在的一些故障。最后,如果能夠很好地利用自己的經(jīng)驗,則在劃分任務(wù)的過(guò)程中就將能產(chǎn)生許多可重用的設計,從而使得工程師在設計下一個(gè)項目時(shí)不用從頭開(kāi)始。

  實(shí)現任務(wù)的分而治之需要依靠一根通信總線(xiàn),在有些情況下,總線(xiàn)會(huì )影響到某些主控制器/從控制器的特性。在本文中使用I2C作為總線(xiàn),是因為支持該總線(xiàn)的器件比較普遍,而且測試和調試I2C所需的外部工具價(jià)格較低或比較容易創(chuàng )建。

  這種主控制器/從控制器的原理在任何嵌入式設計中都是以相同的方法來(lái)處理的。首先,確定需要集中做出那些決策,并將它們分配給主控制器;然后把具體操作分配給從控制器去執行。關(guān)鍵在于如何進(jìn)行任務(wù)的劃分。一種高效的策略是:不要讓主控制器因為任何事情而去等待某個(gè)從控制器;如果從控制器需要主控制器提供某些信息,它必須先呼叫主控制器。在有些情況下,這種方法還需要一根中斷線(xiàn),以使從控制器能夠呼叫主控制器。

  采用I2C 擴展器件的面板控制器

  本文在一個(gè)控制設備面板的系統中采用了該方法,面板由按鈕、開(kāi)關(guān)和LED組成。在該面板系統中,主控制器是負責管理該系統的主處理器,如嵌入式的Windows或計算機;從控制器為I2C總線(xiàn)連接擴展器。

  通過(guò)讓主處理器在上電時(shí)對I/O擴展器進(jìn)行配置,按鈕/開(kāi)關(guān)檢測輸入和LED狀態(tài)輸出將被傳至主處理器。任何一個(gè)具有I2C總線(xiàn)的處理器都可以是主控制器,它對設備進(jìn)行軟件配置,并可以方便地改變按鈕和LED的配置。

  這種簡(jiǎn)單的系統如圖1所示。圖中藍色的圓圈代表按鈕輸入,紅色和綠色形狀代表LED。在設計中使用了兩個(gè)小的I2C I/O擴展器,是為了實(shí)現智能設計的模塊化,把輸入子系統的變化與輸出子系統分隔開(kāi)。當在主控制器中進(jìn)行決策時(shí),可使某一特定功能的變化不影響到其他的功能。

面板系統簡(jiǎn)圖

圖1 面板系統簡(jiǎn)圖

  而且,由于所有的控制功能都由主控制器完成,因此系統中的硬件部分很簡(jiǎn)單,而且易于改變。但這種簡(jiǎn)單的方法也有缺點(diǎn),當希望增加一個(gè)用于調節LED亮度的環(huán)境光傳感器時(shí),增加的工作負擔將全部由主控制器來(lái)承擔,它要保證所有的從控制器能夠適應設計變化,并正常工作。但其實(shí)主控器只需要知道按鈕的狀態(tài),并控制LED的接通和關(guān)斷。

  設計定制的I2C從控制器件

  在圖1的系統中,所有的邏輯信息都存儲在主控制器中,一切變化都要通過(guò)主控制器完成。作為替代方案,可以定義一個(gè)面板接口,并將所有的細節問(wèn)題交給一個(gè)分布式的從控制器系統來(lái)處理,這樣可減少主處理器的負擔,如圖2所示。

采用定制從器件的面板系統

圖2 采用定制從器件的面板系統

    設計定制器件時(shí)應采用定義了穩定協(xié)議和接口且經(jīng)過(guò)驗證的I2C從控制器實(shí)現方案,最常用的協(xié)議是目前大多數I2C從控制器件所采用的、基于寄存器的協(xié)議。相關(guān)概要信息如下:

  對于I2C,所有的事務(wù)處理均由主控制器啟動(dòng);

  每個(gè)從器件都具有一個(gè)I2C 7位地址(最低有效位表明事務(wù)處理是“讀”還是“寫(xiě)”);


  每個(gè)從器件都具有一個(gè)內部地址寄存器,用于存儲一個(gè)指向包含了數據、命令或狀態(tài)信息的內部表指針;

  每個(gè)從器件均定義了其寄存器的地址及其功能,指明它們是只讀型的還是讀/寫(xiě)型的;

  一個(gè)寫(xiě)處理事務(wù)由一個(gè)具有I2C器件7位地址和寫(xiě)操作位的字節以及一個(gè)位于其后的、用于設定內部地址寄存器的字節組成,如果在處理事務(wù)中有更多的字節,則它們將被寫(xiě)入以新設定的內部地址為起點(diǎn)的從器件;

  一個(gè)讀處理事務(wù)由一個(gè)具有I2C器件7位地址和讀操作位的字節以及一個(gè)位于其后的主控制器組成,該主控制器用于記錄從器件的字節數,并在結束時(shí)提供停止信號。由此可見(jiàn),I2C從控制器與雙端口RAM很相似,非常易于使用。

  接下來(lái)要選擇可編程器件,賽普拉斯公司推出的件PSoC擁有處理大多數I2C從控制器所需的全部功能,并提供了一種易用的工具,從而簡(jiǎn)化了增加I2C從控制器的工作,只需“拖、放、選擇地址”即可。

  首先,定義一個(gè)按鈕輸入的從器件,創(chuàng )建一個(gè)具有3個(gè)地址引腳和7個(gè)按鈕輸入的器件,并通過(guò)配置使之接受一個(gè)靠近5V直流系統電源的常開(kāi)開(kāi)關(guān)。按鈕狀態(tài)將在一個(gè)由I2C主控制器進(jìn)行存取的單字節中提供。

  其次,定義用于控制LED的從器件,創(chuàng )建一個(gè)具有2個(gè)地址引腳并能夠以10mA的電流來(lái)驅動(dòng)8個(gè)LED(分為4紅4綠)的器件。定義被稱(chēng)為“Command”的單字節用于執行I2C的命令輸入,以控制LED。該字節的4個(gè)低位用于控制紅光LED,而4個(gè)高位則負責控制綠光LED。

  接下來(lái),還可以更加細致地定義定制I2C主控制器/從控制器的接口,進(jìn)一步實(shí)現從控制級的客戶(hù)化設計。如果想把系統主控制器從一個(gè)輪詢(xún)器件變?yōu)橐粋€(gè)接收報警信號的中斷器件時(shí),則可以給按鈕輸入設備增加一根輸出線(xiàn)。這些改動(dòng)能夠進(jìn)一步地把主系統處理器與低級設備相隔離,并提供了在不影響主系統的情況下繼續改善子系統的更大靈活性。

  將分而治之的概念推廣到所有的通信總線(xiàn)

  本文所討論和說(shuō)明的概念可適用于任何的總線(xiàn)類(lèi)型,需要做的是定義滿(mǎn)足各種不同需要的協(xié)議,以最大限度地縮短無(wú)線(xiàn)、便攜系統中的傳輸時(shí)間,或是在苛刻的工業(yè)環(huán)境中實(shí)現完善的檢錯/糾錯。

  主控制器可以被稱(chēng)為集線(xiàn)器,從控制器可以被看作一個(gè)節點(diǎn)并具有預定的響應時(shí)間,但是,分而治之的思想仍然適用:把普通、重復的測量和低級控制分配給級別最低的點(diǎn),而將重要的工作留給系統控制器來(lái)完成。另外,在各種情況下都必須建立功能強大、精確定義的接口,以便為下一級的設計留出一定的自由度,在不影響較高級設備的情況下方便地改變設計方案。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>