PCIE-message

latency tolerance reporting message

用于报告读写设备之间的latency;

Bit15:requirement,仅在此bit为1的情况下,后续的latency value,latency scale才有效;

具体的latency值为latency_value * latencyscale,范围在1ns~225*(210-1)的范围之间;

针对latency本身的一些说明:

(1)需要考虑使用clock power mangement引起的delay(assert CLKREQ#到设备收到有效的clock信号之间的时间);

(2)针对non-posted request,latency是从发送tlp的最后一个symbol到收到第一个cpl之间的延迟;

(3)由于flow control的反压机制,发了一个posted request之后,不能再次发送另一个posted request的情况下,Latency是从发送上一个posted request的最后一个symbol到收到dllp的credit的第一个symbol之间的时间。

一些需要注意的点:

(1)一旦设备进入到DL_Down状态,port之前记录的latency value均变成无效的了;

(2)建议ep在LTR机制enable之后’shortly’发送LTR message;

(3)建议设备不要在500us之间发送超过两个的LTR message;

(4)为什么又snoop和no-snoop两种latency?应该是区分device设备,可能存在这两种设备

一些发送message的时间点:

(1)当通过写PMCSR寄存器进入到一个non-D0状态的话,如果设备最近传输过LTR message(自从上次从DL_down状态变为DL_up状态),并且这个message中的latency field只要有一个requirement为1,那么此时在进入到D0状态前必须要发送一个LTR message,并且这个message的latency field中的两个requirement必须均为0;

(2)参考controller中关于cfg write个FLR实现对LTR机制的关闭准则;

关于multi function中的LTR:

待补充;

关于switch中的LTR:

待补充;

关于RC中的LTR:

RC运行delay处理收到的TLP请求,但是需要注意的是,假如收到了一些列的TLP请求,在这个过程中latency requirement更新了,需要先更新layency的数值,在处理随后的请求,更新的latency value值起作用的时间必须在之前更新的lantency值之内。

controller:

主动产生LTR meesage的几种方式:

(1)通过SII:app_ltr_message_req;

App_ltr_msg_latency:指示发送的meesage内容?那为什么还有app_ltr_func_num这个信号线?

Output信号线,作为输出显示当前使用的latency是多少。

(2)直接在XALI0/1/2接口上发送msg;

补充:关于XAL0 interfcae的说明:

Client0_tlp_byten_en[7:0]:

针对first dword的tlp和last的dword的Byte_enable;

Client0_tlp_addr[63:0]:

发送cpl的时候[6:0]作为cpl中lower address域;

发送MEM 32/IO/CFG三种操作的时候,存在3-dword;第三个dword是[31:0];

发送MEM 64/MSG,第四个dword是[31:0],第三个dword是[63:32];

前两个dword通过信号clinet_tlp_tc/attr/fmt/type/ep/byte_len/th/td/attr等信号表示。

(3)通过在XALI0/1/2上发送I/O或mem tlp,通过iATU转换成LTR message;

当MEM tlp的地址成功匹配+tlp的type field是IATU_REGION_CTRL_1_OFF_OUTBOUND_I,此时message code会从IATU_REGION_CTRL_2_OFF_OUTBOUND_I寄存器中获取,长度为0的mem wr转变为msg,非0的转变为msgd。

这里有问题,没理解。

自动产生message的几种方式:

(1)通过写Power Management Control and Status register中的Power State field使得function到达一个non-D0状态(LTR机制在上次从DL down到DL up的过程中就被active了);这一点对应协议

(2)通过cfg write或者FLR实现对Device Control 2中的LTR Mechanism Enable写0可以关闭LTR机制,如果关闭该机制的话,并且此前在DL_down转变为DL_up之后发送了LTR message,这个message的requirement设为1了,那么设备需要重新发送一个新的LTR message,并且requirement为0;

通过设置MISC_CONTROL_1_OFF中的DISABLE_AUTO_LTR_CLR_MSG为1,自动产生LTR clear message的机制可以被关闭

LTR机制是否使能是通过cfg_ltr_m_en这个信号新显示;另外需要注意的是当Device Control 2 Register中的LTR Mechanism Enable为0的时候,不能发送LTR meesage(通过系统侧),此时controller是不会block产生的LTR message。

针对如何在PCIe-MVB接口上配置并启用Message Data功能的问题,阅读《D017M PCIe Minicard:MVB接口多功能数据表》将会是一个很好的起点。该数据表详细介绍了D017M PCIe Minicard MVB接口的特性,以及如何实现Message Data的传输。 参考资源链接:[D017M PCIe Minicard:MVB接口多功能数据表](https://wenku.csdn.net/doc/3mmb32hqsh) 首先,需要区分Message Data和Process Data这两种MVB总线上的数据类型。Message Data用于传输信息包,而Process Data则用于实时控制和监测。在配置PCIe-MVB接口时,通常需要明确接口支持的波特率、消息数量以及消息缓冲区的大小等参数。 具体到操作步骤,首先需要根据选择的配置(MDFULL或SERVER)安装相应的驱动程序和软件包。接下来,使用提供的操作手册和Starter-kit进行初始化配置。在MDFULL配置中,由于包含了完整的MVB控制器,因此可以执行更多高级配置,比如设置为总线管理员(Bus Administrator)。而对于SERVER配置,主要是为消息数据实时协议栈进行配置。 在实际配置过程中,要特别注意以下几点: 1. 确认PCIe-MVB卡已经正确安装在目标系统上,并且系统已识别该硬件。 2. 读取数据表中关于MVB接口的配置限制和使用要求,以确保符合产品的使用条件。 3. 如果配置Message Data功能,确保网络上其他设备或总线管理员(如果已设置)接受新的消息格式和长度。 4. 在软件层面上,可能需要编写或修改配置文件来启用Message Data,这时应参考操作手册中的示例代码。 5. 完成配置后,建议通过一些基本的通信测试来验证配置是否成功,并确保没有数据丢失。 完成以上步骤后,Message Data功能应该已经被成功配置并启用。然而,鉴于MVB协议本身的复杂性,以及PCIe-MVB接口的多功能性,用户在实施过程中可能会遇到各种问题。此时,继续参考《D017M PCIe Minicard:MVB接口多功能数据表》中的高级故障排除和性能优化建议将大有帮助。 为了更深入地理解PCIe-MVB接口的应用,建议在掌握基础配置之后,进一步探索《D017M PCIe Minicard:MVB接口多功能数据表》中未涉及的高级特性。此外,有关知识产权保护、产品特定的应用和配置限制等问题,可以在产品附带的授权文件和使用条款中找到详尽说明。 参考资源链接:[D017M PCIe Minicard:MVB接口多功能数据表](https://wenku.csdn.net/doc/3mmb32hqsh)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值