AHB學(xué)習(xí)筆記

1.AHB概述

AHB總線是一種專為高性能同步傳輸設(shè)計(jì)的總線,層次高于APB總線,支持以下特性:

  • 突發(fā)傳輸
  • 拆分事務(wù)
  • 主設(shè)備單時鐘周期傳輸
  • 單時鐘沿操作
  • 非三態(tài)實(shí)現(xiàn)
  • 寬數(shù)據(jù)總線配置(64/128bit)

1.1.典型AHB系統(tǒng)

典型的AHB系統(tǒng)包括以下部分:

  • 可支持高帶寬傳輸?shù)闹鞲煽偩€
  • AHB主設(shè)備(如高性能CPU和DMA設(shè)備等)
  • AHB從設(shè)備(存儲器和APB橋等)

1.2.AHB互連

AHB的互連使用多路復(fù)用器策略,由以下幾個部分組成:

  • 主設(shè)備:發(fā)起通信,所有主設(shè)備將通行地址和數(shù)據(jù)發(fā)送到主設(shè)備多路復(fù)用器
  • 從設(shè)備:回應(yīng)通信,從主設(shè)備多路復(fù)用器獲得通信地址和數(shù)據(jù),將回應(yīng)數(shù)據(jù)發(fā)送到從設(shè)備多路復(fù)用器
  • 判決器:主設(shè)備多路復(fù)用器的控制器,控制哪一個主設(shè)備的通信數(shù)據(jù)可以被發(fā)送到從機(jī)
  • 解碼器:從設(shè)備多路復(fù)用器的控制器,控制哪一個從設(shè)備的通信數(shù)據(jù)可以被發(fā)送回主機(jī)

2.AHB信號

2.1.基本AHB信號

信號名 位寬 來源 描述
HCLK 1 系統(tǒng)時鐘 傳輸系統(tǒng)的時鐘
HRESETn 1 復(fù)位系統(tǒng) 傳輸系統(tǒng)復(fù)位信號,低有效
HADDR 32 主機(jī) 主機(jī)發(fā)送傳輸目標(biāo)地址
HTRANS 2 主機(jī) 當(dāng)前發(fā)生的傳輸類型
HWRITE 1 主機(jī) 讀寫信號:1-寫操作;0-讀操作
HSIZE 3 主機(jī) 傳輸位寬,標(biāo)記一次傳輸?shù)奈粚?/td>
HBURST 3 主機(jī) 突發(fā)傳輸類型
HPROT 4 主機(jī) 協(xié)議類型,標(biāo)記傳輸使用協(xié)議的額外信息
HWDATA 32 主機(jī) 發(fā)送數(shù)據(jù),主機(jī)發(fā)送到從機(jī)的數(shù)據(jù)
HSELx x 解碼器 標(biāo)記哪一個從機(jī)被選中,由地址解碼產(chǎn)生
HRDATA 32 從機(jī) 接收數(shù)據(jù),從機(jī)發(fā)送到主機(jī)的數(shù)據(jù)
HREADY 1 從機(jī) 傳輸完成信號,高有效
HRESP 2 從機(jī) 傳輸狀態(tài)的額外標(biāo)記

2.2.多主機(jī)傳輸信號

信號名 位寬 來源 描述
HBUSREQx x 主機(jī) 主機(jī)x向判決器請求傳輸,最多支持16個主機(jī)
HLOCKx x 主機(jī) 主機(jī)x向判決器請求鎖定傳輸,其他主機(jī)在鎖定期內(nèi)無法使用總線
HGRANTx x 判決器 主機(jī)x權(quán)限標(biāo)記信號,當(dāng)有效時(為高有效),主機(jī)x在AHB總線空閑時具有最高的控制權(quán)限
HMASTER 4 判決器 主機(jī)標(biāo)號,標(biāo)記當(dāng)前傳輸由哪個主機(jī)控制
HMASTLOCK 1 判決器 鎖定標(biāo)記,標(biāo)記當(dāng)前總線被某個主機(jī)鎖定
HSPLITx 16x 從機(jī) 事務(wù)分離標(biāo)記,用于標(biāo)記哪個主機(jī)應(yīng)當(dāng)重啟事務(wù)

3.AHB傳輸

