答疑|如何确保 FPGA PCIe 的启动时间满足 PC 机的要求?
2019-09-21
众所周知,PC 需要 PCIe 设备在 100ms 内启动,这样 PC 才能扫描到 PCIe 设备。其实对于 FPGA PCIe 板卡,同样也需要满足这个时间要求。这一类板卡,PCIe 的启动时间通常包括Power Ramp Time、Power on reset delay Time、FPGA配置时间等,其中 Power Ramp Time 和 Power on reset delay Time 和硬件电路相关,FPGA 配置时间和 FPGA 设计相关。
Intel FPGA 系列是基于 sram(掉电丢失)的,所以会需要配置器件来存储配置码流。FPGA 的配置模式有很多种,模式不同,启动时间也不同。以我们常见的 ASx4 和 FPP 来分析:
ASx4 模式:只需要一颗 EPCS/PECQ 即可配置;
FPP 模式:需要一个额外外部 Host 用来搬移配置数据。因其是并行 x8 x16 x32,所以配置时间会少很多。
以 Cyclone V 和 Arria 10两种器件类型为例,ASx4 模式和FPP模式的配置时间差异如下图:
显而易见,FPGA 的配置时间都不满足 PCIe 100ms 或 FPGA 120 ms 的时间要求。
而从 Figure 4-1可知,除去 Power Ramp Time ,Power on reset delay Time 等时间后,FPGA 配置时间必须要小于80 ms才能满足 PC 机的启动时间要求。所以,当 Arria 10器件及大容量的 Cyclone V器件使用AS X4模式时,PCIe 启动时间基本满足不了PC机的要求 ;如果是大容量的 Arria 10器件,即使使用FPP模式,在FPP32方式配置下,PCIe 启动时间也满足不了要求!更何况,在实际情况中,硬件设计或板卡通常采用 AS X4配置模式的 EPCQ 方案。
该如何解决这个问题,确保FPGA PCIe的启动时间满足PC机的要求?
这里提供三种方法供大家参考:
1
FPGA 板卡采用外部供电的方式,让FPGA板卡先于 PC 上电,相当于在 PC 开机之前,FPGA 的 PCIe 已经启动。
2
PCIe 供电时,FPGA 板卡同 PC 机一起上电,待系统启动之后,重启 PC 机,FPGA 板卡不会掉电,重启 PC 之前,FPGA 的 PCIe 已经启动。
3
使用 Autonomous PCIe HIP Mode (注意要器件支持这个功能才能使用哦)。
由于方法一和方法二是非常规方法,很多场景无法完成,且更侧重于避开时间要求,而非缩短启动时间,所以更推荐大家使用方法三哦!