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

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

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

典型的ZYNQ開發(fā)流程

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2022-02-08 14:39 ? 次閱讀

作者: ALINX

簡介

Zynq UltraScale+ MPSoC系列是Xilinx第二代Zynq平臺。其亮點在于FPGA里包含了完整的ARM處理子系統(tǒng)(PS),包含了四核Cortex-A53處理器或雙核Cortex-A53加雙核Cortex-R5處理器,整個處理器的搭建都以處理器為中心,而且處理器子系統(tǒng)中集成了內(nèi)存控制器和大量的外設(shè),使處理器核在Zynq中完全獨立于可編程邏輯單元,也就是說如果暫時沒有用到可編程邏輯單元部分(PL), ARM處理器的子系統(tǒng)也可以獨立工作,這與以前的FPGA有本質(zhì)區(qū)別,其是以處理器為中心的。

Zynq就是兩大功能塊,PS 部分和 PL部分,說白了,就是ARM的SOC部分,和FPGA部分。其中,PS集成了APU ARM Cortex?-A53處理器,RPU Cortex-R5處理器,AMBA?互連,內(nèi)部存儲器(OCM),外部存儲器接口DDR Controller)和外設(shè)(IOU)。這些外設(shè)(IOU)主要包括USB總線接口,以太網(wǎng)接口,SD/eMMC接口,I2C總線接口,CAN總線接口,UART接口,GPIO等。高速接口如PCIe,SATA,Display Port。

o4YBAGAJ3Q2Ab-R7AACOc4xP6jE626.jpg

ZYNQ MPSoC芯片的總體框圖

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

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

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

ZYNQ作為將高性能ARM Cortex-A53系列處理器與高性能FPGA在單芯片內(nèi)緊密結(jié)合的產(chǎn)品,為了實現(xiàn)ARM處理器和FPGA之間的高速通信和數(shù)據(jù)交互,發(fā)揮ARM處理器和FPGA的性能優(yōu)勢,需要設(shè)計高效的片內(nèi)高性能處理器與FPGA之間的互聯(lián)通路。因此,如何設(shè)計高效的PL和PS數(shù)據(jù)交互通路是ZYNQ芯片設(shè)計的重中之重,也是產(chǎn)品設(shè)計的成敗關(guān)鍵之一。本節(jié),我們就將主要介紹PS和PL的連接,讓用戶了解PS和PL之間連接的技術(shù)。

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

AXI全稱Advanced eXtensible Interface,是Xilinx從6系列的FPGA開始引入的一個接口協(xié)議,主要描述了主設(shè)備和從設(shè)備之間的數(shù)據(jù)傳輸方式。在ZYNQ中繼續(xù)使用,版本是AXI4,所以我們經(jīng)常會看到AXI4.0,ZYNQ內(nèi)部設(shè)備都有AXI接口。其實AXI就是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)的一個部分,是一種高性能、高帶寬、低延遲的片內(nèi)總線,也用來替代以前的AHB和APB總線。第一個版本的AXI(AXI3)包含在2003年發(fā)布的AMBA3.0中,AXI的第二個版本AXI(AXI4)包含在2010年發(fā)布的AMBA 4.0之中。

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

pIYBAGAJ3VOAfLw8AABxA8i_fes253.png

AXI握手時序圖

在ZYNQ中,支持AXI-Lite,AXI4和AXI-Stream三種總線,通過表5-1,我們可以看到這三種AXI接口的特性。

pIYBAGAJ3ZGAUXNtAAAkmD5W-2U739.png

AXI4-Lite:

具有輕量級,結(jié)構(gòu)簡單的特點,適合小批量數(shù)據(jù)、簡單控制場合。不支持批量傳輸,讀寫時一次只能讀寫一個字(32bit)。主要用于訪問一些低速外設(shè)和外設(shè)的控制。

AXI4:

接口和AXI-Lite差不多,只是增加了一項功能就是批量傳輸,可以連續(xù)對一片地址進行一次性讀寫。也就是說具有數(shù)據(jù)讀寫的burst功能。

上面兩種均采用內(nèi)存映射控制方式,即ARM將用戶自定義IP編入某一地址進行訪問,讀寫時就像在讀寫自己的片內(nèi)RAM,編程也很方便,開發(fā)難度較低。代價就是資源占用過多,需要額外的讀地址線、寫地址線、讀數(shù)據(jù)線、寫數(shù)據(jù)線、寫應(yīng)答線這些信號線。

AXI4-Stream:

這是一種連續(xù)流接口,不需要地址線(很像FIFO,一直讀或一直寫就行)。對于這類IP,ARM不能通過上面的內(nèi)存映射方式控制(FIFO根本沒有地址的概念),必須有一個轉(zhuǎn)換裝置,例如AXI-DMA模塊來實現(xiàn)內(nèi)存映射到流式接口的轉(zhuǎn)換。AXI-Stream適用的場合有很多:視頻流處理;通信協(xié)議轉(zhuǎn)換;數(shù)字信號處理;無線通信等。其本質(zhì)都是針對數(shù)值流構(gòu)建的數(shù)據(jù)通路,從信源(例如ARM內(nèi)存、DMA、無線接收前端等)到信宿(例如HDMI顯示器、高速AD音頻輸出,等)構(gòu)建起連續(xù)的數(shù)據(jù)流。這種接口適合做實時信號處理。

AXI4和AXI4-Lite接口包含5個不同的通道:

Read Address Channel

Write Address Channel

Read Data Channel

Write Data Channel

Write Response Channel

其中每個通道都是一個獨立的AXI握手協(xié)議。下面兩個圖分別顯示了讀和寫的模型:

o4YBAGAJ3c6ACTW5AAA5jzHi-kA636.png

AXI讀數(shù)據(jù)通道

pIYBAGAJ3g2AMX24AABDSDj3Rco583.png

AXI寫數(shù)據(jù)通道

在ZYNQ芯片內(nèi)部用硬件實現(xiàn)了AXI總線協(xié)議,包括12個物理接口,分別為S_AXI_HP{0:3}_FPD,S_AXI_LPD,S_AXI_ACE_FPD,S_AXI_ACP_FPD,S_AXI_HPC{0,1}_FPD,M_AXI_HPM{0,1}_FPD,M_AXI_HPM0_LPD接口。

S_AXI_HP{0:3}_FPD接口,是高性能/帶寬的AXI4標準的接口,總共有四個,PL模塊作為主設(shè)備連接。主要用于PL訪問PS上的存儲器(DDR和FPD Main Switch)

S_AXI_LPD接口,高性能端口,連接PL到LPD。低延遲訪問OCM和TCM,訪問PS端DDR。

S_AXI_HPC{0,1}_FPD接口,連接PL到FPD,可連接到CCI,訪問L1和L2 Cache,由于通過CCI,訪問DDR控制器會有較大延遲。

M_AXI_HPM{0,1}_FPD接口,高性能總線,PS為master,連接FPD到PL,可用于CPU, DMA, PCIe等從PS推送大量數(shù)據(jù)到PL。

M_AXI_HPM0_LPD接口,低延遲接口總線,PS為master,連接LPD到PL,可直接訪問PL端的BRAM,DDR等,也經(jīng)常用于配置PL端的寄存器。

pIYBAGAJ3kuANW5oAACRJS46OPc878.jpg

只有M_AXI_HPM{0,1}_FPD和M_AXI_HPM0_LPD是Master Port,即主機接口,其余都是Slave Port(從機接口)。主機接口具有發(fā)起讀寫的權(quán)限,ARM可以利用兩個主機接口主動訪問PL邏輯,其實就是把PL映射到某個地址,讀寫PL寄存器如同在讀寫自己的存儲器。其余從機接口就屬于被動接口,接受來自PL的讀寫,逆來順受。在PS與PL互聯(lián)應(yīng)用,用的最多的接口為S_AXI_HP{0:3}_FPD、M_AXI_HPM{0,1}_FPD和M_AXI_HPM0_LPD。

位于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:

o4YBAGAJ3oqAUi4iAABtU29kgzc720.png

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

AXI-DMA:實現(xiàn)從PS內(nèi)存到PL高速傳輸高速通道AXI-HPAXI-Stream的轉(zhuǎn)換

AXI-FIFO-MM2S:實現(xiàn)從PS內(nèi)存到PL通用傳輸通道AXI-HPMAXI-Stream的轉(zhuǎn)換

AXI-Datamover:實現(xiàn)從PS內(nèi)存到PL高速傳輸高速通道AXI-HPAXI-Stream的轉(zhuǎn)換,只不過這次是完全由PL控制的,PS是完全被動的。

AXI-VDMA:實現(xiàn)從PS內(nèi)存到PL高速傳輸高速通道AXI-HPAXI-Stream的轉(zhuǎn)換,只不過是專門針對視頻、圖像等二維數(shù)據(jù)的。

AXI-CDMA:這個是由PL完成的將數(shù)據(jù)從內(nèi)存的一個位置搬移到另一個位置,無需CPU來插手。

關(guān)于如何使用這些IP,我們會在后面的章節(jié)中舉例講到。有時,用戶需要開發(fā)自己定義的IP同PS進行通信,這時可以利用向?qū)蓪?yīng)的IP。用戶自定義IP核可以擁有AXI4-Lite,AXI4,AXI-Stream,PLB和FSL這些接口。后兩種由于ARM這一端不支持,所以不用。

有了上面的這些官方IP和向?qū)傻淖远xIP,用戶其實不需要對AXI時序了解太多(除非確實遇到問題),因為Xilinx已經(jīng)將和AXI時序有關(guān)的細節(jié)都封裝起來,用戶只需要關(guān)注自己的邏輯實現(xiàn)即可。

AXI協(xié)議嚴格的講是一個點對點的主從接口協(xié)議,當多個外設(shè)需要互相交互數(shù)據(jù)時,我們需要加入一個AXI Interconnect模塊,也就是AXI互聯(lián)矩陣,作用是提供將一個或多個AXI主設(shè)備連接到一個或多個AXI從設(shè)備的一種交換機制(有點類似于交換機里面的交換矩陣)。

這個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)

o4YBAGAJ3uCAev3OAAAl0MCd7wE421.png

多對一的情況

o4YBAGAJ3x6ALs_iAAApt26G64g423.png

一對多的情況

o4YBAGAJ31yAIvtkAAB783wVJLk690.png

多對多讀寫地址通道

o4YBAGAJ36mAZa1HAACG8dTzk5o328.png

多對多讀寫數(shù)據(jù)通道

ZYNQ內(nèi)部的AXI接口設(shè)備就是通過互聯(lián)矩陣的的方式互聯(lián)起來的,既保證了傳輸數(shù)據(jù)的高效性,又保證了連接的靈活性。Xilinx在Vivado里我們提供了實現(xiàn)這種互聯(lián)矩陣的IP核axi_interconnect,我們只要調(diào)用就可以。

o4YBAGAJ3_6ATZNbAABUAhBXoQs960.png

AXI Interconnect IP

1.2 ZYNQ芯片開發(fā)流程的簡介

由于ZYNQ將CPU與FPGA集成在了一起,開發(fā)人員既需要設(shè)計ARM的操作系統(tǒng)應(yīng)用程序和設(shè)備的驅(qū)動程序,又需要設(shè)計FPGA部分的硬件邏輯設(shè)計。開發(fā)中既要了解Linux操作系統(tǒng),系統(tǒng)的構(gòu)架,也需要搭建一個FPGA和ARM系統(tǒng)之間的硬件設(shè)計平臺。所以ZYNQ的開發(fā)是需要軟件人員和硬件硬件人員協(xié)同設(shè)計并開發(fā)的。這既是ZYNQ開發(fā)中所謂的“軟硬件協(xié)同設(shè)計”。

ZYNQ系統(tǒng)的硬件系統(tǒng)和軟件系統(tǒng)的設(shè)計和開發(fā)需要用到開發(fā)環(huán)境和調(diào)試工具:Xilinx Vivado。

Vivado設(shè)計套件實現(xiàn)FPGA部分的設(shè)計和開發(fā),管腳和時序的約束,編譯和仿真,實現(xiàn)RTL到比特流的設(shè)計流程。Vivado并不是ISE設(shè)計套件的簡單升級,而是一個全新的設(shè)計套件。它替代了ISE設(shè)計套件的所有重要工具,比如Project Navigator、Xilinx Synthesis Technology、Implementation、CORE Generator、Constraint、Simulator、Chipscope Analyzer、FPGA Editor等設(shè)計工具。

Xilinx SDK(Software Development Kit), SDK是Xilinx軟件開發(fā)套件(SDK),在Vivado硬件系統(tǒng)的基礎(chǔ)上,系統(tǒng)會自動配置一些重要參數(shù),其中包括工具和庫路徑、編譯器選項、JTAG和閃存設(shè)置,調(diào)試器連接已經(jīng)裸機板支持包(BSP)。SDK也為所有支持的Xilinx IP硬核提供了驅(qū)動程序。SDK支持IP硬核(FPGA上)和處理器軟件協(xié)同調(diào)試,我們可以使用高級C或C++語言來開發(fā)和調(diào)試ARM和FPGA系統(tǒng),測試硬件系統(tǒng)是否工作正常。SDK軟件也是Vivado軟件自帶的,無需單獨安裝。

ZYNQ的開發(fā)也是先硬件后軟件的方法。具體流程如下:

1) 在Vivado上新建工程,增加一個嵌入式的源文件。

2) 在Vivado里添加和配置PS和PL部分基本的外設(shè),或需要添加自定義的外設(shè)。

3) 在Vivado里生成頂層HDL文件,并添加約束文件。再編譯生成比特流文件(*.bit)。

4) 導(dǎo)出硬件信息到SDK軟件開發(fā)環(huán)境,在SDK環(huán)境里可以編寫一些調(diào)試軟件驗證硬件和軟件,結(jié)合比特流文件單獨調(diào)試ZYNQ系統(tǒng)。

5) 在SDK里生成FSBL文件。

6) 在VMware虛擬機里生成u-boot.elf、 bootloader 鏡像。

7) 在SDK里通過FSBL文件, 比特流文件system.bit和u-boot.elf文件生成一個BOOT.bin文件。

8) 在VMware里生成Ubuntu的內(nèi)核鏡像文件Zimage和Ubuntu的根文件系統(tǒng)。另外還需要要對FPGA自定義的IP編寫驅(qū)動。

9) 把BOOT、內(nèi)核、設(shè)備樹、根文件系統(tǒng)文件放入到SD卡中,啟動開發(fā)板電源,Linux操作系統(tǒng)會從SD卡里啟動。

以上是典型的ZYNQ開發(fā)流程,但是ZYNQ也可以單獨做為ARM來使用,這樣就不需要關(guān)系PL端資源,和傳統(tǒng)的ARM開發(fā)沒有太大區(qū)別。ZYNQ也可以只使用PL部分,但是PL的配置還是要PS來完成的,就是無法通過傳統(tǒng)的固化Flash方式把只要PL的固件固化起來。

審核編輯:何安

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

    關(guān)注

    9

    文章

    607

    瀏覽量

    47101
收藏 人收藏

    評論

    相關(guān)推薦

    ZYNQ核心板學習筆記

    此款開發(fā)板使用的是 Xilinx 公司的 Zynq7000 系列的芯片,型號為 XC7Z020-2CLG484I,484 個引腳的 FBGA 封裝。
    的頭像 發(fā)表于 10-24 18:08 ?315次閱讀
    <b class='flag-5'>ZYNQ</b>核心板學習筆記

    一篇講透:模組典型上網(wǎng)業(yè)務(wù)的AT上網(wǎng)流程

    ? 今天我們學習合宙模組典型上網(wǎng)業(yè)務(wù)的AT上網(wǎng)流程。 文末閱讀原文,下載最新教程/固件。 一、簡介 本文介紹了合宙4G模組的常用的AT指令和服務(wù)器交互的流程。 進一步詳細的流程,參見各
    的頭像 發(fā)表于 10-24 07:14 ?193次閱讀
    一篇講透:模組<b class='flag-5'>典型</b>上網(wǎng)業(yè)務(wù)的AT上網(wǎng)<b class='flag-5'>流程</b>

    電機控制方案開發(fā)流程

    電機控制應(yīng)用廣泛,電機控制軟件方案核心是MCU,功率器件、驅(qū)動器件;本文介紹電機控制方案開發(fā)流程與需要解決的問題。
    的頭像 發(fā)表于 10-12 16:36 ?593次閱讀
    電機控制方案<b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>

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

    本帖最后由 jf_85110202 于 2024-9-14 10:33 編輯 正點原子ZYNQ7015開發(fā)板!ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2,性能強悍,資料豐富
    發(fā)表于 09-14 10:12

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

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

    迪文串口屏ModBus開發(fā)流程

    這里接前一章節(jié),繼續(xù)迪文屏的開發(fā),前章主要講解基礎(chǔ)開發(fā)流程,此章節(jié)開始講解迪文ModBus協(xié)議棧的使用方法。前文指路:《迪文串口屏基礎(chǔ)GUI開發(fā)流程
    的頭像 發(fā)表于 07-19 08:21 ?408次閱讀
    迪文串口屏ModBus<b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>

    鴻蒙OS開發(fā)典型頁面場景【一次開發(fā),多端部署】實戰(zhàn)(設(shè)置典型頁面)

    本示例展示了設(shè)置應(yīng)用的典型頁面,其在小窗口和大窗口有不同的顯示效果,體現(xiàn)一次開發(fā)、多端部署的能力。
    的頭像 發(fā)表于 05-27 09:36 ?1064次閱讀
    鴻蒙OS<b class='flag-5'>開發(fā)</b>:<b class='flag-5'>典型</b>頁面場景【一次<b class='flag-5'>開發(fā)</b>,多端部署】實戰(zhàn)(設(shè)置<b class='flag-5'>典型</b>頁面)

    Xilinx ZYNQ 動手實操演練

    powerpc練手和教學,從頭搭一個Snoop協(xié)議在裸的雙PowerPC中,倒也不錯。 開發(fā)環(huán)境 Zynq開發(fā)環(huán)境,可以在ISE或者Vivado,不過ISE在14.7之后就停止了更新,建議安裝
    發(fā)表于 05-03 19:28

    dSPACE開發(fā)流程

    電子發(fā)燒友網(wǎng)站提供《dSPACE開發(fā)流程.pdf》資料免費下載
    發(fā)表于 02-29 09:08 ?0次下載

    芯科科技發(fā)布新版藍牙開發(fā)流程

    查看Silicon Labs(亦稱“芯科科技”)近日發(fā)布新版的藍牙開發(fā)流程(Bluetooth Developer Journey),了解更多關(guān)于低功耗藍牙、藍牙Mesh、藍牙定位服務(wù),以及電子貨架標簽(ESL)等設(shè)計方法,我們將概述相關(guān)應(yīng)用
    的頭像 發(fā)表于 01-25 10:09 ?695次閱讀
    芯科科技發(fā)布新版藍牙<b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>

    智能網(wǎng)聯(lián)汽車隱私開發(fā)方法與流程探究

    本報告針對智能網(wǎng)聯(lián)汽車用戶的隱私泄露的問題,對智能網(wǎng)聯(lián)汽車隱私開發(fā)方法與流程進行分析。
    的頭像 發(fā)表于 12-16 11:31 ?899次閱讀
    智能網(wǎng)聯(lián)汽車隱私<b class='flag-5'>開發(fā)</b>方法與<b class='flag-5'>流程</b>探究

    多語言開發(fā)流程詳解

    現(xiàn)在不少應(yīng)用都是要求有多語言切換的, 使用QT開發(fā)上位機也同樣需要做多語言功能, 不過QT是自帶了多語言翻譯功能, 可以很方便的借助原生工具進行, 下面就簡單來看看多語言開發(fā)流程!
    的頭像 發(fā)表于 11-30 09:08 ?1012次閱讀

    嵌入式軟件的開發(fā)流程

    電子發(fā)燒友網(wǎng)站提供《嵌入式軟件的開發(fā)流程.doc》資料免費下載
    發(fā)表于 11-17 14:39 ?0次下載
    嵌入式軟件的<b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>

    嵌入式軟件開發(fā)流程

    電子發(fā)燒友網(wǎng)站提供《嵌入式軟件開發(fā)流程.ppt》資料免費下載
    發(fā)表于 11-17 14:37 ?3次下載
    嵌入式軟件<b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>

    嵌入式系統(tǒng)的組成及開發(fā)流程

    電子發(fā)燒友網(wǎng)站提供《嵌入式系統(tǒng)的組成及開發(fā)流程.ppt》資料免費下載
    發(fā)表于 11-17 14:35 ?1次下載
    嵌入式系統(tǒng)的組成及<b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>