PCIE_复位介绍

1、介绍PCIE SPEC中介绍的复位机制

2、databook中复位要求

3、实际controller的复位测试点

图1.PCIE复位的种类

PCIE 的4种复位机制

        PCIe 总线规定了两大类复位方式,一种是传统的复位方式 ( Conventional Reset), 另一种是 FLR (Function⁃Level Reset,功能级复位) 方式。

        其中 PCIe 总线的传统复位方式由两大类组成, 一个是 Fundamental Reset(基本复位), 而另一个是 Non⁃Fundamental Reset。 Fundamental Reset 方式包括 Cold 和 Warm Reset 方式, 可以将 PCIe 设备中的绝大多数内部寄存器和内部状态都恢复成初始值; Non⁃Fundamental Reset 方式指 Hot Reset 方式

1、传统的复位方式

        传统复位方式分为 Cold、 Warm 和 Hot Reset。其中 Cold Reset、Warm Reset 基于边带信号 PERST#,又称为Fundamental Resets。Hot Reset 不使用边带信号 PERST#,又称为 Non-Fundamental Reset

        PCIe 总线提供多种复位方式的主要原因是减小 PCIe 设备的复位延时。 其中传统复位方式的延时大于 FLR 方式。 使用传统复位方式时, Cold Reset 使用的时间最长, 而 Hot Reset 使用的时间最短。

Cold Reset

        当一个 PCIe 设备的 Vcc电源上电后, 处理器系统将置该设备的 PERST#信号为有效, 此时将引发 PCIe 设备的复位操作, PCIe 总线将这种复位方式称为 Cold Reset 方式。

        PCIe 设备进行 Cold Reset 时, 所有使用 Vcc进行供电的寄存器和 PCIe 端口逻辑将无条件进入初始状态。 但是使用这种方式依然无法复位使用 Vaux供电的寄存器和逻辑, 这些寄存器和逻辑只能在处理器完全下电时才能被彻底复位

Warm Reset

        当 PCIe 设备完成上电过程后, 也可能重新进行 Fundamental Reset(不断开主电源 Vcc 的情况下由系统触发导致的复位), 这种复位方式也被称为 Warm Reset。 PCIe 总线并没有规定 Warm Reset 的具体实现方式。

        一个 PCIe 设备可以使用 Watchdog 逻辑, 对该 PCIe 设备进行复位, 这种方式就是 Warm Reset 的一种。 Warm Reset 也是一种 Fundamental Reset。

Hot Reset

        当 PCIe 设备出现某种异常时, 可以使用软件手段对该设备进行复位。 如系统软件将 Bridge Control Register 的 Secondary Bus Reset 位置 1 时, 该桥片将 Secondary 总线上的 PCI / PCIe 设备进行 Hot Reset。 对于 PCI 总线, 当 Secondary Bus Reset 位置 1 时, Secondary 总线将使用 RST#信号对其下游的 PCI 设备进行复位。 而 PCIe 总线将通过 TS1 和 TS2 序列对下游设备进行 Hot Reset。

        在 TS1 和 TS2 序列中包含一个 Hot Reset 位。 当下游设备收到一个 TS1 和 TS2 序列, 而 且其 Hot Reset 位为 1 时, 下游设备将使用 Hot Reset 方式进行复位操作。

        除此之外当数据链路层向事务层报告 DL_Down 时, 该设备也将进行 Hot Reset。通过在下游设备的链路控制寄存器中设置 Link Disable bit,把设备禁用。如果将某个链路禁止,则该链路所有的下游 PCIe 设备都将收到链路禁止信号。当设备的 Link Disable bit 被置上后,会进入Recovery LTSSM 状态,即开始向 Root Complex 发送带Disable位设置的 TS1 消息。

        Hot Reset 方式并不属于 Fundamental Reset。 PCIe 设备进行 Hot Reset 方式时, 也可以将 PCIe 设备的多数寄存器和状态恢复为初始值。