AHB傳輸分為以下幾個部分:

  • 主機(jī)獲取總線使用權(quán):主機(jī)向判決器發(fā)送總線請求信號,判決器發(fā)送應(yīng)答后主機(jī)可以開始傳輸
  • 數(shù)據(jù)傳輸:主機(jī)向從機(jī)傳輸數(shù)據(jù),分為以下兩個部分:
    • 發(fā)送地址和控制信號:包括地址,位寬,突發(fā)類型(增量突發(fā)和回卷突發(fā))等控制信號,僅一個時鐘周期
    • 數(shù)據(jù)傳輸:進(jìn)行數(shù)據(jù)交換,一個或多個時鐘周期
  • 從機(jī)應(yīng)答:從機(jī)通過HRESP和HREADY標(biāo)記完成狀態(tài),對于HRESP,有以下狀態(tài):
    • OKAY:標(biāo)記傳輸完成,當(dāng)HRESP為該狀態(tài)且HREADY拉高時,傳輸完成
    • ERROR:標(biāo)記傳輸出錯
    • RETRY和SPLIT:標(biāo)記傳輸未完成,主設(shè)備仍需要占用總線

關(guān)于突發(fā)傳輸,理論上進(jìn)行突發(fā)傳輸?shù)闹髟O(shè)備應(yīng)當(dāng)一直占據(jù)總線,但是為了縮短等待時間,AHB允許打斷突發(fā)傳輸,并在一段時間后重啟該突發(fā)傳輸

3.1.基本傳輸

AHB的基本傳輸過程由兩個部分組成:

  • 地址/控制傳輸:傳輸?shù)刂沸畔⒑涂刂菩畔?,僅占一個時鐘周期
  • 數(shù)據(jù)傳輸:可能需要多個時鐘周期,由信號HREADY決定(拉高才結(jié)束數(shù)據(jù)傳輸)

3.1.1.無等待傳輸

ahb_basic_nowait.png

無等待傳輸下,一個傳輸與三個時鐘沿有關(guān):

  • 第一個時鐘沿:第一個時鐘沿后,主機(jī)將地址信息和控制信息發(fā)送到總線上
  • 第二個時鐘沿:第二個時鐘沿上,從機(jī)采樣主機(jī)的地址信息和控制信息。第二個時鐘沿后,從機(jī)將響應(yīng)信號和數(shù)據(jù)發(fā)送到總線上
  • 第三個時鐘沿:主機(jī)采樣從機(jī)響應(yīng)信號和數(shù)據(jù),傳輸完成

3.1.2.有等待傳輸

ahb_basic_wait.png

有等待傳輸下,數(shù)據(jù)傳輸階段可以擴(kuò)展,即在HREADY拉高之前,數(shù)據(jù)傳輸階段不結(jié)束。要求寫數(shù)據(jù)在HREADY拉高前保持穩(wěn)定,主機(jī)在HREADY拉高后采樣讀數(shù)據(jù)

3.1.3.流水線傳輸

ahb_basic_water.png

AHB總線支持流水線傳輸,即將傳輸分為地址-數(shù)據(jù)兩個部分流水進(jìn)行,本次傳輸?shù)牡刂繁厝辉谏弦淮蔚刂分?,本次傳輸?shù)臄?shù)據(jù)必定緊跟在本次傳輸?shù)刂分?。因此,?dāng)上一次的數(shù)據(jù)傳輸阻塞導(dǎo)致傳輸周期增加時,下一傳輸?shù)牡刂分芷谝矔鄳?yīng)的變長:

  • A1和C1為第一次傳輸?shù)牡刂泛涂刂菩盘?/li>
  • WD1和RD1是第一次傳輸?shù)臄?shù)據(jù),該傳輸為單時鐘即無阻塞的傳輸,同時發(fā)送的還有下一次傳輸?shù)牡刂泛涂刂菩盘枺篈2和C2
  • 第二次傳輸為多周期傳輸,因此WD2和RD2占據(jù)多個時鐘周期,對應(yīng)的,同時發(fā)送的第三次傳輸?shù)刂泛涂刂菩臕3和C3也被延遲相同的時鐘周期數(shù)
  • WD3和RD3為第三次傳輸?shù)臄?shù)據(jù)

3.2.傳輸類型

傳輸類型使用端口HTRANS標(biāo)記,有以下取值:

  • IDLE(00):標(biāo)志主機(jī)占有AHB總線,但是沒有數(shù)據(jù)傳輸發(fā)生。從機(jī)需要使用OKAY狀態(tài)回應(yīng)該類型
  • BUSY(01):標(biāo)志主機(jī)占有AHB總線并在進(jìn)行猝發(fā)傳輸,但下一個傳輸不能立刻發(fā)生。從機(jī)需要使用OKAY狀態(tài)回應(yīng)
  • NONSEQ(10):標(biāo)志主機(jī)當(dāng)前發(fā)送的地址和控制信號與上一次傳輸無關(guān)(單次傳輸就是該狀態(tài))
  • SEQ(11):標(biāo)記主機(jī)處于猝發(fā)傳輸?shù)闹虚g部分,即當(dāng)前發(fā)送的地址和控制信號與上一次地址和控制信號有關(guān)

