赛灵思
直播中

张建国

7年用户 150经验值
私信 关注
[问答]

请问我对AXI4-Stream FIFO的理解不正确吗?

嗨,
我正在研究Spartan 6的设计。
数据来自PCIe IP核,频率为62.5MHz,通过AXI4-Stream FIFO同步到100 MHz系统时钟。
这是一个示例波形;
m_axis_tvalid未与100 MHz时钟的上升沿同步。
虽然m_axis_tvalid很高,但m_axis_tdata在标有红色的点处不断变化。
在FIFO IP内核中不处理时钟域时钟同步,并且每当m_axis_tvalid为高时,这意味着FIFO中存在稳定的数据,因此当我拉m_axis_tready时会发生高转换吗?
m_axis_tvalid很高,数据不断变化是正常的吗?
我对AXI4-Stream FIFO的理解不正确吗?
我正在使用的AXI4-Stream FIFO版本是LogiCORE IP FIFO Generator v9.3
我已经附上了png,以防它不清楚
谢谢,
杰姆

回帖(2)

姜雨孜

2019-8-12 07:38:43
两者都很正常。
您会注意到TVALID信号实际上与100MHz时钟同步(因为它始终与100MHz时钟具有相同的相位) - 它只是在时钟边沿上没有变化。
这是因为用于FIFO的块RAM在时钟边沿之后需要一点时间来提供其数据。
它应该对功能没有影响。
对于您的第二点,这正是流量控制对AXI流有效的方式。
每当TVALID和TREADY在时钟上升沿都为高电平时,就会传输一个数据元素。
传输完该元素后,端口上会出现另一个元素,准备在下一个时钟边沿传输。
如果它只能在TVALID为低电平时更改数据,那么在传输每个数据元素后,它必须将TVALID拉低一个周期 - 导致每隔一个时钟周期一个数据元素的最大吞吐量。
举报

向芹

2019-8-12 07:57:48
感谢您的回复,
但我无法正确读取数据。
如果你注意到第二个样本的m_axis_tdata在很短的时间内(小于一个时钟周期)是稳定的,当我在时钟的上升沿采样时,它会读取一些垃圾值,因为数据是不变的。
我该怎么办?
降低我读的速度?
如你所见,我keepm_axis_tready持续高。
我应该在有效读取后将其拉下一个周期吗?
谢谢,
杰姆
举报

更多回帖

发帖
×
20
完善资料,
赚取积分