问题描述
重播缓冲区的大小是多少?有多少个传输缓冲区?
解决/修复方法
在针对Virtex-4和Virtex-II Pro的针对PCI Express的LogiCORE端点和针对Spartan系列的针对PCI Express的LogiCORE端点PIPE中,数据链路层中没有单独的重放缓冲区。
核心在事务层中包含一组传输缓冲区,它们也充当重放缓冲区。核心将数据包保存在发送缓冲区中,直到它从另一端获得确认DLLP(ACK或NAK)。如果需要重播数据包,它将再次从这些缓冲区中传输。如果缓冲区填满,则核心会通过取消断言trn_tdst_rdy_n来阻止更多数据进入核心。核心的trn_tbuf_av总线输出通知用户在任何给定时间有多少缓冲区空闲。
有关缓冲区大小和可用缓冲区数量的更多信息,请参阅PCI Express内核的用户指南(UG185)。请参阅第5章“使用核心进行设计”中标题为“传输缓冲区”的部分。 UG由doc目录中的CORE Generator随核心一起提供。
这些缓冲区在用户应用程序和由内核配置管理模块(CMM)内部生成的数据包之间共享。当用户应用程序请求时,CMM生成完成TLP以响应配置事务,错误消息和中断请求。这些数据包与来自用户应用程序的数据包一起插入到相同的事务层传输缓冲区中。发生这种情况时,当数据包从CMM加载到发送缓冲区时,内核将短暂地置位trn_tdst_rdy_n ,以确保用户不会同时尝试将数据包放入内核。有关此行为的更多信息,请参阅“PCI Express用户指南”第5章中标题为“端点事务传输接口的目标限制”一节。
没有回复内容