Zynq初识
本文內容學習自正點原子的Zynq教學視頻:正點原子ZYNQ教學視頻-B站
1.Zynq是什么?
我們先從SoC說起
SoC(System-on-Chip):片上系統 就是把原有的處理器(Processor),存儲器(Memory),時鐘(Clock),接口(Interface)等等資源從原來的焊接在一塊PCB(Printed Circuit Board)板上的系統變成一塊ASIC(Application Specific Integrated Circuit )專用集成電路也就是芯片。
優點:體積更小。
缺點:需要集成到的一塊ASIC上,流片成本高且邏輯功能不能修改。
SoPC(System-on-Programmable-Chip): 可編程片上系統 ? 一般是基于FPGA,用FPGA實現各個功能模塊實現片上系統。
優點:相比基于ASIC的SoC更為靈活,可以隨意修改。
缺點:FPGA內部資源有限,實現SoC時資源會很限制,并且搭建的處理器速度不會很快。比如:FPGA內部的PLL和Memory資源都是非常有限的。
APSoC(ALL-Programmable-SoC): 全可編程片上系統 ? 全可編程意味著軟件可編程(基于ARM的處理器),硬件也可編程(基于FPGA)。說白了就是把FPGA和一塊基于ARM的處理器搞到一塊芯片上去,這點其實也很好想到。當時我們做電賽練習時就非常想讓單片機和FPGA結合起來用,這樣既可以利用FPGA并行運算的速度也可以利用單片機做控制和一些其他功能的靈活性。
優點:具有一個真正的硬核處理器ARM,性能好,可以直接運行一個Linux系統。FPGA做并行處理和定制功能,ARM進行控制和操控。
所以
Zynq-7000系列就是Xilinx公司推出的一款基于雙ARM Cortex-A9處理器和自己家FPGA的APSoC。
?
2.Zynq的架構
Zynq實際上就3個部分
1.PS(Processing System):處理系統 ? 核心是ARM Cortex-A9處理器,但不僅僅只有處理器而已。PS才是Zynq的核心
2.PL(Programmable Logic): 可編程邏輯? 顯而易見這部分就是一塊FPGA。
3.AXI(Advanced eXtensible Interface)高級可擴展接口:一種高性能、高帶寬、低延遲的片內總線協議。用于PL和PS部分的通信。它是ARM公司AMBA(Advanced Microcontroller Bus Architecture)協議的一部分。
因為PL部分沒啥可介紹的,它就是一塊兒FPGA所以主要介紹PS和AXI總線。
PS(Processing System)
這種圖讓我一眼看過去真是一臉懵逼,我的理解簡單來說就是兩塊ARM Cortex-A9 CPU 作為核心再弄一些總線、時鐘什么亂七八糟的。
紅線圈出的部分就是PS的核心部分APU(Application Processor Unit) 。
重點是這張圖的下方是PS與PL的連接部分。下面從APU開始一點點稍微了解一下PS里面都有什么
//隨便寫寫反正我覺得了不了解這些應該對于工程實踐無關痛癢,但是害怕后面開發的時候遇到什么問題,還是稍微了解一下
APU(Application Processor Unit)
FPU(Float Point Unit)浮點運算單元:專用于浮點運算的處理器。
NENO engine:單指令多數據處理? 比如:視頻圖像處理,可以將很多像素點同時并行處理。并行數據處理加速。
MMU(Memory Management Unit) 內存管理單元:物理地址到虛擬地址的映射。
Cache?高速緩沖存儲器:CPU和RAM之間的緩沖存儲器。1級Cache ? I-Cache指令,D-Cache數據。2級Cache兩個CPU通用
OCM(On Chip Memory)? 片上存儲器:實際上是塊兒SRAM。
SCU(Snoop Controller)一致性控制單元:實現CPU到2級Cache和OCM的訪問控制。
DMA(Direct Memory Access) 直接內存存取:直接將存儲器中的數據互相傳遞而不需要經過CPU
GIC(Generic Interrupt Controller)通用中斷控制器
APU之外
Central Interconnect:用于連接各個模塊,做通信的管理
I/O Peripherals:連接到MIO(Multiplex IO)使SOC與外界通信,可以配置MIO的接口接到不同的I/O Peripherals的接口上去
與PL連接但不屬于AXI的接口
EMIO(Extend MIO):如果PS的54個MIO不夠用了,就可以使用EMIO。EMIO是連接到PL部分的,可以通過PL再與外設相連,也可以直接連接PL內部自己寫的模塊。
X-ADC:PS連接PL里面的硬核ADC接口。
DMA sync:PL和PS實現DMA傳輸的接口。
IRQ(Interrupt ReQuest)中斷請求:PL向PS終端請求的接口,連接到PS的GIC。
Config ASE/SHA:PS配置PL的接口,因為PS才是核心,Zynq也是PS先啟動再啟動的PL。
AXI(Advanced eXtensible Interface)
GP(General Purpose Interfaces):PS和PL的通用接口。M(Master)代表PS為通信主機(通信發起人),S(Slave)代表PS為通信從機。
ACP Interface:PL連接到SCU部分。PL到PS的2級Cache和OCM的低延時訪問。實現使PL類似CUP到Cache的訪問。PL為通信主機。
HP (High Performance Interface):高性能接口,高速大量數據傳輸。它上面的藍色方塊是一些FIFO(First In First Out)用作數據緩沖。
這里也是PL為通信主機。實際上是PL直接訪問PS部分的Memory。
?
?
?
?
總結
- 上一篇: android 版本更新 apk,And
- 下一篇: Linux云计算——传统虚拟化——EXS