Versal デバイスのハードウェア デザイン

ホストによる QSPI フラッシュのプログラム ホストによる QSPI フラッシュのプログラム (XAPP1372)

Document ID
XAPP1372
Release Date
2022-06-29
Revision
1.0 日本語

ブロック デザインの説明

ここでは、x86 や Arm® プロセッサなどのホストと Versal デバイス シリコンを接続する際に PCIe をコントローラー バスとして使用することを前提としています。通常、それほど高い帯域幅は必要とされないため、たとえば GT クワッドはほかのプロトコルとの共有としています。

このブロック デザイン (BD) では、PCIe Gen2 x1 と Aurora が同じ GT クワッドを共有しています。PL の PCIe 統合 IP と XDMA AXI ブリッジ モードを使用します。次の図に示した AI エンジン、DDR4、および Aurora は、ホストによる QSPI フラッシュのプログラムには関与しません。

図 1. PCIe と XDMA の BAR 割り当て

次の図に示すように、3 つのベース アドレス レジスタ (BAR) 空間を定義しています。1 つ目の BAR0 は、NOC (DDR4) および SmartConnect (ブロック RAM) を介してデータ ストレージ空間に接続する AXI ブリッジ マスターです。2 つ目の BAR は、NoC を経由して AI エンジン空間にアクセスする AXI ブリッジ マスターです。3 つ目の BAR は、AXI4-Lite マスター空間です。

図 2. BAR 空間

次の [Address Editor] ウィンドウに示すように、BAR3 は PMC_SLAVES とブロック RAM を接続します。BAR3 には、ホストからアクセス可能な空間が 5 つあります。

  • axi_bram_ctrl_0/S_AXI: ホストが PCIe 経由でアクセスするブロック RAM 空間です。
  • versal_cips_0/noc_pmc_axi_0 NOCPMCAXI_PMC_SLAVES: QSPI コントローラー空間を含む PMC 空間です。
  • versal_cips_0/noc_pmc_axi_0 NOCPMCAXI_QSPI/NOCPMCAXI_LPD_SLAVES/NOCPMCAXI_AFI_FS: このリファレンス デザインでは、これら 3 つの空間にはアクセスしません。
図 3. BAR3 空間

一方、ブロック RAM コントローラーは QSPI フラッシュ データを格納するためにデュアル ポート ブロック RAM に接続します。QSPI コントローラーは DMA を使用して QSPI フラッシュからブロック RAM へデータを転送します。デュアル ポート ブロック RAM にはもう 1 つのブロック RAM コントローラーが接続され、このコントローラーが QSPI フラッシュ データを読み出します。ブロック RAM ブロックには 2 つの異なるアドレスがあります。マスターが PCIe の場合、ブロック RAM ブロックのアドレスは 0xF8000000 です。マスターが PMC 内の QSPI コントローラーの場合、アドレスは 0x201_8000_0000 です。これは 32 ビット アドレス空間を超えています。このアドレスを、QSPI コントローラーのレジスタに設定します (DMA_Dst_Addr_L = 0x8000_0000、DMA_Dst_Addr_H = 0x0000_0201)。

図 4. BRAM コントローラー
図 5. PL デザイン内のデータパス

ホストは BAR3 にアクセスして PMC_SLAVES 空間にアクセスします。データは XDMA AXI4-Lite ポートで変換され、SmartConnect を経由してデータ幅が変更された後、NoC スレーブ ポートからマスター ポートへ転送され、NOC_PMC_AXI_0 に到達します。

色付きで表示した 3 つのデータパスは、システム アーキテクチャ全体における Versal デバイスのハードウェア データパスです。すべてのデータパスは、デザイン全体で同じです。

PCIe デバッグ アクセサリ

PCIe リンク ステータスを簡単にデバッグできるように、PCIe 指定のデバッグ ハブと ILA を BD に挿入します。

図 6. PCIe デバッグ ハブと ILA
図 7. PCIe デバッグ ハブと ILA のパス