2017-07-07 59 views
1

我只是在寻找建议。我目前有一个集成在VHDL中的定制IP,它具有AXI4从输入和AXI4主输出,目前信号直接连接在一起。AXI4延迟交易

我想给AXI信号添加一个可定制的延迟,这样它们可以通过IP延迟一段特定的时间,而不是相互连接。

我的问题是;我是否可以通过使用AxVALIDAxREADY(也可能是RVALID/RREADYWVALID/WREADY)信号来延迟通过IP进行读写操作?

如果我想要一个20个时钟周期的延迟,我可以等待一个外部主设备来声明VALID,然后等待20个时钟,然后让IP从设备声明READY?这是正确的逻辑?

在此先感谢您的任何建议。

+2

通过延迟AxREADY信号,您会影响吞吐量,即每秒最大事务数。如果您确实想要控制延迟(请求和响应之间的延迟),则应该在响应路径(RVALID-RDATA-RRESP和BVALID-BRESP)上添加一个FIFO。 –

+0

@RenaudPacalet这两者之间有很大的区别吗?在我看来,使用FIFO会产生同样的影响;除非我错了? – MateoConLechuga

+2

是的,有很大的区别。如果延迟请求确认(AxREADY),则阻止主控制器发出更多请求。如果您确认请求但延迟了响应(RVALID和BVALID),相反,您会增加请求和响应之间的延迟时间,但是您不会阻止主服务器发出更多请求(如果可以)。如果主设备支持它,您甚至可以保持原始吞吐量,同时增加延迟。 –

回答

3

是的,这是可以做到的。根据您的基础设施,它可能会导致巴士拥堵。或者,您还应该插入一个FIFO来缓冲这些延迟的总线事务。