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 |
执行>>运算符相反的操作 |