FC2カウンター FPGAの部屋 Altium Designer
FC2ブログ

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

FPGAの部屋

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

ビットマップ・ディスプレイ・コントローラの作製16(全体シミュレーション)

ビットマップ・ディスプレイ・コントローラの作製15(デバック2)”の続き。

今回はだいぶ動かすにに苦労している。夏休みでお盆の行事をこなしながら、あいた時間にやっているが、なかなかうまく行かない。
今回はXPS全体でシミュレーションを行うことにした。PlanAheadでのシミュレーションのやり方は、”PlanAhead14.1でChipScope Proを試してみた1(ChipScope の設定)”、”PlanAhead14.1でChipScope Proを試してみた2(ChipScope Analyzer)”を参照。
早速、テストベンチを書いて、DDR2 SDRAMのモデルを接続した。DDR2 SDMRAMのモデルは以前使用したマイクロン社のモデルを借用した。

PlanAhead のシミュレーションの設定を下に示す。
BitMapDispCont_114_120816.png

VERILOG_DEFINE をsg25E; x16 に設定している。これはDDR2 SDRAMモデルのスピードグレードとデータバス幅の設定だ。DDR2 SDRAMのデータバス幅は16ビットに設定している。
テストベンチ (tb_system_stub.v) を下に示す。

//-----------------------------------------------------------------------------
// testbench.v
//-----------------------------------------------------------------------------

