FC2カウンター FPGAの部屋 DVI、HDMIの勉強3(XAPP495のvtc_demo.v を試す2)
FC2ブログ

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

FPGAの部屋

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

DVI、HDMIの勉強3(XAPP495のvtc_demo.v を試す2)

DVI、HDMIの勉強2(XAPP495のvtc_demo.v を試す1)”の続き。

前回はインプリメントして、表示してみたので、今回はシミュレーションを行った。

テストベンチをvtc_demo_tb.v という名前で作成した。Verilog ソースを下に示す。

`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer:
//
// Create Date:   05:06:11 02/15/2012
// Design Name:   vtc_demo
// Module Name:   H:/HDL/FndtnISEWork/Spartan6/Atlys/xapp495/dvi_demo/vtc_demo/vtc_deom_tb.v
// Project Name:  vtc_demo
// Target Device:  
// Tool versions:  
// Description: 
//
// Verilog Test Fixture created by ISE for module: vtc_demo
//
// Dependencies:
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
////////////////////////////////////////////////////////////////////////////////

module vtc_deom_tb;

    // Inputs
    reg RSTBTN;
    reg SYS_CLK;
    reg [3:0] SW;

    // Outputs
    wire [3:0] TMDS;
    wire [3:0] TMDSB;
    wire [3:0] LED;
    wire [1:0] DEBUG;

    // Instantiate the Unit Under Test (UUT)
    vtc_demo uut (
        .RSTBTN(RSTBTN), 
        .SYS_CLK(SYS_CLK), 
        .SW(SW), 
        .TMDS(TMDS), 
        .TMDSB(TMDSB), 
        .LED(LED), 
        .DEBUG(DEBUG)
    );

    parameter PERIOD = 10; // 100MHz clock
    parameter real DUTY_CYCLE = 0.5;
    parameter OFFSET = 0;

    initial    // Clock process for SYS_CLK
        begin
        SYS_CLK = 1'b0;
        #OFFSET;
        forever begin
            SYS_CLK = 1'b0;
            #(PERIOD-(PERIOD*DUTY_CYCLE)) SYS_CLK = 1'b1;
            #(PERIOD*DUTY_CYCLE);
        end
    end
     
    initial begin
        // Initialize Inputs
        RSTBTN = 1'b1;
        SW = 0;

        // Wait 100 ns for global reset to finish
        #100;
        
        // Add stimulus here
        RSTBTN = 1'b0;

    end
      
endmodule



これで、100usec シミュレーションした結果を下に示す。
DVI_HDMI_3_120216.png

ソースを読んでみると、面白い機能があった。DCM_CLKGEN プリミティブだ。DCM_CLKGEN プリミティブを使用してスイッチの設定によってダイナミックにクロック周波数を変更することができた。動作中にスイッチの設定で、画面の解像度をVGA, SVGA, XGA, SXGA, HDTV720P に変更できる。

DCM_CLKGENの情報は、Spartan-6 FPGA クロック リソース ユーザー ガイド v1.3 (日本語版)の63ページに書いてある。それによると、PROGDATA入力からDCMの M および D 値のプログラミングのシリアルデータを入れるそうだ。これでダイナミックに出力周波数を変更することが出来る。

だいたい、vtc_demo.v の内容がわかったので、これを変更して、キャラクタ・ディスプレイ・コントローラを載せてみることにする。
  1. 2012年02月16日 05:13 |
  2. DVI, HDMI
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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