问题描述
RapidIO Core版本附带的缓冲区可以设置为使用基于接收器的流程控制和基于发送器的流程控制。有什么不同?
解决/修复方法
有关差异的详细说明,请参见RapidIO互连规范的第IV部分1.2.4.1和1.2.4.2。
通常,基于接收器的流程控制是最简单的流程控制方法,并且更容易实现。接收器件通过逐个分组地接受或拒绝分组来控制来自其链路伙伴的分组流。接收端口不向其链路伙伴提供有关其可用于数据包接收的缓冲区空间量的信息。该方法的效率低于基于发射机的流程控制,因为发送器件在不知道接收机是否接受该分组的情况下发送分组。如果接收器件没有可用于存储传入数据包的缓冲区空间,它将重试该数据包。基于接收器的流控制将导致更多重试,尤其是在繁忙链路上。
使用基于发送器的流程控制时,接收端口向其链接伙伴提供有关可用空闲缓冲区空间量的信息。然后,发送器件可以根据发送端口等待发送的分组的数量和优先级来使用该信息来分配接收器件的缓冲空间。通过这样做,可以避免由于缺少缓冲空间而需要重试一个或多个分组。
RapidIO Core附带的Xilinx缓冲器能够在任一模式下运行。您可以通过修改“tx_control.v”文件中的参数来更改流程控制。查看以下部分:
// 流程控制
// TX_FLOW_CONTROL_ENABLE = 1 => TX流程控制
// TX_FLOW_CONTROL_ENABLE = 0 => RX流程控制
//如果连接的器件处于RX FLOW CONTROL,那么
//将覆盖此参数,缓冲区将被覆盖
//在RX FLOW CONTROL中操作。
参数TX_FLOW_CONTROL_ENABLE = 1’b1;
默认值是基于变送器的流程控制。
没有回复内容