AHB是半雙工的總線。
AHB組成
AHB總線由主機(Master),從機(Slave)和Infrastructure組成。Infrastructure由仲裁器和數據多路選擇器、地址控制多路選擇器、譯碼器構成。
AHB master
master通過提供地址和控制信息發起讀寫操作。
AHB slave:
總線從機在給定的地址空間范圍內響應讀寫操作。總線從機將成功、失敗或者等待數據傳輸的信號返回給有效的主機。
AHB arbiter:
用於分配總線的使用權。當多個master申請調用總線時,Arbiter根據總裁算法決定哪個master調用總線。也就是為數據選擇器,地址選擇器提供控制信號用於選擇輸出的信號。
AHB decoder:
AHB的譯碼器用來對每次傳輸進行地址譯碼,並在傳輸中包含一個Slave的選擇信號。所有AHB執行都不虛要求一個中央譯碼器。
有讀寫的數據通路,但是只有一條地址線。
AHB master
輸入信號
名稱 | 來源 | 描述 |
HCLK | 時鍾源 | 為所有總線傳輸提供時基,所有信號的時序都和HCLK的上升沿有關; |
HRESETn | 復位控制器 | 總線復位信號,用於復位系統和總線,是唯一的低電平有效的信號; |
HGRANTx | 仲裁器 | 用於表示總線masterx時目前優先級最高的主機。 |
HREADY輸出完成 | 從機 | 為高時表示總線上的傳輸已經完成。總線上的從機要求HRAEDY為inout |
HRESP[1:0]輸出響應 | 從機 | 輸出相應信號,提供四種響應:OKEY、ERROR、RETRY和SPLIT |
HRDATA[31:0]讀數據總線 | 從機 | 用來在讀操作期間從總線從機向總線主機傳輸數據。建議最小的數據總線寬度為 32 位。 在要求高帶寬運行時擴展(數據總線)還是很容易的。 |
輸出信號
名稱 | 接收端 | 描述 |
HBUSREQx | 仲裁器 | 總線申請信號 |
HLOCKx | 仲裁器 | 表示主機x請求鎖定對總線的訪問,並且在信號為低之前其他master不應被允許總線。 |
HTRANS[1:0] | 表示當前傳輸類型,IDLE, BUSY, NONSEQ, SEQ | |
HWRITE | 高表示寫傳輸,低表示度傳輸 | |
HSIZE[2:0]傳輸大小 | 表示傳輸數據的大小,傳輸數據大小為2^(3+HSIZE) bit | |
HBURST[2:0] | 表示傳輸是否組成突發的一部分,支持4、8、16個節拍的突發傳輸,突發傳輸可以使增量或者回環 | |
HPROT[3:0] |
地址譯碼
注意:能夠分配給單個從機的最小地址空間是 1KB。所有總線主機必須被設計為不能執行超過 1KB 地址邊界的增量傳輸,因此確保了一個突發絕不會超過地址譯碼的邊界。
默認從機設置:在系統設計中如果有包含一個存儲器映射並未完全填滿(存儲空間)的情況時應該設置一個額外的默認從機以在訪問任何不存在的地址空間時提供響應。如果一個非連續或者連續傳輸試圖訪問一個不存在的地址空間時這個默認從機應該提供一個 ERROR 響應。空閑或者忙傳輸訪問不存在的空間(默認從機)應該給出一個零等待狀態的 OKAY 響應。典型默認從機的功能將以作為中央地址譯碼器的一部分來實現。
由於項目中經常會涉及到總線的內容,想在AHB上掛一個SRAM和flash,我們從AMBA總線入手,從時序入手把AMBA總線理解一遍。而這之中我們主要看AHB總線。其次說APB總線。
AHB(Advanced High Performance Bus)總線規范是AMBA(Advanced Microcontroller Bus Architecture) V2.0總線規范的一部分,AMBA總線規范是ARM公司提出的總線規范,被大多數SoC設計采用,它規定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。
AHB用於高性能、高時鍾頻率的系統結構,典型的應用如ARM核與系統內部的高速RAM、NAND FLASH、DMA、Bridge的連接。APB用於連接外部設備,對性能要求不高,而考慮低功耗問題。ASB是AHB的一種替代方案。AHB總線之所以強大是由於它可以將CPU、高帶寬的片上RAM、高帶寬的外部存儲器接口、DMA總線主機、各種擁有AHB接口的控制器等,統統連接起來構成一個獨立的完整的SOC系統,除此之外,還可以通過AHB-APB橋來連接APB總線系統。AHB可以成為一個完整獨立的SOC芯片的骨架。如下面的就很能體現:
其實簡而話之,就是要有發消息的接口,收消息的接口,以及決定誰發誰收的仲裁器。就好像是一條路,只能一輛車在路上跑,需要維持車從哪上,向哪下,既不能讓兩輛車在路上同時跑,也不能讓准備上路的車在路口處等太久。
AHB總線包括AHB主機(master)、從機(slave)及仲裁器,數據多路選擇器,地址多路選擇器等。主機(master)就是發送數據的,而從機(slave)是接收數據的,而仲裁器就是來分配總線使用權的,當多個主機申請調用總線時,仲裁器根據其仲裁算法來決定誰來調用總線,也就是給數據選擇器地址選擇器控制信號來選擇輸入輸出的信號。
對於一個標准AHB總線,它的接口如下:
HCLK——總線時鍾——時鍾——源時鍾為所有總線傳輸提供時鍾。所有信號時序都和HCLK的上升沿相關。
HRESETn——復位——復位——控制器總線復位信號,低電平有效,用來復位系統和總線。這是唯一低電平有效的信號。名稱來源描述
HADDR[31:0]——地址總線——主機——32位地址總線
HTRANS[1:0]——傳輸類型——主機——表示當前傳輸的類型,可以是連續,不連續,空閑和忙
HWRITE——傳輸方向——主機——該信號為高表示一個寫傳輸,為低表示一個讀傳輸
HSIZE[2:0]——傳輸大小——主機——表示傳輸的大小,三位表示0…7,分別對應8bits(byte), 16bits(halfword),32bits(word),64bits, 128bits,256bits, 512bits,1024bits
HBRUST[2:0]——突發類型——主機——表示傳輸是否組成了突發的一部分。支持4個,8個,16個節拍的突發傳輸,突發傳輸可以使增量或回環。
(由於在SRAM里突發傳輸好像沒有太用到,所以這塊並不是那么懂,望廣大知友能不吝賜教)
HPROT[3:0]——保護控制——主機——提供總線訪問的附加信息,主要是給那些希望執行某種保護級別的模塊使用的。這個信號指示當前傳輸是否為預取指令或者數據傳輸,同時也表示傳輸是保護模式訪問還是用戶模式訪問。對帶存儲器管理單元的總線主機而言這些信號也用來指示當前傳輸是高速緩存的(cache)還是緩沖的(buffer)。
HWDATA[31:0]——寫總線數據——主機——數據總線用來在寫操作期間從主機到總線從機傳輸數據。建議最小的數據總線寬度為 32 位。在要求高帶寬運行時擴展(數據總線)還是很容易的。
HSELx——從機選擇——譯碼器——每個 AHB 從機都有自己獨立的從機選擇信號並且用該信號來表示當前傳輸是否是打算送給選中的從機。該信號是地址總線的簡單組合譯碼。
HRDATA[31:0]——讀數據總線——從機——讀數據總線用來在讀操作期間從總線從機向總線主機傳輸數據。建議最小的數據總線寬度為 32 位。在要求高帶寬運行時擴展(數據總線)還是很容易的。
HREDAY——傳輸完成——從機——當 HREADY 為高時表示總線上的傳輸已經完成。在擴展傳輸時該信號可能會被拉低。
注意:總線上的從機要求 HREADY 作為輸入輸出信號。
HRESP[1:0]——傳輸響應——從機——傳輸響應給傳輸狀態提供了附加信息。提供四種不同的響應:OKEY、 ERROR、 RETRY 和 SPLIT。
AMBA AHB也有許多信號請求支持多主機操作。這些仲裁信號用於點對點連接, 下表中后綴x用來表示信號來自模塊x:
HBUSREQx——總線請求——主機——從總線主機 x 傳向總線仲裁器用來表示該主機請求(控制 ) 總 線 的信 號 。系 統中 每 個 總 線主 機 都 有 一個
HBUSREQx 信號,最多 16 個總線主機。
HLOCKx——鎖定的傳輸——主機——當該信號為高時表示主機請求鎖定對總線的訪問並且
在該信號為低之前其他主機不應該被允許授予總線。
HGRANTx——總線授予——仲裁器——該信號用來表示總線主機 x 目前是優先級最高的主機。當 HREADY 為高時傳輸結束,地址/控制信號的所有權發生改變。所以主機應在HREADY 和 HGRANTx都為高時獲得對總線的訪問。
HMASTER[3: 0]——主機號——仲裁器——這些來自仲裁器的信號表示哪個總線主機正在執行傳輸和被支持分塊傳輸的從機用來確定哪個主機正在嘗試一次訪問。HMASTER 的時序和地址以及控制信號對齊。
HMASTLOCK——鎖定順序——仲裁器——表示當前主機正在執行一個鎖定順序的傳輸。該信號和 HMASTER 有相同的時序。
HSPLITx[15:0]——分塊完成請求——從機(支持分塊)——從機用這 16 位的分塊總線來指示仲裁器總線主機應該被允許重試一個分塊傳輸。分塊總線上的每一位對應一個總線主機。
HSIZE:HSIZE表示一次傳輸的數據位寬。主要用於從機位寬與
Slave的位寬可以比總線位寬高,或者低;但是master的位寬不能比總線高。