7 Series FPGAs Integrated Block for PCI Express IP核设计中的物理层控制核状态接口

news2024/11/15 8:56:45

物理层控制和状态允许用户应用程序根据数据吞吐量和电源需求来更改链路的宽度和速度。

1 Design Considerations for a Directed Link Change

Directed Link Change(定向链接更改)期间需要注意的事项有:

  • 链接更改操作(Link change operation)必须在user_lnk_up被断言且IP核处于L0状态时进行。这通常通过检查pl_ltssm_state[5:0]信号来确定。
  • 如果启用了Lane Reversal(车道反转),则不应使用链接宽度更改。
  • 目标链接宽度的更改操作必须等于或小于由pl_initial_link_width输出指示的宽度。
  • 如果pl_link_upcfg_cap被设置为1b,则PCI Express链接具有Upconfigure能力。这意味着链接宽度可以在初始协商的链接宽度和由端口和链接伙伴共同支持的任何较小链接宽度之间变化(这通常是为了链接可靠性或应用原因)。
  • 如果链接不是Upconfigure capable的,则协商的链接宽度只能变为链接伙伴和设备共同支持的较小宽度。
  • 链接速度从2.5 Gb/s更改为5.0 Gb/s之前,用户应用程序必须确保链接是5.0 Gb/s(Gen2)兼容的(即pl_link_gen2_cap为1b),并且链接伙伴也是Gen2兼容的(pl_link_partner_gen2_capable为1b)。
  • cfg_lcommand[9](硬件自主宽度禁用位)被设置为0时,表示硬件不会自主更改链路宽度,从而允许应用程序来控制这个更改。当应用需要改变链路的宽度或速度时,必须设置pl_directed_link_auton为1b(即二进制1,或逻辑真)。这个信号告诉PCIe硬件,链路宽度和/或速度的更改是由应用程序发起的,而不是由硬件自主管理的。要将链路宽度和速度恢复到原始(可能是更高的)配置,需要将pl_link_upcfg_cap设置为1b(即二进制1,或逻辑真)。这个信号可能用于触发PCIe硬件重新协商并配置到最初支持的最大链路宽度和速度。
  • 当用户应用程序试图将PCIe链路设置为一个特定的宽度,但该宽度不被链路伙伴所支持时,链路的实际宽度将退回到下一个双方共同支持的较窄的宽度。例如,用户应用程序试图将8条通道的PCIe链路(通常称为“x8”链路)设置为4条通道(即“x4”模式)操作,但是链路伙伴只支持降低到1条通道(即“x1”模式)的操作。因此,最终的链路宽度将是1条通道。
  • cfg_pcie_link_state寄存器的值为101b(表示链路正在过渡到或从PPM的L1状态转移)或110b(表示链路正在过渡到PPM的L2/L3 Ready状态)时,不应使用定向链路更改引脚(Root或Endpoint)或设置重链接位(仅适用于Root)来发起重链接这是因为在PCIe链路处于电源管理相关的过渡状态时,链路的稳定性和配置可能会受到影响。如果在这些状态下发起重链接,可能会导致链路的不稳定、配置错误或更严重的通信问题。
  • 为了简化时序收敛,允许在发起定向链路更改(Directed Link Change)之前,最多等待16个用户时钟周期来同时检查上述所有条件是否均为真。这些条件是:
  1. user_lnk_up == 1'b1:这表示用户链路已上电且可用。
  2. pl_ltssm_state[5:0] == 6'h16:这表示PCIe链路链接状态机(LTSSM, Link Training and Status State Machine)当前处于L0状态,这是正常操作状态。
  3. cfg_lcommand[9] == 1'b0:这通常与PCIe的某些特定配置或命令位相关,可能是指不允许某些类型的命令或配置。
  4. cfg_pmcsr_powerstate[1:0] == 2'b00:这表示设备处于D0电源状态,即完全上电状态。
  5. cfg_pcie_link_state[2:0] != either 3'b101 or 3'b110:这确保PCIe链路不处于过渡到PPM(Power Management Power-down Mode)的L1状态或过渡到PPM的L2/L3 Ready状态的过程中。

