Apb3
AMBA3-APB总线通常用于连接低带宽外设。
Configuration and instantiation
首先,每当您想要创建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 | 执行>>运算符相反的操作 |