ビデオモジュールおよびDVIエンコーダモジュールの取付け


作成したビデオモジュールを作成する組込みシステムに追加します。
下図のように XPS ウィンドウの "IP Catalog" 内に登録されたビデオモジュールをマウスの左クリックで選択した後、
マウスの右をクリックしてメニューを表示させ,"Add IP" をマウスの左で選択します.




"Add IP Instance to Design" という小さなウィンドウが立上りますが,これはOKを押します.
つぎに,以下のような "XPS Core Config" ウィンドウが立上ります.



ビデオモジュールを取り付ける際に使用されているメモリの配置場所が既にプロセッサに取り付けられているメモリと同じ場所にならないようにする必要があります.

"C_MEM0_BASEADDR" を 0x85000000 へ
"C_MEM0_HIGHADDR" を 0x8500ffff へ変更しを押します。
これにより"Bus Interfaces" のところに "vga_0" としてビデオモジュールが追加されます。



次に、"Bus Interfaces" の "vga_0" の前にある □+ をクリックします。
下図のように "Bus Name" の所が "No Connection" となっており、
まだプロセッサと正しく接続されていません。



下図のように、"No Connection"を"mb_plb"となるようにします。"PLB" とは "Processor Local Bus"のことでプロセサに直接接続されるバスを意味していま す。




DVIエンコーダモジュールの取り付け

同様にして,DVIエンコーダモジュールを追加します.
"IP Catalog" 内に登録されたDVIエンコーダモジュールIPをマウスの左クリックで選択した後、
マウスの右をクリックしてメニューを表示させ,"Add IP" をマウスの左で選択します.



"Add IP Instance to Design" という小さなウィンドウが立上りますが,これはOKを押します.
つぎに,"XPS Core Config" ウィンドウが立上りますが,今回は特に設定る項目がありませんのでそのままOKを押します. 下図のように,DVIエンコーダモジュールが"dvi_out_native"として追加されます.



次に、"Bus Interfaces" の "dvi_out_native_0" の前にある □+ をクリックします。
上図のように "Bus Name" の所が "No Connection" となっており、
"DVI_VIDEO_IN"の配線がまだ"vga"モジュールと正しく接続されていません。

下図のように、"No Connection"を"vga_0_DVI_VIDEO_OUT"となるようにします。
これにより"vga"モジュールの"DVI_VIDEO_OUT"がDVIエンコーダモジュールの"DVI_VIDEO_IN"に接続されます.



次に、"Ports"タブにおいて入出力端子の設定を行います.
"External Ports" と "dvi_out_native_0" の前にある □+ をクリックします。
"dvi_out_native_0" から液晶モニタへの出力となるTMDS, TMDSBの出力端子が表示されますが、
"Connected Port" の所に何も表示されておらず,何も接続されていません。



下図のように "dvi_out_native_0" の "Connected Port" の所でマウスの右を押し,
"Make External" を選択します。



選択した部分が自動的に付けられた配線名に替わるとともに、
"External Ports" の所にも "dvi_out_native_0_信号名" の出力端子が追加されます。




クロック等の配線

今回のシステムでは,クロックとして 75MHz, 150MHz, 750MHz の3つを使用します.
初期設定のままでは75MHzのクロックのみしか用意されていないため,あと2つのクロックを用意します.
"clock_generator_0"のところで"Configure IP..."を起動します.



下図のような"XPS Core Config"ウィンドウが立上ります.



"CLKOUT1"と"CLKOUT2"の設定は,以下のように"CLKOUT1"の"Required Frequency"が0Hz,"CLKOUT2"については選択できない状態となっています.



これを,以下のように"CLKOUT1"の"Required Frequency"を750,000,000Hz (750MHz),また"CLKOUT1"の"Buffered"はFALSEにします。
次に,"CLKOUT2"が入力できるようになるので、"Required Frequency"を150,000,000Hz (150MHz)にします。
なお"CLKOUT2"の"Buffered"は"TRUE"のままにします。
以上でOKを押します.



これでクロック生成モジュールの設定はできましたが,クロックの配線はまだ接続されていません.
下図のように"dvi_out_native_0"の"clkx10in"を"clock_generator_0::CLKOUT1"に設定します.
同様に,"dvi_out_native_0"の"clkx2in"を"clock_generator_0::CLKOUT2"に, "dvi_out_native_0"の"clkin"を"clock_generator_0::CLKOUT0"に設定します.





また,"dvi_out_native_0"には,リセット信号である"reset",および, クロックが正常に動作していることを知るための入力信号である"pll_lckd"も未配線で残っています.
上図のように,"reset"はリセットモジュールの出力信号である"proc_sys_reset_0::MB_Reset"に,
"pll_lckd"はクロックモジュールの出力信号である"clock_genetator_0::LOCKED"に配線します.

アドレス空間の確認

次に、"Addresses" タブを選択します.
ビデオモジュールがアドレス 0x85000000-0x8500FFFF までの64kバイトのメモリ空間に割当てられていることを確認します.
また,押しボタンスイッチ"Push_buttons_5Bits"がアドレス 0x81400000-0x8140FFFF までの64kバイトのメモリ空間に割当てられていることを確認します.
このアドレスの先頭番地は,後程プログラムを作成する際に必要になります.




FPGA出力端子の設定

"dvi_out_native_0" の出力端子 TMDS および TMDSB は,FPGAから出力として取り出し液晶モニタに接続できるようにする必要があります.
出力端子 TMDS および TMDSB をFPGAの物理端子に割り付けるための設定を記述します。

"Project" タブを選択し "UCF File: data/life.ucf" の所をダブルクリックします。
"life.ucf"ファイルの編集画面が起動します.



ファイルの最終行の所に以下の記述を追加します。
## for DVI Video
NET "dvi_out_native_0_TMDS_pin(0)"  LOC = "D8"  | IOSTANDARD = TMDS_33; # Blue
NET "dvi_out_native_0_TMDSB_pin(0)" LOC = "C8"  | IOSTANDARD = TMDS_33;
NET "dvi_out_native_0_TMDS_pin(1)"  LOC = "B8"  | IOSTANDARD = TMDS_33; # Red
NET "dvi_out_native_0_TMDSB_pin(1)" LOC = "A8"  | IOSTANDARD = TMDS_33;
NET "dvi_out_native_0_TMDS_pin(2)"  LOC = "C7"  | IOSTANDARD = TMDS_33; # Green
NET "dvi_out_native_0_TMDSB_pin(2)" LOC = "A7"  | IOSTANDARD = TMDS_33;
NET "dvi_out_native_0_TMDS_pin(3)"  LOC = "B6"  | IOSTANDARD = TMDS_33; # Clock
NET "dvi_out_native_0_TMDSB_pin(3)" LOC = "A6"  | IOSTANDARD = TMDS_33;
INST "dvi_out_native_0/dvi_out_native_0/ioclk_buf"   LOC = "BUFPLL_X1Y4";
追加した後は、以下のようになります.
を押してファイルを保存します。



以上で、システムのハードウェア設計は終了しました。
次は、 組込みシステムの実装処理 です。
| Back | Top | Next |