在PCIe系统设计中,这些检查是必要的,以确保在发起任何可能影响链路状态的操作(如定向链路更改)之前,系统处于正确的状态。由于硬件和软件的时序差异,允许有一定的缓冲时间(最多16个用户时钟周期)来确保所有条件都得到满足,从而避免潜在的时序违规或不稳定行为。

2 Directed Link Width Change

Directed Link Width Change(定向链路宽度更改),是指由用户应用程序驱动来更改PCIe(Peripheral Component Interconnect Express)链路的宽度。这个过程确保了应用程序可以根据需要动态地调整链路的带宽,以适应不同的工作负载和数据传输需求。

图3-57展示了必须由用户应用程序实现的定向链路宽度更改过程。

3 Directed Link Speed Change

定向链路速度更改是一个由用户应用程序驱动来更改PCIe链路速度的过程。图3-58展示了该过程,其中target_link_speed是应用程序驱动的新链路速度请求。

注意:不应该仅仅通过驱动pl_directed_link_change引脚到特定的值(例如10或11)来在Root Port上发起链路速度更改,除非Root Port的RP_AUTO_SPD属性被设置为11。

4 Directed Link Width and Speed Change

用户应用程序需要实现定向链路宽度和速度更改的功能。图3-59描述了这一过程,其中target_link_width[1:0]表示应用程序驱动的新链路宽度请求,而target_link_speed表示应用程序驱动的新链路速度请求。

注意:通过直接设置pl_directed_link_change引脚为10或11来在Root Port上发起链路速度更改,那么这一操作只有在Root Port的RP_AUTO_SPD属性被设置为11时才是允许的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1711945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

加氢站压缩液驱比例泵放大器

加氢站压缩液驱液压系统的要求是实现换向和速度控制,对液压动力机构而言,按原理可区分为开式(阀控)- 节流控制系统和闭式(泵控)- 容积控制系统: 阀控系统 – 节流调速系统:由BEUEC比…

dp秒杀优惠券

1、全局id生成器 当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些问题: id的规律性太明显受单表数据量的限制 场景分析:如果我们的id具有太明显的规则,用户或者…

【机器学习】解锁AI密码:神经网络算法详解与前沿探索

👀传送门👀 🔍引言🍀神经网络的基本原理🚀神经网络的结构📕神经网络的训练过程🚆神经网络的应用实例💖未来发展趋势💖结语 🔍引言 随着人工智能技术的飞速发…

设计模式六大原则之依赖倒置原则

文章目录 概念逻辑关系 小结 概念 依赖倒置原则指在设计代码架构时,高层模块不应该依赖底层模块,二者都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。 逻辑关系 如上图所示,逻辑应该就是这样,高层依赖于…

深度学习-语言模型

