AXI Stream
AXI Stream
仕様
OV7670からの画像データをVDMA IPやAXI Stream To Video Out IPに渡すには、AXI4-Streams I/Fを使う必要がある。ここでは、AXI4-Streams I/Fの仕様とAXI4-Streams VIPの使い方についてまとめる。
信号一覧
ビデオ信号系としてAXI4-Streams I/Fを使用する場合、必須信号は下記の4つのみと簡単な通信プロトコルである。
タイミングチャート
- マスター側の設計注意事項
IP
ここにも紹介されているが、AXI Stream 関係のIPはたくさんある。 現時点で使う可能性があるIPのみ簡単に説明する。
AXI4-Stream Subset Converter
AXI4-Stream I/Fはほとんどがオプション信号なので、IPコアによって使用する信号が異なる。AXI4-Stream Subset ConverterはIPコア間の信号の違いを吸収し、IPコア間を正しく接続する役割を担っている。
AXI4-Stream Subset Converterの設定画面を下図に示す。DATA、TUSER、TSTRB、TKEEP、TID、TDEST、TLAST 信号のリマップや信号の追加が可能、ストーリデータの並び替えなどができる。
AXI4-Stream VIP
AXI4-Stream VIP(Verification IP)はAXI Stream I/F を持ったIPコアを検証するときに役立つIPコアである。使い方はここに記載されているので、この記事で不足している場合は参照すること。
使い方
VIPを使うためには、Vivado IPI上で VIPの配置・設定し、テストベンチを作成する。という流れである。VIPはSystemVerilogにて作成されているため、パッケージのインポート、newを使ったインスタンス生成など少し変わった記述である。
Vivado IPI
- IPI上にAXI4-Stream VIPを配置し、テスト対象と接続する
IPI上で Add IP > AXI4-Stream VIPを選択し、画面上にAXI4-Stream VIPを配置する。VIPにテスト対象のIPコアを接続する。今回は作成中のOV7670 IPをテスト対象IPとする。
- VIPの動作モードを設定する
VIPはスレーブとして動作するよう設定する。IPI上での設定は以上で終了である。次にテストベンチを記述する。
テストベンチ
- AXI4-Stream VIPを使用するためにパッケージをインポート
注意:IPの階層に注意すること。
|
- VIPエージェントの宣言
注意:マスターの場合はcomponent_name"_mst_t mst_agent、スレーブの場合は"component_name"_slv_t slv_agent*とすること
// Declare AXI4 Stream VIP agent
BlockDesign_axi4stream_vip_0_0_slv_t slv_agent;
- VIPエージェントをインスタンス生成し、I/F までの階層を引数として渡す
|
- エージェントを開始させる
|
以上で終了である。上手く動作するとTREADY信号がパタパタ切り替わる。