FC2カウンター FPGAの部屋 Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路のSCCB回路追加時のシミュレーション
FC2ブログ

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

FPGAの部屋

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

Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路のSCCB回路追加時のシミュレーション

SCCBインターフェース回路を追加した時のSpartan-3A Starter KitでCMOSカメラ・ディスプレイ回路シミュレーションをISimでやってみた。今回は、ISimの話題が主なので、カテゴリはISimとする。
だいぶ試行錯誤したが、やっとISimの画面が出てきた。

前回の”ISim単体でシミュレーション”では、vhpcompでコンパイルして、fuseでリンクして、できたISimの実行形式ファイルを実行した。今回は、ISimのvlogcompやvhpcompを使用しないで、(と行っても内部では使っていると思うが。。。)fuseコマンドのみでコンパイルを試みる。それにはプロジェクトを作成する。作成したCamDispCntrler_DDR2_Capt_SCCB_tb.prjを下に示す。

verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/addr_fifo.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/async_fifo_fall.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/async_fifo_rise.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/controller.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dcm_module.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/ddr2_cont_iob.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dm_io_pad.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dq_io_pad.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dqs_io_pad.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dqsb_io_pad.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/rddata_afifo.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/read_write_io.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/REFREQSM.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/wrdata_fifo.v
verilog work ../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/ddr2_sdram_cont.v
verilog work "../../Synth122/ipcore_dir/cam_cont_afifo.v"
verilog work "../../Synth122/ipcore_dir/cam_data_afifo.v"
verilog work ../../Sources/SWDiv.v
verilog work ../../Sources/SW_Controller.v
verilog work ../../Sources/VGA_Display_Controller.v
verilog work ../../Sources/Arbiter.v
verilog work ../../Sources/Camera_Controller.v
verilog work ../../Sources/dcm_CAM_DDR2_clk.v
verilog work ../../Sources/synchronizer.v
vhdl work ../../Sources/freqdiv.vhd
vhdl work ../../Sources/One_Transaction_SCCB.vhd
vhdl work ../../Sources/SCCB_Reg_Controller.vhd
vhdl work ../../Sources/SCCB_reg_values_ROM.vhd
verilog work ../../Sources/CamDisp_Cntrler_DDR2.v
verilog work ../OV7670_Model.v
verilog work H:\HDL\FndtnISEWork\Spartan3A_starter_kit\DDR2_SDRAM_cont_266\Simulation\256Mb_ddr2\ddr2.v
verilog work ../CamDispCntrler_DDR2_tb.v
verilog work H:\HDL\Xilinx\12.2\ISE_DS\ISE\verilog\src\glbl.v


プロジェクトを読み込んで、コンパイルとリンクするfuseコマンドは下のようになった。

H:\HDL\Xilinx\12.2\ISE_DS\ISE\bin\nt\fuse work.CamDispCntrler_DDR2_tb work.glbl -incremental -d OVL_VERLOG -i ..\ -i H:\HDL\OVL\std_ovl -d OVL_ASSERT_ON -d OVL_FINISH_OFF -L unisims_ver=H:\HDL\Xilinx\12.2\ISE_DS\ISE\verilog\hdp\nt\unisims_ver -L unimacro_ver=H:\HDL\Xilinx\12.2\ISE_DS\ISE\verilog\hdp\nt\unimacro_ver -L XilinxCoreLib_ver=H:\HDL\Xilinx\12.2\ISE_DS\ISE\verilog\hdp\nt\xilinxcorelib_ver -L accellera_ovl_vlog=H:\HDL\Xilinx\12.2\ISE_DS\ISE\verilog\hdp\nt\accellera_ovl_vlog -o CamDispCntrler_DDR2_tb.exe -prj CamDispCntrler_DDR2_Capt_SCCB_tb.prj


ライブラリへのリンク "-L" は、ライブラリへのパスを指定しないと駄目だった。(ここでFIFOジェネレータのインスタンスがないと言われて、だいぶ試行錯誤しました)
これで、下のようにISimの実行形式をGUIで起動すれば良いはずだったが、起動しなかった。(肩透かしを食らった気分。。。)

CamDispCntrler_DDR2_tb.exe -gui


(注:fuse.exeの実行とISimの実行形式の起動は、CamDispCntrler_DDR2_tb.batというバッチファイルに書いて実行しています)

