0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ZYNQ7000系列 PS、PL、AXI 、啟動流程基本概念

電子工程師 ? 來源:FPGA技術(shù)江湖 ? 作者:FPGA技術(shù)江湖 ? 2021-05-12 10:25 ? 次閱讀

一、ZYNQ基本結(jié)構(gòu)

ZYNQ7000系列分為Artix-7 Kintex-7 Virtex-7,各個型號區(qū)別參考下面的博文

https://www.jianshu.com/p/005899fe6815

二、ZYNQ7020 分為PS端、PL端

PS: 處理系統(tǒng) (Processing System) , 就是與 FPGA 無關(guān)的 ARM 的 SOC 的部分。

PL: 可編程邏輯 (Progarmmable Logic), 就是 FPGA 部分。

ZYNQ7020的整體架構(gòu)如下圖所示

510502ca-b2a1-11eb-bf61-12bb97331649.png

Zynq 就是兩大功能塊,PS 部分和 PL 部分, 說白了,就是 ARM 的 SOC 部分,和 FPGA部分。其中,PS 集成了兩個 ARM Cortex-A9 處理器,AMBA互連,內(nèi)部存儲器,外部儲器接口和外設(shè)。這些外設(shè)主要包括 USB 總線接口,以太網(wǎng)接口,SD/SDIO 接口,I2C 總線接口,CAN 總線接口,UART 接口,GPIO 等。

三、PS和PL互聯(lián)技術(shù)

3.1、ZYNQ作為首款將高性能ARM Cortex-A9系列處理器與高性能FPGA在單芯片內(nèi)緊密結(jié)合的產(chǎn)品,為了實現(xiàn)ARM處理器和FPGA之間的高速通信和數(shù)據(jù)交互

3.2、發(fā)揮 ARM 處理器和 FPGA的性能優(yōu)勢,需要設(shè)計高效的片內(nèi)高性能處理器與 FPGA 之間的互聯(lián)通路。本節(jié),我們就將主要介紹 PS 和 PL 的連接,讓用戶了解 PS 和 PL 之間連接的技術(shù)。

3.3、在具體設(shè)計中我們往往不需要在連接這個地方做太多工作,我們加入 IP 核以后,系統(tǒng)會自動使用 AXI 接口將我們的 IP 核與處理器連接起來,我們只需要再做一點補(bǔ)充就可以了。

AXI 全稱 Advanced eXtensible Interface,是 Xilinx 從 6 系列的 FPGA 開始引入的一個接口協(xié)議,主要描述了主設(shè)備和從設(shè)備之間的數(shù)據(jù)傳輸方式。在 ZYNQ 中繼續(xù)使用,版本是 AXI4,所以我們經(jīng)常會看到 AXI4.0,ZYNQ 內(nèi)部設(shè)備都有 AXI 接口。

3.4、其實 AXI 就是 ARM 公司提出的AMBA(Advanced Microcontroller Bus Architecture)的一個部分,是一種高性能、高帶寬、低延遲的片內(nèi)總線,也用來替代以前的 AHB 和 APB 總線。

AXI 協(xié)議主要描述了主設(shè)備和從設(shè)備之間的數(shù)據(jù)傳輸方式,主設(shè)備和從設(shè)備之間通過握手信號建立連接。當(dāng)從設(shè)備準(zhǔn)備好接收數(shù)據(jù)時,會發(fā)出 READY 信號。當(dāng)主設(shè)備的數(shù)據(jù)準(zhǔn)備好時,會發(fā)出和維持 VALID 信號,表示數(shù)據(jù)有效。數(shù)據(jù)只有在 VALID 和 READY 信號都有效的時候才開始傳輸。當(dāng)這兩個信號持續(xù)保持有效,主設(shè)備會繼續(xù)傳輸下一個數(shù)據(jù)。

3.5、主設(shè)備可以撤銷VALID 信號,或者從設(shè)備撤銷 READY 信號終止傳輸。AXI 的協(xié)議如圖,T2 時,從設(shè)備的 READY信號有效,T3 時主設(shè)備的 VILID 信號有效,數(shù)據(jù)傳輸開始。

信號有效,T3 時主設(shè)備的 VILID 信號有效,數(shù)據(jù)傳輸開始。

52cd4324-b2a1-11eb-bf61-12bb97331649.png

