新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PLD和數據通路來釋放微控制器中CPU資源

        PLD和數據通路來釋放微控制器中CPU資源

        作者: 時間:2011-11-17 來源:網絡 收藏
        靈活的路由

        本文引用地址:http://www.104case.com/article/150055.htm

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

          實例

          本例中,用一個UDB來創建一個帶重載(reload)功能的8位數字計數器。為了實現這點,連接一個狀態條件回到控制存貯SRAM地址線,如圖5所示。

          

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

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

          邏輯如下:當A0不為0時,狀態輸出將會變低,在地址0會執行遞減操作。當A0為0時,狀態輸出將為高,在地址1會執行重載操作。

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

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

          通過使用這個簡單的設計可以創造更復雜的應用。以一個紅綠燈為例,紅綠燈周期由綠、黃、紅三種狀態構成,因此需要一個狀態機。每個狀態變化到下一個狀態之前會持續一定時間,所以必需有一個計數器。為了簡單起見,假設“綠燈”時間和“紅燈”是相同,但“黃燈”時間不同。

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

          

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

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

          A0 = A0 - 1 // 計數

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

          // 計數值

          A0 = D1 //重載“黃”值

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

          超越基礎

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

          



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昌邑市| 景东| 金坛市| 泰来县| 东丰县| 涞源县| 敖汉旗| 大同县| 孟州市| 尼勒克县| 南雄市| 灌阳县| 高碑店市| 梁平县| 温宿县| 元江| 翁牛特旗| 巧家县| 和田县| 喜德县| 古浪县| 紫云| 凭祥市| 娱乐| 三都| 饶平县| 盐城市| 黑河市| 镇原县| 怀宁县| 乌拉特前旗| 伊通| 武穴市| 临泉县| 鸡泽县| 怀宁县| 云龙县| 胶州市| 吴旗县| 通道| 巴林右旗|