FC2カウンター FPGAの部屋 Vivado 2104.2でSystemVerilog をやってみた5(data_types_example4)
fc2ブログ

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

FPGAの部屋

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

Vivado 2104.2でSystemVerilog をやってみた5(data_types_example4)

今回は、”AR# 51327 Vivado 合成のデザイン アシスタント - SystemVerilog データ型のサポート”の data_types_example4.zip をやってみようと思う。

Vivado 2014.2 を立ち上げて data_t_ex4 プロジェクトを作成した。使用するボードを ZedBoard に設定した。今回のデータ型のサンプルはtype operator だ。下位モジュールのパラメータでポートのデータ・タイプを変更することができるようだ。

インプリメントを行い成功した。
SystemVerilog_23_140810.png

どんな回路になっているか概略を見てみよう。Flow Navigator -> RTL Analysis -> Schematic をクリックした。
SystemVerilog_24_140810.png

インプリメントするとDelay はなくなってしまうので、2つの adder が並んでいる。

実際のマッピングを見るために、Flow Navigator -> Synthesis -> Schematic をクリックした。
SystemVerilog_25_140810.png

これだとよくわからないので、中央部分を拡大した。
SystemVerilog_26_140810.png

入力から、IBUFを通して、adder に接続され、adder からOBUF を通して出力しているのがわかる。

テストベンチ (top_tb.sv) を作成して、Vivado Simulator でシミュレーションを行った。
SystemVerilog_27_140810.png

今回も前回同様に、Vivado 2014.2 Simulator でシミュレーションを行うことができた。

最後に、top_tb.sv を貼っておく。

`timescale 1ns / 1ps

module traffic_light_tb;
    parameter DELAY    = 5;

    logic           sensor;
    logic [15:0]    green_cnt;
    logic [15:0]    yellow_cnt;
    logic           clk;
    logic           rst;
    logic           green_light;
    logic           yellow_light;
    logic           red_light;

    traffic_light traffic_light_i (.*);

    initial begin
        clk = 1'b0;
        forever begin
            clk = #10 ~clk;
        end
    end

    initial begin
        rst = 1'b1;
        #20 rst = 1'b0;
    end

    initial begin
        sensor = 1'b0;
        green_cnt = 5;
        yellow_cnt = 10;

        @(posedge clk);    // 次のクロックへ
        #DELAY;
        @(posedge clk);    // 次のクロックへ
        #DELAY;
        @(posedge clk);    // 次のクロックへ
        #DELAY;
        sensor = 1'b1;

        @(posedge clk);    // 次のクロックへ
        #DELAY;
        green_cnt = 0;

        @(posedge clk);    // 次のクロックへ
        #DELAY;
        yellow_cnt = 0;

    end

endmodule

  1. 2014年08月10日 08:56 |
  2. SystemVerilog
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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