总线从端生成器
简介
在许多情况下,需要实现总线寄存器组, BusSlaveFactory
是一个提供了一种抽象且流畅的方式来定义它们的工具。
要了解该工具的功能,可以通过一个简单的使用Apb3SlaveFactory变体来实现 内存映射UART 的示例。还有另一个 计时器 的示例,其中包含内存映射函数。
您可以在 这里 找到有关 BusSlaveFactory
工具内部实现的更多文档
功能
BusSlaveFactory
工具的实现,包括后续总线:AHB3-lite、APB3、APB4、AvalonMM、AXI-lite 3、AXI4、BMB、Wishbone 和 PipelinedMemoryBus。名称 |
返回类型 |
描述 |
---|---|---|
busDataWidth |
Int |
返回总线的数据宽度 |
read(that,address,bitOffset) |
当通过总线读取地址 |
|
write(that,address,bitOffset) |
当通过总线写入地址 |
|
onWrite(address)(doThat) |
当 |
|
onRead(address)(doThat) |
当 |
|
nonStopWrite(that,bitOffset) |
将通过总线写入的 |
|
readAndWrite(that,address,bitOffset) |
使 |
|
readMultiWord(that,address) |
创建内存映射以从 ‘address’ 读取
that 。如果
that 的位宽大于一个字(32位),它将在以下地址上扩展寄存器 |
|
writeMultiWord(that,address) |
创建内存映射以在 ‘address’ 处写入
that 。如果
that 的位宽大于一个字(32位),它将在以下地址上扩展寄存器 |
|
createWriteOnly(dataType,address,bitOffset) |
T |
在 |
createReadWrite(dataType,address,bitOffset) |
T |
在 |
createAndDriveFlow(dataType,address,bitOffset) |
Flow[T] |
在 |
drive(that,address,bitOffset) |
使用位于 |
|
driveAndRead(that,address,bitOffset) |
使用位于 |
|
driveFlow(that,address,bitOffset) |
当对 |
|
readStreamNonBlocking(that,
address,
validBitOffset,
payloadBitOffset)
|
读取
that 信号并在读取 address 地址时消耗事务。valid <= validBitOffset bit
payload <= payloadBitOffset+widthOf(payload) downto
payloadBitOffset |
|
doBitsAccumulationAndClearOnRead(that,
address,
bitOffset)
|
实例化一个内部寄存器,该寄存器在每个周期执行以下操作:
reg := reg | that
然后,当发生读取时,寄存器被清除。该寄存器可通过
address 地址读取,并放置在字中的 bitOffset 位置 |