FC2カウンター FPGAの部屋 Ultra96用PMOD拡張ボードでカメラ入力4(Vivado 2018.2のcam_test_182プロジェクト1)
FC2ブログ

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

FPGAの部屋

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

Ultra96用PMOD拡張ボードでカメラ入力4(Vivado 2018.2のcam_test_182プロジェクト1)

Ultra96用PMOD拡張ボードでカメラ入力3(DMA_Write_sFB IPの作成)”の続き。

前回はVivado HLS 2018.4 でAXI4-Stream をDDR4 SDRAM にDMA するDMA_Write sFB を作成した。これで、カメラのインターフェースIP とDMA IP が揃ったので、今回は、それらを使用して、Vivado 2018.2 で cam_test_182 プロジェクトを作成していこう。

最初にカメラのインターフェースIP の mt9d111_inf_axis だが、ODDR プリミティブを使用していて、それがZynq UltraScale+ MPSoC にないという不具合が発生していた。
これは、ODDRE1 プリミティブに変更した。
DMA_Write_sFB_10_181106.png

    // MT9D111 へのクロックを出力 (xclk)
    ODDRE1 #(
        .IS_C_INVERTED(1'b0), // Optional inversion for C
        .IS_D1_INVERTED(1'b0), // Unsupported, do not use
        .IS_D2_INVERTED(1'b0), // Unsupported, do not use
        .SIM_DEVICE("ULTRASCALE"),
        .SRVAL(1'b0) // Initializes the ODDRE1 Flip-Flops to the specified value (1'b0, 1'b1)
    ) ODDR_inst (
        .Q(xclk), // 1-bit DDR output
        .C(pclk_from_pll), // 1-bit clock input
        .D1(1'b1), // 1-bit data input (positive edge)
        .D2(1'b0), // 1-bit data input (negative edge)
        .SR(1'b0) // 1-bit reset
    );


そしてもう一度、Re-Package IP を行った。
DMA_Write_sFB_11_181106.png

Vivado 2018.2 でUltra96v1 ボード・ファイルを使用して、 cam_test_182 プロジェクトを作成した。

cam_test_182 プロジェクトのディレクトリに mt9d111_inf_axis と DMA_Write_sFB IP を追加した。
DMA_Write_sFB_12_181106.png

IP Catalog を開いて、2つのIP を追加した。
DMA_Write_sFB_13_181106.png

DMA_Write_sFB_14_181106.png

cam_test ブロック・デザインを作成し、Zynq UltraScale+ MPSoC を追加した。
DMA_Write_sFB_15_181106.png

Zynq UltraScale+ MPSoC をダブルクリックして開き、Zynq UltraScale+ MPSoC のダイアログで PL へのクロックを修正する。
Clock Configuration を選択し、Output Clocks をクリックし、Enable Manual Mode のチェックボックスを外す。
PL1 のチェックボックスを入れて、Source をIOPLL にして、Requested Freq (MHz) を 72 に変更する。
DMA_Write_sFB_16_181107.png

PS-PL Configuration をクリックし、PS-PL Interface -> Master Interface のAXI HPM0- FPD と Slave Interface の AXI HPC0 FPD にチェックを入れる。
DMA_Write_sFB_17_181107.png

これで設定は終了したので、OK ボタンをクリックする。
設定後のZynq UltraScale+ MPSoC を示す。
DMA_Write_sFB_18_181107.png

mt9d111_inf_axis と DMA_Write_sFB IP を追加し、自動配線した。
DMA_Write_sFB_19_181107.png

残っている配線を接続し、外部ポートを設定し、一応、ブロック・デザインが完成した。
DMA_Write_sFB_20_181107.png

Address Editor を示す。なお、IP 名が表示されていないが、 s_axi_lite が mt9d111_inf_axis の方だ。
DMA_Write_sFB_21_181107.png

回路は完成したが、テスト用の回路なので、Vivado Analyzer を仕込んだ。
DMA_Write_sFB_24_181107.png

HDL Wrapper を作成した。
DMA_Write_sFB_22_181107.png

最後に制約ファイルの cam_test.xdc を作成した。
DMA_Write_sFB_23_181107.png

set_property PACKAGE_PIN G7 [get_ports pclk]
set_property PACKAGE_PIN G6 [get_ports {cam_data[7]}]
set_property PACKAGE_PIN D5 [get_ports {cam_data[6]}]
set_property PACKAGE_PIN E6 [get_ports {cam_data[5]}]
set_property PACKAGE_PIN C7 [get_ports {cam_data[4]}]
set_property PACKAGE_PIN E5 [get_ports {cam_data[3]}]
set_property PACKAGE_PIN B6 [get_ports {cam_data[2]}]
set_property PACKAGE_PIN D6 [get_ports {cam_data[1]}]
set_property PACKAGE_PIN C5 [get_ports {cam_data[0]}]


set_property PACKAGE_PIN G5 [get_ports href]
set_property PACKAGE_PIN F7 [get_ports standby]
set_property PACKAGE_PIN F8 [get_ports vsync]
set_property PACKAGE_PIN A7 [get_ports xck]

set_property PACKAGE_PIN D7 [get_ports iic_rtl_scl_io]
set_property PACKAGE_PIN F6 [get_ports iic_rtl_sda_io]

create_clock -period 27.777 -name pclk -waveform {0.000 13.889} [get_ports pclk]

  1. 2018年11月07日 05:36 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/4349-e2edabed
この記事にトラックバックする(FC2ブログユーザー)