FC2カウンター FPGAの部屋 CMOSカメラから画像を入力してディスプレイへ出力10(シミュレーション1)
FC2ブログ

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

FPGAの部屋

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

CMOSカメラから画像を入力してディスプレイへ出力10(シミュレーション1)

CMOSカメラから画像を入力してディスプレイへ出力9(モデルの説明)”でモデルのVHDLソースを掲載したが、シミュレーション波形を載せておくことにする。
まずは、トップモジュールのCamDispCntrl_SRAM.vhd のentityを載せておく。

entity CamDispCntrl_SRAM is
    port (
        clk    : in std_logic;            -- 水晶発振器からの48MHzクロック
        cam_vsync : in std_logic;    -- CMOSカメラからのVSYNC
        cam_href : in std_logic;    -- CMOSカメラからのHREF
        cam_pclk : in std_logic;        -- CMOSカメラからのpclk
        cam_ydata : in std_logic_vector(7 downto 0); -- CMOSカメラからのYデータ
        -- cam_sio_c : out std_logic;    -- CMOSカメラのI2Cクロック
        -- cam_sio_d : inout std_logic; -- CMOSカメラのI2Cデータ
        cam_clk    : out std_logic;     -- CMOSカメラのクロック
        n_cam_reset    : out std_logic;     -- CMOSカメラのリセット(Lでリセットの予定)
        dac_red    : out std_logic_vector(7 downto 0);    -- DACへのRED出力
        dac_green : out std_logic_vector(7 downto 0); -- DACへのGREEN出力
        dac_blue : out std_logic_vector(7 downto 0); -- DACへのBLUE出力
        n_dac_blank : out std_logic; -- DACへのアクティブローBLANK
        dac_clk : out std_logic; -- DACクロック(24MHz)
        vga_vsync : out std_logic; -- VGAのVSYNC
        vga_hsync : out std_logic; -- VGAのHSYNC
        mem_data : inout std_logic_vector(15 downto 0);    -- SRAMのmemory data
        n_mem_we : out std_logic; -- SRAMのmemory write enable
        n_mem_rd : out std_logic; -- SRAMのmemory read enable
        n_mem_cs0 : out std_logic; -- SRAMのchip select 0
        n_mem_cs1 : out std_logic; -- SRAMのchip select 1
        n_mem_cs2 : out std_logic; -- SRAMのchip select 2
        n_mem_cs3 : out std_logic; -- SRAMのchip select 3
        n_mem_lowerB : out std_logic; -- SRAMのmemory lower byte enable
        n_mem_upperB : out std_logic; -- SRAMのmemory upper byte enable
        mem_addr : out std_logic_vector(17 downto 0) -- SRAMのmemory address
    );
end CamDispCntrl_SRAM;


下にそのシミュレーション波形を示す。
Camera_Disp_19_091013.png

最初のカーソルの位置が、cam_vsync が1になってから、初めてcam_href が1になって、CMOSカメラのYデータのサンプルやVGAへの映像信号の出力が開始される時点だ。cam_ydata を見ると、FF, 00, FE, 01... というように出力されている。これはOV7640_Model.vhd が、U, Y, V, Y というように出力しているので、そのうちのYデータ、つまり、00, 01... というようにキャプチャすればよい。
次にmem_data を見ると、下のn_mem_we が0 の時がCMOSカメラのYデータの書き込みで、書き込みアドレスはmem_addr に出力されている。本当は00000 からなのだが、わかりやすいようにCMOSカメラのデータを書き込むアドレスはスタートを00100 からにしてある。最初の書き込みはまだデータが出力されていないので、ダミーの書き込みで、次からが本当の書き込みとなる。2番目のn_mem_we が0 の時(CMOSカメラデータのメモリへの書き込み)は、n_mem_upperb='0', n_mem_lowerb='1' となっていて、上位8ビットへの書き込みであることが分かる。3番目のn_mem_we が0 の時は、今度はn_mem_upperb='1', n_mem_lowerb='0' となっていて、下位8ビットへの書き込みであることが分かる。それぞれ、"00XX", "XX01" を書き込んでいる。
n_mem_rd が0 の時には、IS61LV25616_model.vhd が、55AA からスタートして、上位、下位8ビットごとに+1 したデータを出力している。mem_data を見ると、n_mem_rd が0 の時のデータが"55AA", "56AB"... と上位、下位8ビットごとに+1 されているのが分かる。このデータは、VGA_Display_Controller.vhd でサンプルされてdac_red, dac_green, dac_blue に同じ値が出力されている(2番目のカーソルの位置)。
  1. 2009年10月13日 06:07 |
  2. 画像処理
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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