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