RapidIO I / O Avalon-MM Master中读写事务之间可能发生命令丢失-Altera-Intel社区-FPGA CPLD-ChipDebug

RapidIO I / O Avalon-MM Master中读写事务之间可能发生命令丢失

RapidIO MegaCore功能I / O Avalon-MM主站的读写端口可能会以与RapidIO链路上显示的顺序不同的顺序在Avalon-MM接口上显示读写事务。更具体地说,如果RapidIO IP内核在接收到几个写请求数据包后立即在RapidIO链路上收到读请求数据包,则读取事务可能会在所有写事务完成之前完成。

下图说明了可能出现问题的情况示例。

I / O Avalon-MM主状态,其中r5读取事务可以传递一个或多个写入事务

在图中,RapidIO IP内核Avalon-MM主写端口有一个写请求事务w0准备发送到Avalon-MM从器件0,而RapidIO IP内核Avalon-MM主读端口有一个读请求事务r5准备发送到同一个Avalon-MM从站,Avalon-MM从站0.事务编号表示事务从传输层到达的顺序,即事务应完成的顺序。但是,在以下示例方案中丢失了事务排序:

  1. 主写端口将w0请求发送到Avalon-MM slave 0。
  2. Avalon-MM slave 0通过断言waitrequest来响应。
  3. 主读端口将r5请求发送到Avalon-MM slave 0。
  4. Avalon-MM slave 0在w0事务完成之前检索并传输数据到Avalon-MM主读端口以响应r5请求。

w1,w2,w3或w4被延迟可能会出现相同的情况。类似地,w0可能会延迟但在r5之前仍然完成,但是在r5之前w1没有完成,依此类推。理论上也可以使用r0读取事务和w1写入事务来发生相同的情况。但是,RapidIO规范并不排除写入事务传递读取事务。

解决/修复方法

为防止NREAD事务在其之前的NWRITE事务序列中传递任何事务,请确保RapidIO链路上的写事务和读事务之间有足够的延迟。例如,你可以做最后的NWRITE交易的NWRITE_R交易,而是和发送NREAD收到后才链接交易NWRITE_R响应。

此问题将在RapidIO MegaCore功能的未来版本中修复。

请登录后发表评论

    没有回复内容