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