7 Series FPGAs Integrated Block for PCI Express IP核中基于64位事务层接口的AXI4-Stream接口设计(二)

基于64位事务层接口的AXI4-Stream接口设计主要涉及信号定义、数据传输规则以及接口行为等方面。

本文为7 Series FPGAs Integrated Block for PCI Express IP核中基于64位事务层接口的AXI4-Stream接口设计(一)一文后续。

4 Source Throttling on the Transmit Datapath(在数据传输路径中的源节流)

源节流在数据传输路径中是一个重要的机制,它允许在用户应用没有数据可供传输时减少数据传输的速率或暂时停止数据传输。

源节流机制的工作流程

当用户应用没有数据可供传输时,它会在相应的时钟周期内将s_axis_tx_tvalid置为低。AXI4-Stream接口检测到s_axis_tx_tvalid为低后,会忽略s_axis_tx_tdata[63:0]上的数据,不进行任何处理或传输。当用户应用准备好传输新的数据时,它会再次将s_axis_tx_tvalid置为高,并将数据放在s_axis_tx_tdata[63:0]上。AXI4-Stream接口检测到s_axis_tx_tvalid为高后,会开始接收和处理s_axis_tx_tdata[63:0]上的数据。

图3-8展示了源节流机制的工作原理。在该图中,可以看到s_axis_tx_tvalid信号在何时被置为高或低,以及这如何影响AXI4-Stream接口对s_axis_tx_tdata[63:0]上数据的处理。

4 Destination Throttling of the Transmit Datapath

用于在AXI4-Stream接口的传输数据路径上控制用户应用的发送速率。当AXI4-Stream接口的内部传输缓冲区没有空间容纳新的TLP时,它会通过特定的信号通知用户应用降低发送速率。

信号机制

  • s_axis_tx_tready信号用于指示AXI4-Stream接口是否准备好接收新的TLP。
  • 当AXI4-Stream接口的内部传输缓冲区满时,它会将s_axis_tx_tready信号置为低(deasserted),通知用户应用停止发送新的TLP。

节流操作

  • AXI4-Stream接口会在当前数据包传输完成后开始节流用户应用。
  • 如果在当前数据包传输完成后立即开始传输另一个数据包,节流操作会在tlast信号之后立即进行。

图3-9展示了当IP核传输 AXI4-Stream接口的内部传输缓冲区满时,通过置低s_axis_tx_tready信号来节流用户应用的场景。

当IP核传输AXI4-Stream接口通过断言s_axis_tx_tready信号来接受一个TLP(Transaction Layer Packet,事务层数据包)的开始时,它保证会接受整个TLP,只要这个TLP的大小不超过PCIe设备能力寄存器(偏移地址04H)中的Max_Payload_Size字段所指定的值。

s_axis_tx_tready信号的去断言的情况:

  • 当IP核没有足够的缓冲区(因为来自链路伙伴的信用不足导致数据包未被排空)时;
  • 当IP核正在传输一个内部生成的TLP(如由于配置读写、错误消息TLP或用户应用程序在cfg_err接口上请求的错误响应而生成的完成TLP)时,并且在用户应用程序通过断言tx_cfg_gnt信号授予其使用传输数据路径的权限后,AXI4-Stream接口也会去断言s_axis_tx_tready信号。IP核在传输完内部生成的TLP后会重新断言s_axis_tx_tready信号。
  • 当PCI电源管理功能结构中的电源管理控制/状态寄存器(偏移地址0x4)中的电源状态字段更改为非D0状态时,AXI4-Stream接口也会去断言s_axis_tx_tready信号。在这种情况下,任何正在进行的TLP都会被完全接受,然后s_axis_tx_tready信号会被去断言,禁止用户应用程序在核心处于非D0电源状态时发起任何新的事务。

当IP核去断言s_axis_tx_tready信号时,用户应用程序需要保持所有的控制和数据信号不变,直到IP核重新断言s_axis_tx_tready信号。这是为了确保在核心准备好接收新的TLP之前,用户应用程序不会尝试发送任何数据。

5 Discontinuing Transmission of Transaction by Source

