总线从端生成器
简介
在许多情况下,需要实现总线寄存器组, 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位置 |