The Zynq Book讀書筆記——2 Zynq芯片(“是什麼”)

2.1 處理器系統
  1. Xilinx的MicroBlaze“軟”處理器,由可編程邏輯部分的單元組合而成的,即軟處理器的實現和部署在FPGA的邏輯結構裏的任何其他IP包是等價的。
  2. 在Zynq的PL部分配上一個或多個MicroBlaze軟處理器,用來和ARM處理器協同工作。
    在這裏插入圖片描述

在這裏插入圖片描述

2.1.1 應用處理單元(APU)

在這裏插入圖片描述

  1. APU主要是由兩個ARM處理器核組成的,每個都關聯了一些可計算的單元:
  • 一個NEONTM媒體處理引擎(Media Processing Engine,MPE)和浮點單元(Floating Point Unit,FPU)
  • 一個內存管理單元(Memory Management Unit,MMU)
  • 一個一級cache(分爲指令和數據兩個部分)
  • 一個二級cache存儲器
  • 片上存儲器(On Chip Memory,OCM)。
  • 一個一致控制單元(Snoop Control Unit,SCU)在ARM核和二級cache及OCM存儲器之間形成了橋連接(這個單元還部分負責與PL對接)
  1. MMU的主要責任是在虛擬地址和物理地址之間做翻譯
  2. 一致性(窺視)控制單元(SCU)從事的是一些和兩個處理器與一二級cache存儲器之間的接口相關的任務;負責維持兩個處理器的數據cache存儲器;SCU還要通過加速器一致端口(Accelerator Coherency Port,ACP)來管理在PS和PL之間的訪問會話。
  3. 作爲主ARM處理器的附加功能,NEON引擎實現了單指令多數據(Single Instruction Multiple Data,SIMD)功能來實現媒體和DSP類算法的戰略加速。NEON指令時對標準ARM指令集的擴展,可以直接使用,也可以通過寫出遵循特定的格式的C代碼,來讓編譯器產生NEON指令
  4. SIMD術語意味着NEON引擎可以對輸入向量中多組數據,同時執行相同的運算來得到對應的輸出向量。
  5. NEON支持多種數類型,包括有符號和無符號的整數、單精度浮點數和半精度浮點數,但是不支持雙精度的。
    在這裏插入圖片描述
  6. 對浮點單元(FPU)的擴展,叫做“浮點擴展”,也叫做“VFP(Vector Floating Point,向量浮點)擴展”。該單元實現了與IEEE 754標準兼容的浮點運算的硬件加速,支持單精度和雙精度格式,另外還部分支持半精度和整數轉換。
2.1.2 關於ARM模式
2.1.3 處理器系統外部接口
  1. PS和外部接口之間的通信主要是通過複用的輸入/輸出(Multiplexed Input/Output,MIO)實現的,它提供了可以做靈活配置的54個引腳。這樣的連接也可以通過擴展MIO(Extended MIO,EMIO)來實現,EMIO並不是PS和外部連接之間的直接通路,而是通過共用了PL的I/O資源來實現的。
  2. 當需要擴展超過54個引腳的時候可以用EMIO,而當PL中實現了一個IP包的時候這也是PS和PL中的IP包接口的一種方法。
  3. 可用的I/O包括標準通信接口和通用輸入/輸出(General Purpose Input/Output,GPIO),GPIO可以用做各種用途,包括簡單的按鈕、開關和LED。
    在這裏插入圖片描述
2.2 可編程邏輯
2.2.1 邏輯部分
  1. PL主要是由通用的FPGA邏輯部分組成的,這個FPGA是由邏輯片和可配置邏輯塊(Configurable Logic Block,CLB)組成的,另外還有用於接口的輸入/輸出塊(Input/Output Block,IOB)
    在這裏插入圖片描述
  • 可配置邏輯塊(CLB)——CLB是邏輯單元的小規模、普通編組,在PL中排列爲一個二維陣列,通過可編程互聯連接到其他類似的資源。
  • 片(Slice)——CLBA裏的一個子單元,裏面有實現組合和時序邏輯電路的資源。
  • 查找表(Lookup Table,LUT)——一個靈活的資源,可以實現(一)至多6個輸入的邏輯函數;(二)一小片只讀存儲器(ROM);(三)一小片隨機訪問存儲器(RAM);或(四)一個移位寄存器。LUT可以按需組合形成更大的邏輯函數、存儲器和移位寄存器。
  • 觸發器(Flip-flop,FF)——一個實現1位寄存的時序電路,帶有復位功能。FF的一種用處是實現鎖存。
  • 開關矩陣(Switch Matrix)——每個CLB旁都有一個開關矩陣,實現靈活的佈線功能來(一)連接CLB內的單元;或(二)把一個CLB與PL內的其他資源連接起來。
  • 進位邏輯(Carry Logic)——算術電路需要在相鄰的片之間傳遞信號,這就是通過進位邏輯來實現的。進位邏輯吧佈線和複用器組成鏈條來連接一個垂直列上的片。
  • *輸入/輸出塊(Input/Output Blocks,IOB)——IOB實現了PL邏輯資源之間的對接,並且提供物理設備“焊盤”來連接外部電路。每個IOB可以處理一位的輸入或輸出信號。IOB通常位於芯片的周邊。
    在這裏插入圖片描述
