FC2カウンター FPGAの部屋 画像フィルタを DFX する11(DFX_filter_test プロジェクト4)
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

画像フィルタを DFX する11(DFX_filter_test プロジェクト4)

画像フィルタを 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 を展開した。
DFX2_71_210816.png

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

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

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

through_axis_0 を階層デザインに指定する。
through_axis_0 を右クリックし、右クリックメニューから Create Hierarchy... を選択する。

Create Hierarchy が表示された。
Cell name に filter と入力して、OK ボタンをクリックする。

filter 階層ができた。
DFX2_76_210816.png

Validate Design を行った。
いつもの DDR skew のクリティカル・ワーニングが出るかも知れない?

階層デザインをブロック・デザイン・コンテナにする。
filter 階層デザインを右クリックし、右クリックメニューから Create Block Design Container... を選択する。

Create Block Design Container ダイアログが表示された。
New Block Design に filter と入力して、OK ボタンをクリックする。

filter 階層デザインが filter.bd ブロック・デザイン・コンテナになった。
DFX2_77_210816.png

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

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

filter に DFX マークが付いた。
DFX2_80_210816.png

Validate Design をクリックする。
Validate Design ダイアログが出て、成功した。

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

flter と同じポートを持つ Diagram ウインドウが表示された。

lap_filter_axis IP を追加して配線した。
DFX2_82_210816.png

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

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

Addressing タブ。
DFX2_85_210816.png

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

flter と同じポートを持つ Diagram ウインドウが表示された。

sobel_filter_axis IP を追加して配線した。
DFX2_87_210816.png

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

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

Addressing タブの表示を示す。
DFX2_90_210816.png
  1. 2021年08月17日 05:05 |
  2. Dynamic Function eXchange
  3. | トラックバック:0
  4. | コメント:2

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
  1. 2021/08/17(火) 08:09:18 |
  2. |
  3. #
  4. [ 編集 ]

ブロックデザイン、IPインテグレータでは、IPだけでなく、RTLをドラック&ドロップすると勝手にRTL IPを作ってくれる便利機能があるので、IP作らなくてもRTLだけで便利に使えますよ。。。
  1. 2021/08/17(火) 08:22:25 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/5327-52cf40d9
この記事にトラックバックする(FC2ブログユーザー)