統合シミュレーションの方法
FPGAに実装するシステム全体のシミュレーションを行ってみましょう。
テストベンチとして kite_test.v を作成し、kite_top モジュールを呼び出しま
す。KITEプロセッサは、リセット後にメモリに書き込まれたプログラムを実行開
始します。ですから、テストベンチからは 100MHzのCLK と RST のみを連続して与えます。
--- kite_test.v ---
`timescale 1ns/1ns
module kite_test;
reg CLK, RST;
wire [3:0] TMDSP, TMDSN;
initial
begin
$shm_open("waves.shm");
$shm_probe("as");
end
initial
begin
#16000000;
$finish;
end
initial
begin
CLK = 0;
while( 1 )
CLK = #5 ~CLK;
end
initial
begin
RST = 1;
RST = #5 0;
RST = #30 1;
end
kite_top kite_top ( .CLK(CLK), .RESET(RST), .TMDSP(TMDSP), .TMDSN(TMDSN) );
endmodule
統合シミュレーションでは、FPGA内部でクロック生成を行うPLLモジュールや
DVI信号を生成するdvi_outモジュールを含めてシミュレーションします.
これまで,シミュレーションにはCADENCE社のVerilog-XLを用いていましたが,
PLLモジュールがVHDLで記述されているため,Verilog-XLではVHDLを含むシミュ
レーションができないため,異なるシミュレータを用います.
そこで,CADENCE社のサイクルベースシミュレータであるNCsimを用います.
NCsimはVerilog HDLとVHDLの混在した回路でもシミュレーション可能です.
NCsimを使用するためには,先ず環境設定を行うための cds.lib ファイルを用
意する必要があります.
INCLUDE /opt/XILINX/14.7/ncsim/cds.lib
シミュレータは以下のように必要なすべてのファイルを指定して実行します。
KITEプロセッサのソースが置いてあるディレクトリ内に,
dvioutモジュールのソースが dviout ディレクトリにある場合は,
以下のように実行します.
ncverilog kite_test.v kite_top.v kite.v vram.v memory.v acc.v
dec_seq.v ir.v opcode.v r12.v
alu.v ar.v fr.v pc.v
/opt/XILINX/14.7/ISE_DS/ISE/verilog/src/glbl.v
dviout/DRAM16XN.v
dviout/convert_30to15_fifo.v
dviout/dvi_encoder.v
dviout/dvi_out_native.v
dviout/encode.v
dviout/serdes_n_to_1.v
pll_module.vhd
-V93
+access+r
+nc64bit
-gui
ここで,/opt/XILINX/14.7/ISE_DS/ISE/verilog/src/glbl.v は
Xilinx社FPGAのプリミティブを使用したシミュレーションをする際に
必要なファイルです.
波形の表示プログラムである simvision は自動的に起動します.
PLLが安定しLOCKED信号が出力されると,この信号によりプロセッサのリセッ
トを解除します.
ここからプログラムが動作し始めますが,MEM_DATAOにフェッチされた命令が
バスに乗っていることが分かりあます.
RGB出力は,1100nsあたりで不定値になっていますが,これは,パイプライン
レジスタ内の初期値が不定値であったため,その不定値が2文字クロック分遅
れて出力されたためです.文字表示期間を示すDE信号が有効でない期間なので
動作に問題はありません.
また,以下の波形から文字画面表示についても,問題なく動作していることが分かります.
| Back |
CAD Home |