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

    文章

    162

    浏览量

    11948
  • PSEL
    +关注

    关注

    0

    文章

    2

    浏览量

    2000
  • RISC-V
    +关注

    关注

    44

    文章

    2227

    浏览量

    46004

原文标题:APB3接口应用

文章出处:【微信号:gh_ea2445df5d2a,微信公众号:FPGA及视频处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何用XSCT通过APB接口来读GT的寄存器

    在debug GT的时候,有时候需要读出一些寄存器来分析。这篇文章介绍一种通过AXI4 Lite或者APB3接口从XSCT来读Versla GT的寄存器的方法。
    的头像 发表于 12-08 10:32 731次阅读
    如何用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 1185次阅读
    蓝羚牌<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 1280次阅读
    蓝羚牌<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 256次阅读
    以太网工业级双通道<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>