欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AMBA總線那些事之APB

jf_78858299 ? 來源:IC加油站 ? 作者: 硅谷老李 ? 2023-05-04 14:53 ? 次閱讀

之前老李問過大家想看哪方面的知識,有不少同學(xué)提議老李寫寫總線,特別是AMBA的總線,所以老李決定從這期開始開始一個AMBA總線介紹的系列文章。AMBA總線主要包括三種最常見的協(xié)議APB, AHB, AXI,它們的復(fù)雜度、性能和設(shè)計(jì)難度都是遞增的。在網(wǎng)上介紹三種協(xié)議的文章有不少,絕大多數(shù)都是把ARM的協(xié)議文檔翻譯一下,但是很少有人來系統(tǒng)介紹總線中的不同功能模塊的設(shè)計(jì),特別是微架構(gòu)層面的設(shè)計(jì)邏輯。所以老李決定要提供給大家一些不一樣的內(nèi)容,在介紹協(xié)議基本內(nèi)容的基礎(chǔ)上,加入一些總線模塊的設(shè)計(jì)介紹,目的是讓大家有個更加直觀和具體的理解。當(dāng)然老李的水平也有限,有不少內(nèi)容也需要學(xué)習(xí),有不足的地方也歡迎大家批評指正。

咱們首先來介紹AMBA(Advanced Microcontroller Bus Architecture)家族中最簡單的協(xié)議APB -- Advanced Peripheral Bus。其實(shí)整個AMBA家族的協(xié)議也都有些年頭了,1998年的時候就發(fā)布了ABMA2, 2003年發(fā)布了ABMA3 APB 1.0版,2010年發(fā)布了AMBA 3 APB的2.0版。因?yàn)锳MBA2太過久遠(yuǎn),現(xiàn)在主流的SoC里絕大多數(shù)IP都支持的是AMBA3 的APB。之后老李的介紹也是基于ABMA 3的APB1.0。

廢話不多說,先說APB能干啥,對于Bus,最核心的功能就是讀和寫,搞清楚有哪些控制信號和讀寫時序是最基本的。APB的協(xié)議非常簡單,控制信號也很少,咱們直接上時序圖理解。

寫時序

圖片

這里先插一句,AMBA把它的三個協(xié)議APB, AHB, 和AXI的信號命名都很有規(guī)范,APB的信號都是以P開頭,AHB的信號都是以H開頭,AXI的信號卻不是以X開頭,而是以A開頭,這種命名方式幾乎成為了在設(shè)計(jì)AMBA總線模塊時候的潛規(guī)則,雖然ARM沒有規(guī)定你一定要用這種方式命名你的信號,但是在大家設(shè)計(jì)不同模塊和接口的時候,大家基本都遵循這種命名規(guī)則,這樣IP的使用者一眼就明白信號的用途,方便你我方便大家。

PCLK是總線時鐘,在上面的圖中,Master驅(qū)動的是PADDR, PWRITE, PSEL, PENABLE, PWDATA,而Slave只驅(qū)動PREADY。PADDR是transaction的地址,PWRITE用來區(qū)分是write還是read,如果是write transaction就是1,是read就是0。PWDATA就是write transaction的數(shù)據(jù)。PWDATA只在write transaction起作用。

然后就是非常重要的PSEL, PENABLE以及PREADY信號,這3個信號之間的關(guān)系標(biāo)志著一次transaction的開始和結(jié)束:

PSEL從0變?yōu)?,表明要開始一個新的transaction。

PSEL為1的第一個周期,PENABLE要為0,然后在下一個周期變?yōu)?。

當(dāng)Slave可以確保在下一個時鐘沿接受到PWDATA時,就可以把PREADY變?yōu)?。

當(dāng)Master看到PREADY為1后,就可以在下一個時鐘沿把PSEL,PENABLE拉為0,結(jié)束transaction。

注意:

PWDATA,PADDR, PWRITE需要在PSEL為高一直到PREADY為高期間都保持穩(wěn)定。

PENABLE必須要在PSEL為高的第一個周期為0(稱為setup phase),第二個周期為1,直到PREADY為1(稱為access phase)。

如果Master想要在PREADY為高之后下一個沿立刻開始新的transaction,可以不拉低PSEL,而使得PSEL繼續(xù)為1,但是一定要把PENABLE拉低。

然后再來看看讀的時序,其中PSEL, PENABLE, PADDR, PREADY都一致,區(qū)別只在于PWRITE要為0, 以及是由Slave來返回PRDATA,注意要和PREADY在同一個周期返回。

