如何保證FPGA PCIe喚醒能滿足PC的100ms 的時間要求(Autonomous Mode)?


原創By DeeZeng [ Intel FPGA筆記 ]

 PC 需要PCIe設備在 100ms 內啟動,這樣PC 才能掃描到PCIe 設備。對於 FPGA PCIe 板卡,同樣也需要滿足這個時間要求。

 Intel FPGA系列是基於sram的,也就是掉電丟失,所以會需要配置器件。配置模式有很多種,以我們常見的 ASx4 和 FPP為例:

1. ASx4 :只需要一顆 EPCS/PECQ 即可配置

2. FPP  : 需要一個額外外部Host 用來搬移 配置數據,由於是並行 x8 x16 x32,配置時間會少很多。

如下抽出兩張 Cyclone V 和 Arria 10 的 AS FPP 配置時間差異

Cyclone V configuration time

Arria 10 Configuration time

 

 PCIe 100ms 或FPGA 120 ms 的時間(請具體分析之后給出的 Figure 2-2 ,Table 2-1圖片),可不單純包含FPGA configuration Time,還包含Ramp Time ,POR Time等。

減去這兩項時間,那FPGA configuration 80 ms 左右的都有點不保險了。

Ramp Time and POR

也就是當我們 Cyclone V 邏輯資源大的器件,或Arria10 器件,當使用AS x4模式的時候,PCIe應用會滿足不了喚醒時間!

Arria10的最大兩個器件,甚至FPP32時間也滿足不了

而實際硬件設計或板子需要或已經采用 EPCQ方案了(畢竟很多情況只會用一顆EPCQ,而不用FPP的 外部Host+並行Flash)

 

 那如何解決呢?

  1. 外接供電,先於 Host 開機。 (好吧,這用起來幾多麻煩)
  2. PCIe供電,Host 開機兩次。(PC重啟,FPGA不會斷電和重配置)
  3.  Autonomous PCIe HIP Mode (注意要器件支持這個功能)

 

什么是Autonomous PCIe HIP模式?

Autonomous 模式對滿足PCIe 100ms 喚醒時間非常有用。Intel FPGA設備會先接收periphery image,然后再接收 Core image.

配置完Core image 后,FPGA進入user mode.  在Autonomous HIP 模式下,PCIe Hard IP 在periphery image配置完后就能工作,

完成Link Training 后,PCIe Hard IP 就能響應 host, 從而減少喚醒時間。 而不用等到 Core image 配置完進入user mode才開始。

 

Autonomous PCIe HIP Mode 和 CvP 的模式是類似的,如下以CVP的兩張圖類比說明Autonomous PCIe HIP Mode 與否的差異。

     PCIe Active的 時間 =  a(ramp time) + b (POR) + Program and calibrate

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_a10_cvp_prop.pdf

 

 1.  Autonomous PCIe HIP Mode :  只需 program Periphery image ,Hard PCIe就起來了。

  CvP Periphery

 

2.  非Autonomous PCIe HIP Mode :  需要Program Full  image ,Hard PCIe才起來。

 CvP full

所以使能Autonomous PCIe HIP Mode 可以減少 (Full image - Periphery image)數量的Config bits,大大縮短時間。

 

這么有用,那如何設置 Autonomous 模式呢?簡單,在 Quartus 工程中設置勾選一下即可。

Autonomous HIP setting

 Cyclone V,Arria V 和 Stratix V 以及之后出來的 Arria 10 ,Stratix 10 等 都支持 autonomous PCIe HIP Mode.

注意: 1.  PCIe Hard IP。  2. 支持這個功能的器件。

 

這樣開機無法找到PCIe,重啟才能找到的案例。打開這個模式之后,第一次開機就能直接找到PCIe啦。

 


 What? 擔心打開了Autonomous PCIe HIP Mode還是無法滿足 PCIe的喚醒100ms時間要求?

那我們來進行一次具體計算,看如何計算這些時間

以 Arria10 1150的器件,使用AS x4 來計算(其他系列計算類似)

 PCIe Active的時間 =  a(ramp time) + b (POR) + Program and calibrate

 1. Ramp Time: Ramp Time 這是FPGA開發板 Power 電路決定的

     假設10ms

 2. POR delay: 這個delay是,POR電路監控的所有Power都起來了,然后delay一個時間用以保證,FPGA准備好被配置。

 POR delay

     可以看到 Fast POR 和 Standard POR 是有很大差異的,我們必須設置MSEL,將POR切到 Fast

     這里算 fast 的 12ms

3. Program and calibrate

3.1 Program periphery image

 

   為計算配置periphery image的時間:

    這里 Configuration File size 我們用 periphery image : Datasheet中CvP的IOCSR數據  2756096

                 iocsr a10

 

Number of data line 用 AS x4 的   4

DCLK 用 AS 的 100MHz

 config time =  2756096/4* (1/100MHz)  = 6.9 ms (遠小於 full image 的 800+ ms)

 

3.2 Calibrate

Transceiver calibration begins with the bottom PCIe IP core on eachside of the device. Consequently, this IP core has a faster wake up time

這個時間在 A10 是有一個nios硬核ip 會進行calibration,從bottom的開始。時間花費應該不多。

 

所以打開 Autonomous  Mode總時間為: 10 + 12 + 6.7 + 少量Calibrate時間  ≈ 30ms ,很簡單就滿足PCIe喚醒時間要求。

 

重復一下這張圖: 我們Arria10 1150K,用ASx4的EPCQ config  periphery image 都只需要 7ms 不到,那這張圖的timing應該很好滿足了。

不過硬件的 Ramp Time應該是影響的,如果超了10ms (別超),也許就是 和 ramp+POR+config 的時間加起來和 120ms 對比了

CvP Periphery

 

是否會算了呢?

按上面的計算,A10 最大器件用ASx4 也沒問題。

這樣 Arria10 以下28nm以上的器件直接打開 Autonomous PCIe HIP Mode 就好喲。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM