從ZYNQ芯片架構談談其爲何如此誘人

關注、星標嵌入式客棧,精彩及時送達

[導讀] 基於ZYNQ實現複雜嵌入式系統非常便利,其應用領域也越來越廣泛,本文來從對ZYNQ芯片架構的理解來談談個人體會。

俯瞰zynq


ZYNQ主要由兩大部分組成:

  • 處理系統PS(Processing System):上圖左上部分即是PS部分,包括:

    • 同構雙核ARM Cortex A9的對稱多處理器 (Symmetric  Multi-Processing,SMP)

    • 豐富的外設,2×SPI,2×I2C,2×CAN,2×UART,2×SDIO,2×USB,2×GigE,GPIO

    • 靜態存儲控制器:Quad-SPI,NAND,NOR

    • 動態存儲控制器:DDR3,DDR2,LPDDR2

  • 可編程邏輯PL(Programmable logic):兼容賽靈思7系列FPGA

    • 基於Artix™的芯片:Z-7010以及Z-7020

    • 基於Kintex™的芯片:Z-7030以及Z-7045

ZYNQ處理系統端PS所有的外設都連接在AMBA(Advanced Microcontroller Bus Architecture)總線,而基於FPGA設計的IP則可以通過AXI接口掛載在AMBA總線上,從而實現內部各組件的互聯互通。這裏涉及到兩個概念:

  • AMBA總線,熟悉ARM架構的朋友應該都大致瞭解, AMBA是ARM公司的註冊商標。是一種用於片上系統(SoC)設計中功能塊的連接和管理的開放標準片上互連規範。它促進了具有總線結構及多控制器或組件的多核處理器設計開發。自成立以來,AMBA已廣爲應用,遠遠超出了微控制器設備領域。如今,AMBA已廣泛用於各種ASIC和SoC部件,包括在現代便攜式移動設備中使用的應用處理器。

  • 高級可擴展接口AXI(Advanced eXtensible Interface):是ARM公司AMBA 3.0 和AMBA 4.0規範的一部分,是並行高性能,同步,高頻,多主機,多從機通訊接口,主要設計用於片上通訊。爲啥說AXI是AMBA的一部分,看看下面兩個圖就可以比較清晰的瞭解。

ZYNQ的高度靈活性

靈活的PS端IO複用

  • Multiplexed I/O (MIO):PS端外設IO複用,這是什麼概念呢?前面介紹了ZYNQ主要分PS/PL兩大組成模塊,PS端前面介紹的外設如USB/CAN/GPIO/UART等都必要需要引腳與外界打交道,這裏所謂的複用與常見的單片機、處理器裏引腳複用的概念一樣。但是(這裏劃重點),ZYNQ具有高達54個PS引腳支持MIO,MIO具有非常高的靈活度以達到靈活配置,這給硬件設計、PCB布板帶來了極大的便利!,MIO的配置利用vivado軟件可以實現靈活配置,如下圖所示。

硬件工程師往往發現對一個複雜的系統的佈局佈線,常常會很困難,也常因爲不合理的佈局佈線而陷入EMC深坑。ZYNQ的IO引腳高度靈活性,無疑在電路設計方面提供極大的方便,可實現非常靈活的PCB佈局佈線。從而在EMC性能改善方面帶來了很大便利。

靈活的PS-PL互連接口

  • Extended Multiplexed I/O (EMIO) :擴展MIO,如果想通過PS來訪問PL又不想浪費AXI總線時,就可以通過EMIO接口來訪問PL。54個I/O中,其中一部分只能用於MIO,大部分可以用於MIO或EMIO,少量引腳只能通過EMIO訪問。

如上圖,比如I2C0則可以通過EMIO映射到PL端的引腳輸出,這無疑又增加了更多的靈活性!

  • PS-PL接口HP0-HP3:如上架構圖中AXI high-performance slave ports (HP0-HP3) 實現了PS-PL的接口

    • 可配置的32位或64位數據寬度

    • 只能訪問片上存儲器OCM(On chip memory)和DDR

    • AXI FIFO接口(AFI)利用1KB FIFOs來緩衝大數據傳輸

  • PS-PL接口GP0-GP1:如上架構圖中AXI general-purpose ports

    • 兩個PS主接口連接到PL的兩個從設備

    • 32位數據寬度

  • 一個連接到CPU內存的64位加速器一致端口(ACP)AXI從接口,ACP 是 SCU (一致性控制單元)上的一個 64 位從機接口,實現從 PL 到 PS 的異步 cache 一致性接入點。ACP 是可以被很多 PL 主機所訪問的,用以實現和 APU 處理器相同的方式訪問存儲子系統。這能達到提升整體性能、改善功耗和簡化軟件的效果。ACP 接口的表現和標準的 AXI 從機接口是一樣的,支持大多數標準讀和寫的操作而不需要在 PL 部件中加入額外的一致性操作。

  • DMA, 中斷, 事件信號:

    • 處理器事件總線信號事件信息到CPU

    • PL外設IP中斷到PS通用中斷控制器(GIC)

    • 四個DMA通道RDY/ACK信號

  • 擴展多路複用I/O (EMIO)允許PS外設端口訪問PL邏輯和設備I/O引腳。

  • 時鐘以及復位信號:

    • 四個PS時鐘帶使能控制連接到PL

    • 四個PS復位信號連接到PL

靈活的時鐘系統

  • PS時鐘源:

    • PS端具有4個外部時鐘源引腳

    • PS端具有3個PLL時鐘模塊

    • PS端具有4個時鐘源可輸出到PL

  • PL端具有7個時鐘源

    • PL端時鐘源域相對PS端不同

    • PL端時鐘可靈活來自PL端外部引腳,因爲FPGA的硬可編程性,完全靈活配置

    • 也可使用PS端的4個時鐘源

  • 注意

    • PL和PS之間的時鐘同步是由PS端處理

    • PL不能提供時鐘給PS使用

豐富的IP庫

Zynq 是一種SoC,具有大量的標準 IP,這些部件不再需要重新設計而直接可用。以這樣的方式提升了設計抽象層級,加上重用預先測試和驗證過的部件,開發將被加速,而成本則可以降低。就像常說的:“ 爲什麼要重新發明輪子呢?”。

Vivado內置了大量的IP可供使用,比如數學計算IP,信號處理IP、圖像視頻處理IP,通信互連(以太網、DDS、調製、軟件無線電、錯誤校驗)、處理器IP(MicroBlaze等)、甚至人工智能算法IP。

比如信號處理IP,由於採用FPGA硬邏輯實現信號處理無需CPU計算,對於實現複雜的信號運算(比如實現一個非常高階的FIR濾波、多點FFT計算)具有非常大優勢。

雙ARM硬核處理器

如架構圖,ZYNQ內置了雙ARM Cortex-A9硬核,對軟件設計提供了極大的靈活性,在該處理器上可運行Linux,Android等複雜的操作系統,相比常規FPGA嵌軟核IP的做法具有更強大的運算處理能力,你可能會說其處理器的運算能力相比時下的其他ARM芯片或稍有不足,但基本能滿足常規的醫療、工業領域等嵌入式系統應用需求。

PL/PS的有機結合

通過前面的簡要分析介紹,不難發現PL可編程硬件邏輯及處理器單元的結合做的非常好。

  • PL端:可設計出高靈活的外設系統,同時可編程硬件邏輯電路,可實現真正的硬並行處理、硬實時系統

  • PS端:PL端與PS的有機結合,有可實現對這種高靈活、硬並行、硬實時處理系統實現集中軟件管理

試想,如果一個系統需要實現硬實時、硬並行,複雜外設互連繫統:

  • 或許會採用多微控制器(比如單片機)+處理器方案,微處理器實現實時需求,處理器運行Linux實現上層業務邏輯的方式。

  • 或者採用FPGA+處理器來實現。

這兩種方案技術複雜度都非常高,硬件電路PCB設計比較複雜,軟件開發以及維護也會增加複雜度。而ZYNQ則可以很好的解決此類系統設計需求,真正做到system on chip,這也是SOC的一個很好的體現。

總結一下

ZYNQ這種高度靈活性,豐富的外設,豐富的IP庫,以及vivado強大易用的開發環境,對使用ZYNQ進行嵌入式系統設計帶來了非常多優勢。

本文辛苦原創,如喜歡請點贊/在看/分享支持,不勝感激!

END

往期精彩推薦,點擊即可閱讀

▲Linux內核中I2C總線及設備長啥樣? 

▲學Linux驅動:應先了解總線驅動模型

▲看思維導圖:一文帶你學Verilog HDL語言

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章