1. CvP 簡介
CvP(Configuration via Protocol)是一種通過協議實現 FPGA 配置的方案,Arria? V,Cyclone? V,Stratix? V,Arria? 10,Cyclone? 10 GX,Stratix? 10,Agilex?都支持這個功能,但支持的模式有所差異。目前所采用的協議是 PCI Express? (PCIe)。
CvP 配置文件被拆分成兩個,一個是 periphery image,一個是 core image。
?Periphery image (*.periph.jic) 包含 GPIOs,I/Oregisters,GCLK、QCLK、RCLK 時鐘網絡,PLLs,收發器,存儲器 PHY 接口,以及硬核 IP,例如?PCIe 硬核。這部分不能被更改和更新。Periphery image 存儲在?FPGA 配置芯片內,上電加載。
?Core image (*.core.rbf) 包含被 configuration RAM (CRAM)配置的邏輯部分,包括 LABs, DSP, 和 embedded memory。FPGA?設備上電后主機端再經由所用的協議(此處為 PCIe)將 core image 下載并配置到 FPGA 內部。
2. CvP 系統結構
CvP 系統由三部分組成:FPGA,PCIehost,FPGA 的配置器件。如圖 1。
圖 1 CvP 系統結構圖
(1)配置器件與 FPGA 通過傳統配置接口互聯。對于 V 系列和 Arria10 器件來說,可支持任何配置方式,例如 AS,PS 或 FPP。針對 Stratix10,可采用 Active Serial x4 (fast mode) 或 Avalon Streaming (Avalon-ST) x8。對于 Agilex 系列器件,只可采用 Active Serial x4 (fast mode)。
(2)對于 V 系列、Arria10、Stratix10、Cyclone10GX,只有器件底部左側的 PCIe?硬核才支持 CvP 功能,其他的 PCIe 硬核可作常規功能使用。而對于 Agilex 系列,左側的 PCIe 硬核都支持 CvP 功能。在硬件設計階段需要確認使用哪個 PCIe 做 CvP,一旦確定,則只有這個 PCIe 硬核作為 Endpoint 可以使能 CvP 功能,其他 PCIe 硬核不能再作此用途,但可作為常規 PCIe 接口用。
(3)其他 PCIe 硬核能作為常規 PCIe 接口使用。
3. CvP 價值
? 由于只需要存儲 periphery logic,FPGA 的配置器件可以選擇小容量器件,降低成本。
? Coreimage 存在主機端,提高核心邏輯的安全性。
? 對于支持 CvP Update Mode 的器件來說,可支持動態的核心邏輯更新,而不需要系統斷電重啟。
? 主機側提供了簡單的軟件配置模型。
4. CvP 模式
CvP 有兩種模式:CvP Initialization mode 和 CvP Update mode。
4.1 CvP Initialization Mode 初始化模式
FPGA 在上電時加載配置芯片上的 peripheral image,在 100ms 的枚舉時間內成功配置其 PCIe 接口,使主機能正確枚舉該 PCIe 設備。主機啟動后再通過 PCIe 鏈路配置 FPGA 核心邏輯。
CvP Initialization Mode 優勢:
? 保證 FPGA PCIe 設備滿足枚舉時間。
? FPGA 的配置器件可以選擇小容量器件,降低成本。
? 保證主機側核心邏輯的安全性。
4.2 CvP Update Mode 更新模式
當 FPGA 進入用戶模式,對除 CvP PCIe 核之外的其他邏輯通過 CvP 進行重新配置,此時 CvP PCIe 既可以做常規 PCIe 使用,又可以實現 FPGA 核心邏輯的更新。為使用該模式,需要參考 Partition 的流程對工程進行分模塊 Partition 和 Logic Lock 設計,以重復利用設備外設,保證 peripheral image 不變。
當有以下幾種需要時,可以考慮使用該模式:
? 需要對核心邏輯進行更新。
? 根據功能發布情況對設備進行更新。
4.3 不同器件系列支持的模式
前面說到 ArriaV,CycloneV,StratixV,Arria10,Cyclone10GX,Stratix10,Agilex 都支持 CvP,但不同系列器件支持的模式有所差異,具體如表 1,其中 Agilex 只支持 InitializationMode,如表 2。
表 1 不同器件系列支持的模式
表 2 Agilex 系列支持的模式
5. CvP Initialization mode 實現流程和注意事項
使用 Stratix V 開發板實現 CvP Initialization mode 的流程及注意事項。
? 板卡:Stratix-VGX Dev Kit (PCIe board),PCIe Gen1x8。
? 主機:64 位 Windows7 操作系統。
? Quartus 版本:QuartusII 64-Bit Version 14.1.0 Build 186
5.1 實現流程
1. 構建含 PCIe IP 的工程,此處采用 S5PCIe 的 Example design。
2. 打開工程內 PCIe IP 的 GUI,勾選“Enable configuration via the PCIe link”。
3. 在 Assignments =》 Device =》 Device andPin Options =》 Configuration 中選擇 FPGA 的配置模式為 Active Serial x4(并設置 MSEL)。
在 Assignments =》 Device =》 Device and Pin Options =》 CvPSettings 選擇 configuration via protocol 為 Core initialization。
4. 根據開發板分配管腳并編譯工程,生成 cvp_example.sof。
5. 將生成的 cvp_example.sof 進行拆分,打開 File =》 Convert Programming Files,設置 Programmingfile type 為 JTAG Indirect Configuration File (.jic)。添加 cvp_example.sof,勾選 Create Memory Map File 和 Create CvP files。點擊 Generate 之后,cvp_example.sof 就被拆分成兩部分,cvp_example.periph.jic 和 cvp_example.core.rbf。
6. 關閉主機,將 PCIE 板卡連上 JTAG,插在主機 PCIe 插槽里,主機再上電啟動。此時 PCIE 板卡由 PCIE 插槽供電。打開 Quartus II Programmer,點擊 Auto Detect 掃描 JTAG 鏈,選擇 FPGA 點擊 ChangeFile,選擇之前生成的 cvp_example.periph.jic 文件,并燒寫進 EPCQ256。
7. 重新啟動主機,枚舉 PCIe 設備。此時已經加載了 cvp_example.periph.jic 的 PCIE 板卡將作為 PCIE 設備被系統識別。根據 PCIe IP 的設置,在主機側查看 DeviceID 為 E001,Vendor ID 為 1172 的 PCIe 設備。
此時可以下載一個免費軟件“RW – Read & Write Utility”。找到 Device ID 為 E001,Vendor ID 為 1172 的 PCIe 設備。
8. 在主機上使用 quartus_cvp 對識別到的 PCIe 板卡(Device ID 為 E001,VendorID 為 1172)加載核心邏輯部分 cvp_example.core.rbf。打開 Windows CMD,更改路徑到 cvp_example.core.rbf 所在的位置。
輸入如下命令并回車:
? quartus_cvp--vid=1172 --did=e001 cvp_example.core.rbf
如果成功執行該命令,會出現如下界面,表示核心邏輯已被成功加載進 FPGA,此時 FPGA 進入 usermode,可以正確工作。
5.2 注意事項
運行 quartus_cvp 時需要安裝 Jungo WinDriver。
編輯:hfy
-
FPGA
+關注
關注
1629文章
21729瀏覽量
603044 -
PCIe
+關注
關注
15文章
1235瀏覽量
82595
發布評論請先 登錄
相關推薦
評論