SoC微控制器的總線設計
圖2: NS9750原理框圖
為對總線資源進行更精確的控制,這種循環仲裁方案提供兩個附加層次的可編程性能:分配給ARM CPU的總線帶寬大小以及這16個槽位中每個槽位的帶寬利用率。
NS9750的ARM926EJ-S內核作為總線主控時不能控制所有總線資源,缺省情況下它只能控制50%的總線帶寬或16個槽位中的8個,這樣可確保其它五個總線主控可以一直占有至少50%的總線帶寬。不過,在程序設計者直接控制下,它可以按照指令將其部分帶寬釋放給另一個總線主控,或者,在該總線仲裁周期內或程序設計者認為必要的任何周期中控制另外的槽位。
程序設計者也可為每個槽位選擇帶寬利用系數——100%、75%、50%或25%。這一選擇是通過控制何時以及以怎樣的順序分配每個槽位的訪問來實現的,系數為25%,則這個槽位每四個周期只能被輪詢一次;系數為50%,則每兩個周期輪詢一次;75%,則每四個周期輪詢三次。
對旋轉總線仲裁器進行編程
程序設計者可通過包含在系統控制模塊內的幾個寄存器定義多種選項。第一個寄存器是16入口總線請求配置寄存器,它的每一個入口代表一個主控和一個準許槽位的總線請求。每一個請求/準許槽位每次只能分配給一個總線主控,但根據總線主控的帶寬要求,每個總線主控可同時連接多個請求/準許槽位。當多個通道分配給一個主控時,這些通道應均勻分布在這16個通道當中。
每個請求/準許槽位都有一個兩位的帶寬壓縮字段(BRF),用以確定每個槽位能對系統總線進行仲裁的頻率(100%、75%、50%或25%)。BRC將總線請求信號輸出到第二個16入口總線請求寄存器(BRR),默認情況下,BRC中未被分配的槽位將阻止用任何總線請求信號設置相應的BRR入口。
第四個寄存器用于存儲哪個總線主控有數據在等待向AHB傳輸,而第五個寄存器則是程序設計者用來為每個總線請求和準許槽位(分配給特定總線主控)分配權重值。
使用循環仲裁
在前面例子中,當基于特定仲裁再分配調度方案的LCD請求額外的總線訪問時,程序設計者可根據LCD必須處理的數據流的性質來指定分配給LCD的優先級。如果程序設計者認為需要分配10個槽位給LCD控制器,剩余的6個槽位會按最初仲裁方案分配給其它總線主控。這樣LCD控制器可獲得十倍于正常情況下可得到的帶寬,以及十倍于其它主控的帶寬來處理這種特定情形下的負載。
當通過以太網連接傳送數據、同時LCD屏幕進行刷新的時候,這種特性十分重要。LCD需要實時、準確地進行刷新,且不會被以太網請求中斷。
在典型的AMBA總線架構中,如果LCD對總線提出請求,不論有怎樣的刷新需求,它都不得不等待直到以太網主控將總線釋放出來。采用新的循環可編程仲裁方案,程序設計者可降低以太網傳輸的優先級,使數據以更低但可接受的速率傳輸,確保LCD得以適當地刷新而不至于使屏幕出現空白。
如果為保證活動畫面顯示對LCD延時和帶寬要求極高,則以太網協議需求還可進一步降低傳輸速率。但停止數據流傳輸是不可以的。實際上,如果LCD主控控制了該總線并且只有當刷新工作完成后才將總線釋放,則有可能停止數據流的傳輸。
在外圍總線中增加突發模式DMA
在基于AMBA的設計中,外圍總線的傳統設計方法是假定基于ARM內核的嵌入式器件用于低端性能應用。但現在的器件經常需要在不切斷低帶寬外圍電路訪問總線資源的情況下,運行一種或多種高帶寬應用。在具有較多外圍電路的設計中,這種情況特別容易出問題。例如NS9750或NS9360,它們支持USB、I2C,具有四個多功能串行模塊(可選用UART或SPI,同步模式下的速率可達11Mbps)、50個單獨的可編程GPIO引腳、一個IEEE1284外圍端口以及16個通用定時器或計數器(每個都有自己的I/O引腳)。
在傳統的APB實現方案中,采用FIFO就足以應付通信外設(如UART)的低速率傳輸,FIFO可以在處理器必須介入并訪問APB之前將數個字節傳送到接口。但在本文所描述的許多高端嵌入式應用中,一個或多個這樣的外圍電路可能需要高帶寬傳輸,要求能通過APB/AHB橋快速訪問主要的高性能總線。
圖3:NS9xxx的總線架構
評論