一、AMBA随便聊
AMBA( Advanced Microcontroller Bus Architecture)進階處理器總線架構,不同的速率需求構成了為高性能SoC設計的通信标準:
- AHB( Advanced High- performance Bus)進階高性能總線
- APB( Advanced Peripheral Bus)進階外圍總線
- AXl( Advanced extensible Interface)進階可拓展接口
- AHB主要是針對高效率、高頻寬及快速系統子產品所設計的總線它可以連接配接如微處理器、晶片上或晶片外的記憶體子產品和DMA等高效率子產品。
- APB主要用在低速且低功率的外圍,可針對外圍裝置作功率消耗及複雜接口的最佳化。APB在AHB和低帶寬的外圍裝置之間提供了通信的橋梁,是以APB是AHB的二級拓展總線。
- AXI高速度、高帶寬,管道化互聯,單向通道,隻需要首位址,讀寫并行,支援亂序,支援非對齊操作,有效支援初始延遲較高的外設,連線非常多。
AMBA曆史
ATB:cpu debug用
AHB-lite:針對單個master,比上一代簡單了
AMBA與Arm處理器
Memory Model
裝置寄存器:通路它的時候不能進入cached,因為我們希望馬上生效,但是進入cached不一定就能馬上生效,不知道什麼時候将cached中的資料更新到寄存器中!
Memory Type
Memory Type and Bus Behavior
第三種的通路,效率是最低的,因為要等着生效才能算完成!
第一種,發出的兩個請求,可以合并成一個,最後發過去,等待響應!
Secure and Non-Secure
ARM Cache
片上一小塊memory,往往比外部memory速度快
通路cpu最近通路的資料
Cache Structure
Atomic
二、APB
- 主要應用在低帶寬的外設上,如UART、12C,它的架構不像AHB總線是多主裝置的架構。
- APB總線的唯一主裝置是APB橋(與AXI或APB相連),是以不需要仲裁一些 Request/ grant信号。
- APB的協定也十分簡單,甚至不是流水的操作,固定兩時鐘周期完成一次讀或寫的操作。
- 其特性包括:兩個時鐘周期傳輸,無需等待周期和回應信号,控制邏輯簡單,隻有四個控制信号。
- 系統初始化為IDLE狀态,此時沒有傳輸操作,也沒有選中任何從子產品。
- 當有傳輸要進行時, PSELX=1,PENABLE=0,系統進入 SETUP.狀态,并隻會在 SETUP狀态停留一個周期。當PCLK的下ー個上升沿到來時,系統進入 ENABLE狀态。
- 系統進入 ENABLE狀态時,維持之前在SETUP狀态的 PADDR、PSEL、 PWRTE不變,并将 PENABLE置為1。傳輸也隻會在ENABLE狀态維持一個周期,在經過 SETUP與 ENABLE狀态之後就已完成。之後如果沒有傳輸要進行,就進入IDLE狀态等待;如果有連續的傳輸,則進入 SETUP:狀态。
- 寫操作發生時,伴随着位址線、寫資料線、寫信号線以及選擇線一同変化。
- 寫操作的第一個周期稱之為 SETUP周期。
- 下ー個周期, PENABLE信号線置起,這表示 NABLE周期。
- 在 ENABLE周期,位址線、資料線和控制線都應該保持有效。
- 在 ENABLE周期結東後,本次寫操作結束。
- PENABLET在寫操作周期結束後,會同PSEL-同拉低,除非又需要立即跟随下一次傳輸。
- 為了省電,位址信号和寫信号在一次傳輸過後不會改變直到下一次傳輸發生。
- 位址線、寫信号線、選擇線将同寫操作時一樣保持不變。
- 從端需要在 ENABLE周期内,傳回 PRDATA.
- PRDATA将在 ENABLE周期的下ー個周期被采樣。
APB使用場景
apb協定簡單、時鐘頻率低、門的數量也很少,性能最弱,外設
apb3引入了pslverr、pready
apb4引入了pprot
APB2
就是操作寄存器,前提是查詢狀态寄存器!
APB3
APB4
APB4和APB3的相容性
apb4到apb3,建議把apb也換成apb4
APB slave設計spec
APB low power design
斷言
三、AHB
AHB的組成
- Master:能夠發起讀寫操作,提供位址和控制信号,同一時間隻有1個 Master會被激活。
- Slave:在給定的位址範圍内對讀寫操作作響應,并對 Master傳回成功、失敗或者等待等狀态。
- Arbiter:負責保證總線上一次隻有1個 Master在工作。仲裁協定是規定的,但是仲裁算法可以根據應用決定。
- Decoder:負責對位址進行解碼,并提供片選信号到各Save.
- 每個AHB都需要1個仲裁器和1個中央解碼器。
AHB多總/從裝置結構:
AHB基本信号
- HADDR:32位系統位址總線。
- HTRANS:M訓示傳輸狀态, NONSEQ、SEQ、IDLE、BUSY
- HWRITE:傳輸方向1-寫,0-讀。
- HSIZE:傳輸機關。
- HBURST:傳輸的 burst類型, SINGLE、INCR、WRAP4、INCR4等。
- HWDATA:寫資料總線,從M寫到S.
- HREADY:S應答M是否讀寫操作傳輸完成,1-傳輸完成,0-需延長傳輸周期
- HRESP:S應答目前傳輸狀态,OKAY、 ERROR、 RETRY.、 SPLIT.
- HRDATA:讀資料總線,從S讀到M。
AHB基本傳輸
- 兩個階段。
- 位址周期(AP),隻有一個周期
- 資料周期(DP),由 HREADY信号決定需要幾個周期。
- 流水線傳送。
- 先是位址周期,然後是資料周期。
nonseq:表示發送的第一個資料
busy:表示沒準備好
AHB2
AHB-lite結構
AHB-lite基本傳輸
AHB-lite控制信号
M3中,沒有用busy,
single VS burst
讀一次就可以拿到,而single需要讀四次才能拿到!
AHB Slave響應
swp已經不用了
AHB和Arm處理器
四、AHB2APB
五、AHB_to_SRAM
六、AHB Bus Matrix
常見AHB Bus結構
七、AHB的局限性
頻率x資料位寬
八、AXI
AXI有五個channel,讀和寫分離,使得讀和寫可以同時操作!
與AHB相比,性能優秀!
burst:每一筆資料隻需要給首位址
AXI應用場景
握手規則
傳輸一筆資料就是transfer
當它想把資料發出去的時候,它就吧ready拉高
想發資料就發資料,不用等ready;
要防止這種情況:ready需要等valid,而valid也需要等ready,這就會造成卡死!
AXI Transactions
Channel信号
Channel之間的依賴
Burst控制
AXI通路保護
AXI內建考慮
盡量不要有這種轉換,要不全是AXI4,要不全是AXI3
AXI ID Use
AXI 死鎖問題
發往不同的slave,如果第一個沒有傳回,則block住!
本來是M0先傳到S1,但是由于寄存器的存在,使其最後才發送到S1