著者:Muhammad Ijaz
多くのシステムでは、FPGAを使用してデジタル信号処理を実行します。その場合、システムの性能は、カスタムのロジック回路とメモリの間でデータをやり取りする速度や効率によって制限されることが少なくありません。レーダー用のレシーバー、データ・アクイジション・システム、ワイヤレス・システムのベースバンド処理といった高速アプリケーションでは、ギガバイト/秒のレベルの速度で連続的にデータ・ストリーミングを実行することが求められます。しかし、CPUによってこのタスクを処理するのは効率的ではありません。また、高い信頼性も得られないでしょう。
以前、筆者は「RTL Design and Verification of AXI DMA for Streaming Data(データ・ストリーミング向けAXI DMAのRTL設計と検証)」という詳細な解説記事を執筆しました。本稿は、その記事に対応するクイック・ガイドとして用意したものです。具体的には、設計ツールとして「AMD Vivado」を使用し、MM2S(Memory Mapped to Stream)とS2MM(Stream to Memory Mapped)の各モード向けにAXI DMA(Advanced Extensible Interface Direct Memory Access)を構成する際の要点をまとめました。その内容は、最小限のレイテンシと最大限の効率を達成する高性能のデータ伝送を実現する上で役に立つはずです。
効率的なデータ転送の重要性
- FPGAをベースとする高性能のデジタル信号処理システムを実現する上で不可欠です。
- CPUの介入とレイテンシを最小限に抑えられます。
AXI DMAの各モードの特徴
MM2Sモード
メモリからストリームにデータを転送します。
- 読み出しには、単一のAXI4 Mainインターフェースを利用します。
- 出力には、AXI4-Streamインターフェースを利用します。
S2MMモード
- ストリームからデータを取得し、メモリに書き込みます。
- 書き込みには、Subordinate AXI4インターフェースを利用します。
- 入力には、AXI4-Streamインターフェースを利用します。
システムのアーキテクチャ
Zynq Processing System(PS)
- プロセッサとDDRメモリ・コントローラを備えています。
AXI DMA(PL)
- DDRメモリとAXIストリーミング・インターフェースの間のデータ転送を管理します。
AXI4-Stream Data FIFO(PL)
- MM2S DMAのストリームとS2MM DMAのストリームの間のデータをバッファリングします。
AXI-Liteインターフェース
- プロセッサから、DMAコントローラの構成/ステータス確認を実行するために使用します。
AXI4 Memory-Mappedインターフェース
- メモリに対するデータ転送(書き込み、読み出し)を管理します。
AXI4-Streamインターフェース
- バッファリングやアドレッシングを行うことなく、高速なデータ・ストリーミングを実行できるようにします。
ループバック設計の例
- 開発用ボード「ZedBoard」におけるAXI DMAとFIFO(First In, First Out)の使用方法を示します。
- AXI DMAのエンジンは、DDRメモリとFPGAファブリックの間のデータ転送を処理します。
- FIFOは、MM2SのパスとS2MMのパスを相互接続するためのバッファとして機能します。
- レーダーや通信システムなど、連続的かつ高速なデータ・ストリーミングを必要とするアプリケーションに最適です。
- CPUの介入とレイテンシを最小限に抑えられます。
本稿で紹介した解説記事「RTL Design and Verification of AXI DMA for Streaming Data」に興味のある方は、こちらのページをご覧ください。