ZYNQ 体系结构#
Zynq の全体アーキテクチャは 2 つの部分から構成されています:PS(プロセッサシステム)と PL(プログラム可能ロジック)。これら 2 つの部分の電源回路は相互に独立しているため、PS と PL は個別に使用でき、使用されていない部分は電源を切って消費電力を低減できます。しかし、Zynq の最も価値のあるモードは、2 つの構成要素が組み合わさって使用されることです。
PS(プロセッサシステム)#
プロセッサシステムの基盤として、すべてのチップにはデュアルコアの ARM Cortex-A9 チップが含まれています。これはハードプロセッサであり、チップ上に特化して最適化されたシリコン素子です。
「ハード」プロセッサに加えて、MicroBlaze のような「ソフト」プロセッサという別の選択肢もあります。これは PL 側のユニットで構成されており、PL 側の IP と同等です。対照的に、「ハード」プロセッサは比較的高い性能を得ることができ、「ソフト」プロセッサの数と正確な実装は柔軟です。
特筆すべきは、Zynq の PL 側に 1 つまたは複数の MicroBlaze ソフトプロセッサを割り当てて、ハードコアと協調して動作させることができる点です。たとえば、ソフトコアに特定の低レベル機能とシステム間の調整を担当させ、要求の少ないタスクをハードコアから切り離して全体の性能を向上させることができます。
Zynq の PS 側には ARM プロセッサだけでなく、関連する処理リソースのグループが含まれており、アプリケーションプロセッシングユニット(Application Processing Unit、APU)を構成しています。さらに、拡張周辺機器インターフェース、キャッシュメモリ、メモリアクセスインターフェース、相互接続インターフェース、クロック発生回路もあります。
PL(プログラム可能ロジック)#
Zynq のロジック部分は、Artix7 および Kintex7 の FPGA コンポーネントに基づいています。
ロジック部分#
- 可配置ロジックブロック(CLB)—— CLB はロジックユニットの小規模で一般的なグループで、PL 内に 2 次元アレイとして配置され、プログラム可能な相互接続によって他の類似のリソースに接続されます。各 CLB 内には 2 つのロジックスライスが含まれ、スイッチマトリックスに隣接しています。
- スライス(Slice)—— CLB 内のサブユニットで、組み合わせおよび時系列ロジック回路を実現するリソースがあります。
-
ルックアップテーブル(Lookup Table、LUT)—— 柔軟なリソースで、以下を実現できます。
- 最大 6 つの入力を持つ論理関数
- 小さな読み出し専用メモリ(ROM)
- 小さなランダムアクセスメモリ(RAM)
- シフトレジスタ
LUT は必要に応じて組み合わせて、より大きな論理関数、メモリ、またはシフトレジスタを形成できます。
-
フリップフロップ(Flip-flop、FF)—— 1 ビットのレジスタを実現する時系列回路で、リセット機能を備えています。その一つの用途はラッチを実現することです。
-
スイッチマトリックス(Switch Matrix)—— 各 CLB の隣にはスイッチマトリックスがあり、CLB 内のユニットを接続するための柔軟な配線機能を実現したり、CLB を PL 内の他のリソースに接続したりします。
-
キャリー論理(Carry Logic)—— 算術回路は隣接するスライス間で信号を伝達する必要があり、これをキャリー論理によって実現します。
-
入出力ブロック(IOB)—— IOB は PL ロジックリソース間の接続を実現し、外部回路に接続するための物理デバイス「パッド」を提供します。各 IOB は 1 ビットの入力または出力信号を処理でき、IOB は通常チップの周辺に位置します。
特殊リソース:DSP48E1 と BRAM#
これら 2 つのリソースは列に沿ってロジックアレイに統合され、ロジック部分に埋め込まれており、互いに近接しています。これは、密な計算とメモリにデータを保存することがしばしば密接に関連しているためです。
BRAM#
Zynq-7000 の BRAM は、他の Xilinx 7 シリーズ FPGA の BRAM と同様で、RAM、ROM、FIFO を実現でき、エラー訂正符号もサポートしています。
各 BRAM には最大 36KB の情報を保存でき、36KB の RAM または 2 つの独立した 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、2 つの独立した 12 ビット ADC を持ち、各サンプリングレートは 1Msps です。
- クロック —— PL は PS から 4 つの独立したクロック入力を受け取り、さらに PS とは無関係なクロックを生成および配布できます。
- JTAG デバッグインターフェース
PS と PL の間のインターフェース#
前述のように、Zynq の性能は、2 つの構成要素 PS と PL の特性だけでなく、両者を協調させて完全で統合されたシステムを形成する能力にも依存しています。この中で重要な役割を果たすのは、高度にカスタマイズされた AXI 相互接続とインターフェースのセットで、2 つの部分間の橋渡しを行います。さらに、PS と PL の間には他のタイプの接続、特に EMIO があります。
AXI#
高度に拡張可能なインターフェース(Advanced eXtensible Interface)。現在のバージョンは第 4 世代 AXI4 です。
AXI4#
ストレージマッピング接続に使用され、最高の性能をサポートし、最大 256 個のデータワードのバースト転送によってアドレスを指定します。
AXI4-Lite#
簡略化された接続で、各転送で 1 つのデータのみをサポートします。AXI4Lite もストレージマッピングで、各転送で 1 つのアドレスと単一のデータを扱います。
AXI4-Stream#
高速ストリーミングデータ用で、任意のサイズのデータのバルク転送をサポートします。アドレスメカニズムはなく、ソースとデスティネーション間の直接データフローに適しています。
EMIO インターフェース#
EMIO は 2 つのドメイン間の転送に関与し、一組の単純なワイヤで接続されます。
EBAZ4205 マイニングボード資料まとめ#
拡張版#
ebaz4205 拡張ボード - 立創オープンハードウェアプラットフォーム (oshwhub.com)
開発ボード補完#
ゼロから始める ZYNQ 学習(EBAZ4205 マイニングボードに基づく)(1)-CSDN ブログ
回路図関連#
マイニングボード回路図
Elrori/EBAZ4205: EBAZ4205 BOARD (github.com)
PCB