53162b7a-b2a1-11eb-bf61-12bb97331649.png

四、ZYNQ 芯片內(nèi)部用硬件實現(xiàn)了 AXI 總線協(xié)議,包括 9 個物理接口,分別為 AXI-GP0~AXIGP3,AXI-HP0~AXI-HP3,AXI-ACP 接口。

1、AXI_ACP 接口,是 ARM 多核架構(gòu)下定義的一種接口,中文翻譯為加速器一致性端口,用來管理 DMA 之類的不帶緩存的 AXI 外設(shè),PS 端是 Slave 接口。2、AXI_HP 接口,是高性能/帶寬的 AXI3.0 標(biāo)準(zhǔn)的接口,總共有四個,PL 模塊作為主設(shè)備連接。主要用于 PL 訪問 PS 上的存儲器(DDR 和 On-Chip RAM)3、AXI_GP接口,是通用的AXI接口,總共有四個,包括兩個32位主設(shè)備接口和兩個32位從設(shè)備接口

533eb48c-b2a1-11eb-bf61-12bb97331649.png

可以看到,ARM只有兩個 AXI-GP 是 Master Port,即主機(jī)接口,其余 7 個口都是 Slave Port(從機(jī)接口)。主機(jī)接口具有發(fā)起讀寫的權(quán)限,ARM 可以利用兩個 AXI-GP 主機(jī)接口主動訪問 PL 邏輯,其實就是把 PL 映射到某個地址,讀寫 PL 寄存器如同在讀寫自己的存儲器。其余從機(jī)接口就屬于被動接口,接受來自 PL 的讀寫,逆來順受。

4.1、這 9 個 AXI 接口性能也是不同的。GP 接口是 32 位的低性能接口,理論帶寬600MB/s,而 HP 和 ACP 接口為 64 位高性能接口,理論帶寬 1200MB/s。

4.2、有人會問,為什么高性能接口不做成主機(jī)接口呢?這樣可以由 ARM 發(fā)起高速數(shù)據(jù)傳輸。答案是高性能接口根本不需要 ARM CPU 來負(fù)責(zé)數(shù)據(jù)搬移,真正的搬運工是位于 PL 中的 DMA 控制器。

4.3、位于 PS 端的 ARM 直接有硬件支持 AXI 接口,而 PL 則需要使用邏輯實現(xiàn)相應(yīng)的 AXI 協(xié)議。Xilinx 在 Vivado 開發(fā)環(huán)境里提供現(xiàn)成 IP 如 AXI-DMA,AXI-GPIO,AXI-Dataover, AXI-Stream 都實現(xiàn)了相應(yīng)的接口,使用時直接從 Vivado 的 IP 列表中添加即可實現(xiàn)相應(yīng)的功能。下圖為 Vivado 下的各種 DMA IP:

53a33ad8-b2a1-11eb-bf61-12bb97331649.png

下面為幾個常用的 AXI 接口 IP 的功能介紹:

AXI-DMA:實現(xiàn)從 PS 內(nèi)存到 PL 高速傳輸高速通道 AXI-HP<---->AXI-Stream 的轉(zhuǎn)換AXI-FIFO-MM2S:實現(xiàn)從 PS 內(nèi)存到 PL 通用傳輸通道 AXI-GP<----->AXI-Stream 的轉(zhuǎn)換AXI-Datamover:實現(xiàn)從 PS 內(nèi)存到 PL 高速傳輸高速通道 AXI-HP<---->AXI-Stream 的轉(zhuǎn)換,只不過這次是完全由 PL 控制的,PS 是完全被動的。AXI-VDMA:實現(xiàn)從 PS 內(nèi)存到 PL 高速傳輸高速通道 AXI-HP<---->AXI-Stream 的轉(zhuǎn)換,只不過是專門針對視頻、圖像等二維數(shù)據(jù)的。AXI-CDMA:這個是由 PL 完成的將數(shù)據(jù)從內(nèi)存的一個位置搬移到另一個位置,無需 CPU 來插手。

4.4、AXI協(xié)議嚴(yán)格的講是一個點對點的主從接口協(xié)議,當(dāng)多個外設(shè)需要互相交互數(shù)據(jù)時,我們需要加入一個AXI Interconnect模塊,也就是AXI互聯(lián)矩陣,