2、FLR (Function⁃Level Reset) 功能级复位

        系统软件填写某些寄存器时, PCIe 设备将使用 FLR 方式进行复位。 支持 FLR 方式的 PCIe 设备需要在其 BAR 空间中提供一个寄存器, 当系统软件对该寄存器的 Function Level Reset 位写 1 时, PCIe 设备将使用 FLR 方式复位 PCIe 设备的内部逻辑。 FLR 方式对于 PCIe 设备是可选的, PCIe 总线规范并没有定 义 FLR 方式的具体实现过程, 但是定义了 FLR 方式的适用范围。

        当系统软件初始化与某个 PCIe 设备相关的软件协议栈时, 也可能需要使用 FLR 方 式复位 PCIe 设备内部的逻辑。

        当 PCIe 设备使用 FLR 方式进行复位时, 有些与 PCIe 链路相关的状态和寄存器并不会被复位, 如下所示。

        ● Sticky Registers。 与传统复位方式相同, FLR 方式也不能复位这些寄存器, 但是系统软件可以对部分 Sticky Registers 进行修改。 当 Vaux被移除后, 在这些寄存器中保存的数据才会丢失。

        ● HwInit 类型的寄存器。 在 PCIe 设备中, 有些配置寄存器的属性为 HwInit, 这些寄存器的值由芯片的配置引脚决定, 或者在上电复位后从 E2PROM 中获取。 Cold 和 Warm Reset 可以复位这些寄存器, 然后从 E2PROM 中重新获取数据; 但是使用 FLR 方式, 不能复位这些寄存器。

        ● 此外还有一些特殊的配置寄存器不能被 FLR 方式复位, 如 Max_Payload_Size、 RCB 和 一些与电源管理、 流量控制和链路控制直接相关的寄存器。

        ● FLR 方式不会影响 LTSSM 状态机。

PCIE IP 复位管理

        以上是PCIE中SPEC规定的4种复位机制,然而在实际的DUT(synopsys 提供的IP)中PCIE的各个子模块都依赖于时钟和复位进行初始化工作,为此databook中介绍了时钟复位发生器(CRG),一个为PCIE各个子模块和PHY产生时钟和复位的generation。

        从上图中我们看到PCIE初始化的起点就是来自Power_on Reset上电复位,PCIE提供的复位源还有Button Reset 、PERST#和test_rst_n。经过Reset Generation Module,将一系列复位信号传到Controller和PHY中,并且CRG还将接受Controller发出的电源管理复位信号、应用层ltssm使能(app_ilssm_enable)、由链路层Link_Down发出的link_req_rstn_not信号。

        下图将展示由DataBook提供的CRG产生的各个子模块的复位信号,让大家对PCIE设备整个复位信号的来源有一个大致的了解。

        除此DataBook还列举出这些复位信号是由哪种复位机制产生,让我们能够更好的识别4种复位机制产生的复位信号。

PCIE的复位有关的测试功能点

        在了解SPEC规定的4种复位机制以及IP是如何管理复位信号的,我们将进行实际的复位检测。PCIE设备分为RC、EP、SWITCH且链路也具备多种情况,在实际的验证环境中PCIE设备还存在支持SATA接口、JTAG等其他情况,因此,我们已RC为例,简要罗列一个PCIE子系统环境的复位检测情况。由于对PCIE的使用情况和性能需求不同以及PCIE设备里自定义寄存器不同,此次的功能点并不能涵盖PCIE复位的所有情况。仅作为学习PCIE复位的一个参考。

       PCIE controller中的复位信号有power_up_rst_n、perst_n、button_rst_n、rp_pwr_rst_n。power_up_rst_n由上电复位产生,且会将全局复位peset_n信号置为有效,将会使得core IP的所有寄存器进行复位操作包括sticky registers(由辅助电源管理的寄存器,此时应该的辅助电源应该没有提供,若提供的话此处上电复位不会重置sticky registers)。button_rst_n是用于测试和debug模式通过Pin角重置芯片复位,其效果和上电复位一样。

        在介绍rp_pwr_rst_n、rp_perst_n、rp_button_rst_n这些复位信号线,我们首先要了解一个知识点。自研的功能控制或状态寄存器(CSR)。为了更好的进行链路管理、链路状态监控以及配置 PCIe 控制器的特定行为(如链路参数、中断控制等),开发者通过 ​​APB(Advanced Peripheral Bus)总线挂载的自研寄存器对链路状态和配置进行控制。优点在于APB 作为​​低速外设总线​​,适合管理非实时敏感的寄存器,与高速的 AXI 或 PCIe 事务层隔离,避免阻塞核心数据传输。此处设计确实很巧妙,既不占用AXI的资源隔离了事务层还能动态调整PCIE的配置与监控。

        但这种方式需要PCIE的使用者去了解自定义寄存器的功能以及使用方法,且在controller的top层,设计人员需要将这些rp_xxx等信号线进行连接,送入到device层,再经过clk_rst.v文件处理时钟和复位信号,以供相关模块使用。

        当然一个PCIE的子系统环境比以上介绍的均要复杂,因为除了PCIE相关模块还可能存在支持SATA接口、JTAG、APB总线等。这些模块的时钟和复位信号均由CRG产生,当然不同的复位源对应不同的模块或是总线,他们均有自己的作用域,这个要对照SPEC具体来看。以上简单的复位分析,以供大家参考和学习,介绍这里的目的也是通过对复位的学习,发现自己对这个PCIE的架构和子系统环境有一个更深的理解,希望也能帮助到大家。

     

