背景與問題
? CPU+FPGA架構(gòu),CPU做RC、FPGA做EP;
? FPGA邏輯(Vivado ->BD -> Address Editor)中如何設(shè)置PCIe to AXI Translation;
? FPGA邏輯中如何設(shè)置AXI to PCIe Address Translation。
1. Root Complex到Endpiont
1.1 Root Complex到Endpiont,即PCIe域(Root Complex中的系統(tǒng)地址空間)到AXI域(FPGA邏輯中的AXI地址空間)。PCIe發(fā)起的對Endpoint的訪問應(yīng)在Endpoint申請的BAR空間內(nèi),Endpoint申請BAR空間時申明了地址空間的大?。ū热?56M,而且我們假設(shè)這256M空間對應(yīng)AXI域中0x3000_0000~0x3FFF_FFFF),而Root Complex則根據(jù)實際情況決定從某個地址開始分配一段地址空間給Endpoint(比如0x4000_0000~0x4FFF_FFFF)。
1.2 PCIe想對Endpoint中的0x3000_0010地址發(fā)起一次訪問。PCIe發(fā)出訪問的地址為0x4000_0010,F(xiàn)PGA的PCIe Core會收到相應(yīng)BAR空間中的有效地址偏移0x10,PCIe Core使用有效地址偏移+ C_PCIEBAR2AXIBAR(根據(jù)1.1中的假設(shè),這個值為0x3000_0000)作為其AXI總線訪問的地址。
2. Endpiont到Root Complex
2.1 假設(shè)PCIe域和AXI域的映射跟1. Root Complex到Endpiont的設(shè)定相同。
2.2 來自映射地址為0x3000_0000~0x3FFF_FFFF的AX總線訪問給出的地址0x3000_1234會被PCIe Core剝離出有效偏移地址0x1234,使用該偏移地址+C_AXIBAR2PCIEBAR作為PCIe TLP的地址發(fā)送給Root Complex。C_AXIBAR2PCIEBAR的值應(yīng)該設(shè)為Root Complex給Endpoint分配的地址空間的首地址,即0x4000_0000。
3. 總結(jié)與疑問
3.1 總結(jié)
? 地址空間的有效偏移地址。
? 地址空間的首地址。
3.2 疑問
CPU發(fā)出的訪問地址到FPGA的PCIe IP是如何被提取出有效偏移地址的? PCIe的配置空間里記錄了CPU分配的BAR空間的首地址?
-
FPGA
+關(guān)注
關(guān)注
1643文章
21923瀏覽量
612401 -
cpu
+關(guān)注
關(guān)注
68文章
11013瀏覽量
215303 -
PCIe
+關(guān)注
關(guān)注
16文章
1304瀏覽量
84443
發(fā)布評論請先 登錄
操作系統(tǒng)中的邏輯地址和物理地址
Matlab算法映射至FPGA硬件邏輯
Linux內(nèi)核地址映射模型與Linux內(nèi)核高端內(nèi)存詳解

關(guān)于ARM地址映射的理解
hyperlink地址映射方式不對
STM32核心在Cortex的地址映射說明

FPGA視頻教程之FPGA設(shè)計中時序邏輯設(shè)計要點的詳細(xì)資料說明

2020.4.14 第四次 寄存器地址名稱映射

Vivado中DDRX控制器(mig)ip核配置中關(guān)于命令序號選擇和地址映射說明

評論