本文來自 AMD XILINX 工程師 Fancheng Meng
1Versal 設(shè)備的 Axi bridge mode
Versal 系列的 DMA axi bridge 模式可以在 PL 的 QDMA IP 或者在 CPM(The integrated block for PCIe Rev. 4.0 with DMA and CCIX Rev. 1.0)的 QDMA IP 中選中,CPM 內(nèi)嵌在CIPS (Control Interfaces and Processing System) 中。不同系列的 Versal 的產(chǎn)品可支持的 PCIE 最高速率不同,能夠支持PCIE5.0協(xié)議的產(chǎn)品,例如 VPK120,其 CIPS 內(nèi)使用的是 CPM5,而只能支持到 PCIE 4.0 協(xié)議的產(chǎn)品,例如 VCK190,其 CIPS 內(nèi)使用的是 CPM4。雖然 CPM5 和 CPM4 的地址轉(zhuǎn)換參數(shù)都可以在界面中配置,但是 CPM5 與 CPM4 地址轉(zhuǎn)換的配置方式相差很大。如果要在 Versal 系列設(shè)備的 PL 中使用 AXI bridge mode,需要打開QDMA的IP, 選擇axi bridge mode。這一點與 Ultrascale 系列不同,Ultrascale 系列設(shè)備的 axi bridge mode 需要在 XDMA IP 中打開。
2CPM4 AXI bridge mode 的地址轉(zhuǎn)換
如何將 AXI 地址轉(zhuǎn)換為 pcie 地址?
在 CPM4 的 GUI 配置界面中,通過配置 AXIBAR 的參數(shù),來實現(xiàn)將 AXI4 memory map (MM) 的地址范圍映射到 PCIe的地址范圍。在Vivado 2022.1中打開block design,在block design中添加 CIPS IP。在配置 CPM 時,在 PCIe Controller 0 mode 中選擇 DMA,在 Lane width 中選擇 PCIE lane 的數(shù)目。
在 CPM4 PCIE Controller 0 Configuration interface 中,在 Basic、Capabilities 和 legacy/MSI Cap 等界面中選擇所需的參數(shù),然后打開 AXI:BARs 界面:
選擇 AXI bar 的數(shù)量,AXI bar 的數(shù)量取決于用戶需要幾段地址映射,想要將幾段 AXI 的地址域映射到 PCIE 域,就選擇幾個 bar。在進(jìn)行地址映射時,可以選擇將 AXI 地址映射到32位的PCIE 地址或64位的 PCIE 地址,如果想要映射到 32bit 的 PCIE 地址,在 AXI to PCIE Translation 選項中,32到64位需要配為零,以生成32位地址的 TLP包,如果想要將 AXI 地址映射到64位的 PCIE 地址,需要把 AXI to PCIE Translation 的32到64位需要配成非0,才能生產(chǎn)64位地址的TLP包。Aperture base address 和 Aperture High address 分別填寫映射到 PCIe 地址域的 AXI 的起始地址和結(jié)束地址,以下通過舉例分別對 AXI 地址映射到32位和64位 PCIE 地址,這兩種情況進(jìn)行說明。
示例1
示例1是將 AXI 地址映射到32位的 PCIe 地址,使用下圖所配置的參數(shù),可以將 AXI 地址150000-15FFFF 映射到 PCIE 地址 100000-10FFFF。如果發(fā)送地址為 150001的 AXI 數(shù)據(jù)包,則該 IP 會將其轉(zhuǎn)換為地址為 100001 的 PCIe 數(shù)據(jù)包。
根據(jù) AXI 地址域的大小,AXI to PCIE Translation 的位0-11位必須設(shè)置為零。
示例2
示例2是將 AXI 地址映射到64位 PCIe 地址,使用下面的參數(shù),可以把 AXI 的地址 0X120000000000-0x13FFFFFFFFFF 映射到PCIe地址0X200000000000-0X21FFFFFFFFFF。當(dāng)發(fā)送AXI 數(shù)據(jù)包的地址為 0X12FFFFFFFFFF 時,該 IP 會將地址為0X12FFFFFFFFFF 的 AXI 數(shù)據(jù)包轉(zhuǎn)換為地址為 0X20FFFFFFFFFF 的 PCIe 數(shù)據(jù)包。
3PL Axi bridge mode 的地址轉(zhuǎn)換
在 block design 中打開 QDMA IP,在 IP 的 function mode 中選擇 axi bridge mode,在切換到 axi bridge mode 即可看到如下圖所示,在 GUI 界面中多了 AXI:BARs 選項,可以在下面選項中選擇是否使用地址轉(zhuǎn)換。
如果要使用地址轉(zhuǎn)換功能,不要勾選上圖選項。在進(jìn)行地址轉(zhuǎn)換時,地址的高位,以及轉(zhuǎn)換的空間大小都需要在 block design 的 address editor 中選擇,本次示例所選擇的地址高位為 AB0_0000_0000,空間大小為 32G,具體配置如下圖所示,起始地址、結(jié)束地址和空間大小分別是 AB0_0000_0000,AB7_FFFF_FFFF,32g。
在進(jìn)行完以上配置后,32GB 的空間就被平均分成了8份。在 AMD Xilinx 的手冊中,通常稱之為 window,每個 window 的大小是固定的 4GB,每個 window 的 AXI 起始地址和結(jié)束地址也固定了。用戶可選擇的是使用哪幾個 window,以及每個 window 使用多少空間。如何對每個 window 進(jìn)行配置呢?在PG344 上對此有所解釋,AXI 的地址轉(zhuǎn)換的細(xì)節(jié)是基于 BDF table 進(jìn)行配置,BDF table 可以理解為 AXI 地址域到 PCIE 地址域的地址轉(zhuǎn)換配置表,這張表可以通過 s_axil_csr_*. 接口進(jìn)行配置,CSR 接口如下圖所示,這個接口在 IP 配置界面中是可以選中的。
每個 window 都有6個寄存器與之對應(yīng),如果想要 window 生效,需要對這6個寄存器進(jìn)行配置,第一個 window 的 6 個寄存器如下所示:
a. 0x2420
b. 0x2424
c. 0x2428
d. 0x242C
e. 0x2430
f. 0x2434
之后每個 window 的起始地址為 0x2420 + (0x20 * i),i 表示第幾個 window。6個寄存器代表的含義如下表所示:
本篇 blog 通過 2個 window 的配置流程對此機制進(jìn)行說明,Window 0 的大小為 4KB ,Window 1 的大小為 4GB。 Window0 將 AXI 地址的 0x0000_0AB0_0000_0000-0x0000_0AB0_0000_0FFF 轉(zhuǎn)換到 PCIE 的地址 0x0000_0AB7_1234_0000-0x0000_0AB7_1234_0FFF。 Window1 將 AXI 地址的 0x0000_0AB1_0000_0000-0x0000_0AB1_FFFF_FFFF轉(zhuǎn)換到 PCIE 地址的 0x0000_0AB5_0000_0000-0x0000_0AB5_FFFF_FFFF。
Window0 的 BDF table 配置如下:
如果 AXI 包的地址為 0x0000_0 AB 0_0000_0100,經(jīng) window0 轉(zhuǎn)換后的 PCIE 包的地址為 0x0000_0AB7_1234_0100。
Window1 的 BDF table 配置如下:
如果 AXI 包的地址為 0x0000_0AB1_0000_0100,經(jīng) window1 轉(zhuǎn)換后的 PCIE 包的地址為 0x0000_0AB5_0000_0100。
審核編輯:湯梓紅
-
amd
+關(guān)注
關(guān)注
25文章
5441瀏覽量
133933 -
Xilinx
+關(guān)注
關(guān)注
71文章
2163瀏覽量
121001 -
Bridge
+關(guān)注
關(guān)注
0文章
15瀏覽量
11882 -
地址轉(zhuǎn)換
+關(guān)注
關(guān)注
0文章
2瀏覽量
5608 -
Versal
+關(guān)注
關(guān)注
1文章
153瀏覽量
7645
原文標(biāo)題:開發(fā)者分享|Versal CPM AXI Bridge 模式的地址轉(zhuǎn)換
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論