初学ZYNQ(理论准备)
目錄
- 一、 ZYNQ-7000 All Programmable Soc
- 二、PL(Programmable Logic)
- 三、PS(Processing System)
- 四、AXI總線
本文是正點原子的學習筆記,參考自原子哥ZYNQ資料、知乎電子小C。
一、 ZYNQ-7000 All Programmable Soc
ZYNQ是賽靈思(Xilinx)推出的新一代全可編程片上系統,它是一款ARM+FPGA的Soc平臺。由于處理器的軟件可編程性欲FPGA的硬件可編程性進行完美整合,這款基于ARM處理器的SoC可滿足復雜嵌入式系統的高性能、低功耗和多核處理能力等要求。
與板上系統(PCB板)相比,SoC(片上系統,將各分離的部件整合到了一起)的解決方案成本更低,能在不同的系統單元之間實現更快更安全的數據傳輸,具有更高的整體系統速度、更低的功耗、更小的物理尺寸和更好的可靠性。
SoC發展歷程:
- SoC:早期的SoC都是基于ASIC,一系列功能模塊集合在一個SoC上。典型的例子是華為的麒麟系列處理器,它就是采用基于ASIC的SoC。
- SOPC:可編程片上系統(使用FPGA進行搭建)
- APSoC:全可編程片上系統(集成了一個硬核處理器,性能有所提高),它包含兩個部分,即PS、PL。
ZYNQ的本質特征,是它組合了一個雙核ARM Cortex-A9處理器(性能大大提升)和一個傳統的現場可編程門陣列邏輯部件,即FPGA。它是全可編程片上系統,它將處理器的軟件可編程性與FPGA的硬件可編程性進行完美整合,以提供無與倫比的系統性能、靈活性與可擴展性。
下面這張就是ZYNQ的結構圖,ZYNQ是ARM+FPGA,圖中黃色部分就是FPGA,藍色部分是整合了外圍設備的ARM。在ZYNQ上ARM部分叫做PS(Processing System)部分,FPGA叫做PL(Programable Logic)部分。
二、PL(Programmable Logic)
PL等價與FPGA的概念。
早期生產的數字集成電路邏輯功能都是固定不變,后來出現了允許用戶自行修改內部連接的集成電路:PLD(Programmable Logic Device可編程邏輯器件),PLD有兩大特點:
- PLD內部的電路結構可以通過寫入編程數據來設置;
- 寫入PLD的編程數據還可以擦除重寫;
常用的可編程邏輯器件(PLD):
- CPLD:基于“乘積項”的與或邏輯陣列
- FPGA:基于“查找表”(LUT,Look UP Table)的CLB陣列
什么是FPGA?
FPGA是一種可通過編程來修改其邏輯功能的數字集成電路(芯片)。FPGA的原理是基于SRAM的查找表結構。通俗的講就是:可以將FPGA看做是一片SRAM,利用開發工具軟件計算出所有的輸入組合排列對應的輸出結果,然后將輸入組合作為SRAM的地址,該地址中存放的是與輸入組合對應的輸出。當輸入信號變化時,到相應的地址中讀取提前計算好存入的結果,然后輸出。
FPGA共包括5個模塊:
可編程IO單元、可編程邏輯單元(CLB)、底層嵌入功能單元、嵌入式塊RAM(Block RAM)、布線資源、硬核(不是所有FPGA都有)。
Xilinx公司的ZYNQ7000系列的FPGA型號有:
- Artix-based devices:Z-7010,Z-7015,Z-7020
- Kintex-based devices:Z-7030,Z-7045,Z-7100
總的來說,PL部分可以看做是外圍設備,其中一個唯一不同于其他外圍設備的就是PL的可變性很大(根據型號不一樣020以下整合Artix7、030以上整合Kintex7)。
三、PS(Processing System)
去掉PL部分PS部分可以完全當成ARM單片機使用,加上PL部分你可以在上面映射你自己的IP或者算法,但不管怎么樣PL相對于PS而言,就是一個掛載到AXI總線上的設備而已。
正是這種結構讓實現某個邏輯功能的可能性在ZYNQ上多了很多。比如GPIO就有三種:MIO(PS部分的引腳引出),EMIO(PS的GPIO在PL引出),AXI GPIO(用PL的IP)。
由上面的圖可以看出,PS部分的核心是應用處理器單元APU(Application Processor Unit)包括:兩個Cortex A9 CPU+浮點運算協處理器+調試接口+Cache+在片存儲器OCM+定時計數器等。
然后前面所說的這些算是這個Soc的最核心,這個最核心還不是PS部分的全部因為它還需要整合相應的I/O設備,才能算是Soc。而這些都需要總線連接,在ZYNQ里主要使用的是AXI總線。
四、AXI總線
AXI(Advanced eXtensible Interface) 本是由ARM公司提出的一種總線協議。用于PL和PS之間的通信。
總線、協議、接口區別是什么?
- 總線:是一組傳輸通道,是各種邏輯器件構成的傳輸數據的通道,一般由數據線、地址線、控制線等構成。
- 接口:是一種連接標準,又常常被稱之為物理接口。
- 協議:就是傳輸數據的規則。
AXI總線協議的兩端可以分為主(master)、從(slave)兩端,他們之間一般需要通過一個AXI Interconnect相連接,作用是提供一個或多個AXI主設備連接到一個或多個AXI從設備的一種交換機制。
zynq的AXI接口共有3種類型:
-
AXI_ACP接口:加速器一致性接口,用來管理DMA之類不帶緩沖的AXI外設,PS端是Slave接口。
-
AXI_HP接口:高性能/帶寬的AXI3.0標準接口,共有4個,PL模塊作為主設備連接。主要用于PL訪問PS上的存儲器(DDR和On-Chip RAM)。
-
AXI_GP接口:通用AXI接口,共有4個,包括兩個32位主設備接口和32位從設備接口。
總結
以上是生活随笔為你收集整理的初学ZYNQ(理论准备)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android仿豆瓣书影音频道推荐表单堆
- 下一篇: avada5.5.2汉化版更新到avad