”
画像フィルタを DFX する10(sobel_filter_axis IP 2)”の続き。
前回で、通過 IP 、ラプラシアン・フィルタ IP 、ソーベル・フィルタ IP の 3 個の AXI4-Stream 入出力、 AXI4-Lite インターフェースのレジスタ設定の IP の作成が完了した。今回は、その 3 個の IP を DFX で切り替えるべく Vivado 2021.1 の DFX_filter_test プロジェクトに追加する。
なお、DFX に失敗した DMA_pow2 IP と DMA_square_root8 IP の DFX については、以下のブログ記事にまとまっている。
”
DFX をやってみよう1(DFX を調べる1)”
”
DFX をやってみよう2(チュートリアル例の説明)”
”
DFX をやってみよう2(DMA_pow2 IP の作成)”
”DFX をやってみよう3(DMA_square_root8 IP の作成1)”
”
DFX をやってみよう4(DMA_square_root8 IP の作成2)”
”
DFX をやってみよう5(Vivado 2021.1 で DFX_test プロジェクトを作成)””
DFX をやってみよう6(ブロック・デザイン・コンテナと DFX イネーブル)”
”
DFX をやってみよう7(2 つ目の RM を設定)”
”
DFX をやってみよう8(Generate Output Products と Dynamic Function eXchange Wizard)”
”DFX をやってみよう9(Pblock の設定)””DFX をやってみよう10(インプリメンテーションとビット・ファイル、パーシャル・ビット・ファイルの生成)””DFX をやってみよう11(ハードウェアのエクスポートとフル・ビット・ファイルの動作確認)””DFX をやってみよう12(DMA_square_root8 の実行)”これらの記事を参考に、 3 個の IP を DFX に設定する。
まずは、通過 IP 、ラプラシアン・フィルタ IP 、ソーベル・フィルタ IP の 3 個を DFX_filter_test プロジェクトにコピーする。
DFX_filter_test プロジェクトに lap_filter_axis, sobel_filter_axis, through_axis ディレクトリを作成した。
その下に、各 IP の solution1/impl ディレクトリの下の export.zip を展開した。

まずは、 through_axis と dfx_decoupler をブロック・デザインに追加した。

dfx_decoupler の設定画面を示す。
まずは、 Global Options を示す。
AXIインターフェースと Status Signal をイネーブルしている。

次は Interface Options タブを示す。
filter という名前の axis インターフェースを生成した。

through_axis_0 を階層デザインに指定する。
through_axis_0 を右クリックし、右クリックメニューから Create Hierarchy... を選択する。
Create Hierarchy が表示された。
Cell name に filter と入力して、OK ボタンをクリックする。
filter 階層ができた。

Validate Design を行った。
いつもの DDR skew のクリティカル・ワーニングが出るかも知れない?
階層デザインをブロック・デザイン・コンテナにする。
filter 階層デザインを右クリックし、右クリックメニューから Create Block Design Container... を選択する。
Create Block Design Container ダイアログが表示された。
New Block Design に filter と入力して、OK ボタンをクリックする。
filter 階層デザインが filter.bd ブロック・デザイン・コンテナになった。

filter.bd ブロック・デザイン・コンテナをダブルクリックして Customize Block Design Container ダイアログを表示させる。
Enable Dynamic Function eXchange on this container のチェックボックスにチェックを入れる。

Addressing タブをクリックして、設定を確認した。

filter に DFX マークが付いた。

Validate Design をクリックする。
Validate Design ダイアログが出て、成功した。
DFX に RM を追加する。
filter ブロック・デザイン・コンテナを右クリックし、右クリックメニューから Create Reconfigurable Module... を選択する。
Create Reconfigurable Module ダイアログが表示された。
Reconfigurable Module に lap_filter_axis を入力した。

flter と同じポートを持つ Diagram ウインドウが表示された。
lap_filter_axis IP を追加して配線した。

Address Editor を開いてアドレスをマップした。
0x00000000 にマップされていたので、0x40000000 にアドレスを変更した。
Address Map を示す。

filter ブロック・デザイン・コンテナをダブルクリックして Customize Block Design Container ダイアログを表示させる。
lap_filter_axis が追加されている。

Addressing タブ。

さて、もう一度、DFX に RM を追加する。
filter ブロック・デザイン・コンテナを右クリックし、右クリックメニューから Create Reconfigurable Module... を選択する。
Create Reconfigurable Module ダイアログが表示された。
Reconfigurable Module に sobel_filter_axis を入力した。

flter と同じポートを持つ Diagram ウインドウが表示された。
sobel_filter_axis IP を追加して配線した。

Address Editor を開いてアドレスをマップした。
0x00000000 にマップされていたので、0x40000000 にアドレスを変更した。

filter ブロック・デザイン・コンテナをダブルクリックして Customize Block Design Container ダイアログを表示させる。
sobel_filter_axis が追加されている。

Addressing タブの表示を示す。
- 2021年08月17日 05:05 |
- Dynamic Function eXchange
-
| トラックバック:0
-
| コメント:2
ブロックデザイン、IPインテグレータでは、IPだけでなく、RTLをドラック&ドロップすると勝手にRTL IPを作ってくれる便利機能があるので、IP作らなくてもRTLだけで便利に使えますよ。。。
- 2021/08/17(火) 08:22:25 |
- URL |
- marsee #f1oWVgn2
- [ 編集 ]