FC2カウンター FPGAの部屋 Vivado HLS勉強会用のラプラシアンフィルタ実習用回路の製作4(PYNQ編1)
FC2ブログ

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

FPGAの部屋

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

Vivado HLS勉強会用のラプラシアンフィルタ実習用回路の製作4(PYNQ編1)

Vivado HLS勉強会用のラプラシアンフィルタ実習用回路の製作3”の続き。

(2019/06/27:追記)この記事で、Vivado HLS のC コードの合成結果が変わっても、Export RTL のレポートが変更されなかった問題は、solution を新たに作成すると解消されました。詳しくは、”Vivado HLS勉強会用のラプラシアンフィルタ実習用回路の製作5(PYNQ編2)”をご覧ください。

今年も筑波大学でやる予定のVivado HLS 勉強会の出し物として、 AXI4 Stream 版のラプラシアンフィルタの実習用回路を作成することにした。勉強会というかセミナでは、なかなか機材が揃わないのでカメラを用意することができない。よって、画像は、C のヘッダ・ファイルに変換した画像を使用してラプラシアンフィルタをかけてディスプレイに表示した。前回までは、ZYBO だったが、今回はPYNQ を使用することにする。同様に、IP を使用して、ディスプレイに表示する回路を構成し、論理合成、インプリメンテーション、ビットストリームの生成を行っていこう。

PYNQ はボード・ファイルが存在しないので、設定用ファイルとして、Digilent 社の”PYNQ-Z1”のページから”Zynq Presets”をダウンロードして、使用する。

さて、Vivado 2017.4 を使用して、プロジェクトを作成し、ブロック・デザインを生成しよう。

Vivado 2017.4 を立ち上げて、lapfilter_axis_pynq プロジェクトを作成した。
lapfilter_axis_zybo_16_190625.png

lapfilter_axis ブロック・デザインを作成した。
PS をAdd IP し、PYNQ のPS 設定情報をロードした。PS の設定情報のロードについては、”PYNQボードでカメラ画像をリアルタイムにFASTX コーナー検出1”を参照のこと。
IP をAdd IP して接続し、ブロック・デザインを完成させた。
lapfilter_axis_zybo_17_190625.png

Address Editor を示す。
lapfilter_axis_zybo_30_190626.png

制約ファイルのlapfilter_axis.xdc を示す。

set_property IOSTANDARD TMDS_33 [get_ports TMDS_tx_0_B_p]
set_property IOSTANDARD TMDS_33 [get_ports TMDS_tx_1_R_p]
set_property IOSTANDARD TMDS_33 [get_ports TMDS_tx_2_G_p]
set_property IOSTANDARD TMDS_33 [get_ports TMDS_tx_clk_p]
set_property PACKAGE_PIN K17 [get_ports TMDS_tx_0_B_p]
set_property PACKAGE_PIN K19 [get_ports TMDS_tx_1_R_p]
set_property PACKAGE_PIN J18 [get_ports TMDS_tx_2_G_p]
set_property PACKAGE_PIN L16 [get_ports TMDS_tx_clk_p]

set_false_path -from [get_clocks clk_fpga_0] -to [get_clocks [get_clocks -of_objects [get_pins lapfilter_axis_i/bitmap_disp_cntrler_axi_master_0/inst/dvi_disp_i/BUFR_pixel_clk_io/O]]]

set_false_path -from [get_clocks [get_clocks -of_objects [get_pins lapfilter_axis_i/bitmap_disp_cntrler_axi_master_0/inst/dvi_disp_i/BUFR_pixel_clk_io/O]]] -to [get_clocks clk_fpga_0]


clk_fpga_0 と pclk_buf 間のFalse Path 制約も入れてある。

これで、論理合成、インプリメンテーション、ビットストリーム生成を行った。Project Summary を示す。
lapfilter_axis_zybo_18_190625.png

Timing のエラーが出ている。
Open Implemented Design をクリックして、タイミングの情報を見てみると、clk_fpga_0 のラプラシアンフィルタ IP 内でタイミングのエラーが出ていた。
lapfilter_axis_zybo_19_190625.png

こうなると、Vivado HLS に戻って、ラプラシアンフィルタ IP のタイミングを改善しよう。(ほんの少しのタイミング違反なので、Vivado に頑張ってもらって、タイミングを改善する方法もあるが、時間がかかる)

現在のVivado HLS でのラプラシアンフィルタ IP の性能は、CP achieved post-implementation が 9.421 ns でタイミングを満たしているが、ギリギリだ。
lapfilter_axis_zybo_20_190625.png

現在のC コードの合成時のEstimated は 10.75 ns だった。
lapfilter_axis_zybo_21_190625.png

Vivado HLS 2017.4 の Solution メニューから Solution Settings... を選択して、Synthesis を選択し、Uncertainty を 2 ns に設定した。
lapfilter_axis_zybo_22_190625.png

これで C コードの合成を行った。結果を示す。
lapfilter_axis_zybo_23_190625.png

Estimated は 8.95 ns とだいぶ改善した。
しかし、Export RTL の結果は、CP achieved post-implementation が 9.421 ns で変化が無い。
lapfilter_axis_zybo_24_190625.png

もう一度、Vivado HLS 2017.4 の Solution メニューから Solution Settings... を選択して、Synthesis を選択し、Uncertainty を 3 ns に設定した。
lapfilter_axis_zybo_25_190625.png

C コードの合成を行った。結果を示す。
lapfilter_axis_zybo_26_190625.png

Estimated は 9.40 ns となり、Uncertainty を 2 ns にしたときよりも結果が悪くなった。
もう一度、Export RTL をやってみると、やはり、CP achieved post-implementation が 9.421 ns で変化が無い。

Uncertainty を 5 ns にすると、C コードの合成結果は更に良くなったが、Export RTL をやってみると、やはり、CP achieved post-implementation が 9.421 ns で変化が無い。
lapfilter_axis_zybo_27_190625.png

いくらUncertainty を変更しても回路に変更はないようだ。Vivado HLS では時としてこういうこともある。

ということで、回路の改善は望めないので、動作周波数を変更しよう。
DMAからAXI4 Stream に変換する、またはその逆のIP のスループットは 2 クロックで 1 転送になっている。現在は 100 MHz で駆動しているので、50 MHz で 1 クロックで 1 転送しているのと同じことになる。表示する SVGA のピクセル・クロックは 40 MHz なので、40 MHz に 1 転送できれば十分である。ということで、クロックを下げる余地があることが分かる。よってクロックを 100 MHz から 90 MHz に変更しよう。

ブロック・デザインの processing_system7_0 をダブルクリックして開き、FCLK_CLK0 を 90 MHz に設定する。
lapfilter_axis_zybo_28_190625.png

これで、もう一度、論理合成、インプリメンテーション、ビットストリーム生成を行った。Project Summary を示す。
lapfilter_axis_zybo_29_190625.png

これでタイミング制約も満足した。
  1. 2019年06月26日 04:22 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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