UltraScale系列芯片包含PCIe的Gen3 Integrated Block IP核在內的多種不同功能的IP核都會有一頁設置為PCIe:BARs,設置IP核的Base address register 的相關參數,如圖1所示:
圖1 PCIe:BARs 配置圖
一般來說在FPGA中使用PCIe核都是Endpoint mode,我們的PC主機端是Rootpoint mode,一般會有一個Root Complex的混合管理器,來管理接入PCIe總線的端點設備。對于PC機來說,當PC機識別該PCIe設備后便會識別到BAR n相對應的基地址和地址空間(不過該基地址是PC機的Root Complex主動分配的,還是PCIe設備內部固定的還有疑問)。設別基本配置信息后,PC機便可以對PCIe的內存空間進行讀寫操作了。
而PCIe IP核本身能夠引出AXI總線接口,該AXI接口是memory map 型的,所以就肯定存在自己的地址空間,本文所提的PCIe to AXI Translation便是PCIe的地址空間到AXI的地址空間的轉換。
這里就圖1中的BAR0來說明下PCIe to AXI Translation的轉換過程。BAR0的配置為:64bit數據位寬、32kilobytes地址范圍、PCIe to AXI Translation為0x0000000012340000。此時的PCIe IP核的BAR0是拓展連接到外部的AXI總線的,該總線連接到另外一個DDR4 MIG IP核,如圖2所示。圖中重點標注的AXI總線便是PCIe核引出的AXI總線。
圖2 PCIe核拓展AXI接口
假設PC機設別到的PCIe BAR0的基地址為0x0000000000000000,在FPGA內部DDR4的AXI基地址為0x0000000012340000。現在PC機想要往FPGA內部的DDR4地址空間的0x000000001234000F地址寫入數據,那么PC機應該對PICe內存空間的0x000000000000000F寫入數據,然后由PCIe to AXI Translation的關系,便會把0x000000000000000F轉換到0x000000001234000F上實現對AXI總線的操作,進而實現對DDR4的寫入操作。圖3可以看出具體的轉換操作。
圖3 PCIe to AXI Translation 轉換圖
既然有PCIe to AXI Translation,那相應的也有AXI to PCIe Translation了,圖4是AXI to PCIe Translation的轉換圖,不過這種操作應用不多,原理也跟PCIe to AXI Translation差不多,這就不再贅述了。
圖4 AXI to PCIe Translation 轉換圖
-
PCIe
+關注
關注
15文章
1241瀏覽量
82732 -
AXI
+關注
關注
1文章
127瀏覽量
16636
發布評論請先 登錄
相關推薦
評論