<think>嗯,用户想了解PCIE_RST_N信号在硬件设计中的作用。这个问题需要结合PCIe硬件设计规范来解释。 首先需要明确PCIE_RST_N是PCI Express的复位信号,属于全局复位信号。根据引用[1],这个信号会通过复位产生逻辑生成phy_por_rstn和ctrl_rstn,分别用于复位PHY模块和controller模块。这说明它的主要功能是初始化硬件状态。 考虑到硬件设计要点,引用[3]提到复位设计是重要环节。PCIE_RST_N需要满足特定的时序要求,通常要在电源稳定后保持一定时间的低电平状态。这个信号的电平特性也很关键,低电平有效符合PCIe规范要求。 关于信号来源,从引用[1]看,对于Endpoint设备,这个信号来自PCIe卡槽。但在Root Complex设计中,可能由板载复位电路产生。信号传输路径需要特别注意阻抗匹配,避免信号完整性问题。 在系统启动流程中,这个信号的作用很关键。它需要确保在FPGA配置完成前保持有效状态,避免总线冲突。引用[2]提到AXI时钟频率与PCIe速率差异,暗示复位时序需要协调不同时钟域。 最后想到几个相关延伸问题:这个信号与其他复位信号的关系?在热插拔场景下的行为?如何测试其时序是否符合规范?这些都可以作为后续讨论点。</think>PCIE_RST_N信号在硬件设计中扮演着**核心全局复位控制**的角色,其主要功能和作用如下: ### 核心功能 1. **硬件初始化** - 当`PCIE_RST_N`置为低电平(有效状态)时,强制PCIe控制器、PHY物理层及相关逻辑电路进入复位状态,清除所有寄存器和缓存数据。 - 释放后(上升沿触发),硬件从初始状态开始执行链路训练(Link Training)和枚举(Enumeration)过程[^1]。 2. **复位分发** 通过复位生成逻辑(Reset Generate Logic)产生子复位信号: - **`phy_por_rstn`**:复位PHY物理层模块,确保收发器电路初始化 - **`ctrl_rstn`**:复位Controller控制逻辑模块,重置状态机和配置空间[^1] ```plaintext PCIE_RST_N ──→ Reset Generate Logic ──→ phy_por_rstn (PHY复位) │ └──→ ctrl_rstn (Controller复位) ``` --- ### 关键作用 1. **电源时序同步** 必须在PCIe电源稳定后(如`+3.3V_AUX`)保持低电平≥100ms(符合PCIe规范),避免上电过程中逻辑紊乱[^3]。 $$ t_{PERST\#-min} = 100ms \quad (TYP) $$ 2. **热插拔支持** 在设备热插拔时,通过金手指重新触发该信号,使Endpoint设备安全复位并重新初始化[^1]。 3. **错误恢复机制** 当检测到PCIe链路不可恢复错误(如Fatal Error)时,系统可通过拉低`PCIE_RST_N`强制硬件复位,尝试重建链路。 4. **时钟域协同** 确保复位释放时,PHY的参考时钟(Refclk)已稳定运行,避免因时钟未同步导致的链路训练失败[^3]。 --- ### 硬件设计要点 | **项目** | **要求** | **原因** | |----------------|-----------------------------|-----------------------------| | **信号来源** | Endpoint:来自Slot金手指 | 符合PCIe卡槽规范 [^1] | | | Root Complex:板载复位电路 | 自主控制复位时序 | | **电平特性** | 低电平有效(LVCMOS 3.3V) | 兼容PCIe电气规范 | | **走线要求** | ≤2英寸,包地处理 | 避免噪声干扰复位稳定性 [^3] | | **上拉电阻** | 4.7kΩ至3.3V_AUX | 确保未连接时处于无效状态 | > ⚠️ **设计警示**:若`PCIE_RST_N`时序违反规范(如过早释放),将导致设备枚举失败(Error Code 10/43)或链路降速[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值