一、ZYNQ基本結構
ZYNQ7000系列分為Artix-7 Kintex-7 Virtex-7
二、ZYNQ7020 分為PS端、PL端
PS: 處理系統 (Processing System) , 就是與 FPGA 無關的 ARM 的 SOC 的部分。
PL: 可編程邏輯 (Progarmmable Logic), 就是 FPGA 部分。
ZYNQ7020的整體架構如下圖所示
Zynq 就是兩大功能塊,PS 部分和 PL 部分, 說白了,就是 ARM 的 SOC 部分,和 FPGA部分。其中,PS 集成了兩個 ARM Cortex-A9 處理器,AMBA互連,內部存儲器,外部儲器接口和外設。這些外設主要包括 USB 總線接口,以太網接口,SD/SDIO 接口,I2C 總線接口,CAN 總線接口,UART 接口,GPIO 等。
三、PS和PL互聯技術
3.1、ZYNQ作為首款將高性能ARM Cortex-A9系列處理器與高性能FPGA在單芯片內緊密結合的產品,為了實現ARM處理器和FPGA之間的高速通信和數據交互
3.2、發揮 ARM 處理器和 FPGA的性能優勢,需要設計高效的片內高性能處理器與 FPGA 之間的互聯通路。本節,我們就將主要介紹 PS 和 PL 的連接,讓用戶了解 PS 和 PL 之間連接的技術。
3.3、在具體設計中我們往往不需要在連接這個地方做太多工作,我們加入 IP 核以后,系統會自動使用 AXI 接口將我們的 IP 核與處理器連接起來,我們只需要再做一點補充就可以了。
AXI 全稱 Advanced eXtensible Interface,是 Xilinx 從 6 系列的 FPGA 開始引入的一個接口協議,主要描述了主設備和從設備之間的數據傳輸方式。在 ZYNQ 中繼續使用,版本是 AXI4,所以我們經常會看到 AXI4.0,ZYNQ 內部設備都有 AXI 接口。
3.4、其實 AXI 就是 ARM 公司提出的AMBA(Advanced Microcontroller Bus Architecture)的一個部分,是一種高性能、高帶寬、低延遲的片內總線,也用來替代以前的 AHB 和 APB 總線。
AXI 協議主要描述了主設備和從設備之間的數據傳輸方式,主設備和從設備之間通過握手信號建立連接。當從設備準備好接收數據時,會發出 READY 信號。當主設備的數據準備好時,會發出和維持 VALID 信號,表示數據有效。數據只有在 VALID 和 READY 信號都有效的時候才開始傳輸。當這兩個信號持續保持有效,主設備會繼續傳輸下一個數據。
3.5、主設備可以撤銷VALID 信號,或者從設備撤銷 READY 信號終止傳輸。AXI 的協議如圖,T2 時,從設備的 READY信號有效,T3 時主設備的 VILID 信號有效,數據傳輸開始。
信號有效,T3 時主設備的 VILID 信號有效,數據傳輸開始。
四、ZYNQ 芯片內部用硬件實現了 AXI 總線協議,包括 9 個物理接口,分別為 AXI-GP0~AXIGP3,AXI-HP0~AXI-HP3,AXI-ACP 接口。
1、AXI_ACP 接口,是 ARM 多核架構下定義的一種接口,中文翻譯為加速器一致性端口,用來管理 DMA 之類的不帶緩存的 AXI 外設,PS 端是 Slave 接口。2、AXI_HP 接口,是高性能/帶寬的 AXI3.0 標準的接口,總共有四個,PL 模塊作為主設備連接。主要用于 PL 訪問 PS 上的存儲器(DDR 和 On-Chip RAM)3、AXI_GP接口,是通用的AXI接口,總共有四個,包括兩個32位主設備接口和兩個32位從設備接口
可以看到,ARM只有兩個 AXI-GP 是 Master Port,即主機接口,其余 7 個口都是 Slave Port(從機接口)。主機接口具有發起讀寫的權限,ARM 可以利用兩個 AXI-GP 主機接口主動訪問 PL 邏輯,其實就是把 PL 映射到某個地址,讀寫 PL 寄存器如同在讀寫自己的存儲器。其余從機接口就屬于被動接口,接受來自 PL 的讀寫,逆來順受。
4.1、這 9 個 AXI 接口性能也是不同的。GP 接口是 32 位的低性能接口,理論帶寬600MB/s,而 HP 和 ACP 接口為 64 位高性能接口,理論帶寬 1200MB/s。
4.2、有人會問,為什么高性能接口不做成主機接口呢?這樣可以由 ARM 發起高速數據傳輸。答案是高性能接口根本不需要 ARM CPU 來負責數據搬移,真正的搬運工是位于 PL 中的 DMA 控制器。
4.3、位于 PS 端的 ARM 直接有硬件支持 AXI 接口,而 PL 則需要使用邏輯實現相應的 AXI 協議。Xilinx 在 Vivado 開發環境里提供現成 IP 如 AXI-DMA,AXI-GPIO,AXI-Dataover, AXI-Stream 都實現了相應的接口,使用時直接從 Vivado 的 IP 列表中添加即可實現相應的功能。下圖為 Vivado 下的各種 DMA IP:
下面為幾個常用的 AXI 接口 IP 的功能介紹:
4.4、AXI協議嚴格的講是一個點對點的主從接口協議,當多個外設需要互相交互數據時,我們需要加入一個AXI Interconnect模塊,也就是AXI互聯矩陣,
4.5、作用是提供將一個或多個 AXI 主設備連接到一個或多個 AXI 從設備的一種交換機制(有點類似于交換機里面的交換矩陣)。
4.6、這個 AXI Interconnect IP 核最多可以支持 16 個主設備、 16 個從設備,如果需要更多的接口,可以多加入幾個 IP 核。
?
五、內部鏈接
ZYNQ 內部的 AXI 接口設備就是通過互聯矩陣的的方式互聯起來的,既保證了傳輸數據的高效性,又保證了連接的靈活性。
Xilinx 在 Vivado 里我們提供了實現這種互聯矩陣的 IP 核axi_interconnect,我們只要調用就可以。
六、引腳分配
ZYNQ7020是400腳封裝,從官網的文檔,可以看出ZYNQ7020的引腳分配
PS端的引腳包括BANK500、BANK501、BANK502、
PL端引腳包括 BANK13(部分包含)BANK35、BANK34
下面這張圖,更加形象
七、上面的部分,并沒有把引腳講的很清楚,這里看官方手冊,有如下描述
意思是,PS端的引腳數量是固定的,并且不能分配給PL端使用,最多有54個引腳可以連接到PS端,
他們可以軟件編程連接ps的內部外設或者靜態內存控制器
八、MIO概述
MIO的功能是將從PS外設和靜態內存接口的訪問,復用到配置寄存器中定義的PS引腳。在PS端最多有54針被用以IOP(I/O Peripheral )和靜態內存接口 下表4顯示了可以映射不同外設引腳的位置。圖2顯示了MIO模塊的框圖。 如果超過了54個引腳個數的其它I/O功能是設計必須的,那他可以通過PL端,路由到與這些功能相關聯的I/O引腳 這個特性被稱為可擴展多路復用I/O (EMIO)。
九、MIO、EMIO和AXI_GPIO的關系
ZYNQ7000中與PS相連的引腳包含MIO、EMIO和AXI_GPIO三種類型。
1、MIO直接掛在PS上,而EMIO與PL相連,PS通過PL調用EMIO。MIO共有54bit,EMIO共有64bit。
MIO管腳是固定的,而EMIO需要通過管腳約束文件進行分配。MIO、EMIO管腳號均通過實際原理圖查找。
2、AXI_GPIO是通過AXI總線掛在PS上的GPIO,一般通過調用IP核實現,如PS通過AXI_Uartlite調用PL端資源。
而EMIO在Block Design文件上表現為PS上的一個引出接口。
十、PS-PL MIO-EMIO信號和接口
由于MIO引腳的數量有限,MIO是I/O外圍連接的基礎。可以軟件編程IO信號路由到MIO引腳。也可以通過EMIO接口將I/O外圍信號路由到PL端,
這非常有用,用來PS獲得更多的設備引腳(PL端引腳),或者允許一個PS端外設的一個引腳路由到PL的內部IP邏輯端口,如圖2
十一、啟動流程
12.1、啟動模式
12.2、啟動階段
12.3、階段0:Stage-0 Boot (BootROM)
12.4、階段1:FSBL(First Stage Bootloader )
FSBL(第一階段引導加載程序)在BootROM之后啟動,這個BootROM將FSBL加載到OCM(On-Chip Memory ),
FSBL負責下面的幾項工作
FSBL流程圖
下圖是一個簡單的FSBL流程圖:
12.5、第二階段啟動流程:Second Stage Bootloader
第二階段引導加載程序是可選的,并由用戶設計。
Zynq-7000 AP SoC BootROM加載程序需要引導映像頭,它加載單個分區,通常是FSBL。引導映像的其余部分由FSBL加載和處理。
xilinx提供了一個名為Bootgen的實用程序(用來創建一個適合ROM或Fash的引導映像)。它通過構建所需的引導頭、
附加描述以下分區的表并將輸入數據文件(ELF文件、FPGA bit流和其他二進制文件)處理到分區來創建映像。
12.6、Boot Image 格式
12.7、下圖顯示了Zynq-7000 AP SoC Linux引導映像分區的示例。
審核編輯:劉清
-
FPGA
+關注
關注
1630文章
21796瀏覽量
605969 -
ARM
+關注
關注
134文章
9164瀏覽量
369161 -
I2C總線
+關注
關注
8文章
406瀏覽量
61163 -
Zynq
+關注
關注
10文章
610瀏覽量
47288
原文標題:學員筆記精選 | ZYNQ7000系列 PS、PL、AXI 、啟動流程基本概念篇
文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論