深度学习-语言模型 统计语言模型神经网络语言模型语言模型的应用序列模型(Sequence Model)语言模型(Language Model)序列模型和语言模型的区别 语言模型(Language Model)是自然语言处理(NLP&…

web自动化-数据驱动与失败用例截图、失败重新运行

因为只有失败的用例需要截图,那么问题就是: 什么时候用例会失败? 数据驱动测试 我们前面覆盖到的用例都是正常的用例,如果要测试异常的用例呢? 我们来写一下登录的异常 场景:【login_page】 # 用户输入框…

Adobe AntiCC 简化版 安装教程

Adobe AntiCC 简化版 安装教程 原文地址:https://blog.csdn.net/weixin_48311847/article/details/139277743

opencascade V3d_RectangularGrid 源码学习

类V3d_RectangularGrid V3d_RectangularGrid() V3d_RectangularGrid::V3d_RectangularGrid(const V3d_ViewerPointer &aViewer, const Quantity_Color &aColor, const Quantity_Color &aTenthColor) // 构造函数 ◆ ~V3d_RectangularGrid() virtual V3d_Rectang…

华为诺亚等发布MagicDrive3D:自动驾驶街景中任意视图渲染的可控3D生成

文章链接:https://arxiv.org/pdf/2405.14475 项目链接:https://flymin.github.io/magicdrive3d 虽然可控生成模型在图像和视频方面取得了显著成功,但在自动驾驶等无限场景中,高质量的3D场景生成模型仍然发展不足,主…

NDIS小端口驱动开发(三)

微型端口驱动程序处理来自过度驱动程序的发送请求,并发出接收指示。 在单个函数调用中,NDIS 微型端口驱动程序可以指示具有多个接收 NET_BUFFER_LIST 结构的链接列表。 微型端口驱动程序可以处理对每个NET_BUFFER_LIST结构上具有多个 NET_BUFFER 结构的多…

树莓派部署harbor_arm64

文章目录 树莓派4b部署Harbor-arm64版本docker-compose维护命令访问harbor 192.168.1.111认用户名密码admin/Harbor12345 树莓派4b部署Harbor-arm64版本 harbor-arm版本 部署:参考 wget https://github.com/hzliangbin/harbor-arm64/releases/download/v1.9.3/ha…

NFS p.1 服务器的部署以及客户端与服务端的远程挂载

目录 介绍 应用 NFS的工作原理 NFS的使用 步骤 1、两台机子 2、安装 3、配置文件 4、实验 服务端 准备 启动服务: 客户端 准备 步骤 介绍 NFS(Network File System,网络文件系统)是一种古老的用于在UNIX/Linux主…

redis数据类型之string,list

华子目录 key操作说明SCAN cursor [MATCH pattern] [COUNT count]dump与restorekeys 通配符 示例演示 string说明setbit key offset valuegetbit key offsetsetrange key offset value List结构图相关命令lrem key count valueltrim key count value示例:使用 LTRIM…

Blazor入门-svg绘制-碰撞检测和图形坐标调整

上一篇: Blazor入门-简单svg绘制导出图像_blazor 画图-CSDN博客 https://blog.csdn.net/pxy7896/article/details/139003443 注意:本文只给出思路和框架,对于具体的计算细节,考虑到日后会写入软件著作权和专利文书,因…

被追着问UUID和自增ID做主键哪个好,为什么?

之前无意间看到群友讨论到用什么做主键比较好 其实 UUID 和自增主键 ID 是常用于数据库主键的两种方式,各自具有独特的优缺点。 UUID UUID 是一个由 128 位组成的唯一标识符,通常以字符串形式表示。它可以通过不同的算法生成,例如基于时间…

绝招曝光!3小时高效利用ChatGPT写出精彩论文

在这份指南中,我将深入解析如何利用ChatGPT 4.0的高级功能,指导整个学术研究和写作过程。从初步探索研究主题,到撰写结构严谨的学术论文,我将一步步展示如何在每个环节中有效运用ChatGPT。如果您还未使用PLUS版本,可以…

C++入门 ros自定义msg话题通信

一、 开发环境 ubuntu20.04 ros版本noetic 参考视频 https://www.bilibili.com/video/BV1Ci4y1L7ZZ/?p52&spm_id_from333.1007.top_right_bar_window_history.content.click&vd_source4cd1b6f268e2a29a11bea5d2568836ee 二、 编写msg文件 在功能包下面创建msg文件夹…

【源码】6语言跨境电商PHP源码 精美UI+功能强大开源无授权

6语言跨境电商PHP源码 精美UI功能强大开源无授权 英文,简体中文,繁体中文,日语、泰语、越南语6语言。功能非常强大,UI也很漂亮的跨境电商源码。基于国外成熟电商系统二开的源码,带POS系统。 系统采用Laravel框架开发…

盘点好用的国产传输软件,看看哪个适合你

流动让数据释放价值,无论什么企业,什么行业,业务的正常开展均是以数据和文件的传输为基础,因此,对企业来说,文件传输工具是最基础但也是最举重若轻的。在琳琅满目的多种国产传输软件中,哪个是最…

【运筹学】前言:基础知识

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…