1.前言
相信很多朋友對(duì)AMBA都比較熟悉了,對(duì)AHB總線也不陌生,在AHB總線中,hready這個(gè)信號(hào)是最難理解,最容易搞錯(cuò),也是系統(tǒng)調(diào)試的過(guò)程中出問(wèn)題最多的地方之一,同時(shí)也是很多面試官最喜歡問(wèn)的知識(shí)點(diǎn)之一。本文做一個(gè)梳理,幫助大家徹底理解這個(gè)知識(shí)點(diǎn)。
2.理解一下hready和hready_out的含義
我們先看一個(gè)簡(jiǎn)單的場(chǎng)景,就是系統(tǒng)中只有一個(gè)AHB Slave的場(chǎng)景。
下圖是AHB2協(xié)議中的一張截圖,其中hready作為Slave發(fā)給Master的握手信號(hào),它表明AHB總線上該筆傳輸?shù)耐瓿?。AHB Slave的HREADY信號(hào)是Slave“延長(zhǎng)”AHB傳輸?shù)臄?shù)據(jù)階段的指示。如果Slave不能立即響應(yīng),通常會(huì)發(fā)生這種情況,因此該Slave將HREADY信號(hào)拉低,以通知Master延長(zhǎng)數(shù)據(jù)階段,以便Slave有足夠的時(shí)間響應(yīng)。這種場(chǎng)景比較簡(jiǎn)單,根本不需要hready_in信號(hào),我就不仔細(xì)分析了,相信大家都能看懂。
寫(xiě)到這里,補(bǔ)充一下,AHB2協(xié)議里只有hready的叫法,并沒(méi)有hready_out這一說(shuō)法的,到AHB3和AHB5協(xié)議里就有了hready_out的叫法。但協(xié)議原文中都沒(méi)有hready_in的稱(chēng)呼,hready_in只是工程項(xiàng)目中比較形象、比較好溝通的一種稱(chēng)呼。這種稱(chēng)呼很流行,甚至很多ip廠商也這么給信號(hào)命名。大家對(duì)照理解,不要搞混了。下圖中的hready就是通常所說(shuō)的hready_out。到這里,相信你已經(jīng)理解了hready和hready_out的含義。

3.為什么AHB_slave還會(huì)有hready_in信號(hào)
下面讓我們看一個(gè)復(fù)雜的場(chǎng)景,就是系統(tǒng)中有多個(gè)AHB Slave,那么當(dāng)發(fā)生流水操作(pipeline)的時(shí)候應(yīng)該怎么處理呢?關(guān)于這個(gè)問(wèn)題,AHB5協(xié)議中給出了一個(gè)經(jīng)典的方案,參見(jiàn)下方截圖。每個(gè)Slave的HREADYOUT都“與”在一起,以給出系統(tǒng)范圍的HREADY信號(hào),該信號(hào)再作為輸入反饋給每個(gè)Slave。這意味著每個(gè)Slave將具有2個(gè)HREADY信號(hào): HREADY_in(系統(tǒng)范圍的HREADY信號(hào))和HREADY_out。因此,如果任何Slave將HREADYOUT設(shè)為低,則hready_in將變?yōu)榈碗娖?。因此每個(gè)Slave都等該hready_in變?yōu)楦唠娖?,然后才能做出響?yīng)。每個(gè)Slave的HREADYOUT用來(lái)擴(kuò)展數(shù)據(jù)階段,并且每個(gè)Slave必須有hready_in,以便知道系統(tǒng)上是否有任何其他Slave正在請(qǐng)求數(shù)據(jù)階段擴(kuò)展。如果任何Slave的hready_in為低電平,則該Slave必須等待其hready_in變?yōu)楦唠娖?,然后才能響?yīng)任何AHB請(qǐng)求。因此每個(gè)Slave都有兩個(gè)hready信號(hào),一個(gè)hready_in信號(hào),一個(gè)hready_out信號(hào)。建議每個(gè)Slave的HREADY信號(hào)默認(rèn)值設(shè)為“1”。 感謝關(guān)注微信公眾號(hào)《芯片驗(yàn)證日記》

4.hready_in作用示例
即便是pipeline操作,如果AHB連續(xù)對(duì)同一個(gè)Slave進(jìn)行突發(fā)讀寫(xiě),hready_in的作用也體現(xiàn)不出來(lái),只有下邊的情況才能體現(xiàn)hready_in的作用:
①AHB流水操作;②AHB連續(xù)訪問(wèn),并且是跨多個(gè)Slave訪問(wèn);③Slave存在反壓。如下圖所示:
AHB master第二次訪問(wèn)S0時(shí),S0出現(xiàn)反壓,但此時(shí)訪問(wèn)S1的addr phase已經(jīng)出現(xiàn),且此時(shí)S1處于ready狀態(tài)(hready_out_s1=1),但由于此時(shí)訪問(wèn)S0的data_phase未結(jié)束,S0通過(guò)hready_out_s0反壓hready_in_s1,因此即便S1處于ready狀態(tài)也必須hold住。因此在設(shè)計(jì)AHB slave時(shí),必須hready_out和hready_in同時(shí)為高,當(dāng)次訪問(wèn)才能完成。感謝關(guān)注微信公眾號(hào)《芯片驗(yàn)證日記》

審核編輯 黃昊宇
-
信號(hào)
+關(guān)注
關(guān)注
12文章
2914瀏覽量
80126 -
AHB
+關(guān)注
關(guān)注
0文章
26瀏覽量
10584
發(fā)布評(píng)論請(qǐng)先 登錄
一文詳解AHB-Lite協(xié)議
AHB總線中HREADY和HRESP信號(hào)如何處理?
請(qǐng)教關(guān)于ADE7880快速讀取諧波寄存器
hpi不穩(wěn)定 請(qǐng)問(wèn)是什么原因?
USB2.0設(shè)備控制器IP核的AHB接口設(shè)計(jì)實(shí)現(xiàn)
如何理解LabVIEW中ModBus Slave函數(shù)的用途?
【Sipeed TangNano9K開(kāi)發(fā)板試用體驗(yàn)】+ 可繪畫(huà)的LCD顯示屏
AHB總線中的HLOCK信號(hào)和HMASTLOCK信號(hào)之間有什么關(guān)系
Arm AMBA協(xié)議集中address phase是必須等到hready有效才結(jié)束嗎
Arm AMBA協(xié)議集中ahb2.0和3.0必須要有dummy master和default slave嗎?
ARM966E-S技術(shù)參考手冊(cè)
安路FPGA SF1 RISC-V 串口通訊
AHB Slave Decoder和AHB Slave Interface接口的使用說(shuō)明
如何理解AHB和APB,以及一些有關(guān)嵌入式的基礎(chǔ)名詞術(shù)語(yǔ)縮寫(xiě)
數(shù)字IC驗(yàn)證:ARM總線協(xié)議AMBA中AHB、APB的簡(jiǎn)介、區(qū)別與聯(lián)系
如何理解AHB_slave中的hready和hready_out以及hready_in
評(píng)論