如何保证FPGA PCIe唤醒能满足PC的100ms 的时间要求(Autonomous Mode)?
原創(chuàng)By DeeZeng [ Intel FPGA筆記 ]
PC 需要PCIe設(shè)備在 100ms 內(nèi)啟動(dòng),這樣PC 才能掃描到PCIe 設(shè)備。對(duì)于 FPGA PCIe 板卡,同樣也需要滿足這個(gè)時(shí)間要求。
Intel FPGA系列是基于sram的,也就是掉電丟失,所以會(huì)需要配置器件。配置模式有很多種,以我們常見的 ASx4 和 FPP為例:
1. ASx4 :只需要一顆 EPCS/PECQ 即可配置
2. FPP : 需要一個(gè)額外外部Host 用來搬移 配置數(shù)據(jù),由于是并行 x8 x16 x32,配置時(shí)間會(huì)少很多。
如下抽出兩張 Cyclone V 和 Arria 10 的 AS FPP 配置時(shí)間差異
PCIe 100ms 或FPGA 120 ms 的時(shí)間(請(qǐng)具體分析之后給出的 Figure 2-2 ,Table 2-1圖片),可不單純包含F(xiàn)PGA configuration Time,還包含Ramp Time ,POR Time等。
減去這兩項(xiàng)時(shí)間,那FPGA configuration 80 ms 左右的都有點(diǎn)不保險(xiǎn)了。
也就是當(dāng)我們 Cyclone V 邏輯資源大的器件,或Arria10 器件,當(dāng)使用AS x4模式的時(shí)候,PCIe應(yīng)用會(huì)滿足不了喚醒時(shí)間!
(Arria10的最大兩個(gè)器件,甚至FPP32時(shí)間也滿足不了)
而實(shí)際硬件設(shè)計(jì)或板子需要或已經(jīng)采用 EPCQ方案了(畢竟很多情況只會(huì)用一顆EPCQ,而不用FPP的 外部Host+并行Flash)
那如何解決呢?
外接供電,先于 Host 開機(jī)。 (好吧,這用起來幾多麻煩)
PCIe供電,Host 開機(jī)兩次。(PC重啟,F(xiàn)PGA不會(huì)斷電和重配置)
Autonomous PCIe HIP Mode (注意要器件支持這個(gè)功能)
什么是Autonomous PCIe HIP模式?
Autonomous 模式對(duì)滿足PCIe 100ms 喚醒時(shí)間非常有用。Intel FPGA設(shè)備會(huì)先接收periphery image,然后再接收 Core image.
配置完Core image 后,F(xiàn)PGA進(jìn)入user mode. 在Autonomous HIP 模式下,PCIe Hard IP 在periphery image配置完后就能工作,
完成Link Training 后,PCIe Hard IP 就能響應(yīng) host, 從而減少喚醒時(shí)間。 而不用等到 Core image 配置完進(jìn)入user mode才開始。
Autonomous PCIe HIP Mode 和 CvP 的模式是類似的,如下以CVP的兩張圖類比說明Autonomous PCIe HIP Mode 與否的差異。
PCIe Active的 時(shí)間 = 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就起來了。
2. 非Autonomous PCIe HIP Mode : 需要Program Full image ,Hard PCIe才起來。
所以使能Autonomous PCIe HIP Mode 可以減少 (Full image - Periphery image)數(shù)量的Config bits,大大縮短時(shí)間。
這么有用,那如何設(shè)置 Autonomous 模式呢?簡(jiǎn)單,在 Quartus 工程中設(shè)置勾選一下即可。
Cyclone V,Arria V 和 Stratix V 以及之后出來的 Arria 10 ,Stratix 10 等 都支持 autonomous PCIe HIP Mode.
注意: 1. PCIe Hard IP。 2. 支持這個(gè)功能的器件。
這樣開機(jī)無法找到PCIe,重啟才能找到的案例。打開這個(gè)模式之后,第一次開機(jī)就能直接找到PCIe啦。
What? 擔(dān)心打開了Autonomous PCIe HIP Mode還是無法滿足 PCIe的喚醒100ms時(shí)間要求?
那我們來進(jìn)行一次具體計(jì)算,看如何計(jì)算這些時(shí)間
以 Arria10 1150的器件,使用AS x4 來計(jì)算(其他系列計(jì)算類似)
PCIe Active的時(shí)間 = a(ramp time) + b (POR) + Program and calibrate
1. Ramp Time: Ramp Time 這是FPGA開發(fā)板 Power 電路決定的
假設(shè)10ms
2. POR delay: 這個(gè)delay是,POR電路監(jiān)控的所有Power都起來了,然后delay一個(gè)時(shí)間用以保證,F(xiàn)PGA準(zhǔn)備好被配置。
可以看到 Fast POR 和 Standard POR 是有很大差異的,我們必須設(shè)置MSEL,將POR切到 Fast
這里算 fast 的 12ms
3. Program and calibrate
3.1 Program periphery image
為計(jì)算配置periphery image的時(shí)間:
這里 Configuration File size 我們用 periphery image : Datasheet中CvP的IOCSR數(shù)據(jù) 2756096
Number of data line 用 AS x4 的 4
DCLK 用 AS 的 100MHz
config time = 2756096/4* (1/100MHz) = 6.9 ms (遠(yuǎn)小于 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
這個(gè)時(shí)間在 A10 是有一個(gè)nios硬核ip 會(huì)進(jìn)行calibration,從bottom的開始。時(shí)間花費(fèi)應(yīng)該不多。
所以打開 Autonomous Mode總時(shí)間為: 10 + 12 + 6.7 + 少量Calibrate時(shí)間 ≈ 30ms ,很簡(jiǎn)單就滿足PCIe喚醒時(shí)間要求。
重復(fù)一下這張圖: 我們Arria10 1150K,用ASx4的EPCQ config periphery image 都只需要 7ms 不到,那這張圖的timing應(yīng)該很好滿足了。
不過硬件的 Ramp Time應(yīng)該是影響的,如果超了10ms (別超),也許就是 和 ramp+POR+config 的時(shí)間加起來和 120ms 對(duì)比了
是否會(huì)算了呢?
按上面的計(jì)算,A10 最大器件用ASx4 也沒問題。
這樣 Arria10 以下28nm以上的器件直接打開 Autonomous PCIe HIP Mode 就好喲。
總結(jié)
以上是生活随笔為你收集整理的如何保证FPGA PCIe唤醒能满足PC的100ms 的时间要求(Autonomous Mode)?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gitlab修改配置重启_centos7
- 下一篇: 7135制作自动量程电压切换_基于数字电