基于 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 部件中加入額外的一致性操作。
處理器事件總線信號事件信息到 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 進行嵌入式系統設計帶來了非常多優勢。
編輯:lyn
-
嵌入式系統
+關注
關注
41文章
3645瀏覽量
130092 -
處理系統
+關注
關注
0文章
93瀏覽量
16743 -
存儲控制器
+關注
關注
0文章
23瀏覽量
9224 -
Zynq芯片
+關注
關注
0文章
3瀏覽量
1749
發布評論請先 登錄
相關推薦
評論