PS-PL之間的AXI 接口分為三種:
• 通用 AXI(General Purpose AXI) — 一條 32 位數據總線,適合 PL 和 PS 之間的中低速通信。接口是透傳的不帶緩沖。總共有四個通用接口:兩個 PS 做主機,另兩個 PL 做主機。
• 加速器一致性端口(Accelerator Coherency Port) — 在 PL 和 APU 內的 SCU之間的單個異步連接,總線寬度為 64 位。這個端口用來實現 APU cache 和 PL的單元之間的一致性。PL 是做主機的。
• 高性能端口(High Performance Ports) — 四個高性能 AXI 接口,帶有 FIFO緩沖來提供 “ 批量 ” 讀寫操作,並支持 PL 和 PS 中的存儲器單元的高速率通信。數據寬度是 32 或 64 位,在所有四個接口中 PL 都是做主機的。
即:
從VIVADO的配置中,我們可以看出DDR控制器是通過四個AXI HP連接到PL端的。
再去查閱UG585,里面有一段話是這么說的:
The four AXI_HP interfaces are multiplexed down, in pairs, and are connected to ports 2 and 3 as
shown in Figure 10-2. These ports are commonly configured for high bandwidth traffic. The path
from these four interfaces to the DDR include two ports on the DDR memory port arbiter. The
interconnect switch arbitrates back-and-forth between each of the two ports. Read and write
channels operate separately.
大致意思就是說四路HP總線通過M2連接到了片上存儲器(貌似是256KB的SRAM,這個與我們現在要做的工作無關,在這里提一嘴是因為后來涉及到對DDR尋址的時候,有一部分地址是連到了這個OCM的,這一部分地址對我們暫時沒用,需要避開),另外這四路總線的0和1又通過M0連到了DDR的S3端口,2和3通過M1連到了DDR的S2端口。一般推薦的方法是,同時使用HP0和HP2(或者HP1和HP3),總之就是要使用分離的通道來操作DDR,以獲取較高的性能。
從上圖我們也可以看到,每個 AXI_HP 接口里都有用做讀寫通信的 FIFO 緩沖器。在某些 Xilinx 文檔中,AXI_HP接口也被叫做 AXI FIFO 接口 (AFI),來表明它們的緩沖能力。AXI_HP 接口的特性包括:
• 32 或 64 位數據主機接口,每個端口可以獨立編程。
• 對於未對齊的 32 位傳輸,可以自動擴展傳輸尺寸從 32 位到 64 位。
• 寫命令的可編程的閾值。
• 對於所有的 PL-PS 接口的異步時鍾頻率跨域。
• 讀寫 FIFO。
• 命令和通信數據 FIFO 填充程度計數是 PL 可見的。