本博文主要是對基于PCIE(mcap)的部分可重構(gòu)實現(xiàn)的步驟做一個簡單的演示,如有錯誤之處,歡迎批評指正。值得說明的是,基于PCIE的部分可重構(gòu)需在ultrascale系列及ultrascale+芯片才能實現(xiàn),具體哪些系列能實現(xiàn)哪種配置方式如下圖所示:

圖1
本質(zhì)上來說,無論是JTAG還是ICAP或者M(jìn)CAP以及其它FPGA的配置方式,目的都是配置FPGA的邏輯。MCAP是通過PCIE來實現(xiàn)對FPGA的燒寫,最終結(jié)果和使用JTAG進(jìn)行FPGA燒寫沒有區(qū)別,而使用PCIE對FPGA燒寫有更好的靈活性,在某些需求場合是必不可缺的,譬如在數(shù)據(jù)加速的部署,F(xiàn)PGA加速板卡是位于服務(wù)器端,在服務(wù)上線之后修改FPGA業(yè)務(wù)邏輯的話如果使用JTAG燒寫,一方面操作十分不便,可行性極低,另一方面,重新燒寫FPGA會導(dǎo)致原FPGA的PCIE設(shè)備從服務(wù)器中刪除,需要重新啟動服務(wù)器枚舉設(shè)備(目前本人沒有找到可以進(jìn)入系統(tǒng)后重新枚舉設(shè)備的方法),對于已經(jīng)上線的服務(wù)器,在每次切換FPGA業(yè)務(wù)邏輯后重啟服務(wù)器是無法接受的,因此,使用PCIE對FPGA的部分重配置就十分必要,部分重配置能夠在保持FPGA靜態(tài)邏輯(PCIE部分和其他非業(yè)務(wù)邏輯)正常工作的情況下動態(tài)修改某個區(qū)域的邏輯(業(yè)務(wù)邏輯)。使用這種技術(shù)能夠不重啟服務(wù)器情況下快速切換業(yè)務(wù)邏輯。
本文的實現(xiàn)基于Xilinx的VCU1525加速板卡實現(xiàn),VCU1525的FPGA是一顆ultrascale+的VU9P,由上圖可以知道UltraScale+系列的FPGA支持MCAP配置模式。下面由一個簡單的例程實現(xiàn)MCAP部分重配置。
1.新建一個空白工程。

圖2
2.因為使用MCAP的配置方式,而MCAP集成于PCIE硬核中,因此需要例化一個PCIE相關(guān)的IP,這里使用XDMA進(jìn)行本次例程(裸PCIE硬核也可以),該例程沒有XDMA進(jìn)行數(shù)據(jù)DMA搬運的相關(guān)內(nèi)容,僅僅是借用XDMA中的MCAP功能,本人目前也有一個比較痛苦的地方,就是XDMA的上位機(jī)驅(qū)動怎么和MCAP的驅(qū)動整合在一起,不懂上位機(jī)驅(qū)動開發(fā)表示很迷茫,有大佬懂這個可以探討下。
3.在Board選項中(在建立工程時選擇Xilinx官方板卡才有這個選項)選擇如下。

圖3
4.在Basic選項中,把圖中紅色框中的Mode設(shè)置成Advanced。

圖4
5.在Basic選項中,在最底部的Tandem Configuration or Partial Reconfiguration中選擇PR over PCIE。

圖5
6.在Pcie ID選項的Device ID中設(shè)置成8011(因為Xilinx提供的驅(qū)動支持8011,8038,506F)

圖6
7.其它按照默認(rèn)選項,生成該IP。

圖7
8.考慮到測試和實現(xiàn)的方便,使用XDMA的Example Design來修改例程,在XDMA綜合完成之后(記得選擇OOC),打開該IP的Example Design,在該工程上面做修改。

圖8
9.Example Design如下圖。

圖9
10.首先我們先修改XDC文件和工程頂層,主要是LED的管腳和電平約束。在這個例子中,我們將要實現(xiàn)使用兩個可重構(gòu)模塊,一個模塊用于控制VCU1525的LED燈亮,一個模塊用于控制VCU1525的LED燈滅,用這個簡單的例子來說明PR的實現(xiàn)步驟。
11.修改工程中的時鐘生成IP,此步驟不是必要,主要是指定輸入時鐘管腳,如果不是官方板子,在XDC里面約束即可。

圖10
12.新建兩個模塊,分別是LED_RM_0和LED_RM_1。其中LED_RM_0用于控制LED滅,LED_RM_1用于控制LED亮。兩個模塊的邏輯很簡單,只是做演示作用。代碼邏輯如下。

