<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>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 釋放嵌入式控制器中的CPU資源

釋放嵌入式控制器中的CPU資源

作者: 時(shí)間:2017-06-04 來(lái)源:網(wǎng)絡(luò ) 收藏

本文介紹了一種采用和數據通路(datapath)來(lái)解放系統中CPU任務(wù)的方案。在大多數結構中,智能的CPU身邊總會(huì )環(huán)繞著(zhù)一系列不可編程的。的功能有限,通常它們只負責數據形式的轉換。例如,I2C只是實(shí)現串行和并行數據格式之間的轉換,而ADC則實(shí)現模擬到數字信號的轉換。CPU因此不得不完成所有的數據處理工作,實(shí)際上它還能做些更有用的事情。此外,管理外設將會(huì )導致CPU固件異常復雜,并可能需要一個(gè)快速高效的CPU在實(shí)時(shí)的時(shí)序限制下執行這些固件。這又會(huì )導致更多的潛在程序漏洞,從而需要使用更復雜和昂貴的調試設備等。

但是如果外設具備足夠的復雜度、靈活度與智能,是否能有效地減輕CPU的許多任務(wù)呢?復雜的設計可以通過(guò)結構重建,變?yōu)橐唤M分布在CPU和外設中間的簡(jiǎn)單設計。CPU將可以執行更少的任務(wù),或進(jìn)行更少的中斷處理,從而使程序漏洞更容易被發(fā)現和修正。整體設計將使系統具有更好的穩定性,并且便于復用部分設計。CPU處理任務(wù)減少就可以運行在較低的速度,從而降低功耗,或者這些額外可用帶寬可用來(lái)實(shí)現市場(chǎng)部規劃的下一代產(chǎn)品。然而,外設設計仍需具成本效益,否則整個(gè)可能變得太貴。本文將展示如何把智能、靈活、低成本、可定制的數字外圍設備設計到微控制器并配置,以幫助實(shí)現穩定的分布式系統設計。

智能邏輯選擇—還是數據通路?

通常有兩種方法構建一個(gè)智能的可配置外設。首先是使用。如圖1所示,PLD有一個(gè)驅動(dòng)若干宏單元的積和(sum of products)邏輯門(mén)陣列。“T”和“C”符號表示每一個(gè)乘積項都能產(chǎn)生一個(gè)真值或補數(反向)輸出,這樣無(wú)論是正、負邏輯都可以支持。

本文引用地址:http://dyxdggzs.com/article/201706/348382.htm


圖1:一個(gè)PLD實(shí)例(包括12個(gè)輸出項、8個(gè)乘積項、4個(gè)宏單元)。

圖1顯示了一個(gè)簡(jiǎn)單的PLD例子。PLD可以有成百上千的宏單元,每個(gè)宏單元最高由16個(gè)乘積項驅動(dòng)。乘積項里的與門(mén)和或門(mén)可以互聯(lián)形成高度靈活的定制邏輯功能。宏單元是典型的時(shí)鐘架構,它們的輸出可以反饋到乘積項陣列,因此允許創(chuàng )建狀態(tài)機。

大規模PLD可以用來(lái)形成復雜的邏輯功能,甚至是完全的CPU,因此PLD當然可以用來(lái)實(shí)現智能數字外設。然而,很多門(mén)可能只是實(shí)現諸如計數器或加法器等簡(jiǎn)單的邏輯功能,但對于更復雜功能的實(shí)現,基于PLD的方案就會(huì )變得很貴。從某種程度上說(shuō),使用真正的CPU會(huì )更合理。

CPU的一個(gè)非常簡(jiǎn)單的形式是基于算術(shù)邏輯單元(ALU)的數據通路,也稱(chēng)為納米處理器(nano-processor)。數據通路只是實(shí)現幾個(gè)常用函數,但會(huì )比使用PLD實(shí)現的效率更高。圖2:顯示了一個(gè)基于A(yíng)LU的簡(jiǎn)單的數據通路。典型的ALU可以進(jìn)行各種操作,通常是8位操作:向上計數(遞增)、向下計數(遞減)、加、減、邏輯與、邏輯或、邏輯異或,左位移、右位移。這里有兩個(gè)8位累加器,它們能夠為ALU輸出充當輸入數據寄存器或存儲器。一個(gè)輸入時(shí)鐘信號沿產(chǎn)生一次操作。函數選擇寄存器用來(lái)控制:


圖2:基于A(yíng)LU的數據通路。

* 產(chǎn)生什么操作。

* 該操作的源寄存器。

* 輸出的目的寄存器。

根據數據通路的具體設計,其可能會(huì )做一系列復雜操作,如表1顯示。


表1:數據通路函數的實(shí)現舉例。

這個(gè)函數選擇模塊實(shí)際上可以是一個(gè)小容量的SRAM,預加載所需的函數選擇位,SRAM的地址線(xiàn)可以用來(lái)選擇運行哪個(gè)操作。最后,多數據通路可以用進(jìn)位和移位信號鏈在一起,以便可以進(jìn)行多字節操作數。

由于數據通路只有少數特定功能函數,很容易優(yōu)化設計,因此其創(chuàng )建成本較低。然而,對于實(shí)現復雜的邏輯,數據通路遠遠沒(méi)有PLD那么靈活。那么,對于創(chuàng )建智能、靈活、低成本的數字外設來(lái)說(shuō),哪一種方法是更好的呢?是PLD還是數據通路?答案是,將兩者相結合。下面是一個(gè)實(shí)例,來(lái)看看是如何實(shí)現的。

通用數字模塊

同時(shí)使用PLD和數據通路的系統實(shí)例是賽普拉斯半導體的PSoC3和PSoC5芯片。每個(gè)系統包含最高24個(gè)通用數字邏輯子系統,稱(chēng)為通用數字模塊(UDB),其結構如圖3所示。一個(gè)UDB包含兩個(gè)圖1所示的PLD,一個(gè)數據通路以及狀態(tài)機和控制寄存器。有兩個(gè)鏈路路徑,一個(gè)用于PLD,一個(gè)用于數據通路。由一個(gè)路由通道來(lái)連接各UDB子塊之間以及UDB之間的信號。PLD配置、數據通路和路由通過(guò)寫(xiě)入UDB配置寄存器來(lái)實(shí)現。

UDB的PLD設計在圖1中進(jìn)行了描述。如圖4,UDB數據通路類(lèi)似于圖2所示的基本的數據通路,但是它更精密復雜,因為擁有更多寄存器和更多的功能。


圖4:UDB數據通路框圖。

* 8位ALU可以實(shí)現所有的七個(gè)基本函數—遞增、遞減、加、減、與、或以及異或,并且它有單獨的位移和位掩碼模塊來(lái)進(jìn)行ALU結果后處理(8位ALU傳輸功能只需通過(guò)ALU傳送一個(gè)值到位移和位掩碼模塊)。位移模塊可以做左位移、右位移、半字節交換和傳輸。掩碼模塊可以和單獨的掩碼寄存器里的內容逐位相與(圖中未顯示)。

* 操作可以使用兩個(gè)累加器(A0,A1)和兩個(gè)數據寄存器(D0,D1)來(lái)完成。兩個(gè)FIFO寄存器(F0、F1)可用來(lái)在數據通路和CPU之間傳輸數據。FIFO深度可達4字節。這一結構可以使多任務(wù)處理變得簡(jiǎn)單;在不同的時(shí)間,獨立操作可以在寄存器子集完成。例如,A0、D0、F0可以用于一個(gè)任務(wù),而A1、D1、F1則可用于不同的任務(wù)。

* 廣泛的狀態(tài)條件(例如:比較、零檢測、所有個(gè)體檢測、溢出檢測)可以應用到累加器,數據寄存器,以及路由到器件其它地方。

靈活的路由

雖然UDB在PLD和數據通路兩個(gè)子系統都有很多特色,但廣泛的數字路由讓它們如虎添翼。信號可以在PLD和數據通路之間路由,遍及整個(gè)UDB和器件的其它地方,形成了復雜的數字系統互連(DSI)結構。

實(shí)例

本例中,用一個(gè)UDB數據通路來(lái)創(chuàng )建一個(gè)帶重載(reload)功能的8位數字計數器。為了實(shí)現這點(diǎn),連接一個(gè)狀態(tài)條件回到控制存貯SRAM地址線(xiàn),如圖5所示。


圖5:用UDB數據通路創(chuàng )建帶重載功能的計數器。