電気回路/HDL/ISim 事始めのバッチモードでの起動”を見ると、”環境変数を設定するための .bat ファイルがC:\Xilinx\12.2\ISE_DS\ISE\settings32.bat にあったので、それを実行したらうまくいきました。”と書いてあったので、やってみたらISimが起動した。(やったー。。。武内さん、ありがとうございます) (2010/9/28追記:もっとうまい方法が見つかったので、”コマンドプロンプトからISimが起動できない”に書いた)
起動した時のログを下に示す。

Running: H:\HDL\Xilinx\12.2\ISE_DS\ISE\bin\nt\unwrapped\fuse.exe work.CamDispCnt
rler_DDR2_tb work.glbl -incremental -d OVL_VERLOG -i ..\ -i H:\HDL\OVL\std_ovl -
d OVL_ASSERT_ON -d OVL_FINISH_OFF -L unisims_ver=H:\HDL\Xilinx\12.2\ISE_DS\ISE\v
erilog\hdp\nt\unisims_ver -L unimacro_ver=H:\HDL\Xilinx\12.2\ISE_DS\ISE\verilog\
hdp\nt\unimacro_ver -L XilinxCoreLib_ver=H:\HDL\Xilinx\12.2\ISE_DS\ISE\verilog\h
dp\nt\xilinxcorelib_ver -L accellera_ovl_vlog=H:\HDL\Xilinx\12.2\ISE_DS\ISE\veri
log\hdp\nt\accellera_ovl_vlog -o CamDispCntrler_DDR2_tb.exe -prj CamDispCntrler_
DDR2_Capt_SCCB_tb.prj
ISim M.63c (signature 0xb869381d)
Number of CPUs detected in this system: 2
Turning on mult-threading, number of parallel sub-compilation jobs: 4
Determining compilation order of HDL files
WARNING:Simulator:1010 - One or more environment variables have been detected wh
ich affect the operation of the C compiler. These are typically not set in stand
ard installations and are not tested by Xilinx, however they may be appropriate
for your system, so the flow will attempt to continue. If errors occur, try run
ning fuse with the "-mt off -v 1" switches to see more information from the C co
mpiler. The following environment variables have been detected:
C_INCLUDE_PATH
LIBRARY_PATH
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/ad
dr_fifo.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/as
ync_fifo_fall.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/as
ync_fifo_rise.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/co
ntroller.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dc
m_module.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dd
r2_cont_iob.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dm
_io_pad.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dq
_io_pad.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dq
s_io_pad.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dq
sb_io_pad.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/rd
data_afifo.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/re
ad_write_io.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/RE
FREQSM.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/wr
data_fifo.v\" into library work
Analyzing Verilog file \"../../../DDR2_SDRAM_cont_266/Sources/ddr2_sdram_cont/dd
r2_sdram_cont.v\" into library work
Analyzing Verilog file \"../../Synth122/ipcore_dir/cam_cont_afifo.v\" into libra
ry work
Analyzing Verilog file \"../../Synth122/ipcore_dir/cam_data_afifo.v\" into libra
ry work
Analyzing Verilog file \"../../Sources/SWDiv.v\" into library work
Analyzing Verilog file \"../../Sources/SW_Controller.v\" into library work
Analyzing Verilog file \"../../Sources/VGA_Display_Controller.v\" into library w
ork
Analyzing Verilog file \"../../Sources/Arbiter.v\" into library work
Analyzing Verilog file \"../../Sources/Camera_Controller.v\" into library work
Analyzing Verilog file \"../../Sources/dcm_CAM_DDR2_clk.v\" into library work
Analyzing Verilog file \"../../Sources/synchronizer.v\" into library work
Analyzing Verilog file \"../../Sources/CamDisp_Cntrler_DDR2.v\" into library wor
k
Analyzing Verilog file \"../OV7670_Model.v\" into library work
Analyzing Verilog file \"H:\HDL\FndtnISEWork\Spartan3A_starter_kit\DDR2_SDRAM_co
nt_266\Simulation\256Mb_ddr2\ddr2.v\" into library work
Analyzing Verilog file \"../CamDispCntrler_DDR2_tb.v\" into library work
Analyzing Verilog file \"H:\HDL\Xilinx\12.2\ISE_DS\ISE\verilog\src\glbl.v\" into
library work
Parsing VHDL file "../../Sources/freqdiv.vhd" into library work
Parsing VHDL file "../../Sources/One_Transaction_SCCB.vhd" into library work
Parsing VHDL file "../../Sources/SCCB_Reg_Controller.vhd" into library work
Parsing VHDL file "../../Sources/SCCB_reg_values_ROM.vhd" into library work
Starting static elaboration
WARNING:HDLCompiler:1016 - "../CamDispCntrler_DDR2_tb.v" Line 65: Port addr_is_z
ero is not connected to this instance
Completed static elaboration
Fuse Memory Usage: 69056 KB
Fuse CPU Usage: 530 ms
Using precompiled package standard from library std
Using precompiled package std_logic_1164 from library ieee
Using precompiled package std_logic_arith from library ieee
Using precompiled package std_logic_unsigned from library ieee
Using precompiled package textio from library std
Using precompiled package std_logic_textio from library ieee
Compiling module dcm_clock_divide_by_2
Compiling module dcm_maximum_period_check(clock_n...
Compiling module dcm_maximum_period_check(clock_n...
Compiling module dcm_clock_lost
Compiling module DCM(CLKDV_DIVIDE=2.0,CLKFX_DIVID...
Compiling module BUFG
Compiling module dcm_CAM_DDR2_clk_default
Compiling module ODDR2_default
Compiling module DCM(CLKDV_DIVIDE=16.0,CLKIN_PERI...
Compiling module dcm_module_default
Compiling module refreqsm
Compiling module controller_default
Compiling module ODDR2(SRTYPE="ASYNC")
Compiling module IOBUF
Compiling module dq_io_pad
Compiling module dqs_io_pad
Compiling module dqsb_io_pad
Compiling module OBUF
Compiling module dm_io_pad
Compiling module ddr2_cont_iob_default
Compiling module RAM16X1D
Compiling module async_fifo_rise
Compiling module async_fifo_fall
Compiling module rddata_afifo_default
Compiling module read_write_io_default
Compiling module addr_fifo_default
Compiling module wrdata_fifo_default
Compiling module ddr2_sdram_cont_default
Compiling module fifo_generator_v6_1_bhv_ver_as(C...
Compiling module fifo_generator_v6_1_bhv_ver_prel...
Compiling module FIFO_GENERATOR_V6_1(C_DATA_COUNT...
Compiling module cam_cont_afifo
Compiling module Camera_Controller
Compiling module fifo_generator_v6_1_bhv_ver_as(C...
Compiling module fifo_generator_v6_1_bhv_ver_prel...
Compiling module FIFO_GENERATOR_V6_1(C_DATA_COUNT...
Compiling module cam_data_afifo
Compiling module VGA_Display_Controller(VGA_CON_S...
Compiling module Arbiter_default
Compiling module synchronizer
Compiling module SWDiv(clk_frequency=25000)
Compiling module SW_Controller
Compiling module CamDisp_Cntrler_DDR2_default
Compiling module ddr2_default
Compiling module OV7670_Model(H_ACTIVE_VIDEO=20,H...
Compiling module CamDispCntrler_DDR2_tb
Compiling module glbl
Compiling package vcomponents
Compiling architecture rtl of entity freqdiv [\FreqDiv(125)\]
Compiling architecture rtl of entity sccb_reg_values_rom [sccb_reg_values_rom_de
fault]
Compiling architecture rtl of entity one_transaction_sccb [one_transaction_sccb_
default]
Compiling architecture rtl of entity sccb_reg_controller [sccb_reg_controller_de
fault]
Time Resolution for simulation is 1ps.
Waiting for 1 sub-compilation(s) to finish...
Compiled 15 VHDL Units
Compiled 48 Verilog Units
Built simulation executable CamDispCntrler_DDR2_tb.exe
Fuse Memory Usage: 87812 KB
Fuse CPU Usage: 1734 ms


ISimが起動したので、信号を波形ウインドウに入れて、コンソールからrun allを入力して、0usecから500usecまでシミュレーションを行った。下にISimの波形を示す。
CamDispCntrler_DDR2_45_100908.png

cam_sio_cとcam_sio_dがSCCBの入出力だ。クロック周波数は100KHzになっている。これで、ISimによるVerilog、VHDL混在シミュレーションは終了とする。

後はRGB444のSCCBの設定とRGB444を受ける回路に書き換える。
  1. 2010年09月08日 06:01 |
  2. ISim
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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