AXI 主适配器用于将自定义的 AXI 命令从 HLS 调度器转换为标准 AXI AMBA 协议,并将其发送至外部存储器。MAXI 适配器使用 FIFO 等资源来存储请求/数据和确认 (ack)。以下提供了它所耗用的模块和资源综述:
- 写入模块:总线写入模块负责执行写入操作。
- FIFO_wreq:此 FIFO 模块负责存储未来写入请求。当 AW 通道可用时,将从该 FIFO 跳出针对全局存储器的新写入请求。
- buff_wdata:此 FIFO 负责存储未来写入数据,这些数据需发送至全局存储器。当 W 通道可用并且满足 AXI 协议条件时,将从该 FIFO 跳出大小与 burst_length 相等的写入数据,并发送至全局存储器。
- FIFO_resp:此模块负责控制未完成的流水打拍请求数量,这些请求均发送至全局存储器。
- 读取模块:这些模块负责执行读取操作。它使用以下资源
- FIFO_rreq:此 FIFO 模块负责存储未来写入请求。当 AR 通道空闲时,将从该 FIFO 跳出针对全局存储器的读取请求。
- buff_rdata:此 FIFO 负责存储从全局存储器接收到的读取数据。
M_AXI 适配器的器件资源耗用量是所有写入模块(FIFO_wreq 模块、buff_wdata、和 FIFO_ resp 的大小)总和与所有读取模块总和相加所得。总之,FIFO 大小的计算方式为“宽度 * 深度”。当您引用 1KB FIFO 存储器时,它可采用 32*32、8*64 等任一配置,具体配置根据设计规格来选择。同样,可使用 config_interface 命令的以下选项来为设计全局配置该适配器的 FIFO 存储器:
-
- -m_axi_latency
- -m_axi__max_read/write_burst_length
- -m_axi_num_read/write_outstanding
- -m_axi_addr64
提示: 您还可使用 INTERFACE 编译指示或指令上的类似选项来配置特定 m_axi 接口。这些配置选项用于控制 FIFO 的宽度和深度,如下所示。
- FIFO_wreq/rreq 模块的大小 = ~~~ (width( config_interface m_axi_addr64[=true|false])) * Depth( config_interface m_axi_latency ))。实现 Vivado 后,此 FIFO 将作为移位寄存器来实现。
-
buff_wdata 模块的大小 = ~~~ (width ( port width after hls synthesis) * Depth (config_interface m_axi_num_read/write_outstanding* config_interface m_axi_max_read/write_burst_length ))。
提示: 默认情况下,此 FIFO 将作为 BRAM 来实现,但可由用户使用以下设置来控制:config_interface -maxi_buffer_impl <auto|lutram|bram|uram>。 - FIFO_resp 模块的大小 = width(2) * depth (config_interface -m_axi_num_read/write_outstanding-1)。