在IP核传输AXI4-Stream接口中,用户应用程序如何通过特定的用户信号(s_axis_tx_tuser[3],标记为tx_src_dsc)来终止一个正在传输的TLP(Transaction Layer Packet,事务层数据包)?以下是对这段描述的详细解释:

  • s_axis_tx_tuser[3](或标记为tx_src_dsc)允许用户应用程序通过断言这个信号来终止一个正在传输的TLP。为了成功终止TLP的传输,s_axis_tx_tvalids_axis_tx_treadytx_src_dsc这三个信号必须同时被断言。

  • tx_src_dsc信号不能在新数据包开始的地方被断言。它可以在IP核接受新数据包的第一拍之后的任何时钟周期上被断言,直到并包括s_axis_tx_tlast被断言的时钟周期。如果传输接口上没有TLP事务正在进行,断言src_dsc将不会产生任何效果。

图3-10展示了用户应用程序如何使用tx_src_dsc来终止一个数据包。断言src_dscs_axis_tx_tlast一起是可选的,但如果你选择这样做,它必须在s_axis_tx_tlast之前或与其同时被断言。

  • 如果不使用流模式(streaming mode),即s_axis_tx_tuser[2](或标记为tx_str)等于0b,并且数据包被中断,则该数据包在串行链路上传输之前会被丢弃。

  • 如果使用流模式(tx_str = 1b),则在串行链路上,数据包会以EDB(End of Data Block,数据块结束)符号终止。这意味着数据包不会被完全传输,而是在到达数据块结束时通过EDB符号来指示数据包的结束。

6 Discarding of Transaction by Destination

IP核传输AXI4-Stream接口在以下三种情况下会丢弃TLP:

  • PCI Express链路故障

如果PCI Express链路出现故障或断开,正在传输的TLP将被丢弃。

  • 违反Max_Payload_Size限制

如果提交的TLP的大小超过了PCI Express设备能力寄存器(偏移地址04H)中的Max_Payload_Size字段所指定的值,该TLP将被丢弃。

  • 流模式(Streaming Mode)下的不连续数据

如果在流模式(s_axis_tx_tuser[2](tx_str)被断言)下,数据没有在连续的时钟周期上呈现,即s_axis_tx_tvalid在TLP传输过程中被去断言,那么当前的TLP将被丢弃。

当上述任何一种情况发生时,传输AXI4-Stream接口将继续接收剩余部分的已提交TLP,并在被丢弃的TLP的s_axis_tx_tlast之后的第二个时钟周期或之前断言tx_err_drop信号。这个信号用于通知用户应用程序一个TLP已被丢弃。

图3-11展示了IP核如何通过tx_err_drop信号来指示一个数据包已被丢弃。开发者应该根据这个信号来采取相应的错误处理措施。

7 Packet Data Poisoning on the Transmit AXI4-Stream Interface

这里说明了用户应用程序如何标记传输的TLP的数据载荷为“中毒”状态,通常表示数据已损坏或无效。以下是两种标记方法:

  • 在TLP头中设置EP位

如果在AXI4-Stream接口上向IP核呈现TLP头的第一个DWORD时已知数据载荷是“中毒”的,则可以在TLP头中设置EP(Error Pointer)位为1。这将指示接收端TLP的数据载荷是无效的。

  • 断言s_axis_tx_tuser1

在数据包传输过程中的任何时刻,对于至少一个有效的数据传输周期,用户应用程序可以断言s_axis_tx_tuser[1](tx_err_fwd),如下图所示。这将导致IP核在将数据包传输到PCI Express fabric时,在TLP头中设置EP位为1。这种方法适用于用户应用程序在数据包传输开始时不知道数据包是否可能“中毒”的情况。

需要注意的是,当s_axis_tx_tuser[2](tx_str)(流模式传输数据包)被断言时,不支持使用tx_err_fwd。在流模式下,如果数据包变得损坏,你可以选择中断数据包的传输。

另外,如果正在使用ECRC(End-to-End CRC,端到端循环冗余校验),那么用户应用程序不应该通过设置TLP的EP位来转发错误。相反,应该通过断言src_dsc(s_axis_tx_tuser[3])块输入来废弃有错误的TLP,并使用cfg_err接口报告错误。这样可以在数据包被发送到PCI Express fabric之前,在发送端就处理掉有问题的数据包,从而避免在接收端造成不必要的麻烦。

8 Streaming Mode for Transactions on the Transmit Interface

该功能允许用户应用在某些情况下启用流(Streaming或cut-through)模式来传输TLP,以减少操作的延迟。

当可能时,为了减少操作延迟,用户应用可以启用流模式来传输TLP。 在流模式下,TLP在PCIe链路上的传输延迟会减少,因为它允许数据包在接收到完整的TLP之前就开始转发。