圖片

我們看到,APB的讀和寫不能同時進(jìn)行,每一個transaction要么是讀,要么是寫,由PWRITE來控制。每一個transaction至少需要2個周期。這兩點(diǎn)導(dǎo)致了APB在AMBA三兄弟中是最低性能的,但是好處是協(xié)議簡單,Master和Slave的設(shè)計(jì)都只需要很少的邏輯。甚至在Spec里ARM都幫你畫好了狀態(tài)機(jī)(至于AHB和AXI, ARM的Spec就沒有幫你畫狀態(tài)機(jī)了,你得自己設(shè)計(jì))。

圖片

APB通常是作為Peripheral IP的寄存器讀寫總線接口,有些IP可能年頭很久,速度很慢,所以即使給了一個周期去setup,也不能夠在第二個周期確保完成讀或?qū)懀詓lave可以選擇在沒有準(zhǔn)備好的時候不assert PREADY,插入wait cycle。咱們再放兩個有wait state的時序圖。

有wait state的寫時序圖

圖片

有wait state的讀時序圖

圖片

這和valid/ready協(xié)議有點(diǎn)類似,即slave不返回PREADY,那么master就要保證PSEL, PENABLE, PADDR, PWRITE,PWDATA穩(wěn)定,直到PREADY為1。

另外還有個信號PSLVERR (apb slave error),用于從slave向master返回transaction錯誤,這個錯誤可以由slave自己來定義,比如是非法地址訪問,也可以是訪問timeout了,slave無法在timeout到來之前返回有效的值,那么就可以返回PREADY和PSLVERR來通知master,并且避免總線鎖死。

AMB3 APB2.0又加了2個信號,PPROT和PPROB,這其實(shí)是把AHB和AXI中關(guān)于總線transaction的保護(hù)和寫操作中的按字節(jié)部分寫入的功能引入APB,咱們就不過多介紹。到AHB和AXI的時候再講。

關(guān)于APB總線協(xié)議部分就這么多,老李覺得簡單到可以給剛學(xué)數(shù)字電路設(shè)計(jì)這門課的本科生拿來當(dāng)做一個小作業(yè),然后讓大家設(shè)計(jì)一個master和slave應(yīng)該都是不錯的嘗試。

協(xié)議介紹完了,我們今天來介紹一個小模塊:APB Slice。先說說Slice的作用,在SoC中,如果Master和Slave的距離比較遠(yuǎn),那么它們之間的bus信號要滿足timing就可能有點(diǎn)困難,比如我們上面看到的PSEL, PENABLE, PADDR, PWRITE這些信號從Master出來,要去很遠(yuǎn)的Slave,那么中間就要加很多的buffer,這引入的buffer delay就可能導(dǎo)致我們希望的timing不滿足。這個時候就需要插入slice,給每個控制信號在中間加一級寄存器,把較長的走線縮短。當(dāng)然插入的slice依然要保持bus的協(xié)議標(biāo)準(zhǔn)。簡單來說,一個slice就是下面中間的那個模塊,站在APB slave的角度,APB slice是它的master,從Slice出來的控制信號需要滿足APB的協(xié)議要求。

圖片

這里面我們一個信號一個信號來看,先來看最關(guān)鍵的PSEL

always_ff @(posedge PCLK)

if(!PRESETn)

out_PSEL <= 1'b0;

else if(out_PENABLE && out_PREADY)

out_PSEL <= 1'b0;

else if(in_PSEL && !in_PENABLE)

out_PSEL <= 1'b1;

思路很簡單,當(dāng)APB slave返回了PREADY,那么transaction結(jié)束,需要out_PSEL變?yōu)?。而當(dāng)APB master拉起了in_PSEL且in_PENABLE為0時,標(biāo)志一個新的transaction開始,需要將out_PSEL拉高。

再來看PENABLE,類似的,當(dāng)out_PSEL為1的時候,還是分setup phase和access phase,當(dāng)access phase并out_PREADY為1的時候,out_PENABLE要拉回0,out_PREADY為0的時候PENABLE要保持為1。在setup phase則需要把PENABLE拉為1。

always_ff @(posedge PCLK) begin

if(!PRESETn)

out_PENABLE <= 1'b0;

else if(out_PSEL)

if(out_PENABLE && out_PREADY)

  out_PENABLE <= 1'b0;

else if(!out_PENABLE)

  out_PENABLE <= 1'b1;

end

