眾所周知,PC 需要 PCIe 設(shè)備在 100ms 內(nèi)啟動(dòng),這樣 PC 才能掃描到 PCIe 設(shè)備。其實(shí)對(duì)于 FPGA PCIe 板卡,同樣也需要滿足這個(gè)時(shí)間要求。這一類(lèi)板卡,PCIe 的啟動(dòng)時(shí)間通常包括Power Ramp Time、Power on reset delay Time、FPGA配置時(shí)間等,其中 Power Ramp Time 和 Power on reset delay Time 和硬件電路相關(guān),F(xiàn)PGA 配置時(shí)間和 FPGA 設(shè)計(jì)相關(guān)。
Intel FPGA 系列是基于 sram(掉電丟失)的,所以會(huì)需要配置器件來(lái)存儲(chǔ)配置碼流。FPGA 的配置模式有很多種,模式不同,啟動(dòng)時(shí)間也不同。以我們常見(jiàn)的 ASx4 和 FPP 來(lái)分析:
ASx4 模式:只需要一顆 EPCS/PECQ 即可配置;
FPP 模式:需要一個(gè)額外外部 Host 用來(lái)搬移配置數(shù)據(jù)。因其是并行 x8 x16 x32,所以配置時(shí)間會(huì)少很多。
以 Cyclone V 和 Arria 10兩種器件類(lèi)型為例,ASx4 模式和FPP模式的配置時(shí)間差異如下圖:
顯而易見(jiàn),F(xiàn)PGA 的配置時(shí)間都不滿足 PCIe 100ms 或 FPGA 120 ms 的時(shí)間要求。
而從 Figure 4-1可知,除去 Power Ramp Time ,Power on reset delay Time 等時(shí)間后,F(xiàn)PGA 配置時(shí)間必須要小于80 ms才能滿足 PC 機(jī)的啟動(dòng)時(shí)間要求。所以,當(dāng) Arria 10器件及大容量的 Cyclone V器件使用AS X4模式時(shí),PCIe 啟動(dòng)時(shí)間基本滿足不了PC機(jī)的要求 ;如果是大容量的 Arria 10器件,即使使用FPP模式,在FPP32方式配置下,PCIe 啟動(dòng)時(shí)間也滿足不了要求!更何況,在實(shí)際情況中,硬件設(shè)計(jì)或板卡通常采用 AS X4配置模式的 EPCQ 方案。
該如何解決這個(gè)問(wèn)題,確保FPGA PCIe的啟動(dòng)時(shí)間滿足PC機(jī)的要求?
這里提供三種方法供大家參考:
1
FPGA 板卡采用外部供電的方式,讓FPGA板卡先于 PC 上電,相當(dāng)于在 PC 開(kāi)機(jī)之前,F(xiàn)PGA 的 PCIe 已經(jīng)啟動(dòng)。
2
PCIe 供電時(shí),F(xiàn)PGA 板卡同 PC 機(jī)一起上電,待系統(tǒng)啟動(dòng)之后,重啟 PC 機(jī),F(xiàn)PGA 板卡不會(huì)掉電,重啟 PC 之前,F(xiàn)PGA 的 PCIe 已經(jīng)啟動(dòng)。
3
使用 Autonomous PCIe HIP Mode (注意要器件支持這個(gè)功能才能使用哦)。
由于方法一和方法二是非常規(guī)方法,很多場(chǎng)景無(wú)法完成,且更側(cè)重于避開(kāi)時(shí)間要求,而非縮短啟動(dòng)時(shí)間,所以更推薦大家使用方法三哦!