UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 38476

12.3 EDK、MPMC - MPMC SDR SDRAM デザインを作成またはデバッグする方法

説明


MPMC を使用して SDR SDRAM デバイスへのインターフェイスを作成しようとしていますが、デザインにコアを追加すると初期化が完了しません。

この問題を解決するにはどうしたらよいですか。

ソリューション


SDRAM PHY では、スタティック PHY を使用して SDR SDRAM にアクセスします。
  • MPMC のデータシートに、スタティック PHY の機能が詳細に説明されています。MIG PHY では SD メモリはサポートされないので、SDR SDRAM を使用する場合はスタティック PHY が必要です。
  • SDRAM PHY では通常、メモリにアクセスする前にソフトウェア キャリブレーションが必要です。ソフトウェア キャリブレーションの例は、MPMC ドライバーの examples フォルダに含まれています。このコアおよび MPMC メモリ テストを使用したサンプル プロジェクトを、次のサイトからダウンロードできます。
    http://www.xilinx.com/txpatches/pub/applications/misc/ar38476.zip
  • サンプルの C コードは、デバッグしやすくするため変更されています。シミュレーション バージョンもありますが、キャリブレーションにはシミュレーション時間 150ms 程度かかることがあります。
  • 最終的なキャリブレーション値が得られたら、キャリブレーションを MPMC インスタンスの C_STATIC_PHY_RDEN_DELAY および C_STATIC_PHY_RDDATA_CLK_SEL パラメータ、DCM 位相シフトを dcm_module インスタンスの C_PHASE_SHIFT パラメータを使用して固定できます。これらのパラメータをスタティックにし、キャリブレーション ソフトウェアを実行しないようにすると、メモリ インターフェイス マージンが小さくなります。
  • シミュレーション テストベンチで DQ 信号をバイアスする必要がある場合がありますが、上記の例では PULLDOWN プリミティブで達成できます。
  • SDRAM PHY では、最上位 UCF (通常 system.ucf) にタイミング制約を追加する必要があります。
    NET *rd_data_rise_rdclk MAXDELAY = 1000 ps;
  • キャリブレーション中はシングル読み出しキャプチャ クロックのみが調整され、ビットごとのスキュー調整は実行されないので、SDR SDRAM PHY を使用するボードでは、すべての SDRAM 信号間のトレース スキューを削減するようにする必要があります。
  • DCM 位相調整を正しく設定すると、データをメモリ クロックに適切に揃えるのに役立ちます。データシートに dcm_module のサンプルがあります。また、追加のクロッキングの例を次に示します。

    BEGIN mpmc
    PARAMETER INSTANCE = SDR_SDRAM_CUSTOM
    PARAMETER HW_VER = 4.03.a
    PARAMETER C_MEM_PARTNO = MT48LC16M16A2-75
    PARAMETER C_MEM_TYPE = SDRAM
    PARAMETER C_MEM_CE_WIDTH = 1
    PARAMETER C_MEM_CS_N_WIDTH = 1
    PARAMETER C_MEM_CLK_WIDTH = 1
    PARAMETER C_MEM_NUM_RANKS = 1
    PARAMETER C_MEM_DATA_WIDTH = 16
    PARAMETER C_MPMC_CLK0_PERIOD_PS = 8000
    PARAMETER C_MPMC_BASEADDR = 0x90000000
    PARAMETER C_MPMC_HIGHADDR = 0x91FFFFFF
    BUS_INTERFACE SPLB0 = mb_plb
    PORT SDRAM_Addr = fpga_0_SDR_SDRAM_CUSTOM_SDRAM_Addr
    PORT SDRAM_BankAddr = fpga_0_SDR_SDRAM_CUSTOM_SDRAM_BankAddr
    PORT SDRAM_CAS_n = fpga_0_SDR_SDRAM_CUSTOM_SDRAM_CAS_n
    PORT SDRAM_RAS_n = fpga_0_SDR_SDRAM_CUSTOM_SDRAM_RAS_n
    PORT SDRAM_WE_n = fpga_0_SDR_SDRAM_CUSTOM_SDRAM_WE_n
    PORT SDRAM_CE = fpga_0_SDR_SDRAM_CUSTOM_SDRAM_CE
    PORT SDRAM_CS_n = fpga_0_SDR_SDRAM_CUSTOM_SDRAM_CS_n
    PORT SDRAM_DM = fpga_0_SDR_SDRAM_CUSTOM_SDRAM_DM
    PORT SDRAM_DQ = fpga_0_SDR_SDRAM_CUSTOM_SDRAM_DQ
    PORT MPMC_Clk0 = sys_clk_s
    PORT MPMC_Clk90 = SDR_SDRAM_CUSTOM_mpmc_clk_90_s
    PORT MPMC_Rst = sys_periph_reset
    PORT SDRAM_Clk = unused_net
    END

    BEGIN clock_generator
    PARAMETER INSTANCE = clock_generator_0
    PARAMETER HW_VER = 2.01.a
    PARAMETER C_EXT_RESET_HIGH = 1
    PARAMETER C_CLKIN_FREQ = 125000000
    PARAMETER C_CLKOUT0_FREQ = 125000000
    PARAMETER C_CLKOUT0_BUF = TRUE
    PARAMETER C_CLKOUT0_PHASE = 0
    PARAMETER C_CLKOUT0_GROUP = PLL0
    PARAMETER C_CLKOUT1_FREQ = 125000000
    PARAMETER C_CLKOUT1_BUF = TRUE
    PARAMETER C_CLKOUT1_PHASE = 90
    PARAMETER C_CLKOUT1_GROUP = PLL0
    PORT CLKOUT0 = sys_clk_s
    PORT CLKOUT1 = SDR_SDRAM_CUSTOM_mpmc_clk_90_s
    PORT CLKIN = dcm_clk_s
    PORT LOCKED = Dcm_all_locked
    PORT RST = dcm_module_0_LOCKED
    END

    BEGIN dcm_module
    PARAMETER INSTANCE = dcm_module_0
    PARAMETER HW_VER = 1.00.d
    PARAMETER C_CLKOUT_PHASE_SHIFT = FIXED
    PARAMETER C_CLK0_BUF = TRUE
    PARAMETER C_CLK180_BUF = TRUE
    PARAMETER C_PHASE_SHIFT =0
    PORT CLKIN = dcm_clk_s
    PORT CLK180 = fpga_0_SDR_SDRAM_CUSTOM_SDRAM_Clk
    PORT LOCKED = dcm_module_0_LOCKED
    PORT CLK0 = dcm_module_0_CLK0
    PORT CLKFB = dcm_module_0_CLK0
    END

この例では、クロック ジェネレータを使用してメモリ クロックを生成し、dcm_module を使用してクロックを正しく位相シフトしています。

各 FPGA ファミリおよびクロック周波数により MHS およびキャリブレーション ソフトウェアでの DCM 設定が異なる場合があります。DCM 位相シフトの最大値および最小値を該当する FPGA のユーザー ガイドで確認してください。この場合、DCM 位相シフト タップは 0 から 256 個あります。

#define MPMC_MIN_TAPS0
#define MPMC_MAX_TAPS255
AR# 38476
作成日 12/20/2010
最終更新日 02/05/2013
ステータス アクティブ
タイプ 一般
ツール
  • EDK - 12.1
  • EDK - 12.2
  • EDK - 12.3
IP
  • Multi-Port Memory Controller (MPMC)