在這個(gè)設計中,A0是計數寄存器,D0是重載寄存器。需要兩個(gè)函數,一個(gè)用來(lái)遞減計數,一個(gè)從周期寄存器重載計數器;這些函數在控制儲存RAM里預載了。

邏輯如下:當A0不為0時(shí),狀態(tài)輸出將會(huì )變低,在地址0會(huì )執行遞減操作。當A0為0時(shí),狀態(tài)輸出將為高,在地址1會(huì )執行重載操作。

所有操作都發(fā)生在時(shí)鐘輸入的上升沿,可以記錄時(shí)鐘沿數量。時(shí)鐘輸入可以來(lái)自各種時(shí)鐘源。狀態(tài)輸出可以通過(guò)DSI路由,包括到DMA和中斷請求輸入。使用數據通路鏈和掩碼模塊,該計數器的大小可以是任何位數,不受限于8的倍數。

圖5所示為減法計數器。它可以很容易的轉換成加法計數器,可以通過(guò)使用不同的狀態(tài)輸出(A0= =D0)和控制存儲SRAM里的不同函數:A0=A0+1和A0=A0A0。異或任何值的結果永遠為0。

通過(guò)使用PLD這個(gè)簡(jiǎn)單的設計可以創(chuàng )造更復雜的應用。以一個(gè)紅綠燈控制器為例,紅綠燈控制器周期由綠、黃、紅三種狀態(tài)構成,因此需要一個(gè)狀態(tài)機。每個(gè)狀態(tài)變化到下一個(gè)狀態(tài)之前會(huì )持續一定時(shí)間,所以必需有一個(gè)計數器。為了簡(jiǎn)單起見(jiàn),假設“綠燈”時(shí)間和“紅燈”是相同,但“黃燈”時(shí)間不同。

只需要使用3個(gè)數據通路寄存器(假設為8位計數值)就可以實(shí)現這個(gè)時(shí)序結構。A0為計數寄存器,D0為“綠”和“紅”狀態(tài)保持計數器重載值,D1為“黃”狀態(tài)保持計數器重載值。模塊框圖如圖6顯示。


圖6:采用UDB PLD和數據通路構建的紅綠燈控制器框圖

要保存在控制存儲RAM里的操作是:

A0 = A0 - 1 // 計數

A0 = D0 // 重載“綠”或“紅”

// 計數值

A0 = D1 //重載“黃”值

狀態(tài)機在PLD里實(shí)現。數據通路條件輸出反饋到PLD,以表明需要改變狀態(tài)了。PLD也有這樣的邏輯,根據當前的狀態(tài)和從數據通路反饋的信號,控制執行哪個(gè)數據通路操作和哪個(gè)燈要點(diǎn)亮。

超越基礎

紅綠燈控制器是一種簡(jiǎn)單的應用類(lèi)型,通常使用CPU編程。然而,我們已經(jīng)看到,除了初始化代碼,這個(gè)功能可以完全和CPU沒(méi)關(guān)系而可以由智能的可配置外設完成。這個(gè)功能可以很容易地擴展以支持附加需求,例如轉換信號、行人行走信號、車(chē)輛檢測傳感器、流量/緊急事件轉發(fā)器。

CPU需要做什么

通過(guò)使用PLD和數據通路的有效組合,可以創(chuàng )建智能的、靈活的、低成本的外設,以減輕CPU的負擔。然而,如果這么多的功能都由外設處理了,那還留著(zhù)CPU做什么呢?在許多情況下,CPU不需要做很多事,在某些情況下系統初始化后,CPU就可以關(guān)掉了。不過(guò),更實(shí)用的方案是使用CPU做CPU能做得最好的事情,例如:

* 復雜的計算

* 字符串和文本處理

* 數據庫管理

* 通信管理

* 系統管理

例如,在我們的紅綠燈應用中,CPU可以用于以下幾個(gè)方面:

* 檢測車(chē)輛闖紅燈

* 使用相機拍攝牌照

* 從照片上提取車(chē)牌文字信息

* 從國家數據庫中查閱車(chē)主信息,以及向車(chē)主發(fā)送罰單

通過(guò)由智能外設完成很多任務(wù),CPU可以輕松地去做更有價(jià)值的任務(wù)。



關(guān)鍵詞: 微控制器 PLD 外設

評論


相關(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>