2.2.2 特殊資源:DSP48E1和塊RAM

在這裏插入圖片描述

  1. RAM:滿足密集存儲;
  2. DSP48E1:用於高速算術。
  3. 這兩個資源都按列安排列集成在邏輯陣列中,嵌入在邏輯部分中,而且往往彼此靠近(因爲密集計算和在內存中存儲數據往往是緊密聯繫的運算)。
  4. 塊RAM可以實現RAM、ROM和先進先出(First In First Out,FIFO)緩衝器,同時還支持糾錯編碼(Error Correction Coding,ECC)。
  5. 每個塊RAM可以存儲最多36KB的信息,並且可以被配置爲一個36KB的RAM或兩個獨立的18KB的RAM。RAM還可以被“重塑”來包含更多更小的單元(比如4096個單元x9位,或8192x4位),或是另外做成更少更長的單元(如1024單元x36位,512x72位)。
  6. 使用塊RAM就意味着能在芯片內優化的專用存儲單元內,用很小的物理空間儲存大量的數據。另一種方法是分佈式RAM(Distributed RAM),這是用邏輯部分裏的LUT來搭建的。
  7. 邏輯部分裏的LUT可以用來實現任意長度的算術運算,但是最適合的是做短字長的算術運算(長字長的算術電路會在邏輯片中佔據較大的空間,這樣的佈局和佈線因素會使得時鐘頻率是次優的)。DSP48E1是專門用於實現對字長長信號的高速算術運算的邏輯片。
2.2.3通用輸入/輸出
  1. Zynq上的通用輸入/輸出功能(IOB)合起來被稱作SelectIO資源,它們被組織成50個IOB一組。每個IOB有一個焊盤,是與外部世界連接來做單個信號的輸入或輸出的。
  2. I/O組被分類位高性能(High Performance,HP)或高範圍(High Range,HR),支持各種I/O標準和電壓。
  3. 每個IOB還包含一額IOSERDES資源,可以做並行和串行數據的可編程轉換(串行化和反串行化),數據可以是2位到8位。
2.2.4 通信接口
  1. Zynq芯片裏含有潛入在邏輯部分裏的GTX收發器和高速通信接口塊。
  2. GTX收發器是以“四元組”形式實現的,就是說一組有四個獨立的通道,每個通道包括一個那個通道專用的鎖相環(Phase Locked Loop,PLL)、一個發送器和一個接收器。
  3. 要使用這寫GTX塊,需要通過一個Wizard工具的支持,它能自動創建所需的接口的核。從用戶的角度看,就是把一個塊引入系統,選擇所需的協議核硬件選項,然後設置參數就可以了。
2.2.5 其他可編程邏輯擴展接口
  • 模擬-數字轉換 —— PL還具有其他的硬IP部件:XADC塊。對XADC的控制是用位於PS內的PS-XADC接口控制塊來實現的,而且PS-XADC控制塊本身可以由APU上所執行的軟件來編程。
  • 時鐘——PL接收來自PS的四個獨立的時鐘輸入,另外還能產生和分發它自己的與PS無關的時鐘信號。
  • 編程和調試——在PL部分實現了一組JTAG端口實現對PL的配置和調試。
