吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

APB3接口的讀寫過程

XL FPGA技術交流 ? 來源:XL科技 ? 作者:XL科技 ? 2023-03-31 17:26 ? 次閱讀

APB3是一個低功耗低成本接口。所有信號時鐘上升沿傳輸,每次傳輸需要兩個時鐘周期。

1、Interface

信號 控制端 描述
PSEL M 選通。APB master會將此信號生成給每個slave。它指示已選擇的slave,并且需要進行數據傳輸。每個slave都有一個PSEL信號。
PADDR M 地址總線,最大位寬32位
PENABLE M 使能。當它為高時,表示讀寫過程有效
PWRITE M 讀寫控制。為高時表示寫操作,為低時表示讀操作
PWDATA M 寫數據。master通過PWDATA將數據寫到slave,該總線最大寬度為32位
PRDATA S 讀數據。master通過PRDATA將數據從slave讀取回來,該總線最大寬度為32位
PREADY S 在PSEL和PENABLE為高時,總線會查看PREADY是否為高,如果為高則數據有效,如果為低則等待其變高。

APB寫過程

沒有等待狀態。

wKgZomTngjeAcCKrAAF6IkiDs-M318.png

(1)T0到T1階段是空閑狀態,

(2)T1到T2是setup階段,此階段會準備好PADDR,PWRITE(為1),PWDATA。

(3)T2到T3是Access階段,此階段PENABLE會拉高,并且地址、數據和控制信號仍然保持有效。

(4)T3到T4階段PENABLE再次拉低;選擇信號PSELx也會拉低,除非緊跟同一外設下一次的傳輸。

wKgZomTngjeAThobAAAx9bWqaL8044.png

有等待狀態

wKgZomTngjiAOyACAAEJuAoGGJ0615.png

wKgZomTngjiAJZPyAAA14EbCVAI827.png

在ACESS階段,當PENABLE為高時,可以通過PREADY拉低來延長ACESS階段。這時要保持PADDR,PWRITE,PSEL,PENABLE,PWDATA信號保持不變。

當PENABLE為低時,PREADY可以高也可以低。所以如果外設是固定兩個操作周期時,PREADY可以固定為高。

另外推薦地址和寫信號只在下一個訪問周期才發生變化,這樣可以節省功耗 。

APB讀過程

讀操作

wKgZomTngjiAZeqRAADEghkAnZA321.png

在SETUP階段讀過程與寫過程是一樣的,只是寫過程PWRITE為高,讀過程PWRITE為低。

同樣在ACCESS階段,也可以通過拉低PREADY信號延長ACESS階段,但是要保證PADDR,PWRITE,PSEL和PENALBE為固定狀態。

wKgZomTngjiAFiHpAADbBYTUOiw465.png

通過RISCV 操作APB3也比較簡單,如下:

slave是指APB的基地址,addr是指APB的偏移地址,也就是PADDR.

  void apb3_write(u32 slave, u32 addr, u32 data )
    {
      write_u32(data,slave+addr);
    }
voidabp3_read(u32slave,u32addr)
{
returnread_u32(slave+addr);
}

在邏輯上處理也比較簡單,易靈思提供了簡單的APB3參考。

//以下為易靈思提供的APB3的參考
module apb3_slave_memory #(
  // user parameter starts here
  //
  parameter  ADDR_WIDTH  = 16,
  parameter  DATA_WIDTH  = 32,
  parameter  NUM_REG    = 4
) (
  // user logic starts here
  input                       clk,
  input                       resetn,
  input  [ADDR_WIDTH-1:0]     PADDR,
  input                       PSEL,
  input                       PENABLE,
  output                     PREADY,
  input                       PWRITE,
  input   [DATA_WIDTH-1:0]   PWDATA,
  output  [DATA_WIDTH-1:0]   PRDATA,
outputPSLVERROR
);


/////////////////////////////////////////////////////////////////




localparam [1:0]  IDLE   = 2'b00,
              SETUP  = 2'b01,
              ACCESS = 2'b10;




reg [1:0]      busState, 
               busNext;
reg             slaveReady;
wire            actWrite,
               actRead;


