FC2カウンター FPGAの部屋 Vivado HLS 2014.1で生成したラプラシアンフィルタIPをシミュレーション5(シミュレーション用プロジェクトの作製)
FC2ブログ

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

FPGAの部屋

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

Vivado HLS 2014.1で生成したラプラシアンフィルタIPをシミュレーション5(シミュレーション用プロジェクトの作製)

Vivado HLS 2014.1で生成したラプラシアンフィルタIPをシミュレーション4(mem_sim_axi_slave IP の変更2)”の続き。

これで必要なIPが揃ったので、Vivado 2014.1 で作製したラプラシアンフィルタIP をシミュレーションするためのVivado 2014.4 のプロジェクトを作製する。

Vivado 2014.4 で ZYBO 用の lap_fil_hls_14_1 プロジェクトを作製した。
lap_fil_hls_14_1_1_150311.png

lap_fil_hls_sim ブロック・デザインを作製した。完成した状態のブロック・デザインを示す。
lap_fil_hls_14_1_2_150311.png

mem_sim_axi_slave_0 の DEFAULT_VALUE は INCREMENT に設定した。
lap_fil_hls_14_1_3_150311.png

Address Editor ウインドウの内容を下に示す。
lap_fil_hls_14_1_4_150311.png

HDL Wapper ファイルを作製した。lap_fil_hls_sim_wrapper.v を下に示す。

//Copyright 1986-2014 Xilinx, Inc. All Rights Reserved.
//--------------------------------------------------------------------------------
//Tool Version: Vivado v.2014.4 (win64) Build 1071353 Tue Nov 18 18:29:27 MST 2014
//Date        : Sun Mar 08 18:59:24 2015
//Host        : Masaaki-PC running 64-bit Service Pack 1  (build 7601)
//Command     : generate_target lap_fil_hls_sim_wrapper.bd
//Design      : lap_fil_hls_sim_wrapper
//Purpose     : IP block netlist
//--------------------------------------------------------------------------------
`timescale 1 ps / 1 ps

module lap_fil_hls_sim_wrapper
   (clk,
    reset);
  input clk;
  input reset;

  wire clk;
  wire reset;

lap_fil_hls_sim lap_fil_hls_sim_i
       (.clk(clk),
        .reset(reset));
endmodule


テストベンチ lap_fil_hls_sim_wrapper_tb.v を作製した。
lap_fil_hls_14_1_5_150311.png

テストベンチ lap_fil_hls_sim_wrapper_tb.v を下に示す。

// lap_fil_hls_sim_wrapper_tb.v
// 2015/03/11
//

`default_nettype none

`timescale 100ps / 1ps

module lap_fil_hls_sim_wrapper_tb;

    wire clk;
    wire reset;

    lap_fil_hls_sim_wrapper uut (
        .clk(clk),
        .reset(reset)
    );

    // clk
    clk_gen #(
        .CLK_PERIOD(100),    // 10.0nsec, 100MHz
        .CLK_DUTY_CYCLE(0.5),
        .CLK_OFFSET(0),
        .START_STATE(1'b0)
    ) aclk_i (
        .clk_out(clk)
    );

    // reset
    reset_gen #(
        .RESET_STATE(1'b1),
        .RESET_TIME(1000)    // 100nsec
    ) RESETi (
        .reset_out(reset)
    );
    
endmodule

module clk_gen #(
    parameter         CLK_PERIOD = 100,
    parameter real    CLK_DUTY_CYCLE = 0.5,
    parameter        CLK_OFFSET = 0,
    parameter        START_STATE    = 1'b0 )
(
    output    reg        clk_out
);
    begin
        initial begin
            #CLK_OFFSET;
            forever
            begin
                clk_out = START_STATE;
                #(CLK_PERIOD-(CLK_PERIOD*CLK_DUTY_CYCLE)) clk_out = ~START_STATE;
                #(CLK_PERIOD*CLK_DUTY_CYCLE);
            end
        end
    end
endmodule

module reset_gen #(
    parameter    RESET_STATE = 1'b1,
    parameter    RESET_TIME = 100 )
(
    output    reg        reset_out
);
    begin
        initial begin
            reset_out = RESET_STATE;
            #RESET_TIME;
            reset_out = ~RESET_STATE;
        end
    end
endmodule

`default_nettype wire

  1. 2015年03月11日 04:30 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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