AHB總線問答
應(yīng)用于:AHB
本文引用地址:http://2s4d.com/article/201612/330392.htmAHB規(guī)范中要求所有在地址傳輸相位內(nèi)的控制(除了HADDR和HTRANS)在突發(fā)傳輸周期中保持穩(wěn)定。
盡管HLOCK信號不是一個地址傳輸相位內(nèi)的信號,但是它卻直接控制HMASTLOCK信號,而該信號是在地址傳輸相位的。
所以HLOCK信號必須在整個突發(fā)傳輸周期中維持為高,并且只能在最后一個地址傳輸相位之后改變,HMASTLOCK信號隨之改變。
仲裁:主設(shè)備可以在被分配到總線而有不需要使用總線的時候進(jìn)行一個不是IDLE的傳輸嗎?
應(yīng)用于:AHB
是的。主設(shè)備可以在被分配到總線而有不需要使用總線的時候進(jìn)行一個不是IDLE的傳輸。但是請注意,在這種情況下任然建議主設(shè)備繼續(xù)維持請求信號,以便仲裁器不會在傳輸過程中將總線使用權(quán)分配給另一個優(yōu)先級更低的主設(shè)備。
仲裁:如果一個主設(shè)備當(dāng)前被默認(rèn)分配到了總線使用權(quán),那么它在開始一個非IDLE傳輸之前需要維持HBUSREQ多少個周期?
應(yīng)用于:AHB
不需要。主設(shè)備可以立即開始一次非IDLE傳輸。
仲裁:HLOCK信號和HMASTLOCK信號之間有什么關(guān)系?
應(yīng)用于:AHB
在每個傳輸周期中的地址傳輸相位開始的時候,仲裁器都會對將要驅(qū)動地址信號線的主設(shè)備的HLOCK信號采樣,如果HLOCK信號在此時有效那么仲裁器就會拉高HMASTLOCK并維持整個傳輸周期中的地址傳輸相位階段。
仲裁:HGRANT信號可以在什么什么改變?
應(yīng)用于:AHB
HGRANT信號可以在任意周期改變,并有可能是一下幾種情況:
- HGRANT信號有效,然后在當(dāng)前傳輸周期完成之前移除。這是有可能的并且是允許的,因為HGRANT信號只在HREADY信號為高的時候被主設(shè)備采樣。
- 主設(shè)備可以不需要申請而得到總線使用權(quán)。
- 以上兩點(diǎn)意味著主設(shè)備可能在申請總線的同時獲得總線使用權(quán)。這發(fā)生在在主設(shè)備在同一個周期申請總線并同時被仲裁器分配總線使用權(quán)。
仲裁:為什么HADDR信號有時候是仲裁器的輸入信號?
應(yīng)用于:AHB
地址總線,HADDR,本是不需要作為仲裁器的輸入信號的,但是在有些設(shè)計中卻可以用于幫助仲裁器決定改變總線使用權(quán)的恰當(dāng)時機(jī)。例如,仲裁器可以設(shè)計成當(dāng)突發(fā)傳輸?shù)竭_(dá)4字邊界的時候改變總線使用權(quán)。
仲裁器可以設(shè)計成總是允許突發(fā)傳輸完成嗎?
應(yīng)用于:AHB
應(yīng)用于:AMBA AHB
從設(shè)備給出SPLIT,RETRY 或ERROR 響應(yīng)總會引起突發(fā)傳輸提前結(jié)束,而這是不受仲裁器控制的,因此(仲裁器)必須予以支持。
未定義長度的INCR 突發(fā)傳輸?shù)慕Y(jié)束點(diǎn)并不能預(yù)測到,所以還沒有有效的方法設(shè)計仲裁器以保證在將總線授予另一個主設(shè)備時突發(fā)傳輸已經(jīng)結(jié)束。
定長的INCRx 和WRAPx突發(fā)傳輸能夠計數(shù)它們傳輸?shù)墓?jié)拍,所以仲裁器可以允許他們傳輸結(jié)束。但是由于AHB仲裁的同步時序,所以沒有辦法避免在突發(fā)傳輸?shù)谝淮蝹鬏敯l(fā)起之后就立即結(jié)束突發(fā)傳輸?shù)目赡苄浴?/p>
仲裁器只有通過對HBURST 信號的采樣才知道一個定長的突發(fā)傳輸正在進(jìn)行。但是HBURST 信號第一次可以被采樣到的店是在突發(fā)傳輸?shù)谝还?jié)拍的第一個時鐘周期之后,而在那時,仲裁器很可能已經(jīng)決定將總線授予另一個主設(shè)備并相應(yīng)要改變HGRANT 信號。在這種情況下,只有一條從HBURST 到HGRANT 的組合路徑能夠幫助及時檢測到突發(fā)傳輸以避免提前結(jié)束,但是組合路徑在AHB 總線中是不允許的。
主設(shè)備應(yīng)該在一個鎖定傳輸中什么時候拉高是釋放HLOCK 信號?
應(yīng)用于:AHB
在一個鎖定傳輸中,HLOCK 信號必須至少在地址傳輸相位之前一個周期拉高。這樣才能保證仲裁器在地址傳輸相位開始的時候,采樣到的HLOCK 信號為高。
主設(shè)備應(yīng)該在鎖定傳輸中最后一次傳輸?shù)牡刂穫鬏斚辔话l(fā)起之后釋放HLOCK 信號。
主設(shè)備應(yīng)該在什么時候釋放HBUSREQ 信號?
應(yīng)用于:AHB
對于一個未定義長度的突發(fā)傳輸(INCR),主設(shè)備必須保持HBUSREQ 信號為高一直到突發(fā)傳輸中的最后一次傳輸?shù)牡刂穫鬏斚辔话l(fā)起之后。這將意味著如果倒數(shù)第二次傳輸是一個零等待狀態(tài),那么主設(shè)備可能會在未定義長度突發(fā)傳輸之后還被授予總線都多一次額外的傳輸。
對于定長突發(fā)傳輸,主設(shè)備可以在第一次獲得總線發(fā)起傳輸之后就釋放HBUSREQ 信號。只所以可以這樣做是因為仲裁器能夠?qū)ν话l(fā)傳輸中的傳輸節(jié)拍計數(shù)并保持主設(shè)備一直被授予總線知道突發(fā)傳輸?shù)慕Y(jié)束。
但是,仲裁器并沒有強(qiáng)制要求必須允許突發(fā)傳輸?shù)慕Y(jié)束。所以,如果仲裁器在突發(fā)傳輸結(jié)束之前就改變了HGRANT 信號,那么主設(shè)備必須再次拉高HBUSREQ 信號。
仲裁器在一次鎖定傳輸之后什么時候會將總線授予另一個主設(shè)備?
應(yīng)用于:AHB
仲裁器總會授予主設(shè)備在鎖定傳輸周期之后一個額外的傳輸,所以主設(shè)備能夠保證在鎖定傳輸周期之后HMASTLOCK 信號為低的時候執(zhí)行一次傳輸。而這恰巧又是在鎖定傳輸?shù)淖詈笠淮蝹鬏數(shù)臄?shù)據(jù)相位上。
此時,仲裁器可以將改變HGRANT 信號授予另一個主設(shè)備,但是如果在最后一次鎖定傳輸?shù)臄?shù)據(jù)相位上收到一個RETRY 響應(yīng),那么仲裁器將會繼續(xù)驅(qū)動HGRANT 信號以確保那個執(zhí)行鎖定傳輸?shù)闹髟O(shè)備繼續(xù)獲得總線;如果在最后一次鎖定傳輸?shù)臄?shù)據(jù)相位上收到一個SPLIT 響應(yīng),那么仲裁器將會將總線授予一個虛擬的主設(shè)備。
總體:對于一個允許斷電或者時鐘停止的從設(shè)備,需要什么樣的系統(tǒng)支持?
應(yīng)用于:AHB
如果系統(tǒng)視圖訪問一個斷電的或者時鐘停止的從設(shè)備,你必須確保這次訪問能夠喚醒電源供電或恢復(fù)時鐘,或者配置AHB 譯碼器所有這種類型的訪問重定向到一個虛擬從設(shè)備,這樣以避免系統(tǒng)訪問一個無效的從設(shè)備時永遠(yuǎn)等停在那里。
這種方式的重定向需要確保隨機(jī)IDLE
總體:什么時候可以發(fā)生突發(fā)傳輸提前結(jié)束?
應(yīng)用于:AHB
突發(fā)傳輸提前結(jié)束或是因為仲裁器在突發(fā)傳輸過程中改變HGRANT 信號,或是因為從設(shè)備在任一傳輸節(jié)拍中給出非OKAY 響應(yīng)。注意雖然主設(shè)備不能決定一個定長的突發(fā)傳輸直到主設(shè)備被仲裁器或者從設(shè)備提示要這樣做。
所有的AHB 主設(shè)備,從設(shè)備和仲裁器都必須設(shè)計成支持突發(fā)傳輸提前結(jié)束。
總體:HTRANS 信號可以在HREADY 為低時改變嗎?
應(yīng)用于:AHB
一般來說,AHB 主設(shè)備不應(yīng)該在HREADY 信號為低的時候改變控制信號,但是在以下情況,允許改變HTRANS 信號:
- HTRANS = IDLE
AHB 主設(shè)備在執(zhí)行一個內(nèi)部操作并且沒有發(fā)起一次總線傳輸。但是在AHB 等待狀態(tài)下(HREADY 為低),主設(shè)備可能會決定需要一次總線傳輸然后在下一個周期將HTRANS 改為NONSEQ。
- HTRANS = BUSY
HTRANS 在此時正是給予主設(shè)備一定時間以完成其內(nèi)部操作,而這可能是與HREADY 信號無關(guān)的(例如,AHB 中的等待狀態(tài))。因此HTRANS 信號可以在下一個周期改變?yōu)槿我夂戏ǖ闹?,如,在突發(fā)傳輸需要繼續(xù)時改為SEQ,在突發(fā)傳輸結(jié)束時改為IDLE,在需要發(fā)起一個單獨(dú)的傳輸時改為NONSEQ。
- HRESP = SPLIT/RETRY
正如AHB 規(guī)范中所述,主設(shè)備必須在雙周期響應(yīng)SPLIT和RETRY的第二個周期保持HTRANS為IDLE,所以HTRANS 會在第二個周期中從第一個周期中的值改變?yōu)镮DLE。
- HRESP = ERROR
主設(shè)備允許在回應(yīng)ERROR 響應(yīng)時改變HTRANS 信號,就像回應(yīng)SPLIT/RETRY響應(yīng)一樣,并且取消當(dāng)前突發(fā)傳輸中的后續(xù)傳輸(即使HTRANS當(dāng)前表示的是定長突發(fā)傳輸)。在這種情況下,HTRANS 信號在第響應(yīng)的二個周期改變?yōu)镮DLE。或者主設(shè)備也可以允許繼續(xù)當(dāng)前傳輸。
總體:BUSY 傳輸可以發(fā)生在突發(fā)傳輸之后嗎?
應(yīng)用于:AHB
BUSY 傳輸只能發(fā)生在不定長突發(fā)傳輸(INCR)的結(jié)束。
BUSY 傳輸不能發(fā)生在定長突發(fā)傳輸(SINGLE,INCR4,WAP4,INCR8,WAP8,INCR16,WAP16)的結(jié)束。
總體:主設(shè)備可以在傳輸?shù)却懈淖兊刂泛涂刂菩盘枂幔?/p>
應(yīng)用于:AHB
可以的。如果地址和控制信號表示的是一個IDLE 傳輸,那么主設(shè)備可以在HREADY 為低的時候?qū)鬏敻臑橐粋€真正的傳輸(NONSEQ)。
但是如果主設(shè)備當(dāng)前正表示一個真正的傳輸(NONSEQ或者SEQ),那么主設(shè)備不能在傳輸?shù)却腥∠@次傳輸,除非主設(shè)備接收到SPLIT。RETRY或者ERROR 響應(yīng)。
總體:AHB 主設(shè)備可以直接連到AHB 從設(shè)備嗎?
應(yīng)用于:AHB
任何不支持SPLIT 響應(yīng)的從設(shè)備都可以直接連到AHB 主設(shè)備上。如果從設(shè)備確實(shí)有使用SPLIT 響應(yīng),那么一個簡化版的中采取還是需要的。
如果一個AHB 主設(shè)備直接連到AHB 從設(shè)備,那么必須確保從設(shè)備在復(fù)位的時候維持HREADY 信號為高,并且從設(shè)備選擇信號HSEL 永遠(yuǎn)維持為高。
總體:所有的從設(shè)備都必須支持BUSY 傳輸類型嗎?
應(yīng)用于:AHB
是的。所有從設(shè)備都必須支持BUSY 傳輸類型以確保它能夠與任何主設(shè)備兼容。
總體:地址必須對齊嗎?即使是IDLE 傳輸?
應(yīng)用于:AHB
是的。地址應(yīng)高根據(jù)傳輸寬度(HSIZE)對齊,即使是IDLE 傳輸。這會避免在仿真的時候,總線監(jiān)視器發(fā)出的警告。
總體:在AHB 系統(tǒng)中可以支持多少個主設(shè)備?
應(yīng)用于:AHB
AHB 規(guī)范中提供了最多16 個主設(shè)備,然而,這還包括一個虛擬主設(shè)備,即真正的總線主設(shè)備最多之后15 個。習(xí)慣上總線主機(jī)號0 被分配給虛擬總線主機(jī)。
總體:AHB到APB的橋接器如何處理不是32-bits 的訪問?
應(yīng)用于:AHB,APB
橋接器應(yīng)該簡單的將整個32-bit 的數(shù)據(jù)都傳輸過去。但是請注意,當(dāng)進(jìn)行小于32-bit的數(shù)據(jù)傳輸時,確保外設(shè)正處在APB 數(shù)據(jù)總線上的正確比特位上。
總體:HREADY 信號是從設(shè)備的輸入信號還是輸出信號?
應(yīng)用于:AHB
AHB 從設(shè)備必須將HREADY 信號既作為輸入信號又作為輸出信號。
從設(shè)備需要輸出HREADY 信號以便能夠擴(kuò)展傳輸中的數(shù)據(jù)傳輸相位。
從設(shè)備同時需要將HREADY 信號作為一個輸入信號,以便能夠判斷上一次選擇的從設(shè)備在什么時候完成它的最后一次傳輸,以及當(dāng)前從設(shè)備的數(shù)據(jù)傳輸相位即將開始。
每一個AHB 從設(shè)備都應(yīng)該有一個HREADY 輸出信號(習(xí)慣上命名為HREADYOUT)連接到從設(shè)備—主設(shè)備多路器上多路器的輸出信號就是全局HREADY 信號,它將連接到AHB 系統(tǒng)上的所有主設(shè)備并且同時作為HREADY 輸入信號反饋輸入到所有的從設(shè)備。
總體:默認(rèn)從設(shè)備真的需要嗎?
應(yīng)用于:AHB
如果整個4G byte空間都被定義使用到了,那么默認(rèn)從設(shè)備是不需要的。但是,如果在整個存儲地址空間分配上存在未定義的區(qū)域,那么確保在訪問不存在的地址空間時AHB 系統(tǒng)不會發(fā)生死鎖是很重要的。默認(rèn)主設(shè)備的功能是非常簡單的,并且同時在譯碼器中就實(shí)現(xiàn)了。
總體:虛擬主設(shè)備真的需要嗎?
應(yīng)用于:AHB
任何存在支持SPLIT 響應(yīng)的從設(shè)備的AHB 系統(tǒng)都是需要有虛擬主設(shè)備的。應(yīng)為如果所有其它主設(shè)備都接收到了SPLIT 響應(yīng),那么系統(tǒng)會將總線使用權(quán)分配給虛擬主設(shè)備。
虛擬主設(shè)備中不需要什么邏輯,它的實(shí)現(xiàn)只需要簡單的將其輸入信號連接到地址/控制多路器的虛擬主機(jī)位置。虛擬主機(jī)需要驅(qū)動HTRANS 為IDLE,HLOCK 為低,所有其它主設(shè)備輸出信號驅(qū)動為合法狀態(tài)。
總體:主設(shè)備在擴(kuò)展的傳輸中可以改變HADDR 嗎?
應(yīng)用于:AHB
如果主設(shè)備表示它想進(jìn)行NOSEQ,SEQ 或者BUSY 傳輸,那么它就不允許在擴(kuò)展的傳輸中(當(dāng)HREADY 為低時)改變地址總線上的值,除非它接收到了ERROR,RETRY 或者SPLIT 響應(yīng)。如果主設(shè)備表示它想進(jìn)行一個IDLE 傳輸,那么它可以改變地址信號。
總體:有規(guī)定需要HPROT,HSIZE 和HWRITE 信號在突發(fā)傳輸中需要保持恒定嗎?
應(yīng)用于:AHB
是的,控制信號必須在整個突發(fā)傳輸中都要保持恒定。
總體:規(guī)范里面建議只有16個等待狀態(tài),如果需要16個以上的等待周期該怎么做?
應(yīng)用于:AHB
對于一些從設(shè)備而言,16個以上的等待周期是可以接受的。例如,一個串行的ROM,它只在系統(tǒng)商店初始化的時候會被訪問時會插入大量的等待狀態(tài),但是在系統(tǒng)完成上電初始化之后,它并不影響系統(tǒng)性能和延時的計算。
對于另一些從設(shè)備,存在多項選擇。SPLIT 或者RETRY 響應(yīng)可以用于表示從設(shè)備暫時還不能執(zhí)行數(shù)據(jù)傳輸請求,或者從設(shè)備被訪問時,給出一個中斷響應(yīng),或者在查詢一個狀態(tài)寄存器之后能訪問。這兩種情況都表示從設(shè)備不能夠在可接受的等待周期中給出應(yīng)答。
評論