反過來,對于in_PREADY和in_PSLVERR,APB slice則作為APB Master的slave來返回。只有當(dāng)APB slave返回了PREADY和PSLVERR之后,APB slice才能assert in_PREADY。

always_ff @(posedge PCLK) begin

if(!PRESETn)

in_PREADY <= 1'b0;

else if(in_PREADY)

in_PREADY <= 1'b0;

else if(out_PREADY && out_PENABLE)

in_PREADY <= 1'b1;

end

always_ff @(posedge PCLK) begin

if(!PRESETn)

in_PSLVERR <= 1'b0;

else if(in_PREADY)

in_PSLVERR <= 1'b0;

else if(out_PREADY && out_PENABLE)

in_PSLVERR <= out_PSLVERR;

end

而對于剩下的PADDR, PWRITE以及PRDATA,由于slice的setup phase比master的setup phase晚一拍,那么只需啊在master的setup phase的時候寄存它們的值就行。

always_ff @(posedge PCLK)

if(in_PSEL && !in_PENABLE) begin

out_PADDR <= in_PADDR;

out_PWRITE <= in_PWRITE;

if(in_PWRITE)

 out_PWDATA <= in_PWDATA;

end

always_ff @(posedge PCLK)

if(out_PENABLE && out_PREADY && !out_PWRITE)

in_PRDATA <= out_PRDATA;

我們引入的這個slice的握手是雙向的,對于每一個從master發(fā)出的transaction,只有當(dāng)slave返回了out_PREADY之后slice才會返回給master in_PREADY,也就是說,slice的引入使得從master的角度看出去的延時增加了一個周期,換句話說插入了一個氣泡。這個我們之前提到過的valid/ready 的ping pong buffer可以避免氣泡還是有不同的。但是由于APB通常來說是低速總線,對于transaction多一個周期少一個周期其實(shí)不太關(guān)心。真正需要關(guān)心性能和訪問延遲的地方一般也不會使用APB來作為總線。所以這里引入一個周期的氣泡完全可以接受。