2.3 處理器系統與可編程邏輯的接口
2.3.1 AXI標準
  1. AXI表示的是高級可擴展接口(Advanced eXtensible Interface),當前的版本是AXI4,它是ARM AMBA 3.0開放標準的一部分。
  2. 三類AXI4:
  • AXI4——用於存儲映射鏈接,它支持最高的性能:通過一簇高達256個數據字(或“數據拍(data beats)”)的數據傳輸來給定一個地址。
  • AXI4-Lite——一種簡化了的鏈接,只支持每次連接傳輸一個數據(非批量)。AXI4-Lite也是存儲映射的:這種協議下每次傳輸一個地址和單個數據。
  • AXI4-Stream——用於高速流數據,支持批量傳輸無限大小的數據。沒有地址機制,這種總線類型最適合源和目的地之間的直接數據流(非存儲器映射)。
  1. *“存儲映射”*的解釋:
    如果一個協議是存儲映射的,那麼在主機所發出的會話(無論讀或寫)中就會標明一個地址,這個地址是對應於系統存儲空間中的一個地址。對於近支持每次會話單個數據傳輸的AXI4-Lite而言,數據就是寫入那個指定的地址,或從那個地址讀出;而在AXI4批量的情況下,地址表明的是要傳輸的第一個數據字的地址,而從機端必須計算隨後的數據字的地址。
2.3.2 AXI互聯和接口
  1. 在PS和PL之間的主要連接是通過一組9個AXI接口,每個接口有多個通道組成。
  • 互聯(Interconnect)——互聯實際上是一個開關,管理並直接傳遞所連接的AXI接口之間的通信。
  • 接口(Interface)——用於在系統內的主機和從機之間傳遞數據、地址和握手信號的點對點連接。
    在這裏插入圖片描述
  1. 主機是控制總線併發起會話的,從機是做響應的。M表示PS是主機,S表示PS是從機。
    在這裏插入圖片描述
  • 通用AXI(General Purpose AXI)——一條32位數據總線,適合PL和PS之間的中低速通信。
  • 加速器一致性端口(Accelerator Coherency Port)——在PL和APU內的SCU之間的單個異步連接,總線寬帶位64位。這個端口用來實現APU cache和PL的單元之間的一致性。
  • 高性能端口(High Performance Ports)——四個高性能AXI接口,帶有FIFO緩衝來提供“批量”讀寫操作,並支持PL和PS中存儲器單元的高速率通信。
2.3.3 EMIO接口
  1. 從PS出來,有幾種連接可以經由PL到外部接口上,這被稱作擴展的MIO(Extended MIO),即EMIO。
    在這裏插入圖片描述
2.3.4 其他PS-PL信號
  1. 跨越PS-PL邊界的其他信號包括看門狗定時器、重啓信號、中斷和DMA接口信號。
2.4 安全
2.4.1 安全引導
  1. 當芯片上電或重啓的時候,PS的第一個和從外部存儲器中引導,然後纔會去配置PL。通過限制引導方法位單一來源,就確保了不可能在PL已經配置時候再有人工的方法來轉裝載惡意的軟件,同時再處理器已經初始化之後也沒辦法再裝載而已的映像到PL中去。
2.4.2 硬件支持

Zynq芯片和安全有關的一些特性:

  • ARM TrustZone支持
  • AES-256加密(BBRAM保存鍵碼和eFUSE鍵碼保存)
  • 安全認證和啓動(PS及PL)
  • HMAC位流認證
  • FSBL RSA-2048認證
  • 禁止強硬回讀
  • JTAG 禁止/監視
  • SEU檢查器
2.4.3 運行時刻安全
  1. 運行時刻安全可以被分爲三個保護領域:
  • 處理器系統到可編程邏輯——防止運行在Zynq PS上的軟件訪問基於硬件的IP和PL裏運行的從機。Zynq芯片有兩個辦法來實現這個防護:(一)一種Zynq特有的ARM TrustZone 技術的實現和(二)基於對於從主機來的AXI端口會話和對應從機地址的監視。
  • 處理器系統到處理器系統——前代的嵌入式系統,是融合多個獨立的子系統而構成的,每一個子系統進而又是由專門的硬件、操作系統和軟件所組成的。
    *內存管理單元(Memory Management Unit,MMU)安全——通過以安全的方式來配置MMU的頁表(Page Table),就限制了未經授權的軟件應用和硬件驅動程序訪問特定的內存區域、設備、配置寄存器和IP核,從而提升了系統安全。
  • 可編程邏輯到處理器系統或可編程邏輯——Zynq PL的主要優勢之一就是能輕易地實例化出多個可以表現爲AXI主機的IP包。
  1. Zynq-7000 和ARM Trust Zone技術
    TrustZone架構使得嵌入式系統內受信任的計算成爲可能,它建立了一個硬件架構,能在系統設計的整個過程種建立起安全架構。
2.5 Zynq-7000 系列成員

在這裏插入圖片描述
對於通用的Zynq系列成員來說,較小的芯片是基於Xilinx的Artix-7 FPGA邏輯部分的,而較大的芯片是基於Kintex-7邏輯部分的。

2.6 本章回顧
2.7 架構參考指南

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

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