`timescale 1 ps / 100 fs

// START USER CODE (Do not remove this line)

// User: Put your directives here. Code in this
//       section will not be overwritten.

// END USER CODE (Do not remove this line)

module testbench
  (
  );

  `include "simulation/ddr2_parameters.vh";

  // START USER CODE (Do not remove this line)

  // User: Put your signals here. Code in this
  //       section will not be overwritten.

  // END USER CODE (Do not remove this line)

  real CLK_PERIOD = 10000.000000;
  real RESET_LENGTH = 160000;

  // Internal signals

  reg CLK;
  wire [0:7] Led;
  reg RESET;
    wire mcbx_dram_we_n;
    wire mcbx_dram_udm;
    wire mcbx_dram_ras_n;
    wire mcbx_dram_odt;
    wire mcbx_dram_ldm;
    wire mcbx_dram_clk_n;
    wire mcbx_dram_clk;
    wire mcbx_dram_cke;
    wire mcbx_dram_cas_n;
    wire [2:0] mcbx_dram_ba;
    wire [12:0] mcbx_dram_addr;
    reg axi_uartlite_0_RX_pin;
    wire axi_uartlite_0_TX_pin;
    wire zio;
    wire rzq;

    wire    [DQS_BITS-1:0] ddr2_dqs_fpga, ddr2_dqs_sdram;
    wire    [DQS_BITS-1:0] ddr2_dqs_n_fpga, ddr2_dqs_n_sdram;
    wire    [DQ_BITS-1:0] ddr2_dq_fpga, ddr2_dq_sdram;
    reg        [DQS_BITS-1:0] ddr2_dqs_fpgan, ddr2_dqs_sdramn;
    reg        [DQS_BITS-1:0] ddr2_dqs_n_fpgan, ddr2_dqs_n_sdramn;
    reg        [DQ_BITS-1:0] ddr2_dq_fpgan, ddr2_dq_sdramn;
    wire    [2:0] cmd;
    reg        sdram_clk;
    reg        sdram_clkb;
    reg        [12:0] sdram_address;
    reg        [2:0] sdram_ba;
    reg        sdram_cke;
    reg        sdram_rasb, sdram_casb, sdram_web;
    reg        [1:0] sdram_dmn;
    wire    [1:0] sdram_dm;
    reg        sdram_odt;
    wire        reset;
    reg        enable_o;

  system_stub
    dut (
      .RESET ( RESET ),
      .Led ( Led ),
      .CLK ( CLK ),
      .axi_uartlite_0_RX_pin ( axi_uartlite_0_RX_pin ),
      .axi_uartlite_0_TX_pin ( axi_uartlite_0_TX_pin ),
      .axi_s6_ddrx_0_mcbx_dram_addr ( mcbx_dram_addr ),
      .axi_s6_ddrx_0_mcbx_dram_ba ( mcbx_dram_ba ),
      .axi_s6_ddrx_0_mcbx_dram_ras_n ( mcbx_dram_ras_n ),
      .axi_s6_ddrx_0_mcbx_dram_cas_n ( mcbx_dram_cas_n ),
      .axi_s6_ddrx_0_mcbx_dram_we_n ( mcbx_dram_we_n ),
      .axi_s6_ddrx_0_mcbx_dram_cke ( mcbx_dram_cke ),
      .axi_s6_ddrx_0_mcbx_dram_clk ( mcbx_dram_clk ),
      .axi_s6_ddrx_0_mcbx_dram_clk_n ( mcbx_dram_clk_n ),
      .axi_s6_ddrx_0_mcbx_dram_dq ( ddr2_dq_fpga ),
      .axi_s6_ddrx_0_mcbx_dram_dqs ( ddr2_dqs_fpga[0] ),
      .axi_s6_ddrx_0_mcbx_dram_dqs_n ( ddr2_dqs_n_fpga[0] ),
      .axi_s6_ddrx_0_mcbx_dram_udqs ( ddr2_dqs_fpga[1] ),
      .axi_s6_ddrx_0_mcbx_dram_udqs_n ( ddr2_dqs_n_fpga[1] ),
      .axi_s6_ddrx_0_mcbx_dram_udm ( mcbx_dram_udm ),
      .axi_s6_ddrx_0_mcbx_dram_ldm ( mcbx_dram_ldm ),
      .axi_s6_ddrx_0_mcbx_dram_odt ( mcbx_dram_odt ),
      .axi_s6_ddrx_0_rzq ( rzq ),
      .axi_s6_ddrx_0_zio ( zio )
    );

  // Clock generator for CLK

  initial
    begin
      CLK = 1'b0;
      forever #(CLK_PERIOD/2.00)
        CLK = ~CLK;
    end

  // Reset Generator for RESET

  initial
    begin
      RESET = 1'b0;
      #(RESET_LENGTH) RESET = ~RESET;
    end

  // START USER CODE (Do not remove this line)

  // User: Put your stimulus here. Code in this
  //       section will not be overwritten.
    parameter DELAY_TIME = 2000; // 2nsec
    
    assign cmd = {mcbx_dram_ras_n, mcbx_dram_cas_n, mcbx_dram_we_n};
    
    assign reset = ~RESET;
    always @(posedge mcbx_dram_clk, posedge reset)
        if (reset)
            enable_o <= 1'b0;
        else
            if (cmd==3'b100)
                enable_o <= 1'b0;
            else if (cmd==3'b101)
                enable_o <= 1'b1;

    always @ *
        if (enable_o == 1'b1)
            ddr2_dqs_fpgan <= #DELAY_TIME ddr2_dqs_sdram;
        else
            ddr2_dqs_fpgan <= #DELAY_TIME {DQS_BITS{1'bz}};
    
    always @ *
        if (enable_o == 1'b1)
            ddr2_dqs_n_fpgan <= #DELAY_TIME ddr2_dqs_n_sdram;
        else
            ddr2_dqs_n_fpgan <= #DELAY_TIME {DQS_BITS{1'bz}};
    
    always @ *
        if (enable_o == 1'b1)
            ddr2_dq_fpgan <= #DELAY_TIME ddr2_dq_sdram;
        else
            ddr2_dq_fpgan <= #DELAY_TIME {DQ_BITS{1'bz}};

    always @ *
        if (enable_o == 1'b0)
            ddr2_dqs_sdramn <= #DELAY_TIME ddr2_dqs_fpga;
        else
            ddr2_dqs_sdramn <= #DELAY_TIME {DQS_BITS{1'bz}};
    
    always @ *
        if (enable_o == 1'b0)
            ddr2_dqs_n_sdramn <= #DELAY_TIME ddr2_dqs_n_fpga;
        else
            ddr2_dqs_n_sdramn <= #DELAY_TIME {DQS_BITS{1'bz}};
    
    always @ *
        if (enable_o == 1'b0)
            ddr2_dq_sdramn <= #DELAY_TIME ddr2_dq_fpga;
        else
            ddr2_dq_sdramn <= #DELAY_TIME {DQ_BITS{1'bz}};
    
    assign ddr2_dqs_fpga = ddr2_dqs_fpgan;
    assign ddr2_dqs_n_fpga = ddr2_dqs_n_fpgan;
    assign ddr2_dq_fpga = ddr2_dq_fpgan;
    assign ddr2_dqs_sdram = ddr2_dqs_sdramn;
    assign ddr2_dqs_n_sdram = ddr2_dqs_n_sdramn;
    assign ddr2_dq_sdram = ddr2_dq_sdramn;

    always @ * begin
        sdram_clk <= #DELAY_TIME mcbx_dram_clk;
        sdram_clkb <= #DELAY_TIME mcbx_dram_clk_n;
        sdram_address <= #DELAY_TIME mcbx_dram_addr;
        sdram_ba <= #DELAY_TIME mcbx_dram_ba;
        sdram_cke <= #DELAY_TIME mcbx_dram_cke;
        sdram_rasb <= #DELAY_TIME mcbx_dram_ras_n;
        sdram_casb <= #DELAY_TIME mcbx_dram_cas_n;
        sdram_web <= #DELAY_TIME mcbx_dram_we_n;
        sdram_dmn <= #DELAY_TIME {mcbx_dram_udm, mcbx_dram_ldm};
        sdram_odt <= #DELAY_TIME mcbx_dram_odt;
    end
    assign sdram_dm = sdram_dmn;
    
    ddr2 MT47H64M16_25E(
        .dq(ddr2_dq_sdram),
        .dqs(ddr2_dqs_sdram),
        .dqs_n(ddr2_dqs_n_sdram),
        .rdqs_n(),
        .addr(sdram_address),
        .ba(sdram_ba),
        .ck(sdram_clk),
        .ck_n(sdram_clkb),
        .cke(sdram_cke),
        .cs_n(1'b0),
        .ras_n(sdram_rasb),
        .cas_n(sdram_casb),
        .we_n(sdram_web),
        .dm_rdqs(sdram_dm),
        .odt(sdram_odt)
    );

  // END USER CODE (Do not remove this line)

endmodule


下にISimの結果を示す。
BitMapDispCont_115_120816.png

axi_s6_ddrx_0 のAXI4スレーブバスの信号が見えている。約57.3usec 後にuo_done_cal が1になってDDR2 SDRAMのキャリブレーションが終了し、ビットマップ・ディスプレイ・コントローラからAXI4 Readアクセスが開始されている。これは正常な動作だ。
ビットマップ・ディスプレイ・コントローラのエンジン部分 (bitmap_disp_engine.v) を見ても、正常に動作しているのがわかる。
BitMapDispCont_116_120816.png

シミュレーションでも正常だと、何が悪いのだろうか?そう言えば、MCBの外部入出力ピンのIOSTANDARDの設定をXPSのMIG設定にお任せしていて、自分で書いたUCF で SSTL18_II に設定してなかったと思うので、これを設定してみようと思う。
  1. 2012年08月16日 05:14 |
  2. AXI4 Master IPの作製
  3. | トラックバック:0
  4. | コメント:0

ビットマップ・ディスプレイ・コントローラの作製15(デバック2)

ビットマップ・ディスプレイ・コントローラの作製14(デバック1)”の続き。

前回デバックは出来るようになった。ChipScopeで見るとMCBへのアクセスが出来ていないようだがまだ良くわからない。
今回はaxi2axi_connector_0 を削除してみることにした。

・axi2axi_connector_0 を右クリックして、右クリックメニューからDelete Instance を選択した。
BitMapDispCont_110_120813.png

・axi2axi_connector_0 を削除した。
BitMapDispCont_111_120813.png

・AXI4バスを分離したため、axi_s6_ddrx_0 はアドレスが分離された。
BitMapDispCont_112_120813.png

これで論理合成、インプリメントしてみたが、やはり同様に動作しない。

ChipScopeで観察する信号を変えてやってみた。ChipScope のWaveウインドウを下に示す。
BitMapDispCont_113_120813.png

hard_done_cal が0のままだった。これはたぶんMCBの初期化時のキャリブレーションのDONEじゃないか?と思う。そうだった場合は、MCBが使えるようになっていないのかもしれない?(”ar37425のAXI4 Masterサンプルを試す5(シミュレーション2)”参照)
  1. 2012年08月14日 04:40 |
  2. AXI4 Master IPの作製
  3. | トラックバック:0
  4. | コメント:0

ビットマップ・ディスプレイ・コントローラの作製14(デバック1)

ビットマップ・ディスプレイ・コントローラの作製13(実機で動作1)”の続き。

前回、ビットマップ・ディスプレイ・コントローラが動作しなかったので、ChipScopeでデバックをすることにしたが、すでにchipscope_axi_monitor_0 が入っていたので、このIPとchipscpe_icon_0 を削除してから、新たにPlanAheadでChipScope を入れた。(”PlanAhead14.1でChipScope Proを試してみた1(ChipScope の設定)”、”PlanAhead14.1でChipScope Proを試してみた2(ChipScope Analyzer)”を参照)
そうすると、PlanAheadで論理合成して、インプリメントすると、エラーで止まってしまう。
BitMapDispCont_101_120812.png

[Designutils 20-396] Could not read top design file ["H:/HDL/FndtnISEWork/Spartan6/Atlys/test/Atlys_EDK_test_PA_142/Atlys_EDK_test_PA.data/sources_1/cs/chipscope_axi_monitor_0/U_ILA_1/chipscope_axi_monitor_0/U_ILA.ngc"] because this file does not exist


すでにchipscope axi monitor は削除されているのだが、どこかのスクリプトに残ってしまっているみたいだった。もう一度、chipscope axi monitor を入れてみたが、エラーは解決されなかった。
トップフォルダ以下を”cs/chipscope_axi_monitor_0/U_ILA_1/chipscope_axi_monitor_0”のキーワードで検索してみたところ、”Atlys_EDK_test_PA_142\Atlys_EDK_test_PA.data\sources_1”フォルダのchipscope.xml ファイルに記述を見つけた。
BitMapDispCont_102_120812.png

BitMapDispCont_103_120812.png

Atlys_EDK_test_PA_142\Atlys_EDK_test_PA.data\sources_1フォルダ下のchipscope.xml とcs フォルダを削除してみることにした。
PlanAhead を落としてから、上のファイルを削除した。
PlanAhead を起動すると、chipscope.xmlがないとダイアログが出てきてしまった。
BitMapDispCont_104_120812.png

構わず、Synthesized Design を開くと開けた。上のエラーが出ている時はSynthesized Design が開けなかった。
ここから、ToolsメニューのSet up ChipScope... を選択して、ChipScope を設定する。
BitMapDispCont_105_120812.png

ChipScope の信号を設定した。
BitMapDispCont_106_120812.png

インプリメントを開始して、Synthesized Design をセーブすると、Atlys_EDK_test_PA_142\Atlys_EDK_test_PA.data\sources_1フォルダにchipscope.xml が生成された。
BitMapDispCont_107_120812.png

ビットストリームも生成できました~~~。嬉しいです。いくらやってもバグが直らなくてどうしようかと思っていたのですが、良かったです。ツイッターで@apulo_さんにxml ファイルでソースファイルを管理していると教えてもらったのも大きかった。ありがとうございました。

インプリメントが終了したら、csフォルダも出来ていた。
BitMapDispCont_109_120812.png

さて、インプリメント出来たのは良いのだが、XSTのFMaxが86.401MHz、Implementation で42.316MHzと出ていて、タイミング制約は満足できているのか心配になった。
Flow Navigator -> Implementation -> Implemented Design -> Run TRCE を実行して、タイミング解析を実行したところ、クロック周期は10nsec 以内に収まっていて問題ないようだった。それでは、XSTやImplementation のFMax は何なんだろうか?
BitMapDispCont_108_120812.png

  1. 2012年08月12日 07:14 |
  2. AXI4 Master IPの作製
  3. | トラックバック:0
  4. | コメント:0

ビットマップ・ディスプレイ・コントローラの作製13(実機で動作1)

ビットマップ・ディスプレイ・コントローラの作製12(BitMapDCのインプリメント1)”の続き。

インプリメント後、Atlysボードの電源をONして、iMPACTでコンフィギュレーションしてみた。HDMIコネクタを液晶ディスプレイに接続したところ、No Signal になってしまった。
ビットマップ・ディスプレイ・コントローラのDDR2 SDRAMへアクセスするときのアドレスが0になっていた。DDR2 SDRAMのアドレスは、axi2axi_connector_0 でmicroblaze_0 につながっている関係上、0x20000000 のアドレスが付いている。よって、ビットマップ・ディスプレイ・コントローラのDDR2 SDRAMアクセス用アドレスを0x20000000とした。
それでも、DDR2 SDRAMコントローラ(MCB) のAXI4バスにChipScope AXI Monitor を入れてあるのでChipScope Analyzer で確かめてみた。
結果としては、MCBへのアクセスが無かった。そんなはずは無いのだが、下はARVALIDでトリガが掛からないので、フリーランのChipScopeのキャプチャデータだ。
BitMapDispCont_97_120810.png

ビットマップ・ディスプレイ・コントローラの単体シミュレーションでは、AXI4バスにRead Transaction が問題なく出ていた。(”AXI4バスに接続するビットマップ・ディスプレイ・コントローラの作製3(単体シミュレーション)”を参照)
次は、ビットマップ・ディスプレイ・コントローラのAXI4バスにChipScope AXI Monitor を仕掛けて見てみようと思う。
  1. 2012年08月10日 07:04 |
  2. AXI4 Master IPの作製
  3. | トラックバック:0
  4. | コメント:0

ビットマップ・ディスプレイ・コントローラの作製12(BitMapDCのインプリメント1)

ビットマップ・ディスプレイ・コントローラの作製11(BitMapDCの接続3)”の続き。

今回はPlanAheadに戻ってインプリメントしようと思う。

・XPSを閉じる。

・PlanAheadでsystem.xmp (XPS Project) を右クリックして、右クリックメニューから、Create Top HDL を行う。(TMDS信号を追加した)

・system_stub.ucf を開いて、TMDS信号の制約を追加した。下に制約を示す。

# Blue
NET "TMDS_tx_0_B_p" IOSTANDARD = TMDS_33;
NET "TMDS_tx_0_B_p" LOC = D8;
NET "TMDS_tx_0_B_n" IOSTANDARD = TMDS_33;
NET "TMDS_tx_0_B_n" LOC = C8;
# Red
NET "TMDS_tx_1_R_p" IOSTANDARD = TMDS_33;
NET "TMDS_tx_1_R_p" LOC = C7;
NET "TMDS_tx_1_R_n" IOSTANDARD = TMDS_33;
NET "TMDS_tx_1_R_n" LOC = A7;
# Green
NET "TMDS_tx_2_G_p" IOSTANDARD = TMDS_33;
NET "TMDS_tx_2_G_p" LOC = B8;
NET "TMDS_tx_2_G_n" IOSTANDARD = TMDS_33;
NET "TMDS_tx_2_G_n" LOC = A8;
# Clock
NET "TMDS_tx_clk_p" IOSTANDARD = TMDS_33;
NET "TMDS_tx_clk_p" LOC = B6;
NET "TMDS_tx_clk_n" IOSTANDARD = TMDS_33;
NET "TMDS_tx_clk_n" LOC = A6;


・PlanAheadで、Project Manager のSynthesis -> Run Synthesis をクリックした。論理合成がスタートした。

・途中でエラーが出てしまった。エラーの内容を下に示す。

[Edk 24-166] (generate_target): Failed to execute XPS script. Please check for any errors reported by the XPS application in the console: [H:/HDL/FndtnISEWork/Spartan6/Atlys/test/Atlys_EDK_test_PA_142/Atlys_EDK_test_PA.srcs/sources_1/edk/system/__xps/pa/_system_synth.tcl]


BitMapDispCont_88_120807.png

エラーを検索してみたところ、”Can't synthesize microblaze system in EDK 14.2”が見つかったが、今年の8月1日に質問がアップされているが、まだ回答は無かった。

とりあえず、_system_synth.tcl を見てみることにした。Atlys_EDK_test_PA_142/Atlys_EDK_test_PA.srcs/sources_1/edk/system/__xps/paフォルダを下に示す。
BitMapDispCont_89_120807.png

_system_synth.tcl を下に示す。

######################################################
#
# XPS Tcl API script generated by PlanAhead
#
######################################################

proc _main_ {} {
  cd "H:/HDL/FndtnISEWork/Spartan6/Atlys/test/Atlys_EDK_test_PA_142/Atlys_EDK_test_PA.srcs/sources_1/edk/system"
  if { [ catch {xload xmp system.xmp} result ] } {
    exit 10
  }
  # Set host application type
  xset intstyle PA

  # Set design flow type
  xset flow ise

  # Set language type
  xset hdl verilog

  if { [catch {run netlist} result] } {
    return -1
  }
  return $result
}

# Generate Synthesized Netlists
if { [catch {_main_} result] } {
  exit -1
}

# Check return status and exit
if { [string length $result] == 0 } {
  exit 0
} else {
  exit $result
}


どこが悪いかわからないので、とりあえず、_system_synth.tcl を削除してみて、再生成をさせてみようと思った。

・_system_synth.tcl を削除して、もう一度、Synthesis -> Run Synthesis をクリックした。論理合成がスタートした。やはり同様のエラーが出た。

再生成された_system_synth.tcl と以前の_system_synth.tcl を比較してみたが、内容は同一だった。こうなるとXPSの設定がおかしいんだろう?

(2012/08/08:追加)
XPS単体でHardware メニューからGenarate Netlistをやってみたところエラーになった。エラー内容は、bitmap_afifoが見つからないとのことだった。

ERROR:HDLCompiler:1654 - "H:/HDL/FndtnISEWork/Spartan6/Atlys/test/Atlys_EDK_test_PA_142/Atlys_EDK_test_PA.srcs/sources_1/edk/system/pcores/bitmap_disp_cntrler_axi_master_v1_00_a/hdl/verilog/bitmap_disp_engine.v" Line 72: Instantiating from unknown module


bitmap_disp_cntrler_axi_master_v2_1_0.mpdのOPTION STYLE が”OPTION STYLE = HDL”になっていたので、”OPTION STYLE = MIX”に変更した。
やはり、同様にエラーになる。

(もう一度追加)
bitmap_afifo.ngc だけでなくbitmap_afifo.v をVerilog ファルダに追加して、bitmap_disp_cntrler_axi_master_v2_1_0.pao にbitmap_afifo.v のエントリを追加した。こうすると論理合成が成功した。インプリメント、ビットストリーム生成も成功した。
BitMapDispCont_94_120808.png

  1. 2012年08月07日 06:23 |
  2. AXI4 Master IPの作製
  3. | トラックバック:0
  4. | コメント:0

ビットマップ・ディスプレイ・コントローラの作製11(BitMapDCの接続3)

ビットマップ・ディスプレイ・コントローラの作製10(BitMapDCの接続2)”の続き。

今回は、XPS上でbitmap_disp_cntrler_axi_master の配線をつないでいく。

・XPSのBus Interfaceタブでbitmap_disp_cntrler_axi_master_0 のM_AXIをaxi_interconnect_0 に接続した。
BitMapDispCont_79_120806.png

・bitmap_disp_cntrler_axi_master_0 のM_AXIとaxi_s6_ddrx_0 のS0_AXI を接続した。
BitMapDispCont_80_120806.png

・Portsタブをクリックして、TMDSピンをすべてMake External した。
BitMapDispCont_82_120806.png

・ACLKをclk_100_0000MHz に接続した。
BitMapDispCont_83_120806.png

・External Ports でTMDS信号の名前が長すぎるので、Nameフィールドをクリックして修正した。
BitMapDispCont_84_120806.png

ビットマップ・ディスプレイ・コントローラの解像度はVGAとする。よってピクセルクロックとして25MHzをpixclk に入力する。

・clock generator_0 をダブルクリックして、XPS Core_Config を表示して、CLKOUT3を25MHz に設定した。
BitMapDispCont_85_120806.png

・bitmap_disp_cntrler_axi_master_0 のNet をクリックして、New Connectionを選択した。
・bitmap_disp_cntrler_axi_master_0_pixclk ネットが生成された。
BitMapDispCont_86_120806.png

・clock generator_0 のCLKOUT3 にbitmap_disp_cntrler_axi_master_0_pixclk を接続した。
BitMapDispCont_87_120806.png

・ProjectメニューからDesign Rule Check をやってみたところエラーは無かった。

エラーはなかったが、axi2axi_connector_0でWARNINGが出ていた。やはりAXI4 LiteとAXI4をつなぐのには無理があるのかな?

WARNING:EDK:3977 - AXI4 protocol type BUSIF: S0_AXI of IPINSTANCE: axi_s6_ddrx_0 connected with AXI4LITE type BUSIF: M_AXI of IPINSTANCE: axi2axi_connector_0.

  1. 2012年08月06日 05:01 |
  2. AXI4 Master IPの作製
  3. | トラックバック:0
  4. | コメント:0

ビットマップ・ディスプレイ・コントローラの作製10(BitMapDCの接続2)

ビットマップ・ディスプレイ・コントローラの作製9(BitMapDCの接続1)”の続き。

前回は、XPSでユーザーIPとして認識させる準備を行った。今回はXPSでbitmap_disp_cntrler_axi_master をユーザーIPとしてXPSのシステムに追加する。

・XPSのPoject メニューからRescan User Repositoriesを選択し、リポジトリを更新した。

・IP Catalog のDescription のProject Local PCores -> USER -> bitmap_disp_cntrler_axi_master が追加された。
BitMapDispCont_72_120804.png

・上のbitmap_disp_cntrler_axi_master を右クリックして、右クリックメニューからAdd IPを選択した。

・Add IP Instance to Desgin ダイアログが表示された。Yesボタンをクリックした。
BitMapDispCont_73_120804.png

・XPS Core Config ダイアログが立ち上がる。

・Userタブはデフォルトのままとした。
BitMapDispCont_74_120804.png

・Systemたぶでは、C_M_AXI_DATA_WIDTHを32から64に変更した。
・ビットマップ・ディスプレイ・コントローラはWriteを行わないので、 C_M_AXI_SUPPORTS_WRITEのチェックを外した。
BitMapDispCont_75_120804.png

・Interconnect Settings for BUSIFタブではデフォルトのままとした。
BitMapDispCont_76_120804.png

・OKボタンをクリックした。(この辺の設定については、”AXI4マスタIPのパラメータ”を参照)

・Instantiate and Connect IPダイアログが表示された。User will make necessary connections and settings のラジオボタンをクリックして、Okボタンをクリックした。
BitMapDispCont_77_120804.png

・bitmap_disp_cntrler_axi_master がXPSのシステムに追加された。
BitMapDispCont_78_120804.png
  1. 2012年08月05日 05:35 |
  2. AXI4 Master IPの作製
  3. | トラックバック:0
  4. | コメント:0