PLD和數(shù)據(jù)通路來(lái)釋放微控制器中CPU資源
雖然UDB在PLD和數(shù)據(jù)通路兩個(gè)子系統(tǒng)都有很多特色,但廣泛的數(shù)字路由讓它們?nèi)缁⑻硪?。信?hào)可以在PLD和數(shù)據(jù)通路之間路由,遍及整個(gè)UDB和器件的其它地方,形成了復(fù)雜的數(shù)字系統(tǒng)互連(DSI)結(jié)構(gòu)。
實(shí)例
本例中,用一個(gè)UDB數(shù)據(jù)通路來(lái)創(chuàng)建一個(gè)帶重載(reload)功能的8位數(shù)字計(jì)數(shù)器。為了實(shí)現(xiàn)這點(diǎn),連接一個(gè)狀態(tài)條件回到控制存貯SRAM地址線,如圖5所示。
圖5:用UDB數(shù)據(jù)通路創(chuàng)建帶重載功能的計(jì)數(shù)器。
在這個(gè)設(shè)計(jì)中,A0是計(jì)數(shù)寄存器,D0是重載寄存器。需要兩個(gè)函數(shù),一個(gè)用來(lái)遞減計(jì)數(shù),一個(gè)從周期寄存器重載計(jì)數(shù)器;這些函數(shù)在控制儲(chǔ)存RAM里預(yù)載了。
邏輯如下:當(dāng)A0不為0時(shí),狀態(tài)輸出將會(huì)變低,在地址0會(huì)執(zhí)行遞減操作。當(dāng)A0為0時(shí),狀態(tài)輸出將為高,在地址1會(huì)執(zhí)行重載操作。
所有操作都發(fā)生在時(shí)鐘輸入的上升沿,可以記錄時(shí)鐘沿?cái)?shù)量。時(shí)鐘輸入可以來(lái)自各種時(shí)鐘源。狀態(tài)輸出可以通過DSI路由,包括到DMA和中斷請(qǐng)求輸入。使用數(shù)據(jù)通路鏈和掩碼模塊,該計(jì)數(shù)器的大小可以是任何位數(shù),不受限于8的倍數(shù)。
圖5所示為減法計(jì)數(shù)器。它可以很容易的轉(zhuǎn)換成加法計(jì)數(shù)器,可以通過使用不同的狀態(tài)輸出(A0= =D0)和控制存儲(chǔ)SRAM里的不同函數(shù):A0=A0+1和A0=A0A0。異或任何值的結(jié)果永遠(yuǎn)為0。
通過使用PLD這個(gè)簡(jiǎn)單的設(shè)計(jì)可以創(chuàng)造更復(fù)雜的應(yīng)用。以一個(gè)紅綠燈控制器為例,紅綠燈控制器周期由綠、黃、紅三種狀態(tài)構(gòu)成,因此需要一個(gè)狀態(tài)機(jī)。每個(gè)狀態(tài)變化到下一個(gè)狀態(tài)之前會(huì)持續(xù)一定時(shí)間,所以必需有一個(gè)計(jì)數(shù)器。為了簡(jiǎn)單起見,假設(shè)“綠燈”時(shí)間和“紅燈”是相同,但“黃燈”時(shí)間不同。
只需要使用3個(gè)數(shù)據(jù)通路寄存器(假設(shè)為8位計(jì)數(shù)值)就可以實(shí)現(xiàn)這個(gè)時(shí)序結(jié)構(gòu)。A0為計(jì)數(shù)寄存器,D0為“綠”和“紅”狀態(tài)保持計(jì)數(shù)器重載值,D1為“黃”狀態(tài)保持計(jì)數(shù)器重載值。模塊框圖如圖6顯示。
圖6:采用UDB PLD和數(shù)據(jù)通路構(gòu)建的紅綠燈控制器框圖
要保存在控制存儲(chǔ)RAM里的操作是:
A0 = A0 - 1 // 計(jì)數(shù)
A0 = D0 // 重載“綠”或“紅”
// 計(jì)數(shù)值
A0 = D1 //重載“黃”值
狀態(tài)機(jī)在PLD里實(shí)現(xiàn)。數(shù)據(jù)通路條件輸出反饋到PLD,以表明需要改變狀態(tài)了。PLD也有這樣的邏輯,根據(jù)當(dāng)前的狀態(tài)和從數(shù)據(jù)通路反饋的信號(hào),控制執(zhí)行哪個(gè)數(shù)據(jù)通路操作和哪個(gè)燈要點(diǎn)亮。
超越基礎(chǔ)
紅綠燈控制器是一種簡(jiǎn)單的應(yīng)用類型,通常使用CPU編程。然而,我們已經(jīng)看到,除了初始化代碼,這個(gè)功能可以完全和CPU沒關(guān)系而可以由智能的可配置外設(shè)完成。這個(gè)功能可以很容易地?cái)U(kuò)展以支持附加需求,例如轉(zhuǎn)換信號(hào)、行人行走信號(hào)、車輛檢測(cè)傳感器、流量/緊急事件轉(zhuǎn)發(fā)器。
評(píng)論