ZYNQ 架構#
Zynq 的總體架構包含兩個部分:PS(處理器系統)和 PL(可編程邏輯)。這兩部分的供電電路上相互獨立的,因此 PS 和 PL 可以單獨使用,不被使用的部分可以斷電以降低功耗。不過 Zynq 最有價值的模式上兩個組成部分結合起來使用。
PS(處理器系統)#
作為處理器系統的基礎,所有芯片都包含一顆雙核的 ARM Cortex- A9 芯片。這是一顆硬處理器,是芯片上專門且優化過的矽片元件。
除了 “硬” 處理器,還有另外一種方案,像是 MicroBlaze 這樣的 “軟” 處理器,這是由 PL 端單元組合成的,即和 PL 端的 IP 是等價的。相比之下,“硬” 處理器可以獲得相對較高的性能,“軟” 處理器的數量和精確實現是靈活的。
值得一提的是,可以在 zynq 的 PL 端分配一個或多個 MicroBlaze 軟處理器,用於和硬核協同工作。比如可以讓軟核負責協調特定的底層功能和系統之間的配合,將要求不高的任務從硬核上脫離出來,提高整體性能。
zynq 的 PS 端裡面並非只有 ARM 處理器,還有一組相關的處理資源,構成一個應用處理器單元(Application Processing Unit,APU),另外還有擴展外設介面、cache 存儲器、存儲器介面、互聯介面和時鐘發生電路。
PL(可編程邏輯)#
zynq 中的邏輯部分是基於 Artix7 和 Kintex7 的 fpga 元件。
邏輯部分#
- 可配置邏輯塊(CLB)—— CLB 是邏輯單元的小規模、普通編組,在 PL 中排列為一個二維陣列,通過可編程互聯連接到其他類似的資源。每個 CLB 內都含有兩個邏輯片,並緊鄰一個開關矩陣。
- 片(Slice)—— CLB 裡的子單元,裡面有實現組合和時序邏輯電路的資源。
-
查找表(Lookup Table,LUT)—— 一個靈活的資源,可以實現
- 至多 6 個輸入的邏輯函數
- 一小片只讀存儲器(ROM)
- 一小片隨機訪問存儲器(RAM)
- 一個移位寄存器
LUT 可以按需組合形成一個更大的邏輯函數、存儲器或移位寄存器。
-
觸發器(Flip-flop,FF)—— 一個實現一位寄存的時序電路,帶有復位功能。其中一個用處是實現鎖存。
-
開關矩陣(Switch Matrix)—— 每個 CLB 旁邊都有一個開關矩陣,實現靈活的布線功能來連接 CLB 內的單元,或把 CLB 與 PL 內的其他資源連接起來。
-
進位邏輯(Carry Logic)—— 算術電路需要在相鄰的片之間傳遞信號,這就是通過進位邏輯來實現的。
-
輸入 / 輸出塊(IOB)—— IOB 實現了 PL 邏輯資源之間的對接,並提供物理設備 “焊盤” 來連接外部電路。每個 IOB 可以處理一位的輸入或輸出信號,IOB 一般位於芯片的周邊。
特殊資源:DSP48E1 和 BRAM#
這兩個資源都按列排列集成在邏輯陣列中,嵌入在邏輯部分中,而且彼此靠近,原因是密集計算和給內存中存儲數據往往是緊密聯繫的運算。
BRAM#
zynq-7000 的 BRAM 和其他 Xilinx 7 系列 FPGA 裡的 BRAM 是相同的,都可以實現 RAM、ROM、FIFO,同時還支持糾錯編碼。
每個 BRAM 裡最多可以存儲 36KB 的信息,可以被配置為一個 36KB 的 RAM 或者兩個獨立的 18KB 的 RAM。還可以被 “重塑” 來包含更多的更小的單元,或者組合起來組成更大容量的 RAM。
使用 BRAM 意味著能在芯片內部優化的專用存儲單元內,用很小的物理空間存儲大量的數據。另一種方法是分佈式 RAM(Distributed RAM),DRAM 是用邏輯部分裡的 LUT 來搭建的,想要構成和 BRAM 大小相當的存儲器,需要用到大量的 LUT,而且實現的結果還受到劇增的邏輯和布線延遲所造成的時序性能受限的影響。另一方面,用 DRAM 實現小存儲器是有優勢的,這樣資源利用率高,並且佈局更靈活。BRAM 往往能工作在芯片支持的最高時鐘頻率下。
DSP48E1#
邏輯部分的 LUT 可以用來實現任意長度的算術運算,但由於長字長的算術電路會在邏輯片內佔據較大的空間,這樣的佈局和布線會導致時鐘頻率是次優的,因此最好拿 LUT 做短字長的運算。
DSP48E1 是專門用於實現對長字長信號的高速算術運算的邏輯片,是專用的矽片資源,並且在邏輯單元內部包含了預加法器 / 減法器、乘法器和後加法器 / 減法器。
後加法器還可以用作邏輯單元,此時它可以做邏輯運算,支持所有的基礎布爾運算。
如果需要更大字長的運算,可以將多個 DSP 組合起來做擴展。
通用輸入 / 輸出#
zynq 上的通用輸入 / 輸出功能合起來被稱為 SelectIO 資源,它們被組成 50 個 IOB 一組,每個 IOB 都有一個焊盤,與外部世界連接。
I/O 組分為高性能(High Performance,HP)或高範圍(High Range,HR)。HP 介面的電壓最高為 1.8V,通常用作連接存儲器和其他芯片的高速介面;HR 介面允許 3.3V 的電壓,適合做各種 IO 標準的連接。兩種介面都支持單端和差分信號。
每個 IOB 還包含一個 IOSERDES 資源,可以做並行和串行的可編程轉換,數據位寬是 2~8 位。
通信介面#
zynq 內部含有嵌入在邏輯部分裡的 GTX 收發器和高速通信介面塊。
其他可編程邏輯擴展介面#
- ADC—— XADC,具有兩個獨立的 12 位 ADC,每個採樣率為 1Msps。
- 時鐘 —— PL 接收來自 PS 的四個獨立的時鐘輸入,另外還能產生和分發它自己的與 PS 無關的時鐘。
- JTAG 調試介面
PS 與 PL 之間的介面#
如前所述,Zynq 的表現不僅僅依賴於它的兩個組成部分 PS 和 PL 的特性,還在於能把兩者協同起來形成完整、集成的系統的能力。這其中起關鍵作用的,是一組高度定制的 AXI 互聯和介面用來在兩個部分之間形成橋樑。另外,在 PS 和 PL 之間還有一些其他類型的連接,特別是 EMIO。
AXI#
高級可擴展介面(Advanced eXtensible Interface)。當前版本為第四代 AXI4。
AXI4#
用於存儲映射連接,支持最高的性能,通過一簇高達 256 個數據字的傳輸來給定一個地址。
AXI4-Lite#
簡化的連接,只支持每次傳輸一個數據。AXI4Lite 也是存儲映射的,每次傳輸一個地址和單個數據。
AXI4-Stream#
用於高速流式數據,支持批量傳輸無線大小的數據。沒有地址機制,適合源與目的之間的直接數據流。
EMIO 介面#
EMIO 涉及兩個域之間的傳輸,是由一組簡單的導線連接實現的。
EBAZ4205 礦板資料彙總#
擴展版#
ebaz4205 擴展板 - 立創開源硬件平台 (oshwhub.com)
開發板補全#
從零開始的 ZYNQ 學習(基於礦卡 EBAZ4205)(一)-CSDN 博客
原理圖相關#
礦板原理圖
Elrori/EBAZ4205: EBAZ4205 BOARD (github.com)
PCB