FC2カウンター FPGAの部屋 2019年07月24日
FC2ブログ

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

FPGAの部屋

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

Ultra96 MIPI拡張ボードに接続したPcam5C の画像をDisplayPort に表示する9(DisplayPort のクロック制約を追加)

Ultra96 MIPI拡張ボードに接続したPcam5C の画像をDisplayPort に表示する8(ブロックデザインの変更)”の続き。

前回は、active_frame をGPIO で観察できるようにブロックデザインにGPIO を追加して、論理合成、インプリメンテーション、ビットストリームの生成を行って、fpga_dp.bin を生成した。今回は、DisplayPort 用のクロックのdp_video_ref_clk の制約を追加していなかったので、追加した。

DisplayPort 用のクロックのdp_video_ref_clk の制約を追加していないことに気がついた。これはまずい。。。

ultra96_design_dp ディレクトリのultra96_design のVivado Project でOpen Synthesized Design をクリックして、Synthesized Design を立ち上げた。

Edit Timing Constraints をクリックして、 Timing Constraints ウインドウを立ち上げた。
Clocks のCreate Clock で”Double click to create a Create Clock constraint”をダブルクリックし、Create Clock ダイアログを立ち上げた。

dp_video_ref_clk を指定して、148.5 MHz に相当する 6.734 ns の制約をかけた。
MIPI_DP_55_190724.png

制約が追加された Timing Constraints ウインドウを示す。
MIPI_DP_56_190724.png

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

Timing の Worst Negative Slack (WNS) が -1.454 ns でマイナスになっている。
Open Implemented Design をクリックして、タイミング違反を見てみよう。
MIPI_DP_58_190724.png

clk_pl_0 to dp_clk と dp_clk to clk_pl_0 がタイミング違反になっている。これは、クロック間の信号のやり取りなので、対策を施してあれば無視することができる。
そこで、Clock Domain Glossing 解析をしてみよう。
Reports メニューからTiming -> Report CDC... を選択する。
Report CDC ダイアログで、From を clk_pl_0 に、To を dp_clk に設定する。
MIPI_DP_59_190724.png

CDC 解析結果だが、Unsafe が 1 件あった。
MIPI_DP_60_190724.png

シンクロナイザの前に組み合わせ回路があるということだ。組み合わせ回路の後にシンクロナイザで問題があるのだろうか?
実際のVerilog HDL コードは、シンクロナイザに前に実際に組み合わせ回路がある。選択されている部分だ。
MIPI_DP_61_190724.png

次に dp_clk から clk_pl_0 へのパスを解析する。
MIPI_DP_62_190724.png

やはり、CDC 解析結果に Unsafe が 1 件あった。
MIPI_DP_63_190724.png

同様に、シンクロナイザの前に組み合わせ回路があるということだ。
実際のVerilog HDL コードを示す。選択されている部分がそうだ。
MIPI_DP_64_190724.png

組み合わせ回路はあるが後ろのシンクロナイザで同期化してあるので、大丈夫だろう?ということで、clk_pl_0 と dp_clk 間のタイミング解析を無視することにした。

Edit Timing Constrains をクリックして、False Path を設定する。
Set False Path ダイアログで、 clk_pl_0 から dp_clk へのパスを無視する。
MIPI_DP_65_190724.png

Set False Path ダイアログで、 dp_clk から clk_pl_0 へのパスを無視する。
MIPI_DP_66_190724.png

False Path が設定された。
MIPI_DP_67_190724.png

ビットストリームの生成まで行った。Project Summary を示す。
MIPI_DP_68_190724.png

今度は、タイミング・エラーが出ていない。
  1. 2019年07月24日 05:28 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0