PS/PL Interfaces
Zynq在PS和PL之間有9個AXI接口。 在PL方面,有4x AXI Master HP(高性能)端口,2x AXI GP(通用)端口,2x AXI Slave GP端口和1x AXI Master ACP端口。 PS中還有連接到PL的GPIO控制器。
有四個pynq類用于管理Zynq PS(包括PS DRAM)和PL接口之間的數據移動。
1.GPIO - 通用輸入/輸出
2.MMIO - 內存映射IO
3.Xlnk - 內存分配
4.DMA - 直接內存訪問
使用的類取決于IP連接的Zynq PS接口以及IP的接口。
在PYNQ上運行的Python代碼可以使IP通過AXI Slave訪問連接到GP端口。 MMIO可用于執行此操作。
連接到AXI Master端口的IP不受PS的直接控制。 AXI Master端口允許IP直接訪問DRAM。在執行此操作之前,應分配內存以供IP使用。 Xlnk類可用于執行此操作。對于PS DRAM和IP之間的更高性能數據傳輸,可以使用DMA。 PYNQ提供DMA類。
在設計自己的 overlay時,您需要考慮所需的IP類型以及它如何連接到PS。然后,您應該能夠確定使用IP所需的類。
PS GPIO
從Zynq PS到PL有64個GPIO(線路)。
來自PS的PS GPIO線可以作為非常簡單的方式用來進行PS和PL之間通信。 例如,GPIO可用作復位或中斷的控制信號。
IP連接到GPIO,不必映射到系統存儲器映射。
有關使用PS GPIO的更多信息,請參閱PS GPIO部分。
MMIO
連接到AXI Slave GP端口的任何IP都將映射到系統存儲器映射中。 MMIO可用于讀/寫內存映射位置。 MMIO讀或寫命令是將32位數據傳輸到存儲器位置或從存儲器位置傳輸32位數據的單個事務。 由于不支持突發指令,MMIO最適合從IP連接到AXI Slave GP端口讀取和寫入少量數據。
有關使用MMIO的更多信息,請參閱MMIO部分。
Xlnk
必須先分配內存,然后才能通過IP訪問內存。 Xlnk允許分配內存緩沖區。 Xlnk分配一個連續的內存緩沖區,允許在PS和PL之間有效地傳輸數據。 Python或其他代碼運行在PS端的Linux上,可以直接訪問內存緩沖區。
當PYNQ運行Linux時,緩沖區將存在于Linux虛擬內存中。 Zynq AXI Slave端口允許overlay中的 AXI-master IP訪問物理內存。 Xlnk還可以提供指向緩沖區的物理內存指針,該指針可以發送到overlay中的IP。 物理地址存儲在分配的內存緩沖區實例的physical_address屬性中。 然后,overlay中的IP可以使用物理地址訪問同一緩沖區。
有關使用Xlnk的更多信息,請參閱Xlnk部分。
DMA
AXI stream接口通常用于高性能流應用。 AXI stream可以通過DMA與Zynq AXI HP端口一起使用。
pynq DMA類支持AXI直接內存訪問IP。 這允許數據從DRAM讀取,并發送到AXI stream,或從stream接收并寫入DRAM。
有關使用DMA的更多信息,請參見DMA部分。
Interrupt
有一些專用中斷與python環境中的asyncio事件相關聯。 要集成到PYNQ框架中,必須將專用中斷連接到AXI中斷控制器,該控制器又連接到PS的第一個中斷線。 如果需要超過32個中斷,則可以級聯AXI中斷控制器。 對于不受PYNQ直接控制的IP,例如SDSoC加速器,這種安排使其他中斷空閑。
中斷由Interrupt類管理,實現基于asyncio構建,asyncio是Python標準庫的一部分。
-
接口
+關注
關注
33文章
8575瀏覽量
151015 -
Xilinx
+關注
關注
71文章
2167瀏覽量
121303
原文標題:泵的基礎知識與選型原則、經驗
文章出處:【微信號:gongkongworld,微信公眾號:工控資料窩】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論