4.5、作用是提供將一個或多個 AXI 主設(shè)備連接到一個或多個 AXI 從設(shè)備的一種交換機(jī)制(有點類似于交換機(jī)里面的交換矩陣)。

4.6、這個 AXI Interconnect IP 核最多可以支持 16 個主設(shè)備、 16 個從設(shè)備,如果需要更多的接口,可以多加入幾個 IP 核。

AXI Interconnect 基本連接模式有以下幾種:? N-to-1 Interconnect? to-N Interconnect? N-to-M Interconnect (Crossbar Mode)? N-to-M Interconnect (Shared Access Mode)

53d20552-b2a1-11eb-bf61-12bb97331649.png

54107490-b2a1-11eb-bf61-12bb97331649.png

5430a652-b2a1-11eb-bf61-12bb97331649.png

五、內(nèi)部鏈接

ZYNQ 內(nèi)部的 AXI 接口設(shè)備就是通過互聯(lián)矩陣的的方式互聯(lián)起來的,既保證了傳輸數(shù)據(jù)的高效性,又保證了連接的靈活性。

Xilinx 在 Vivado 里我們提供了實現(xiàn)這種互聯(lián)矩陣的 IP 核axi_interconnect,我們只要調(diào)用就可以。

545d2808-b2a1-11eb-bf61-12bb97331649.png

六、引腳分配

ZYNQ7020是400腳封裝,從官網(wǎng)的文檔,可以看出ZYNQ7020的引腳分配

PS端的引腳包括BANK500、BANK501、BANK502、

PL端引腳包括 BANK13(部分包含)BANK35、BANK34

5485f904-b2a1-11eb-bf61-12bb97331649.png

下面這張圖,更加形象

5547e55a-b2a1-11eb-bf61-12bb97331649.png

七、上面的部分,并沒有把引腳講的很清楚,這里看官方手冊,有如下描述

意思是,PS端的引腳數(shù)量是固定的,并且不能分配給PL端使用,最多有54個引腳可以連接到PS端,

他們可以軟件編程連接ps的內(nèi)部外設(shè)或者靜態(tài)內(nèi)存控制器

八、MIO概述

MIO的功能是將從PS外設(shè)和靜態(tài)內(nèi)存接口的訪問,復(fù)用到配置寄存器中定義的PS引腳。在PS端最多有54針被用以IOP(I/O Peripheral )和靜態(tài)內(nèi)存接口下表4顯示了可以映射不同外設(shè)引腳的位置。圖2顯示了MIO模塊的框圖。如果超過了54個引腳個數(shù)的其它I/O功能是設(shè)計必須的,那他可以通過PL端,路由到與這些功能相關(guān)聯(lián)的I/O引腳這個特性被稱為可擴(kuò)展多路復(fù)用I/O (EMIO)。

562db4b8-b2a1-11eb-bf61-12bb97331649.png

5676e278-b2a1-11eb-bf61-12bb97331649.png

九、MIO、EMIO和AXI_GPIO的關(guān)系

ZYNQ7000中與PS相連的引腳包含MIO、EMIO和AXI_GPIO三種類型。

1、MIO直接掛在PS上,而EMIO與PL相連,PS通過PL調(diào)用EMIO。MIO共有54bit,EMIO共有64bit。

MIO管腳是固定的,而EMIO需要通過管腳約束文件進(jìn)行分配。MIO、EMIO管腳號均通過實際原理圖查找。

56b74a70-b2a1-11eb-bf61-12bb97331649.png

2、AXI_GPIO是通過AXI總線掛在PS上的GPIO,一般通過調(diào)用IP核實現(xiàn),如PS通過AXI_Uartlite調(diào)用PL端資源。

而EMIO在Block Design文件上表現(xiàn)為PS上的一個引出接口。

十、PS-PL MIO-EMIO信號和接口

由于MIO引腳的數(shù)量有限,MIO是I/O外圍連接的基礎(chǔ)??梢攒浖幊蘄O信號路由到MIO引腳。也可以通過EMIO接口將I/O外圍信號路由到PL端,

這非常有用,用來PS獲得更多的設(shè)備引腳(PL端引腳),或者允許一個PS端外設(shè)的一個引腳路由到PL的內(nèi)部IP邏輯端口,如圖2

56da45b6-b2a1-11eb-bf61-12bb97331649.png

