Apb3

AMBA3-APB总线通常用于连接低带宽外设。

配置和实例化

首先,每当您想要创建APB3总线时,您都需要一个配置对象。该配置对象是一个 Apb3Config 并具有以下参数:

参数名称

类型

默认值

描述

addressWidth

Int

PADDR的位宽(字节粒度)

dataWidth

Int

PWDATA和PRDATA的位宽

selWidth

Int

1

PSEL的位宽

useSlaveError

Boolean

false

指定是否出现PSLVERROR

简而言之,APB3总线在SpinalHDL库中定义方式如下:

case class Apb3(config: Apb3Config) extends Bundle with IMasterSlave {
  val PADDR      = UInt(config.addressWidth bits)
  val PSEL       = Bits(config.selWidth bits)
  val PENABLE    = Bool()
  val PREADY     = Bool()
  val PWRITE     = Bool()
  val PWDATA     = Bits(config.dataWidth bits)
  val PRDATA     = Bits(config.dataWidth bits)
  val PSLVERROR  = if(config.useSlaveError) Bool() else null
  //...
}

这是一个简单的使用示例:

val apbConfig = Apb3Config(
  addressWidth = 12,
  dataWidth    = 32
)
val apbX = Apb3(apbConfig)
val apbY = Apb3(apbConfig)

when(apbY.PENABLE){
  //...
}

函数和运算符

名称

返回类型

描述

X >> Y

将X连接到Y。Y的地址可以小于X的地址

X << Y

执行>>运算符相反的操作