Vivado_Blocking阻塞模式与NonBlocking非阻塞模式

Vivado IP核中的Blocking Mode和NonBlocking Mode的区别。
参考资料:pg105

Basic Handshake

AXI4-Stream通道中的数据传输如下图所示。TVALID由主机端驱动,TREADY由从机端驱动。TVALID表示有效载荷字段(tdata、tuser和tlast)中的值有效。TRAEDY表示从机已经准备好接收数据。当tvalid和tready在一个时钟周期中都为TRUE时,就会发生数据传输。主机端和从机端分别为下一次传输设置tvalid和tready。

在这里插入图片描述

NonBlocking Mode

非阻塞表示一个输入通道上的数据缺乏不会导致另一个通道上的传入数据被缓冲。在非阻塞模式下,输出通道没有tready信号,因此并不总是需要AXI4-Stream的完全流量控制。
当所有当前输入通道都接收到断言的tvalid(如果存在tready,则断言)时,将验证一个操作,并断言输出tvalid以限定结果。如果一个通道接收到tvalid而另一个没有,则即使tready存在并被断言,操作也不会发生。与阻塞模式(完全兼容AXI4-Stream)不同,非阻塞模式可以忽略单个通道上的有效数据。
阻塞或非阻塞的选择适用于整个核心,而不是单独的每个通道。各个通道仍然具有不可选的tvalid信号,这类似于之前许多采用AXI4-Stream接口的IP核上的新数据(ND)信号。由于没有阻塞数据流的功能,IP核内部实现非常简化,因此这种模式所需的资源更少。建议用户将其设计从预axi版本迁移到此版本,只需进行最小的更改。
如下图所示,数据A1被忽略,因为s_axis_phase_tvalid被取消断言。数据A2和B1被接受,因为tvalid和tready都被断言。
在这里插入图片描述

Blocking Mode

阻塞表示每个带有tready信号的通道会缓冲数据以供使用。
AXI4-Stream的全流量控制有助于系统设计,因为数据流是自我调节的。通道使用tready来防止数据丢失,因此只有在下游数据路径准备好处理数据时才传输数据。
当所有输入通道都有可用的且经过验证的数据时,将执行一个操作,输出上的结果也可用。
如果由于m_axis_dout_tready为低而阻止输出卸载数据,则数据将在核心内部的输出缓冲区中累积。当输出缓冲区接近满时,核心将停止进一步的操作。当输入缓冲区填满时,它们各自的tready将被取消断言,以防止进一步输入。
两个输入通道是绑定的,因为每个输入通道都必须在操作进行之前接收经过验证的数据。
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值