十一、啟動流程

57162b80-b2a1-11eb-bf61-12bb97331649.png

12.1、啟動模式

Boot 模式3種啟動模式可以使用:? PS Master Non-secure Boot? PS Master Secure Boot? JTAG/PJTAG Boot

12.2、啟動階段

Zynq-7000 AP SoC 支持安全和非安全啟動處理,啟動分3個階段 ? Stage-0 Boot (BootROM) ? First Stage Bootloader ? Second Stage Bootloader (Optional)

12.3、階段0:Stage-0 Boot (BootROM)

575e6e36-b2a1-11eb-bf61-12bb97331649.png

12.4、階段1:FSBL(First Stage Bootloader )

FSBL(第一階段引導(dǎo)加載程序)在BootROM之后啟動,這個BootROM將FSBL加載到OCM(On-Chip Memory ),

FSBL負(fù)責(zé)下面的幾項工作

1、初始化PS端的配置數(shù)據(jù)(使用xilinx硬件配置工具提供的)2、用bitstream文件燒寫PL端3、加載第二階段BootLoader或者邏輯代碼到DDR內(nèi)存4、卻換到第二階段BootLoader或者邏輯代碼運行

FSBL流程圖

57845bc8-b2a1-11eb-bf61-12bb97331649.png

下圖是一個簡單的FSBL流程圖:

57a3f47e-b2a1-11eb-bf61-12bb97331649.png

12.5、第二階段啟動流程:Second Stage Bootloader

第二階段引導(dǎo)加載程序是可選的,并由用戶設(shè)計。

Zynq-7000 AP SoC BootROM加載程序需要引導(dǎo)映像頭,它加載單個分區(qū),通常是FSBL。引導(dǎo)映像的其余部分由FSBL加載和處理。

xilinx提供了一個名為Bootgen的實用程序(用來創(chuàng)建一個適合ROM或Fash的引導(dǎo)映像)。它通過構(gòu)建所需的引導(dǎo)頭、

附加描述以下分區(qū)的表并將輸入數(shù)據(jù)文件(ELF文件、FPGA bit流和其他二進(jìn)制文件)處理到分區(qū)來創(chuàng)建映像。

12.6、Boot Image 格式

Boot鏡像格式包含下面幾個方面 ? BootROM header ? FSBL image ? One or more partition images ? Unused space, if available

57c45426-b2a1-11eb-bf61-12bb97331649.png

12.7、下圖顯示了Zynq-7000 AP SoC Linux引導(dǎo)映像分區(qū)的示例。

57e90636-b2a1-11eb-bf61-12bb97331649.png

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600454
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9006

    瀏覽量

    366020
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4065

    瀏覽量

    217547
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    514

    瀏覽量

    44037