圖11
13.在工程頂層例化其中一個RM模塊。

圖12
14.完成上述步驟之后,選擇Tools->Enable Partial Reconfiguration...選項,將工程轉(zhuǎn)換成支持PR類型的工程,在后續(xù)彈出的方框中選擇Convert。

圖13
15.此時工程已經(jīng)轉(zhuǎn)換完成,對比轉(zhuǎn)換之前,在Flow Navigator的PROJECT MANAGER會多出Partial Reconfiguration Wizard選項。

圖14
16.設(shè)置我們要進(jìn)行部分重構(gòu)的邏輯,即LED_RM_x模塊,如下圖所示,右鍵LED_RM_0,選擇Create Partition Definition...

圖15
17.在彈出的窗口中指定一個分區(qū)的名字,這里設(shè)置為LED_RM,點擊OK。

圖16
18.完成上一步之后,LED_RM_0模塊變成了一個黃色的棱形標(biāo)志,如下圖所示。

圖17
19.打開Partial Reconfiguration wizard

圖18
20.在Edit Reconfiguration Modules界面中,點擊“+”符號,把LED_RM_1添加進(jìn)來,表明有兩個重配置模塊,添加完成后如下圖所示,屬于LED_RM分區(qū)定義列表里面有LED_RM_0和LED_RM_1兩個重配置模塊。

圖19
21.在Editing Configurations界面中,選擇automatically create configurations,并修改Configuration Name,如下圖所示。

圖20
22.在Edit Configuration Runs界面中,選擇automatically create configurations。

圖21
23.最后,點擊Finish,部分重配置的向?qū)гO(shè)置完成,然后點擊Run Synthesis綜合設(shè)計。

圖22
24.綜合完成之后打開綜合設(shè)計。

圖23
25.在Floorplanning界面,右鍵LED_RM_0,選擇Floorplanning->Draw Pblock,給RM模塊劃分重配置的區(qū)域。

圖24
26.在分配完重配置區(qū)域之后,保存相應(yīng)的約束到xdc文件中,然后做DRC檢查,檢查分配的區(qū)域是否符合要求。

圖25
27.DRC檢查沒有問題之后,點擊Generate Bitstream.

圖26
28.至此,部分重配置的工程就生成完畢,在生成出來的文件里面,在工程目錄下會有兩個imp的文件夾,里面會分別有靜態(tài)邏輯和各自的重配置邏輯,我們將靜態(tài)邏輯先燒寫進(jìn)去FPGA,之后就可以通過PCIE配置動態(tài)邏輯,關(guān)于MCAP的驅(qū)動的上位機(jī),在Xilinx_Answer_64761__UltraScale_Devices這份文檔中有詳細(xì)的說明。

圖27

圖28
編輯:hfy
-
FPGA
+關(guān)注
關(guān)注
1654文章
22273瀏覽量
629871 -
Xilinx
+關(guān)注
關(guān)注
73文章
2192瀏覽量
129823 -
JTAG
+關(guān)注
關(guān)注
6文章
411瀏覽量
74579 -
PCIe
+關(guān)注
關(guān)注
16文章
1419瀏覽量
87504
發(fā)布評論請先 登錄
AMD利用可重構(gòu)FPGA設(shè)備Moku實現(xiàn)自定義激光探測解決方案
Xilinx高性能NVMe Host控制器IP+PCIe 3.0軟核控制器IP,純邏輯實現(xiàn),AXI4和AXI4-Stream DMA接口,支持PCIe 3.0和4.0
PCIe Gen 5 CEM連接器技術(shù)解析與選型指南
AES和SM4算法的可重構(gòu)分析
雙Zynq MPSoC PS側(cè)PCIe高速DMA互連解決方案
ATA-7010高壓放大器:開啟低頻可重構(gòu)磁電天線激勵的新篇章
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計17:PCIe加速模塊設(shè)計
基于AMD Versal器件實現(xiàn)PCIe5 DMA功能
清微智能官宣:國產(chǎn)可重構(gòu)芯片全球出貨量突破2000萬顆
中科億海微可重構(gòu)智能超表面電磁單元控制方案:多維調(diào)控電磁波,助力6G無線中繼
PCIe插槽秒變M.2存儲倉!免拆機(jī)維護(hù)神器M.2 NVMe轉(zhuǎn)PCIe 4.0 x4 硬盤抽取盒!#pcie
nvme IP開發(fā)之PCIe下
nvme IP開發(fā)之PCIe上
一種低翹曲扇出重構(gòu)方案

基于PCIE(mcap)的部分可重構(gòu)實現(xiàn)方案
評論