例子如下圖所示:

ahb_trantype.JPG
  • 第一次傳輸,開啟一次猝發(fā)傳輸,因此該地址與上一次傳輸無關(guān),使用類型NONSEQ
  • 第二次傳輸,無法立刻進(jìn)行傳輸,因此使用BUSY標(biāo)記延遲一個周期,延遲后可以進(jìn)行傳輸,且處于猝發(fā)傳輸中,因此地址與上一次地址有關(guān),使用SEQ標(biāo)記
  • 之后均為猝發(fā)傳輸,均使用SEQ類型

3.3.猝發(fā)傳輸

3.3.1.猝發(fā)類型

猝發(fā)傳輸分為兩類:

  • 增量猝發(fā):傳輸過程中傳輸?shù)刂愤f增。下一次傳輸?shù)牡刂肥巧弦淮蔚刂芳由弦粋€增量
  • 回卷猝發(fā):猝發(fā)的地址范圍被限制在一個固定范圍之內(nèi),傳輸?shù)刂愤f增,若是超出則回到地址范圍的開始的地址。例如從0x34進(jìn)行增量為4,范圍為16的回卷猝發(fā),地址順序?yàn)?x34、0x38、0x3c,0x30

猝發(fā)類型使用字段HBURST標(biāo)記,含義如下表所示:

HBURST[2:0] 類型 描述
000 SINGLE 單個傳輸
001 INCR 無限制長度的增量猝發(fā)傳輸
010 WRAP4 4拍回卷猝發(fā)
011 INCR4 4拍增量猝發(fā)
100 WRAP8 8拍回卷猝發(fā)
101 INCR8 8拍增量猝發(fā)
110 WRAP16 16拍回卷猝發(fā)
111 INCR16 16拍增量猝發(fā)

注意一次猝發(fā)傳輸不能跨越1kB的地址區(qū)間,且傳輸?shù)钠鹗嫉刂繁仨毰c數(shù)據(jù)類型對應(yīng),例如傳輸字?jǐn)?shù)據(jù)的二進(jìn)制起始地址必須滿足后兩位為00。

3.3.2.猝發(fā)終止

從機(jī)通過監(jiān)控HTRANS發(fā)現(xiàn)猝發(fā)傳輸?shù)慕K止:

  • 若下一個HTRANS標(biāo)記為BUSY或SEQ:猝發(fā)傳輸未終止
  • 若下一個HTRANS標(biāo)記為NONSEQ或IDLE:上一次猝發(fā)傳輸已經(jīng)終止

若猝發(fā)傳輸是提前終止的,如總線控制權(quán)被剝奪,那么主機(jī)需要在可以進(jìn)行傳輸時重建猝發(fā)傳輸。例如一個4拍傳輸僅發(fā)送了一拍就終止,主機(jī)需要使用INCR類型的猝發(fā)構(gòu)建3拍傳輸以重建。

3.3.3.猝發(fā)切分傳輸

[暫時略過,需要使用時再補(bǔ)充]

3.4.數(shù)據(jù)總線

當(dāng)傳輸位寬不同時,數(shù)據(jù)總線的使用情況如下所示(小端傳輸):

ahb_data_bus.JPG

4.控制信號

4.1.控制總線

4.1.1.HSIZE

HSIZE控制傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)位數(shù),如下表所示:

HSIZE(bit) 位寬 描述
000 8 字節(jié)傳輸(Byte)
001 16 半字傳輸(Half word)
010 32 字傳輸(Word)
011 64 -
100 128 4字傳輸
101 256 8字傳輸
110 512 -
111 1024 -

4.1.2.HPROT

HPROT提供對傳輸協(xié)議的額外說明,如下所示:

  • HPROT[3]:0-Cacheable;1-Not cacheable
  • HPROT[2]:0-Bufferable;1-Not bufferable
  • HPROT[1]:0-Privileged access;1-User access
  • HPROT[0]:0-Opcode fetch;1-Data access

4.1.3.HSELx

HSELx由地址解碼器產(chǎn)生,用于指示哪個從機(jī)被選中。從機(jī)當(dāng)HREADY為高,即一次傳輸完成后鎖存HSELx信號,若HSELx在HREADY為低時有效,將不會對本次傳輸產(chǎn)生影響。

