FC2カウンター FPGAの部屋 Avalon-MMスレーブペリフェラル3(Quartus2でのコンパイル)
FC2ブログ

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

FPGAの部屋

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

Avalon-MMスレーブペリフェラル3(Quartus2でのコンパイル)

Avalon-MMスレーブペリフェラル2(SOPC Builder)”の続き。KiCADもやりたいが、これも終わらせないと。。。
前回、SOPC Builderで7セグメントLEDのダイナミック点灯回路を追加して生成したので、今回はトップのVerilogファイルにダイナミック点灯7セグメントLEDの出力ポートを追加してコンパイルする。
まずは、前回のSOPC Builderのインスタンス時のポートは以下のようになった。

  nois_sdram nois_sdram_inst
    (
      .clk_0                                              (clk_0),
      .out_port_from_the_led_pio                          (out_port_from_the_led_pio),
      .reset_n                                            (reset_n),
      .seven_seg_a_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_a_from_the_AvalonMM_Slave_Dyna7seg_0),
      .seven_seg_b_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_b_from_the_AvalonMM_Slave_Dyna7seg_0),
      .seven_seg_c_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_c_from_the_AvalonMM_Slave_Dyna7seg_0),
      .seven_seg_d_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_d_from_the_AvalonMM_Slave_Dyna7seg_0),
      .seven_seg_digit_from_the_AvalonMM_Slave_Dyna7seg_0 (seven_seg_digit_from_the_AvalonMM_Slave_Dyna7seg_0),
      .seven_seg_dp_from_the_AvalonMM_Slave_Dyna7seg_0    (seven_seg_dp_from_the_AvalonMM_Slave_Dyna7seg_0),
      .seven_seg_e_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_e_from_the_AvalonMM_Slave_Dyna7seg_0),
      .seven_seg_f_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_f_from_the_AvalonMM_Slave_Dyna7seg_0),
      .seven_seg_g_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_g_from_the_AvalonMM_Slave_Dyna7seg_0),
      .zs_addr_from_the_sdram                             (zs_addr_from_the_sdram),
      .zs_ba_from_the_sdram                               (zs_ba_from_the_sdram),
      .zs_cas_n_from_the_sdram                            (zs_cas_n_from_the_sdram),
      .zs_cke_from_the_sdram                              (zs_cke_from_the_sdram),
      .zs_cs_n_from_the_sdram                             (zs_cs_n_from_the_sdram),
      .zs_dq_to_and_from_the_sdram                        (zs_dq_to_and_from_the_sdram),
      .zs_dqm_from_the_sdram                              (zs_dqm_from_the_sdram),
      .zs_ras_n_from_the_sdram                            (zs_ras_n_from_the_sdram),
      .zs_we_n_from_the_sdram                             (zs_we_n_from_the_sdram)
    );


AvalonMM_Slave_Dyna7seg_0の信号が増えている。これをトップのnios2_sdram_led.vに追加した。下に全ソースを示す。

// nois2_sdram_led

`default_nettype none

module nois2_sdram_led(
    input    wire         clk,
    input    wire        reset_n,
    output    wire [7:0]    led_pio, 
    output    wire        sdram_clk,
    output    wire [11:0]    SDRAM_A,
    output    wire [1:0]    SDRAM_BA,
    output    wire        SDRAM_nCAS,
    output    wire        SDRAM_CKE,
    output    wire        SDRAM_nCS,
    inout    wire [15:0]    SDRAM_D,
    output    wire [1:0]    SDRAM_DQM,
    output    wire        SDRAM_nRAS,
    output    wire        SDRAM_nWE,
    
    output    wire [7:0]    seven_seg_digit,
    output    wire        seven_seg_a,
    output    wire        seven_seg_b,
    output    wire        seven_seg_c,
    output    wire        seven_seg_d,
    output    wire        seven_seg_e,
    output    wire        seven_seg_f,
    output    wire        seven_seg_g,
    output    wire        seven_seg_dp
);
    
    wire clk_pll;
    wire pll_locked;
    reg        [10:0] count;
    wire reset_n_int_node, reset_n_int;

  nois_sdram nois_sdram_inst
    (
      .clk_0                             (clk_pll),
      .out_port_from_the_led_pio (led_pio),
      .reset_n                           (reset_n_int),
      .seven_seg_a_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_a),
      .seven_seg_b_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_b),
      .seven_seg_c_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_c),
      .seven_seg_d_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_d),
      .seven_seg_digit_from_the_AvalonMM_Slave_Dyna7seg_0 (seven_seg_digit),
      .seven_seg_dp_from_the_AvalonMM_Slave_Dyna7seg_0    (seven_seg_dp),
      .seven_seg_e_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_e),
      .seven_seg_f_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_f),
      .seven_seg_g_from_the_AvalonMM_Slave_Dyna7seg_0     (seven_seg_g),
      .zs_addr_from_the_sdram          (SDRAM_A),
      .zs_ba_from_the_sdram            (SDRAM_BA),
      .zs_cas_n_from_the_sdram         (SDRAM_nCAS),
      .zs_cke_from_the_sdram           (SDRAM_CKE),
      .zs_cs_n_from_the_sdram          (SDRAM_nCS),
      .zs_dq_to_and_from_the_sdram     (SDRAM_D),
      .zs_dqm_from_the_sdram           (SDRAM_DQM),
      .zs_ras_n_from_the_sdram         (SDRAM_nRAS),
      .zs_we_n_from_the_sdram          (SDRAM_nWE)
    );
    
    altpllpll altpllpll_inst(
        .inclk0 ( clk ),
        .c0 ( clk_pll ),
        .c1 ( sdram_clk ),
        .locked ( pll_locked )
    );
    
    always @(posedge clk) begin
        if (!reset_n)
            count <= 11'd0;
        else begin
            if (count[10]==1'b0)
                count <= count + 11'd1;
        end
    end
    assign reset_n_int_node = count[10];
    assign reset_n_int = reset_n_int_node & pll_locked;    
endmodule


Quartus?のAnalysis & Synthesisは通ったので、今度はPin Plannerでピンを設定した。下のPin Plannerの様子。
AvalonMMslave7seg_19_090829.png

これでQuartus2でデザインをコンパイルした。成功し、Total logic elementsは88%となった。
AvalonMMslave7seg_20_090829.png

現在の状態はNios2/s を実装し、SignalTap?を実装、おまけにEnable Burstビットをチェックしている状態。以前のダイナミック点灯7セグメントLED回路を入れる前の
Total logic elementsは85%なので、3%増えていることになる。下が以前のSummary。
Nios2_IDE_90_30_090819.png
  1. 2009年08月29日 05:47 |
  2. SOPC Builder
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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