LogiCORE RapidIO - 在逻辑层,treq_byte_count似乎不正确

问题描述

在逻辑层接口上,treq_byte_count似乎不会输出正确的值。这是预期的吗?

这有三种可能性。

解决/修复方法

1.如果您使用的是SRIO v4.3或更早版本的核心,则在传输消息时核心计算treq_byte_count存在问题。请参阅(Xilinx答复30320) 。此问题将在SRIO v4.4中修复。

2.如果您执行的NREAD小于8个字节,则treq_byte_count将始终显示最少8个字节。

我们的核心将所有部分DWORD NREAD转换为完整的DWORD事务。当NREAD进入的字节少于8个字节时,我们的核心仍​​将发送8个字节的数据,因为这是完整的DWORD。

原因是因为所有响应数据必须是完整的DWORD事务,并且还在DWORD中正确对齐。通过读取整个DWORD,我们可以防止用户执行部分请求和重新对齐。它还减少了用户后端需要支持的事务大小的数量。请求NREAD的启动器器件仍将知道它请求了多少字节。在NWRITE的情况下,我们不能这样做。我们应该只写出预期的正确字节数。

3.如果发送间歇性字节计数,则treq_byte_count与启动器的ireq_byte_count中发送的不匹配:

RapidIO规范仅定义允许的wrsize值8,16,32,64,128,256和512.因此,核心使用此数据来确定TREQ_BYTE_COUNT。请参阅RapidIO Trade Association的逻辑规范的表4-3和表4-4:IO_logical.pdf

ireq_byte_count是用户想要启动的事务大小的直接十六进制计数。当核心接收到该计数时,它将其编码为rd / wrsize和wdptr,如规范表4-3和4-4所示。如果字节计数与此表中的某个精确值不匹配,它将将事务编码为支持的下一个更大的大小,但仅发送用户提供的数据量(在写入情况下)。

ftype = NREAD,byte_count = 9'h060(96字节)将被编码到SRIO数据包中,如wdptr = 1'b0,rdsize = 4'hD。

ftype = NWRITE,byte_count = 9'h060(96字节)将被编码到SRIO数据包中,如wdptr = 1'b1,wrsize = 4'hD,将写入大小定义为128字节(因为96字节不是SRIO的可行大小写入)。但是,如果用户只发送96个字节的数据,则将发送96个字节。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-08-18 20:34:59 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它