//////////////////////////////////////////////////////////////////
  always@(posedge clk or negedge resetn)
  begin
    if(!resetn) 
      busState <= IDLE; 
    else
      busState <= busNext; 
  end




  always@(*)
  begin
    busNext = busState;




    case(busState)
      IDLE:
      begin
        if(PSEL && !PENABLE)
            busNext = SETUP;
        else
            busNext = IDLE;
      end
      SETUP:
      begin
        if(PSEL && PENABLE)
            busNext = ACCESS;
        else
            busNext = IDLE;
      end
      ACCESS:
      begin
        if(PREADY)
            busNext = IDLE;
        else
            busNext = ACCESS;
      end
      default:
      begin
          busNext = IDLE;
      end
    endcase
  end








  assign actWrite = PWRITE  && (busState == ACCESS);
  assign actRead  = !PWRITE && (busState == ACCESS);
  assign PSLVERROR = 1'b0; 
  assign PREADY = slaveReady & & (busState !== IDLE);




  always@ (posedge clk)
  begin
    slaveReady <= actWrite | actRead;
  end


  simple_dual_port_ram
#(
  .DATA_WIDTH(32),
  .ADDR_WIDTH(16),
  .OUTPUT_REG(0),
  .RAM_INIT_FILE("")
)
dut
(
  .wdata  (PWDATA    ),
  .waddr  (PADDR    ),
  .wclk    (clk      ),
  .we      (actWrite  ),
  .raddr  (PADDR    ),
  .rclk    (clk      ),
  .re      (actRead  ),
  .rdata  (PRDATA    )
);


endmodule

審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制信號
    +關注

    關注

    0

    文章

    168

    瀏覽量

    12043
  • PSEL
    +關注

    關注

    0

    文章

    2

    瀏覽量

    2019
  • RISC-V
    +關注

    關注

    45

    文章

    2322

    瀏覽量

    46592

原文標題:APB3接口應用

