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 module
模块、buff_wdata
、和 FIFO_ resp 的大小)总和与所有读取模块总和相加所得。总之,FIFO 大小的计算方式为“宽度 * 深度”。当您引用 1 KB FIFO 存储器时,它可采用 32*32、8*64 等任一配置,具体配置根据设计规格来选择。同样,可使用以下配置命令来为设计全局配置该适配器的 FIFO 存储器:
-
syn.interface.m_axi_latency
-
syn.interface.m_axi_max_read_burst_length
/syn.interface.m_axi_max_write_burst_length
-
syn.interface.m_axi_num_read_outstanding
/syn.interface.m_axi_num_write_outstanding
-
syn.interface.m_axi_addr64
提示: 您还可使用 INTERFACE 编译指示或指令上的类似选项来配置特定 m_axi 接口。
这些配置选项用于控制 FIFO 的宽度和深度,如下所示。
-
FIFO_wreq
/rreq module
大小 = (width(syn.interface.m_axi_addr64
)) * Depth(syn.interface.m_axi_latency
))。Vivado 工具会将此 FIFO 作为移位寄存器来实现。 -
buff_wdata
/buff_rdata
模块大小 = (HLS 综合后的端口宽度 * 深度 (syn.interface.m_axi_num_write_outstanding
*syn.interface.m_axi_max_write_burst_length
))。提示: 默认情况下,此 FIFO 将作为块 RAM 来实现,但可在 LUTRAM 或 URAM(由syn.interface.m_axi_buffer_impl
判定)中实现。 -
FIFO_resp
模块大小 = 深度 (syn.interface.m_axi_num_write_outstanding
)。