下一篇開始老李會再帶領(lǐng)大家看看當(dāng)一個Master要訪問多個slave或者多個master要同時訪問一個slave時我們需要什么樣的APB模塊來疏導(dǎo)各個transaction避免沖突。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • AMBA
    +關(guān)注

    關(guān)注

    0

    文章

    69

    瀏覽量

    15048
  • AHB
    AHB
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    9852
  • AXI總線
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    14319
收藏 人收藏

    評論

    相關(guān)推薦

    什么是APB協(xié)議/總線APB總線入門

    上一篇文章簡單講解了什么是AMBA總線,簡單來說,AMBA總線是一系列協(xié)議。定義了適用于不同場景的總線家族。今天我們就來將
    的頭像 發(fā)表于 01-02 11:37 ?4087次閱讀
    什么是<b class='flag-5'>APB</b>協(xié)議/<b class='flag-5'>總線</b>?<b class='flag-5'>APB</b><b class='flag-5'>總線</b>入門

    ARM總線協(xié)議AMBA中AHB、APB的區(qū)別與聯(lián)系

    , ASB, APB);Qchannel文章目錄1 AMBA總線2 AHB2.1 一個典型的基于AHB的微控制器2.2 AHB總線互聯(lián)結(jié)構(gòu):中心選擇器連接master與slave2.3
    發(fā)表于 02-09 07:46

    AMBA、APB、AHB簡介

    STM32菜鳥學(xué)習(xí)手冊——1、AMBA、APB、AHB簡介芯片上總線標(biāo)準(zhǔn)種類繁多,而由ARM公司推出的AMBA片上總線受到了廣大IP開發(fā)商和
    發(fā)表于 02-17 07:18

    AMBA AHB總線APB總線資料合集

    使用的是 SystemVerilog 描述。2、AMBA APB總線信號接口介紹前面分析了AHB總線協(xié)議。接下來分析APB
    發(fā)表于 04-07 10:03

    AMBA中的APB總線協(xié)議詳解

    1、漫談AMBA總線-APB首先考慮一下以下的場景:概念1: 主機(jī)(Master)訂單的發(fā)起只能由水果店發(fā)起,所以水果店在這條水果運(yùn)輸總線里面運(yùn)輸水果占有主動地位。類比:在
    發(fā)表于 06-07 16:14

    基于AMBA APB總線NandFlash控制器的設(shè)計(jì)

    介紹了基于AMBA APB總線NandFlash控制器的設(shè)計(jì),首先簡單介紹了NandFlash的一些特點(diǎn),然后詳細(xì)介紹了NandFlash控制器的整體框架、具體功能及其內(nèi)部的數(shù)據(jù)通路。該控制器通過ModelSim進(jìn)行了仿
    發(fā)表于 11-03 15:22 ?54次下載

    APB總線的應(yīng)用框圖及接口信號

    APB(AdvancedPeripheralBus)是AMBA(AdvancedMicrocontrollerBusArcheticture)總線體系的一部分。相較于AMBA
    發(fā)表于 11-17 11:54 ?1.3w次閱讀
    <b class='flag-5'>APB</b><b class='flag-5'>總線</b>的應(yīng)用框圖及接口信號

    基于AMBA總線介紹?

    1.1.AMBA發(fā)展史 AMAB1.0 AMBA2.0 AMBA3.0 AMBA4.0 AMBA1.0:ASB協(xié)議和
    的頭像 發(fā)表于 05-19 14:22 ?2164次閱讀
    基于<b class='flag-5'>AMBA</b><b class='flag-5'>總線</b>介紹?

    淺述AMBA-APB總線

    1 APB介紹 高級外設(shè)總線APB) 是高級微控制器總線架構(gòu) (AMBA) 協(xié)議系列的一部分。它定義了一個低成本接口,該接口針對最低功耗
    的頭像 發(fā)表于 07-23 10:04 ?2343次閱讀
    淺述<b class='flag-5'>AMBA-APB</b><b class='flag-5'>總線</b>

    介紹AMBA2.0總線

    1.1.AMBA發(fā)展史 AMAB1.0 AMBA2.0 AMBA3.0 AMBA4.0 AMBA1.0:ASB協(xié)議和
    的頭像 發(fā)表于 09-06 09:53 ?3233次閱讀
    介紹<b class='flag-5'>AMBA</b>2.0<b class='flag-5'>總線</b>

    數(shù)字IC驗(yàn)證:ARM總線協(xié)議AMBA中AHB、APB的簡介、區(qū)別與聯(lián)系

    , ASB, APB);Qchannel文章目錄1 AMBA總線2 AHB2.1 一個典型的基于AHB的微控制器2.2 AHB總線互聯(lián)結(jié)構(gòu):中心選擇器連接master與slave2.3
    發(fā)表于 12-05 15:36 ?16次下載
    數(shù)字IC驗(yàn)證:ARM<b class='flag-5'>總線</b>協(xié)議<b class='flag-5'>AMBA</b>中AHB、<b class='flag-5'>APB</b>的簡介、區(qū)別與聯(lián)系

    STM32菜鳥學(xué)習(xí)手冊——AMBA、APB、AHB簡介

    STM32菜鳥學(xué)習(xí)手冊——1、AMBA、APB、AHB簡介芯片上總線標(biāo)準(zhǔn)種類繁多,而由ARM公司推出的AMBA片上總線受到了廣大IP開發(fā)商和
    發(fā)表于 12-22 19:09 ?16次下載
    STM32菜鳥學(xué)習(xí)手冊——<b class='flag-5'>AMBA</b>、<b class='flag-5'>APB</b>、AHB簡介

    聊聊AMBA總線-APB

    APB總線里面,數(shù)據(jù)的傳輸只能由主機(jī)發(fā)起,其他部分響應(yīng)主機(jī)操作。
    的頭像 發(fā)表于 05-04 11:40 ?938次閱讀
    聊聊<b class='flag-5'>AMBA</b><b class='flag-5'>總線</b>-<b class='flag-5'>APB</b>

    AMBA總線apb簡介

    APB(Advanced Peripheral Bus),外圍總線的意思。該總線協(xié)議是ARM公司提出的AMBA總線結(jié)構(gòu)之一,幾乎已成為一種標(biāo)
    發(fā)表于 06-05 15:10 ?2180次閱讀
    <b class='flag-5'>AMBA</b><b class='flag-5'>總線</b>—<b class='flag-5'>apb</b>簡介

    AMBA總線那些APB協(xié)議入門

    咱們首先來介紹AMBA(Advanced Microcontroller Bus Architecture)家族中最簡單的協(xié)議APB -- Advanced Peripheral Bus。
    發(fā)表于 06-05 15:30 ?2876次閱讀
    <b class='flag-5'>AMBA</b><b class='flag-5'>總線</b><b class='flag-5'>那些</b><b class='flag-5'>事</b><b class='flag-5'>之</b><b class='flag-5'>APB</b>協(xié)議入門