<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          AHB總線協(xié)議

          作者: 時(shí)間:2018-07-25 來(lái)源:網(wǎng)絡(luò) 收藏

          1. 簡(jiǎn)介

          本文引用地址:http://www.ex-cimer.com/article/201807/383796.htm

          AHB總線規(guī)范是AMBA總線規(guī)范的一部分,AMBA總線規(guī)范是ARM公司提出的總線規(guī)范,被大多數(shù)SoC設(shè)計(jì)采用,它規(guī)定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高時(shí)鐘頻率的系統(tǒng)結(jié)構(gòu),典型的應(yīng)用如ARM核與系統(tǒng)內(nèi)部的高速RAM、NAND FLASH、DMA、Bridge的連接。APB用于連接外部設(shè)備,對(duì)性能要求不高,而考慮低功耗問(wèn)題。ASB是AHB的一種替代方案。

          1.1 AHB總線的架構(gòu)

          AHB總線的強(qiáng)大之處在于它可以將(CPU)、高帶寬的片上RAM、高帶寬的外部存儲(chǔ)器接口、DMA總線master、各種擁有AHB接口的器等等連接起來(lái)構(gòu)成一個(gè)獨(dú)立的完整的SOC系統(tǒng),不僅如此,還可以通過(guò)AHB-APB橋來(lái)連接APB總線系統(tǒng)。AHB可以成為一個(gè)完整獨(dú)立的SOC芯片的骨架。

          下圖是一個(gè)典型的AHB系統(tǒng)總線的結(jié)構(gòu)示意圖

          1.2 AHB基本特性

          Burst傳輸

          Split事務(wù)處理

          單周期master移交

          單一時(shí)鐘沿操作

          無(wú)三態(tài)

          更寬的數(shù)據(jù)總線配置(64/128)

          流水線操作

          可支持多個(gè)總線主設(shè)備(最多16個(gè))

          2. AHB總線的組成

          AHB總線由Master、Slave和Infrastructure構(gòu)成。Infrastructure由arbiter、數(shù)據(jù)多路、地址多路、譯碼器構(gòu)成。

          主設(shè)備Master

          發(fā)起一次讀/寫(xiě)操作

          某一時(shí)刻只允許一個(gè)主設(shè)備使用總線

          從設(shè)備Slave

          響應(yīng)一次讀/寫(xiě)操作

          通過(guò)地址映射來(lái)選擇使用哪一個(gè)從設(shè)備

          仲裁器arbiter

          允許某一個(gè)主設(shè)備控制總線

          譯碼器decoder

          通過(guò)地址譯碼決定選擇哪一個(gè)從設(shè)備

          總線可以分為三組

          寫(xiě)數(shù)據(jù)總線(HWDATA)

          讀數(shù)據(jù)總線(HRDATA)

          地址控制總線(HADDR)

          3. 信號(hào)描述

          NameSourceToDescription
          HCLKclock source各module總線時(shí)鐘,上升沿采樣
          HRESETnreset controller各module總線復(fù)位,低電平有效
          HADDR[31:0]Masterdecoder
          mux to slave
          arbiter
          32位系統(tǒng)地址總線
          HTRANS[1:0]Mastermux to slave當(dāng)前傳輸類型NONSEQ, SEQ, IDLE, BUSY
          HWRITEMastermux to slave1為寫(xiě),0為讀
          HSIZE[2:0]Mastermux to slave每一個(gè)transfer傳輸?shù)臄?shù)據(jù)大小,以字節(jié)為單位,最高支持1024位
          HBURST[2:0]Mastermux to slaveburst類型,支持4、8、16 burst,incrementing/wrapping
          HPROT[3:0]Mastermux to slave保護(hù)控制信號(hào),需要slave帶保護(hù)功能,一般不用
          HWDATA[31:0]Mastermux to slave寫(xiě)數(shù)據(jù)總線,Master到Slave
          HRDATA[31:0]Slavemux to master讀數(shù)據(jù)總線,Slave到Master
          HREADYSlavemux to master
          arbiter
          高:Slave指出傳輸結(jié)束
          低:Slave需延長(zhǎng)傳輸周期
          HRESP[1:0]Slavemux to master
          arbiter
          Slave發(fā)給Master的總線傳輸狀態(tài)OKAY, ERROR, RETRY, SPLIT
          HSELxDecoderslaveslave選擇信號(hào)

          AHB仲裁信號(hào)

          NameSourceToDescription
          HBUSREQxMasterarbitermaster給仲裁器的請(qǐng)求獲得總線使用權(quán)的請(qǐng)求信號(hào),最多支持16個(gè)master
          HLOCKxMasterarbiter如果一個(gè)master希望自己在傳輸期間不希望丟掉總線,則需要向仲裁器發(fā)送這個(gè)鎖定信號(hào)
          HGRANTxarbitermaster授權(quán)信號(hào),當(dāng)前bus master x的優(yōu)先級(jí)最高。當(dāng)HREADY和HGRANTx同時(shí)為高時(shí),master獲取系統(tǒng)總線的權(quán)利
          HMASTER [3:0]arbiter具有split功能的slave仲裁器為每一個(gè)master分配的ID,指出哪個(gè)主設(shè)備正在進(jìn)行傳輸,提供進(jìn)行split的信息
          HMASTLOCKarbiter具有split功能的slave表示當(dāng)前的master正在執(zhí)行Locked操作。這個(gè)信號(hào)和HMASTER有這相同的時(shí)序
          HSPLITx[15:0]slavearbiter從設(shè)備用這個(gè)信號(hào)告訴仲裁器哪個(gè)主設(shè)備運(yùn)行重新嘗試一次split傳輸,每一位對(duì)應(yīng)一個(gè)主設(shè)備

          4. 總線操作

          有需要占用總線的Master向arbiter發(fā)出請(qǐng)求,arbiter授權(quán)給指定的master。任一時(shí)間周期只有一個(gè)master可以接入總線,對(duì)其指定的slave進(jìn)行讀寫(xiě)操作。

          獲得授權(quán)的總線開(kāi)始AHB傳輸,首先發(fā)出地址和控制信號(hào),提供地址信息、傳輸方向、帶寬和burst類型??偩€統(tǒng)一規(guī)劃slave的地址,譯碼器根據(jù)地址和控制信號(hào)確定哪個(gè)slave與master進(jìn)行數(shù)據(jù)通信。數(shù)據(jù)傳輸通過(guò)數(shù)據(jù)總線完成。為避免出現(xiàn)三態(tài)總線,AHB將讀寫(xiě)總線分開(kāi),寫(xiě)數(shù)據(jù)總線用于從master到slave的數(shù)據(jù)傳輸,讀數(shù)據(jù)總線用于從slave到master的數(shù)據(jù)傳輸。每筆傳輸包括一個(gè)地址和控制周期,一個(gè)或多個(gè)數(shù)據(jù)周期。地址和控制周期不能被擴(kuò)展,因此slave必須在一個(gè)周期內(nèi)采樣地址信號(hào)。數(shù)據(jù)周期可以通過(guò)HREADY信號(hào)擴(kuò)展,但HREADY為低時(shí)給傳輸加入一個(gè)等待狀態(tài)以使slave獲得額外的時(shí)間來(lái)提供或采樣數(shù)據(jù),另外slave通過(guò)響應(yīng)信號(hào)HRESP反映傳輸狀態(tài)。

          一般情況下master完成完整的burst傳輸,arbiter才會(huì)授權(quán)給其他的master接入總線,然而為避免過(guò)大的判決延遲,arbiter也可能打斷burst傳輸。在這種情況下master必須再次接入總線以進(jìn)行中斷的burst剩余部分的傳輸。

          5. 基本傳輸

          一筆傳輸由如下兩部分組成:

          地址階段:一個(gè)周期

          數(shù)據(jù)階段:一個(gè)或多個(gè)周期,由HBURST信號(hào)決定需要幾個(gè)有效周期,可以由HREADY發(fā)出請(qǐng)求延長(zhǎng)一個(gè)周期。

          5.1 沒(méi)有等待狀態(tài)的single transfer

          第一個(gè)周期的上升沿,master驅(qū)動(dòng)地址和控制信號(hào);

          第二個(gè)周期的上升沿,slave采樣地址和控制信號(hào),并將HREADY拉高;

          如果是寫(xiě)操作,master會(huì)在第二個(gè)周期的上升沿傳輸要寫(xiě)入的數(shù)據(jù);

          如果是讀操作,slave會(huì)在HREADY信號(hào)拉高后將讀取的數(shù)據(jù)寫(xiě)入總線;

          第三個(gè)周期的上升沿,

          如果是寫(xiě)操作,master獲取HREADY高信號(hào),表明slave已成功接收數(shù)據(jù),操作成功;

          如果是讀操作,master獲取HREADY高信號(hào),表明此時(shí)的讀數(shù)據(jù)有效并且接收下來(lái),操作成功。

          需要注意,HREADY信號(hào)在數(shù)據(jù)有效期間必須為高,并且延續(xù)到第三個(gè)周期的上升沿之后,確保master的正確采樣。

          5.2 slave插入等待狀態(tài)的single transfer

          slave可以及時(shí)處理master請(qǐng)求,但也可能存在slave太慢不能立即處理的情況。這時(shí)需要讓master稍微等一等,需要slave插入一些等待的狀態(tài)。如下圖所示,HREADY信號(hào)在第二和第三周期拉低,意在告訴master,slave不能立即處理,需要master等待2個(gè)周期。在這里需要注意2點(diǎn):

          如果是寫(xiě)操作,master需要在等待期間保持寫(xiě)數(shù)據(jù)不變,直到本次傳輸完成;

          如果是讀操作,slave不需要一開(kāi)始就給出數(shù)據(jù),僅當(dāng)HREADY拉高后才給出有效數(shù)據(jù)。

          5.3 多個(gè)single transfer的pipeline操作


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: 微控制器 控制

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();