在PCIe Spec中,Reset统共分为两类:Conventional Reset和Function Level Reset.
1. Conventional Reset
从字面上来讲,Conventional Reset是传统的Reset办法。这一类Reset功能是在PCIe Spec 2.0之前的Spec中定义的,以是称为传统的Reset。PCIe设备必须要支持这一类Reset。

Convential Resets包含了三种Resets: Cold Reset,Warm Reset 和 Hot Reset.
其余,还有一个观点: Cold Reset和Warm Reset又被称为Fundamental Reset, Hot Reset被称为Non-Fundamental Reset.
什么是Fundamental Reset呢?
这是PCIe最基本的复位办法,紧张通过硬件实现,效果是重置全体设备,对每个状态机、所有硬件逻辑、端口状态和配置寄存看重新初始化。
但是,也会有例外的情形:在某些寄存器中的字段只有在全部电源(包括VCC电源和Vaux备用电源)割断的情形下才会被重置。PCIe Spec给这些固执的字段起了个外号"Sticky Bits".
一样平常来说,Fundamental Reset是针对全体系统做Reset,但是有时也可以针对某个单一设备进行重置。
在这里解释一下Fundamental Reset中的Cold Reset和Warm Reset。
Cold Reset: 设备的主电源VCC上电时,就会触发Cold Reset。
Warm Reset: 在VCC不断电的情形下,系统可以触发Warm Reset。比如,电源状态的变革就会触发Warm Reset. 不过,PCIe Spec并没有定义触发Warm Reset的详细办法,这部分可以有系统设计职员自行决定。
其余,在PCIe Spec中,规定了两种触发Fundamental Reset办法。
一是通过PERST#(PCIe Reset)旗子暗记掌握。
二是在没有PERST#旗子暗记的情形下,通过Power on/off的办法实现。
系统上电稳定后,有POWERGOOD旗子暗记产生。
当系统的南桥芯片(也便是图中的IO掌握器ICH)收到POWERGOOD旗子暗记后,就会产生PERST#旗子暗记(下图绿色部分),此时会引起Cold Reset。
如果系统可以通过非上电的办法触发PERST#旗子暗记,此时会引起Warm Reset。
与Fundatmental Reset相反,Hot Reset是一种软件掌握的复位办法。PCIe设备涌现缺点时,常日情形下用软件的办法对设备重置。软件可以通过在Bridge control中设置Secondary Bus Reset bit来触发Hot Reset.
2. Function Level Reset
在传统复位办法的根本上,PCIe Sepc 2.0往后开始增加了新的复位办法FLR(Function Level Reset)。前面讲到的传统复位办法(Cold Reset, Warm Reset, Hot Reset)均属于全局复位办法,而FLR的上风则是对局部复位。
Perst#该旗子暗记为全局复位旗子暗记,由处理器系统供应,处理器系统须要为PCIe插槽和PCIe设备供应该旗子暗记,PCIe设备利用该旗子暗记复位内部逻辑,当该旗子暗记有效时,PCIe设备将对内部逻辑进行复位操作,个中Cold Reset和Warm Reset这两种复位办法与该旗子暗记有关。
WAKE#
当PCIe设备进入休眠状态,主电源已经停滞供电时,PCIe设备利用该旗子暗记向处理器系统供应唤醒要求,使处理器系统为该PCIe设备供应主电源Vcc。
在PCIe总线中,该旗子暗记是可选的,因此利用WAKE#旗子暗记唤醒PCIe设备机制也是可选的,此外,利用该机制时,必须利用Vaux进行供电。
WAKE#是一个Open Drain旗子暗记,一个处理器的所有PCIe设备可以将WAKE#进行“线与”后,统一发送给处理器的电源掌握器。当某个PCIe设备须要唤醒时,该设备先将WAKE#旗子暗记拉低,经由一段韶光后,系统处理器开始为该设备供应主电源Vcc,并利用PERST#对该设备进行复位操作,再次过程中WAKE#旗子暗记须要保持为低电平,当主电源Vcc上电完成之后,PERST#也将置为无效并结束复位,WAKE#旗子暗记也随之被置为无效(拉高)。
3 WAKE#旗子暗记」
当PCIe设备进入休眠状态,主电源已经停滞供电时,PCIe设备利用该旗子暗记向处理器系统提交唤醒要求,使处理器系统重新为该PCIe设备供应主电源Vcc。在PCIe总线中,WAKE#旗子暗记是可选的,因此利用WAKE#旗子暗记唤醒PCIe设备的机制也是可选的。值得把稳的是产生该旗子暗记的硬件逻辑必须利用赞助电源Vaux供电。
WAKE#是一个Open Drain旗子暗记,一个处理器的所有PCIe设备可以将WAKE#旗子暗记进行线与后,统一发送给处理器系统的电源掌握器。当某个PCIe设备须要被唤醒时,该设备首先置WAKE#旗子暗记有效,然后在经由一段延时之后,处理器系统开始为该设备供应主电源Vcc,并利用PERST#旗子暗记对该设备进行复位操作。此时WAKE#旗子暗记须要始终保持为低,当主电源Vcc上电完成之后,PERST#旗子暗记也将置为无效并结束复位,WAKE#旗子暗记也将随之置为无效,结束全体唤醒过程。
PCIe设备除了可以利用WAKE#旗子暗记实现唤醒功能外,还可以利用Beacon旗子暗记实现唤醒功能。与WAKE#旗子暗记实现唤醒功能不同,Beacon利用In-band旗子暗记,即差分旗子暗记D+和D-实现唤醒功能。Beacon旗子暗记DC平衡,由一组通过D+和D-旗子暗记天生的脉冲旗子暗记组成。这些脉冲旗子暗记宽度的最小值为2ns,最大值为16us。当PCIe设备准备退出L2状态(该状态为PCIe设备利用的一种低功耗状态)时,可以利用Beacon旗子暗记,提交唤醒要求。
PCIE外设链路和软件非常处理办法:
1.在优先验证PCIE3.0全体环路物理通道知足哀求情形下,非常时先确认软件,后确认硬件部分。
2.两DBF板可以增加各自PCIE配置完成后,复位各自PCIE接口。或DBF端PCIE非常时,PC通过RS232给FPGA通讯,FPGA实行复位指定的PCIE接口逻辑,重新建立PCIE通讯。(不断电,FPGA部分只增加复位电路)
4.创造PCIE总线非常时,关照MCU单独复位PCIE接口逻辑(不断电,如果断电须要重新FPGA CONFIG_DONE)。
5.上电后PC的BIOS运行,等待FPGA CONFIG-DONE完成过程中,BIOS再重启
运行,相称于BIOS运行两次,担保第二次运行与FPGA建立可靠的PERSRT#机制后再数据传输。
6.开机上电先FPGA模块配置完成,MCU检测到这FPGA配置旗子暗记后,再运行PC BIOS,建立正常PCIE通讯。(预留电源增加MCU的上电掌握,电源,主板,MCU固件变更调试,类似CUPID机型)。
7.全体PCIE冷复位操作,影响太大,全体PCIE外设重启,可考虑只复位总线。
在PCIE3.0规范中,PCIE功能复位,是强烈推举的,还或者增加hot reset机制,对重复位机制。
FLR办法,不须要断电,不重启外设,进入系统后非常或待机唤醒非常时利用。