Vivado AXI4-Stream Data FIFO 核配置与测试详解

FIFO depth (FIFO 深度): 定义了 FIFO 能存储多少个数据字(Data Words)。
注意:实际占用的存储资源取决于深度乘以数据宽度(TDATA width)。
Memory type (存储器类型): Auto
- 决定用 FPGA 内部的哪种资源来实现 FIFO。
- Auto: 让 Vivado 综合工具根据 FIFO 的大小自动选择(通常小 FIFO 用分布式 RAM/LUTRAM,大 FIFO 用块 RAM/BRAM)。
- Block RAM: 强制使用 BRAM。
- Distributed RAM: 强制使用 LUT 搭建的 RAM。
- UltraRAM: 针对 UltraScale+ 系列的特殊大容量 RAM。
Independent clocks (独立时钟): No
- No (同步 FIFO): 写入侧(Slave)和读取侧(Master)使用同一个时钟信号 (
s_axis_aclk)。这消耗资源较少,延迟较低。 - Yes (异步 FIFO): 启用跨时钟域功能。输入和输出可以使用不同频率的时钟。此时界面左侧的端口图会显示
s_axis_aclk(写时钟) 和m_axis_aclk(读时钟)。
CDC sync stages (跨时钟域同步级数): 3 (灰色不可选)
只有当选择了 'Independent clocks: Yes' 时才有效。它定义了用于同步信号的寄存器级数,通常用于防止亚稳态。
Enable packet mode (启用包模式): No
- No: 普通 FIFO 模式。只要 FIFO 里有数据,Master 端就会尝试输出。
- Yes: FIFO 会等到接收到一个完整的数据包(即收到
TLAST信号)后,才开始向 Master 端输出数据。这用于防止数据包在传输中间断流(Underrun),但会增加延迟。
ACLKEN conversion mode: None,用于控制时钟使能信号的处理方式。通常保持默认 None 即可。
Enable ECC (启用 ECC 校验): No,是否启用错误检查和纠正(Error Correction Code)。启用后会增加逻辑资源,用于检测和修复位翻转错误。
TDATA width (bytes) (数据位宽): 1
- 定义主要数据总线
TDATA的宽度。设为 1 byte,也就是 8 bits。这意味着每个时钟周期传输 8 位数据。
Enable TSTRB (启用 TSTRB 信号): No,TSTRB (Strobe) 用于指示哪些字节是有效的位置选通信号。对于纯数据流通常不需要。
Enable TKEEP (启用 TKEEP 信号): No,TKEEP (Keep) 用于指示数据流中的哪些字节是有效的(通常用于处理非对齐的数据包尾部)。
Enable TLAST (启用 TLAST 信号): No,TLAST 用于指示一个数据包(Packet)的结束。
设为 No,意味着这个 FIFO 认为数据是无限连续的流,没有'包'的概念。如果需要划分帧或包,必须选 Yes。