4.1.4.HRESETn

HRESETn信號是復(fù)位信號,該信號是異步觸發(fā)并同步釋放的,當(dāng)該信號有效時,所有主機(jī)均要將相關(guān)信號復(fù)位,包括將HTRANS置為IDLE。

4.2.響應(yīng)信號

4.2.1.HREADY

HREADY信號標(biāo)志傳輸是否完成:0-未完成,需要插入額外周期;1-已完成

4.2.2.HRESP

HRESP用于標(biāo)記傳輸完成的狀態(tài):

  • OKAY(00):傳輸完成
  • ERROR(01):傳輸錯誤,例如協(xié)議錯誤或?qū)懭胫蛔x地址
  • RETRY(10):傳輸未正常完成,需要重新嘗試傳輸。該響應(yīng)不會改變優(yōu)先級
  • SPLIT(11):傳輸未正常完成,需要從下一個地址重新啟動傳輸。該響應(yīng)可能改變優(yōu)先級

4.3.總線仲裁

仲裁器保證一個時刻僅有一個主設(shè)備占有總線,因此當(dāng)有多個主設(shè)備提出訪問請求時,仲裁器通過仲裁信號仲裁哪一個主設(shè)備獲得總線使用權(quán)

4.3.1.仲裁信號

仲裁信號見[2.2.多主機(jī)傳輸信號]

4.3.2.主機(jī)獲取總線

主機(jī)獲取總線控制權(quán)分為兩個步驟:

  1. 主機(jī)分別通過HBUSREQx和HLOCKx分別向仲裁器申請獲取或鎖定總線控制權(quán)
  2. 仲裁器分配總線控制權(quán)

主機(jī)通過自己的HBUSREQx向仲裁器申請總線控制權(quán),仲裁器在時鐘上升沿采樣該信號,并通過內(nèi)置的優(yōu)先級算法決定總線控制權(quán)歸屬。一般來說,仲裁器僅會在一次傳輸完成后分配總線控制權(quán),即將HMASTER置為獲取總線控制權(quán)的主機(jī)編號且在上一次突發(fā)傳輸?shù)牡箶?shù)第二個傳輸時改變HGRANTx,因此新HGRANTx可以在上一次突發(fā)傳輸?shù)淖詈笠淮蝹鬏斖瑫r被采樣。

但如果需要,仲裁器也可以通過打斷傳輸?shù)姆绞絻?yōu)先執(zhí)行優(yōu)先級更高的傳輸。若獲取總線控制權(quán)的主機(jī)申請鎖定總線,其他主機(jī)將無法獲得總線控制權(quán)。

對于指定突發(fā)長度的突發(fā)傳輸,仲裁器根據(jù)突發(fā)長度判斷需要總線控制權(quán)的時間,若結(jié)束后啟動下一次突發(fā)傳輸,需要再次請求控制權(quán)。對于未指定長度的突發(fā)傳輸,主機(jī)需要在傳輸過程中一直保持請求信號拉高,否則將仲裁器無法判斷何時收回總線控制權(quán)。

當(dāng)無主機(jī)申請總線時,總線的控制權(quán)被交給默認(rèn)的主機(jī),即使該主機(jī)沒有申請總線控制權(quán)。此時默認(rèn)主機(jī)需要將HTRANS置為IDLE狀態(tài)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 總線 計(jì)算機(jī)的各個功能部件通過總線連接在一起構(gòu)成完整的計(jì)算機(jī)系統(tǒng),總線是多個系統(tǒng)功能部件之間進(jìn)行數(shù)據(jù)傳送的公共通路...
    羅蓁蓁閱讀 5,336評論 0 10
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo閱讀 4,006評論 1 20
  • 1、嵌入式系統(tǒng)的定義 (1)定義:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本...
    榮卓然閱讀 2,258評論 0 5
  • ???本文主要介紹嵌入式系統(tǒng)的一些基礎(chǔ)知識,希望對各位有幫助。 嵌入式系統(tǒng)基礎(chǔ) 1、嵌入式系統(tǒng)的定義 (1)定義:...
    OpenJetson閱讀 3,462評論 0 13
  • 下面這個例子很好地解釋了不同層次的交流是如何影響相互依賴的人際關(guān)系的: 一位父親想利用假期帶全家去露營釣魚...
    老陳哥1閱讀 661評論 0 0

友情鏈接更多精彩內(nèi)容