原文標(biāo)題:學(xué)員筆記精選 | ZYNQ7000系列 PS、PL、AXI 、啟動流程基本概念篇

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    zynq7000 BSP無法在u-boot加載運行怎么解決?

    1、硬件配置zynq7000 zedboard 2、下載git,回退到支持zynq7000 的bsp包 3、采用xilinx sdk工具可以運行thread-zynq7000.elf 4、采用u-boot tftp下載到板子th
    發(fā)表于 09-27 09:26

    正點原子ZYNQ7015開發(fā)板!ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2,性能強(qiáng)悍,資料豐富!

    ! 正點原子Z15 ZYNQ開發(fā)板,搭載Xilinx Zynq7000系列芯片,核心板主控芯片的型號是XC7Z015CLG485-2。開發(fā)板由核心板+底板組成,外設(shè)資源豐富,板載1路PS
    發(fā)表于 09-14 10:12

    zynq7000 BSP無法在u-boot加載運行,為什么?

    1、硬件配置zynq7000 zedboard 2、下載git,回退到支持zynq7000 的bsp包 3、采用xilinx sdk工具可以運行thread-zynq7000.elf 4、采用u-boot tftp下載到板子th
    發(fā)表于 09-13 07:06

    [XILINX] 正點原子ZYNQ7035/7045/7100開發(fā)板發(fā)布、ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2!

    正點原子FPGA新品ZYNQ7035/7045/7100開發(fā)板,ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2! 正點原子Z100
    發(fā)表于 09-02 17:18

    有關(guān)PL端利用AXI總線控制PS端DDR進(jìn)行讀寫(從機(jī)wready信號一直不拉高)

    5.31我在做PL控制PS DDR時遇到個問題,就是從機(jī)(DDR)的wready信號就不會拉高,只有你發(fā)出wvalid信號時才會拉高,(這是通過跑通例程抓取信號看見的)。然而awready信號是會
    發(fā)表于 05-31 12:04

    簡談Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn)

    方法不同的是,ZYNQ 7000 SoC總是最先啟動PS內(nèi)的處理器,這樣允許PS上運行的基于軟件程序用于
    發(fā)表于 05-08 16:23

    Xilinx ZYNQ 動手實操演練

    。 實操演示 下面做一個從uart打印hello world的實驗,只用PS,不用PL部分,程序從SD卡啟動,跑在PS的內(nèi)部RAM。 zyn
    發(fā)表于 05-03 19:28

    Zynq-7000為何不是FPGA?

    Zynq-7000可擴(kuò)展處理平臺是采用賽靈思新一代FPGA(Artix-7與Kintex-7FPGA)所采用的同一28nm可編程技術(shù)的最新產(chǎn)品系列。
    發(fā)表于 04-26 11:30 ?933次閱讀
    <b class='flag-5'>Zynq-7000</b>為何不是FPGA?

    簡談Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn)

    PLPS中,這樣就可實現(xiàn)獨一無二和差異化的系統(tǒng)功能。與傳統(tǒng)的FPGA方法不同的是,ZYNQ 7000 SoC總是最先啟動
    發(fā)表于 04-10 16:00

    FPGA的PL端固化流程

    電子發(fā)燒友網(wǎng)站提供《FPGA的PL端固化流程.pdf》資料免費下載
    發(fā)表于 03-07 14:48 ?8次下載

    請問FX3的UART口和Xilinx ZYNQ7000PS端的UART進(jìn)行硬件連接需要TTL電平轉(zhuǎn)換嗎?

    想讓FX3的UART口和Xilinx ZYNQ7000PS(Processor system)端的內(nèi)置UART相互通信,兩個芯片使用的是同一個電源(同在一塊板子上或分別在兩塊相互連接的板子上),請教一下它們之間的硬件連接需要TTL電平轉(zhuǎn)換(使用2塊MAX3232ESE芯
    發(fā)表于 02-28 08:32

    使用 PCIE 更新 AMD ZYNQ? 的 QSPI Flash 參考設(shè)計

    簡介 AMD ZYNQ? 7000 的 S_AXI 端口提供了外設(shè)訪問 PS 內(nèi)部外設(shè)控制器的接口,這其中包括 4 個 S_AXI_HP 端
    發(fā)表于 11-30 18:49

    使用PCIE更新AMD ZYNQ的QSPI Flash參考設(shè)計

    AMD ZYNQ 7000 的 S_AXI 端口提供了外設(shè)訪問 PS 內(nèi)部外設(shè)控制器的接口,這其中包括 4 個 S_AXI_HP 端口以及兩
    的頭像 發(fā)表于 11-17 10:02 ?1094次閱讀
    使用PCIE更新AMD <b class='flag-5'>ZYNQ</b>的QSPI Flash參考設(shè)計

    基于zynq7020器件來搭建Linux系統(tǒng)

    Zynq器件將arm和FPGA結(jié)合,利用了兩者各自的優(yōu)勢,arm可以實現(xiàn)靈活的控制,而FPGA部分可以實現(xiàn)算法加速,這大大擴(kuò)展了zynq的應(yīng)用。比如深度學(xué)習(xí)加速,圖像處理等等。PL側(cè)表示FPGA的邏輯部分,
    發(fā)表于 11-09 11:28 ?2324次閱讀
    基于<b class='flag-5'>zynq</b>7020器件來搭建Linux系統(tǒng)

    ZYNQ的ARM和FPGA數(shù)據(jù)交互——AXI交互最重要的細(xì)節(jié)

    。 ③EMIO :由于MIO管腳有限,PS端可以通過EMIO訪問PL端引腳。 ④GP :通用AXI接口,用來實現(xiàn)一般主從互聯(lián)、數(shù)據(jù)交互,不用于高性能。 ⑤HP :是高性能/帶寬的標(biāo)準(zhǔn)接口,主要用于
    發(fā)表于 11-03 10:51