Vivadoによる統合シミュレーションの方法
FPGAに実装するシステム全体のシミュレーションを行ってみましょう。
テストベンチとして kite_test.v を作成し、kite_top モジュールを呼び出しま
す。KITEプロセッサは、リセット後にメモリに書き込まれたプログラムを実行開
始します。ですから、テストベンチからは 100MHzのCLK と RST のみを連続して与えます。
--- kite_test.v ---
`timescale 1ns/1ns
module kite_test;
reg clk, rstn;
wire hdmi_tx_clk_p, hdmi_tx_clk_n;
wire [2:0] hdmi_tx_p, hdmi_tx_n;
initial
begin
$shm_open("waves.shm");
$shm_pobe("as");
end
initial
begin
#16000000;
$finish;
end
initial
begin
clk = 0;
while( 1 )
clk = #5 ~clk;
end
initial
begin
rstn = 1;
rstn = #5 0;
rstn = #30 1;
end
kite_top kite_top (
.clk(clk), // Clock
.cpu_resetn(rstn), // Reset (Negative)
.hdmi_tx_clk_p(hdmi_tx_clk_n), // HDMI out clock (P)
.hdmi_tx_clk_n(hdmi_tx_clk_n), // HDMI out clock (N)
.hdmi_tx_p(hdmi_tx_p), // HDMI out data (P)
.hdmi_tx_n(hdmi_tx_n) // HDMI out data (N)
);
endmodule
統合シミュレーションでは、FPGA内部でクロック生成を行うPLLモジュールや
DVI信号を生成するdvi_outモジュールを含めてシミュレーションします.
これまで,シミュレーションにはCADENCE社のVerilog-XLを用いていました
が,FPGAに依存するクロックモジュールを使用する必要があるた
め,Verilog-XLではシミュレーションができません.そのため,FPGA設計ツー
ルであるVivado内のシミュレータを使用して全体のシミュレーションを行いま
す.
<<以下内容作成中>>
手順
- Vivadoを起動する
- 新規プロジェクトを作成
- プロジェクトにこれまで作成したファイルを登録
その際 "kite_test.v" は"simulation only"としてファイルを登録
- クロックウィザードを使用して,FPGAへ入力される100MHzから,プロセッ
サおよびビデオコントローラが使用する75MHzを作成するクロックモジュール
を作成する.
作成方法
- "Flow Navigator" の "PROJECT MANAGER" から"IP Catalog" を選ぶ
- "IP Catalog" から"FPGA Features and Design" の "Clocking",
"Clocking Wizard"を選ぶ.
- "Clocking Wizard" において,"Output Clocks" タブ内の
"clk_out1"の出力周波数を100.000MHzから75.000MHzに変更する.
- "OK"を押して,クロックモジュールを生成する.(次に現れるウィンドウについては"Skip"でよい.)
- 生成したモジュールを "kite_top.v" からインスタンス呼び出しする.
//
// Clock module
//
clk_wiz_0 clk_module (
.clk_in1( clk ),
.clk_out1( CLK75 ),
.reset( ~cpu_resetn ),
.locked( LOCKED )
);
- シミュレーションの実行.シミュレーション上で問題がないことを確認
する.
また,以下の波形から文字画面表示についても,問題なく動作していることが分かります.
次は、最後にFPGAへの実装処理および実機での動作確認を行います。