AHB總線問答
總體:不同的突發(fā)傳輸用在什么地方?
應用于:AHB
通常,主設備在高速緩存行填充的時候使用回環(huán)突發(fā)傳輸,主設備先是想獲取他想要的數(shù)據(jù),然后完成突發(fā)傳輸把剩余的數(shù)據(jù)取出藥用于高速緩存行填充。增量突發(fā)傳輸主要用在像DMA控制器一類的主設備,需要填充一個可能不是地址邊界對齊的存儲器的緩沖區(qū)。
總體:對于從設備而言,應該為HREADY 和HRESP 信號什么樣的默認狀態(tài)?
應用于:AHB
建議HREADY 的默認狀態(tài)為高,并且HRESP 為OKAY 狀態(tài)。這樣的組合能夠保證從設備即使是在低功耗模式下也能對IDLE 傳輸給出正確的響應。
總體:虛擬總線主設備和默認總線主設備之間有什么區(qū)別?
應用于:AHB
默認總線主設備是指系統(tǒng)中沒有主設備在申請總線的時候,總線被分配給的那個主設備。通常情況下,最有可能申請總線的主設備就是默認總線主設備。
虛擬主設備是指只進行IDLE 傳輸?shù)闹髟O備。系統(tǒng)需要虛擬主設備是以便仲裁器能夠保證能夠將總線分配給一個不進行任何實際傳輸?shù)闹髟O備。仲裁器在以下兩種情況下需要這樣做:在一個鎖定傳輸中得到一個SPLIT 響應;在所有其他主設備都已經(jīng)得到SPLIT 響應的情況下,又得到一個SPLIT 響應。
總體:HPROT 信號默認應該是什么值?
應用于:AHB
許多主設備不能產生準確的保護信息,那么對于這些主設備,HPROT 信號默認應該表示為:Non-cacheable, Non-bufferable, Privileged, Data Accesses,也就是HPROT[3:0] = 4b0011。
總體:AHB 信號在復位時是什么狀態(tài)?
應用于:AHB
AHB 規(guī)范中指出在復位時,總線信號應該是一個確定的有效的值。簡單的理解就是信號應該是邏輯‘0’或‘1’,而不是高阻態(tài)Hi-Z。實際應該是什么樣的有效的值要取決于設計者。HTRANS 信號是唯一一個在復位時確定的信號,它將強制為IDLE。
同時,HREADY 信號在復位時保持高電平也很重要。如果所有的系統(tǒng)從設備在復位時驅動HREADY 信號為高,這將保證這是情況正常。但是,如果存在從設備在復位的時候不是驅動HREADY 為高的,應該保證復位時選中的那個從設備需要驅動HREADY 為高。
總體:主設備應該在什么時候重建被提前結束的突發(fā)傳輸?有哪些限制它如何重建突發(fā)傳輸?
應用于:AHB
唯一的限制就是主設備應該使用有效的突發(fā)傳輸組合來重建剩下的突發(fā)傳輸。例如:如果一個主設備要進行一次8 拍的突發(fā)傳輸,但是在傳輸3 拍之后就失去了總線控制權,那么剩下的5 拍傳輸可以使用1 拍SINGLE 突發(fā)傳輸加一次4 拍的INCR4 傳輸,或者也可以使用5 拍的未定義長度INCR 突發(fā)傳輸。
為了簡單,建議主設備使用INCR 突發(fā)傳輸去完成剩下的傳輸。
總體:為什么一次突發(fā)傳輸不允許跨域1 kbyte 邊界?
應用于:AHB
如果AHB 從設備在突發(fā)傳輸開始的時候采樣到HSELx 信號,它就會知道它將在整個突發(fā)傳輸過程中都被選擇。同樣的,對于在突發(fā)傳輸開始的時候沒有被選擇的從設備也知道它在下一次突發(fā)傳輸之前都不會被選擇到。
1 kbyte 是AHB 從設備在存儲器空間分配中可以占據(jù)的最小空間。因此,如果一個突發(fā)傳輸跨越了1 kbyte 邊界,那么訪問可能是開始的時候訪問一個從設備而后的傳輸又轉向另一個從設備,而根據(jù)上述原因,這是不允許發(fā)生的。
選擇1 kbyte 邊界是因為它對于一個合理的突發(fā)傳輸已經(jīng)足夠大,但是對于那些可以對其到1 kbyte 空間而無需使用太多的可用內存空間的外設來說又太小。
如何將一個AHB 主設備連到一個AHB-lite
應用于:AHB
AHB-lite
由于AHB-lite
全功能AHB 主設備是在鎖定傳輸?shù)牡刂穫鬏斚辔恢膀寗親LOCK 信號的,并且通常是經(jīng)由仲裁模塊重現(xiàn)返回到全功能主設備以產生HMASTLOCK 信號,這將是和地址傳輸相位對其的。
下面的Verilog 代碼可以用來產生 AHB LOCK ->
always @( negedge HRESETn or posedge HCLK ) begin
end
下面的例子顯示了可以在總線上產生的HTRANS 傳輸順序:
一個普通的4 拍突發(fā)傳輸跟一個IDLE 傳輸。
N - S - S - S - I
一個帶有BUSY 傳輸?shù)钠胀? 拍突發(fā)傳輸。
N - S - B - S - B - S - I
一個4
N - S - S - S - N - S - S - S - I
一個單次傳輸跟一個4 拍的突發(fā)傳輸。
N - N - S - S - S - I
一個單次傳輸跟一個IDLE 傳輸。
N - I
一個帶有BUSY 傳輸?shù)奈炊x長度突發(fā)傳輸。
N - B - S - B - S - B - I
一個帶有BUSY 傳輸?shù)奈炊x長度突發(fā)傳輸緊跟著另一個突發(fā)傳輸。
N - B - S - B - S - B - N - S
如何將一個AHB 從設備連到一個AHB-lite
應用于:AHB
只要從設備不產生SPLIT 或者RETRY 響應,那么AHB 從設備和AHB-lite是兼容的,可以之間連接。
如果AHB 從設備需要產生RETRY 響應,那么需要一個Ahb2Ahb 橋接器(在ARM AMBA Design Kit(ADK)中有幾個例子)連接AHB 從設備和AHB-lite系統(tǒng)。這個Ahb2Ahb 能夠本地支持RETRY 響應,并保持AHB-lite
如果AHB 從設備需要支持SPLIT 響應,那么不僅需要上面支持RETRY 響應用到的Ahb2Ahb 橋接器,還需要一個本地虛擬主設備和一個仲裁器。SPLIT 響應需要仲裁器將總線分配給兩一個主設備,所以需要一個虛擬主設備放在本地全功能AHB 總線上去驅動IDLE 傳輸,只到從設備可以去完成SPLIT 傳輸。
AHB 和AHB-lite
應用于:AHB
AHB-lite
這樣的簡化移除了仲裁邏輯所需要的信號,HBUSREQ 信號和HGRANT 信號,并且HRESP 信號只需要1 位,SPLIT 和RETRY 從設備響應只用在對多主設備的支持上。
移除任何仲裁邏輯同時意味著AHB 主設備HLOCK 輸出信號需要會發(fā)給與地址傳輸相位對其的HMASTLOCK 信號(通常由AHB 仲裁器完成的功能)。
AMBA 系統(tǒng)鎮(zhèn)中復位信號應該維持多少個周期?
應用于:AHB,APB
建議系統(tǒng)上的主設備組件和從設備組件應該在復位請求大于1 或者2 個周期時清除狀態(tài)。同時建議系統(tǒng)設計者應該維持復位信號至少16 個周期,除非知道有主設備組件或者從設備組件需要更長周期的復位請求。
AHB 怎樣處理鎖定傳輸中的SPLIT 響應?
應用于:AHB
如果一個傳輸中受到SPLIT 響應,那么仲裁器就會奪回被SPLIT 的主設備的總線使用權并該主設備將不會再參與仲裁,直到從設備表示傳輸可以完成。如果一次訪問是鎖定的,那么該次訪問就不能被其它主設備的訪問所打斷。
AHB 系統(tǒng)在處理這兩種需求同時發(fā)生的情況只有一條途徑,那就是將總線分配給“虛擬主設備”。虛擬主設備只進行IDLE 傳輸,這在鎖定傳輸中式允許的,如果將總線分配給其它任何主設備都將違背鎖定傳輸協(xié)議,如果仲裁器忽略SPLIT 相同將違背SPLIT 協(xié)議,所以虛擬主設備是唯一的選擇。
虛擬主設備同時用在所有主設備都收到SPLIT 響應的情況下(虛擬主設備不能接受SPLIT 響應)。
建議支持split 的從設備的設計者能確保從設備監(jiān)聽HMASTLOCK 輸入信號,以便在鎖定傳輸中不返回SPLIT 響應,應為那樣也是無濟于事的。
SPLIT/RETRY:SPLIT 和RETRY 響應可以在突發(fā)傳輸中的任何時候給出嗎?
應用于:AHB
是的,從設備可以在突發(fā)傳輸中的任何一次傳輸給出SPLIT,RETRY,ERROR 響應。從設備被沒有限制只能在第一次傳輸給出這些響應。
SPLIT/RETRY:從設備可以在給出SPLIT 響應的同一個周期拉高HSPLITx 信號嗎?
應用于:AHB
不可以。規(guī)范中要求HSPLITx 信號只能在給出SPLIT 響應之后被拉高。
SPLIT/RETRY:從設備可以同時使用SPLIT 和RETRY 響應嗎?
應用于:AHB
通常,從設備并不同時使用SPLIT 和RETRY 響應。對于那些可能同時被多個不同的主設備訪問的從設備都應該使用SPLIT 響應。RETRY 響應主要用在只被一個主設備訪問的外設中。
SPLIT/RETRY:所有的主設備都應該支持SPLIT 和RETRY 嗎?
應用于:AHB
是的。所有主設備都必須支持SPLIT 和RETRY 響應,以確保它們能夠和任何的從設備兼容。主設備處理SPLIT 和RETRY 響應的方式都是一樣的。
注意:如果系統(tǒng)是基于AHB-lite的,SPLIT 和RETRY 響應都是不支持的。AHB-lite
SPLIT/RETRY:所有的從設備都應該支持SPLIT 和RETRY 嗎?
應用于:AHB
不是的。從設備只需要支持它需要使用的響應類型。例如:一個簡單的片上存儲器模塊可以在僅僅一個等待狀態(tài)后就能夠響應所有的傳輸,那么它就不需要SPLIT 和RETRY 響應。
SPLIT/RETRY:在SPLIT 響應或RETRY 響應之后的IDLE 傳輸中,應該在總線上給出什么地址?
應用于:AHB
其實在這個傳輸周期中,總線上是什么地址信號并沒有什么影響。被選擇的不應該有任何行為,并且必須給出零等待的OKAY 響應。
在許多情況下,主設備保持地址信號不變將會更簡單,地址信號保持主設備想要進行的下一次傳輸?shù)牡刂凡蛔?,并只在下一次傳輸返回那個因為SPLIT 或是RETRY 響應而必須重新進行的傳輸?shù)牡刂飞稀?p>在一些設計上,主設備可能是在IDLE 傳輸周期中返回到那個需要重傳的地址上,這個當然也是完全可以接受的。
SPLIT/RETRY:SPLIT 和RETRY 響應有什么不同?
應用于:AHB
SPLIT 和RETRY 響應都被從設備在需要很多周期才能完成傳輸時使用的。這些響應允許數(shù)據(jù)傳輸表現(xiàn)出完成,以避免總線停頓,但是這也同時表示傳輸應該在下一次獲得總線的時候重新嘗試上一次傳輸。
它們兩者的不同在于:SPLIT 響應告訴仲裁器可以將總線使用優(yōu)先級交給所有其他主設備直到SPLIT 傳輸可以結束(實際上是忽略該主設備以后所有的傳輸請求直到發(fā)出SPLIT 的那個從設備表示它可以完成SPLIT 傳輸),而RETRY 響應僅僅告訴仲裁器將總線使用權交給最高優(yōu)先級的主設備。
SPLIT 響應比RETRY 響應實現(xiàn)起來更復雜,但是它的優(yōu)勢在于允許最有效的使用總線帶寬。
主設備在SPLIT 和RETRY 響應上相同的行為,主設備應該放棄下一次傳輸并重新嘗試當前訪問失敗的訪問。
SPLIT/RETRY:當AHB 主設備在在突發(fā)傳輸中間接收到從設備的RETRY 響應時,應該在HTRANS 上使用什么信號?
應用于:AHB
傳輸無論在何時重新發(fā)起的時候,它必須設置HTRANS 為NONSEQ,并且需要根據(jù)需求調整HBURST 信息(通常值表示INCR)。
SPLIT/RETRY:主設備可能會在SPLIT 響應之后永遠失去總線嗎?
應用于:AHB
是的。所以從設備必須不能在給出SPLIT 響應的同一個周期拉該HSPLIT 的相應位,這樣的話主設備會永遠失去總線。
總體:AHB 轉APB 橋如何處理不是32-bit 的訪問?
應用于:AHB、APB
橋接器只應該簡單的傳輸完整的32-bit 的數(shù)據(jù)。需要注意如果向APB 從設備進行少于32-bit 的數(shù)據(jù)傳輸,確保設備在APB 總線上正確的位置很重要。
總體:為什么在APB 上沒有等待信號?
應用于:APB
APB 在設計上是盡可能的有簡單的接口。擁有這樣簡單的設計使得在連接一個新的APB 設備的時候更加簡單,并且在分析計算系統(tǒng)性能的時候更簡單。
雖然很多APB 設備是低速設備,像是UART,它們通常通過控制寄存器訪問的。通常設備驅動程序首先會訪問狀態(tài)寄存器確定它是否空閑,然后才會去去訪問數(shù)據(jù)寄存器。這樣的兩個操作都可以不需要附加的等待狀態(tài),因此外設可以作為一個APB 設備而被訪問。
如果確是需要等待狀態(tài)的外設,可以設計成AHB 從設備,在很少數(shù)情況下,如果設計需要包括很多這樣的外設,那么可以使用第二級AHB 總線以減輕主系統(tǒng)總線的負荷。
評論