为了启用流模式,用户应用必须在整个传输的TLP期间保持`s_axis_tx_tuser[2](tx_str)`断言(即设置为高电平或逻辑真)。 `s_axis_tx_tuser[2]`是一个用户定义的信号,用于传输额外的信息给PCIe核心。在这里,它被用来指示是否启用流模式。

用户应用还必须在每个时钟周期上呈现有效的帧,直到TLP的最后一个周期。这意味着用户应用在整个呈现的TLP期间,不应取消断言`s_axis_tx_tvalid`(即应持续保持高电平或逻辑真)。

如果在流模式操作中发生源节流(即源端不能提供足够的数据来满足PCIe链路的带宽需求),则该事务将被丢弃。当这种情况发生时,`tx_err_drop`会被断言(即设置为高电平或逻辑真),并且会在PCIe链路上发出一个被无效的TLP(即一个标记为错误的TLP)。

 图3-13展示了流模式操作的示例,其中第一个TLP是以流模式传输的,而第二个TLP由于源节流而被丢弃。

9 Using ECRC Generation

该IP核支持自动ECRC(End-to-End Cyclic Redundancy Check,端到端循环冗余校验)生成。为了启用此功能,用户应用必须在AXI4-Stream接口的发送端TLP的开始处断言s_axis_tx_tuser[0](tx_ecrc_gen)信号。如果需要,这个信号可以在整个数据包传输期间保持断言状态。如果传出的TLP没有包含校验和(digest),PCIe核心将生成一个并附加在TLP的末尾,并设置TD(TLP Digest)位。在数据包末尾,s_axis_tx_tready信号会有一个单时钟周期的取消断言,以允许插入校验和。图3-14展示了ECRC生成操作的示例。

简而言之,通过断言s_axis_tx_tuser[0](tx_ecrc_gen)信号,用户应用可以启用PCIe IP核的自动ECRC生成功能,确保TLP在传输过程中具有完整性校验。如果TLP原本没有校验和,PCIe IP核将生成并附加一个,并通过设置TD位和在数据包末尾插入校验和来完成操作。

  • 33
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
基于微信小程序的家政服务预约系统采用PHP语言和微信小程序技术,数据库采用Mysql,运行软件为微信开发者工具。本系统实现了管理员和客户、员工三个角色的功能。管理员的功能为客户管理、员工管理、家政服务管理、服务预约管理、员工风采管理、客户需求管理、接单管理等。客户的功能为查看家政服务进行预约和发布自己的需求以及管理预约信息和接单信息等。员工可以查看预约信息和进行接单。本系统实现了网上预约家政服务的流程化管理,可以帮助工作人员的管理工作和帮助客户查询家政服务的相关信息,改变了客户找家政服务的方式,提高了预约家政服务的效率。 本系统是针对网上预约家政服务开发的工作管理系统,包括到所有的工作内容。可以使网上预约家政服务的工作合理化和流程化。本系统包括手机端设计和电脑端设计,有界面和数据库。本系统的使用角色分为管理员和客户、员工三个身份。管理员可以管理系统里的所有信息。员工可以发布服务信息和查询客户的需求进行接单。客户可以发布需求和预约家政服务以及管理预约信息、接单信息。 本功能可以实现家政服务信息的查询和删除,管理员添加家政服务信息功能填写正确的信息就可以实现家政服务信息的添加,点击家政服务信息管理功能可以看到基于微信小程序的家政服务预约系统里所有家政服务的信息,在添加家政服务信息的界面里需要填写标题信息,当信息填写不正确就会造成家政服务信息添加失败。员工风采信息可以使客户更好的了解员工。员工风采信息管理的流程为,管理员点击员工风采信息管理功能,查看员工风采信息,点击员工风采信息添加功能,输入员工风采信息然后点击提交按钮就可以完成员工风采信息的添加。客户需求信息关系着客户的家政服务预约,管理员可以查询和修改客户需求信息,还可以查看客户需求的添加时间。接单信息属于本系统里的心数据,管理员可以对接单的信息进行查询。本功能设计的目的可以使家政服务进行及时的安排。管理员可以查询员工信息,可以进行修改删除。 客户可以查看自己的预约和修改自己的资料并发布需求以及管理接单信息等。 在首页里可以看到管理员添加和管理的信息,客户可以在首页里进行家政服务的预约和公司介绍信息的了解。 员工可以查询客户需求进行接单以及管理家政服务信息和留言信息、收藏信息等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值