文章出處:【微信號:gh_ea2445df5d2a,微信公眾號:FPGA及視頻處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何用XSCT通過APB接口來讀GT的寄存器

    在debug GT的時候,有時候需要讀出一些寄存器來分析。這篇文章介紹一種通過AXI4 Lite或者APB3接口從XSCT來讀Versla GT的寄存器的方法。
    的頭像 發表于 12-08 10:32 ?857次閱讀
    如何用XSCT通過<b class='flag-5'>APB</b><b class='flag-5'>接口</b>來讀GT的寄存器

    PGA308讀寫過程中的28ms延時復位1-wire接口是硬件實現的還是需要編程實現?

    請問,PGA308讀寫過程中的28ms延時復位1-wire接口是硬件實現的還是需要編程實現?
    發表于 09-24 07:17

    ram的結構和讀寫過程

    ,所以ram是易失性存儲器。本文主要介紹ram的結構和讀寫過程。  1.ram的結構它由三部分電路組成:    1)行、列地址譯碼器:它是一個二進制譯碼器,將地址碼翻譯成行列對應的具體地址,然后去選
    發表于 12-10 15:50

    ram的結構和讀寫過程

    (存入)或讀出(取出)信息。ram在計算機和數字系統中用來暫時存儲程序、數據和中間結果。隨機存取存儲器(ram)既可向指定單元存入信息又可從指定單元讀出信息。任何ram中存儲的信息在斷電后均會丟失,所以ram是易失性存儲器。本文主要介紹ram的結構和讀寫過程
    發表于 12-16 06:29

    ram的結構和讀寫過程

    (存入)或讀出(取出)信息。  ram在計算機和數字系統中用來暫時存儲程序、數據和中間結果。隨機存取存儲器(ram)既可向指定單元存入信息又可從指定單元讀出信息。任何ram中存儲的信息在斷電后均會丟失,所以ram是易失性存儲器。本文主要介紹ram的結構和讀寫過程
    發表于 12-31 06:18

    IIC總線的特點及讀寫過程

    IIC總線的特點IIC總線協議詳解IIC總線的讀寫過程
    發表于 01-04 07:30

    EEPROM I2C協議的特點與基本讀寫過程

    EEPROMI2C協議I2C物理層的特點I2C的協議層I2C基本讀寫過程通訊的起始和停止信號數據有效性地址及數據方向響應STM32的I2C特性及架構通訊引腳時鐘控制邏輯數據控制邏輯整體控制邏輯
    發表于 01-21 08:57

    使用SPI對SD卡進行讀寫過程中常見的問題有哪些?如何解決?

    使用SPI對SD卡進行讀寫過程中常見的問題有哪些?如何解決?
    發表于 01-27 07:17

    APB接口協議的讀寫傳輸及工作流程簡析

    APB是AMBA中相對比較簡單的接口協議,用于連接低帶寬,無需高性能流水線接口的外設。采用這種簡單的協議,你可以輕松地將自定義外設掛在基于AMBA總線的SoC上。許多APB外設都是慢速
    發表于 04-07 10:18

    PSEL = 0時APB3從機響應如何解決此問題

    在這里,在IP級別驗證中,我們沒有問題,因為主APB不會鎖存PREADY,而是在SOC級別具有多個APB從站主設備使用APB SLAVE 1執行一些事務,并且在切換到APB SLAVE
    發表于 08-17 15:51

    SmartFusion系列CoreAPB3應用指南(英)

    SmartFusion系列CoreAPB3應用指南(英) Building an APB3 Core for SmartFusion FPGAs
    發表于 04-23 14:03 ?16次下載

    藍羚牌APB15-3-A APB20-4-A APB25-5

    藍羚牌APB15-3-A APB20-4-A APB25-5-A APB30-6-A風壓式換氣扇電路圖
    發表于 02-27 21:22 ?1201次閱讀
    藍羚牌<b class='flag-5'>APB15-3</b>-A <b class='flag-5'>APB</b>20-4-A <b class='flag-5'>APB</b>25-5

    藍羚牌APB15-3-B APB20-4-B APB25-5

    藍羚牌APB15-3-B APB20-4-B APB25-5-B APB30-6-B連動式換氣扇電路圖
    發表于 02-27 21:22 ?1316次閱讀
    藍羚牌<b class='flag-5'>APB15-3</b>-B <b class='flag-5'>APB</b>20-4-B <b class='flag-5'>APB</b>25-5

    以太網工業級雙通道讀寫讀寫頭CK-FR102AN-E00開發手冊之讀寫過程與操作流程

    本文重點介紹以太網工業級雙通道讀寫讀寫頭CK-FR102AN-E00開發手冊之讀寫過程與操作流程,歡迎發燒友交流與溝通! 1、讀寫讀寫過程
    發表于 02-03 22:03 ?291次閱讀
    以太網工業級雙通道<b class='flag-5'>讀寫</b>器<b class='flag-5'>讀寫</b>頭CK-FR102AN-E00開發手冊之<b class='flag-5'>讀寫過程</b>與操作流程

    關于ram的結構和讀寫過程

    ram也叫主存,是與CPU直接交換數據的內部存儲器。它可以隨時讀寫(刷新時除外)且速度很快,通常作為操作系統或其他正在運行中的程序的...
    發表于 01-25 20:03 ?1次下載
    關于ram的結構和<b class='flag-5'>讀寫過程</b>
    bet365怎么存款| 百家乐赌场优势| 国际娱乐中心| 威尼斯人娱乐城注册送彩金| 百家乐平台开发| 百家乐官网桌布尼布材质| 沙巴娱乐| 大发888 打法888游戏| 百家乐官网论坛官网| 博狗娱乐城| 大发888娱乐城俄罗斯| 总统百家乐官网的玩法技巧和规则 | 哪里有百家乐官网投注网| 88娱乐城网址| 互联网百家乐的玩法技巧和规则| 红桃K百家乐官网娱乐城| 网络百家乐官网游戏机怎么破解| 香港六合彩直播| 大发888出纳柜| 百家乐怎么才能包赢| 百家乐开发公司| 怎么赢百家乐官网的玩法技巧和规则 | 百家乐官网论坛代理合作| 浏阳市| 棋牌游戏开发商| 姚记百家乐的玩法技巧和规则| 百家乐巴厘岛娱乐城| 百家乐官网路单统| 沙龙百家乐官网赌场娱乐网规则| 百家乐详解| 永利百家乐娱乐场| 百家乐赌缆十三式| 百家乐视频游戏聊天| 百家乐官网智能投注系统| 百家乐官网翻天粤qvod| 百家乐官网游戏策略| 百家乐官网是骗人吗| 吴旗县| 吴江市| 百家乐官网优博娱乐城| 百家乐官网2号技术打法|