ザイリンクス DDR2 MIG 7 パフォーマンス見積もりガイド
重要な注意: このダウンロード可能な回答記録のPDFは、その使いやすさと読みやすさを向上させるために提供されています。回答記録は Webベースのコンテンツは、新しい情報が利用可能になると頻繁に更新されます。ザイリンクステクニカルサポートにアクセスしてください。 Webサイトと再view この回答の最新バージョンについては、(Xilinx Answer 63234) を参照してください。
導入
DDR2 および DDR3 メモリのアーキテクチャと MIG 7 シリーズ コントローラの設計方法により、パフォーマンスは単純ではありません。
さまざまな Jedec タイミング パラメータとコントローラ アーキテクチャを理解する必要があり、推定値を取得するにはシミュレーションを実行する必要があります。
パフォーマンスを決定するための一般的な原則は同じですが、このドキュメントでは、MIG exを使用して効率を取得する簡単な方法を示します。ampテストベンチと刺激を利用した設計 fileここに添付します。
有効帯域幅
DRAM データ バスは、読み取りと書き込みのバースト時にのみピークに近い帯域幅を実現し、そのオーバーヘッドによって実効データ レートが低下します。
いくつかの例ampオーバーヘッドの金額は次のとおりです。
- 同じバンクの行にアクセスするプリチャージ時間(同じ行ページヒットではないアクセスアドレス)
- 書き込みアクセスから読み取りアクセスに変更するための書き込み回復時間
- 読み取りアクセスから書き込みアクセスに変更するバスのターンアラウンド時間
有効帯域幅 = ピーク帯域幅 * 効率
MIG 設計生成
MIG IPとexの詳細な手順についてはUG586の第1章を参照してください。ampleデザイン世代。
MIG 7シリーズのパフォーマンスシミュレーションを実行する前に、シミュレーション環境が適切であることを確認するために、次の操作を実行してください。MIG examp適切なライブラリを設計およびマップし、シミュレーションを実行して、トランスクリプトに「テストに合格しました」というメッセージが表示されることを確認します。
フローをデモンストレーションするために、xc7vx690tffg1761-2のMIG IPを生成し、exを呼び出しました。ampデザイン。
注意すべき 2 つの点は、メモリ アドレス ビットとメモリ アドレス マッピングの選択です。
例えばampメモリ部品のドロップダウン オプションで MT41J128M8XX-125 を選択しました。
図1から選択されたメモリ部分の場合、行 = 14、列 = 10、バンク = 3なので、app_addr_width = 行 + 列 + バンク + ランク = 28
BANK_ROW_COLUMN または ROW BANK 列のいずれかを選択できます。
デフォルトのアドレス マッピングである ROW BANK 列を残しました。
Examp合成可能なテストベンチによるシミュレーション
シミュレーション設定で、QuestaSim/ModelSim シミュレータを選択し、コンパイルされたライブラリの場所を参照します。
サードパーティツールのインストールパスの指定、ターゲットシミュレータの選択、ライブラリのコンパイルとマッピングの詳細については、(UG900) Vivado Design Suiteユーザーガイドロジックシミュレーションを参照してください。
GUI からシミュレーションを実行し (プロジェクト マネージャーの [シミュレーションの実行] タブをクリック)、トランスクリプトに「テストに合格しました」というメッセージが表示されることを確認します。
パフォーマンスシミュレーションRTLの変更
- ソースタブを右クリックし、「シミュレーションソースの追加または作成」を選択し、mig7_perfsim_traffic_generator.svを参照します。 file 完了をクリックして追加します。
- ソース タブを右クリックし、「シミュレーション ソースの追加または作成」を選択し、perfsim_stimulus.txt を参照して、「完了」をクリックして追加します。
- exをコメントアウトするampsim_tb_top.v 内の le_top インスタンス化 file.
- 以下のRTL行をsim_tb_top,vに追加します。
- ローカルパラメータ APP_ADDR_WIDTH = 28;
- ローカルパラメータ APP_DATA_WIDTH = 64;
- ローカルパラメータ APP_MASK_WIDTH = APP_DATA_WIDTH / 8;
- ローカルパラメータ MEM_ADDR_ORDER = “BANK_ROW_COLUMN”;
- ローカルパラメータ BANK_WIDTH = 3;
- ローカルパラメータ RANK_WIDTH = 1;
- 配線 [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
- ワイヤ [2:0] c0_ddr3_app_cmd;
- ワイヤーc0_ddr3_app_en;
- ワイヤ [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
- ワイヤー c0_ddr3_app_wdf_end;
- ワイヤ [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
- ワイヤー c0_ddr3_app_wdf_wren;
- ワイヤ [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
- ワイヤー c0_ddr3_app_rd_data_end;
- ワイヤー c0_ddr3_app_rd_data_valid;
- 配線 c0_ddr3_app_rdy;
- ワイヤー c0_ddr3_app_wdf_rdy;
- ワイヤー c0_data_compare_error;
- ui_clk を配線します。
- ui_clk_sync_rst を配線します。
- app_sr_req = 0 を配線します。
- ワイヤー app_ref_req = 0;
- app_zq_req =0 を配線します。
- ワイヤー c0_app_wdf_mask =0;
FPGAメモリコントローラのインスタンス化
mig_7series_0_mig u_mig_7series_0_mig (
// メモリインターフェースポート
- .ddr3_addr (ddr3_addr_fpga)、
- .ddr3_ba (ddr3_ba_fpga)、
- .ddr3_cas_n (ddr3_cas_n_fpga)、
- .ddr3_ck_n (ddr3_ck_n_fpga)、
- .ddr3_ck_p (ddr3_ck_p_fpga)、
- .ddr3_cke (ddr3_cke_fpga)、
- .ddr3_ras_n (ddr3_ras_n_fpga)、
- .ddr3_reset_n (ddr3_reset_n)、
- .ddr3_we_n (ddr3_we_n_fpga)、
- .ddr3_dq (ddr3_dq_fpga)、
- .ddr3_dqs_n (ddr3_dqs_n_fpga)、
- .ddr3_dqs_p (ddr3_dqs_p_fpga)、
- .init_calib_complete (init_calib_complete)、
- .ddr3_cs_n (ddr3_cs_n_fpga)、
- .ddr3_dm (ddr3_dm_fpga)、
- .ddr3_odt (ddr3_odt_fpga)、
// アプリケーションインターフェースポート
- .app_addr (c0_ddr3_app_addr)、
- .app_cmd (c0_ddr3_app_cmd)、
- .app_en (c0_ddr3_app_en)、
- .app_wdf_data (c0_ddr3_app_wdf_data)、
- .app_wdf_end (c0_ddr3_app_wdf_end)、
- .app_wdf_wren (c0_ddr3_app_wdf_wren)、
- .app_rd_data (c0_ddr3_app_rd_data)、
- .app_rd_data_end (app_rd_data_end)、
- .app_rd_data_valid (c0_ddr3_app_rd_data_valid)、
- .app_rdy (c0_ddr3_app_rdy)、
- .app_wdf_rdy (c0_ddr3_app_wdf_rdy)、
- .app_sr_req (app_sr_req)、
- .app_ref_req (アプリ_ref_req)、
- .app_zq_req (app_zq_req)、
- .app_sr_active (app_sr_active)、
- .app_ref_ack (app_ref_ack)、
- .app_zq_ack (app_zq_ack)、
- .ui_clk (ui_clk)、
- .ui_clk_sync_rst (ui_clk_sync_rst)、
- .app_wdf_mask (c0_ddr3_app_wdf_mask)、
// システムクロックポート
- .sys_clk_i (sys_clk_i)、
// リファレンスクロックポート
- .clk_ref_i (clk_ref_i)、
- .sys_rst (sys_rst)
- );
パフォーマンストラフィックジェネレータのインスタンス化
mig7_perfsim_トラフィックジェネレーター#
(
.APP_DATA_WIDTH (APP_DATA_WIDTH)、
.COL_WIDTH (COL_WIDTH)、
.ROW_WIDTH (ROW_WIDTH)、
.RANK_WIDTH (RANK_WIDTH)、
.BANK_WIDTH (BANK_WIDTH)、
.MEM_ADDR_ORDER (MEM_ADDR_ORDER)、
.tCK (tCK )、
.ADDR_WIDTH (APP_ADDR_WIDTH)
)
u_traffic_gen
(
.clk (ui_clk)、
.rst (ui_clk_sync_rst)、
.init_calib_complete (init_calib_complete)、
.cmp_error (c0_data_compare_error)、
.app_wdf_rdy (c0_ddr3_app_wdf_rdy)、
.app_rd_data_valid (c0_ddr3_app_rd_data_valid)、
.app_rd_data (c0_ddr3_app_rd_data)、
.app_rdy (c0_ddr3_app_rdy)、
.app_cmd (c0_ddr3_app_cmd)、
.app_addr (c0_ddr3_app_addr)、
.app_en (c0_ddr3_app_en )、
.app_wdf_mask (c0_ddr3_app_wdf_mask)、
.app_wdf_data (c0_ddr3_app_wdf_data)、
.app_wdf_end (c0_ddr3_app_wdf_end)、
.app_wdf_wren (c0_ddr3_app_wdf_wren)
);
- 5. メモリパーツの選択に応じて、APP_ADDR_WIDTH、APP_DATA_WIDTH、RANK_WIDTH、および BANK_WIDTH を変更します。
値は以下から取得できます_mig.v file. - 黄色で強調表示されたインスタンス化名 mig_7series_0_mig は、IP 作成時のコンポーネント名によって異なる場合があります。別の名前を選択したかどうかを確認し、それに応じて変更してください。
- IPが生成されたら、 _mig.v file LHS 信号名の差異を相互チェックし、修正します。
- app_sr_req、app_ref_req、app_zq_req は 0 に初期化する必要があります。
- 元としてample_top.vはコメントアウトされ、新しい fileが追加されると、おそらく「?」が表示されます。
mig_7series_0_mig.v file シミュレーションソースの下で。
正しい地図を描くには file、mig_7series_0_mig.vを右クリックし、「ソースの追加」を選択し、参照します。
/mig_7シリーズ_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
mig_7series_0_mig_sim.vを追加します file. - 基礎となる files、すべてのRTLを追加 fileclocking、controller、ip_top、phy、UI フォルダー内にあります。
- RTLの変更が完了し、必要なすべての fileがシミュレーション ソースに追加されると、階層は図 5 のようになります。
の file赤で強調表示されている部分は新しく追加されたもので、選択したメモリ構成で ECC オプションが無効になっているため、ECC 関連モジュールには「?」が表示されます。
刺激 File 説明
各刺激パターンは 48 ビットであり、その形式は図 6-1 から 6-4 に示されています。
アドレスエンコーディング(アドレス[35:0])
アドレスは、図 7-1 から図 7-6 に示すように刺激にエンコードされます。すべてのアドレス フィールドは XNUMX 進形式で入力する必要があります。すべてのアドレス フィールドは、XNUMX 進形式で入力するには XNUMX で割り切れる幅です。テスト ベンチは、アドレス フィールドの必要なビットのみをメモリ コントローラに送信します。
例えばampたとえば、2 バンク構成では、バンク ビット [0:XNUMX] のみがメモリ コントローラに送信され、残りのビットは無視されます。アドレス フィールドの追加ビットは、XNUMX 進形式でアドレスを入力するために用意されています。
入力した値が、指定された構成の幅に対応していることを確認する必要があります。
- 列アドレス(列[11:0]) – 刺激内の列アドレスは最大 12 ビットまで提供されますが、設計で設定された列幅パラメータに基づいてこれをアドレス指定する必要があります。
- 行アドレス(行[15:0]) – 刺激の行アドレスは最大 16 ビットまで提供されますが、設計で設定された行幅パラメータに基づいてこれをアドレス指定する必要があります。
- 銀行アドレス(Bank[3:0]) – 刺激内のバンク アドレスは最大 4 ビットまで提供されますが、設計で設定されたバンク幅パラメータに基づいてこれをアドレス指定する必要があります。
- ランクアドレス(ランク[3:0]) – 刺激内のランク アドレスは最大 4 ビットまで提供されますが、設計で設定されたランク幅パラメータに基づいてこれをアドレス指定する必要があります。
アドレスは最上位のMEM_ADDR_ORDERパラメータに基づいて組み立てられ、ユーザーインターフェースに送信されます。
コマンドリピート(コマンドリピート[7:0])
コマンド繰り返し回数は、ユーザー インターフェイスでそれぞれのコマンドが繰り返される回数です。繰り返しごとにアドレスは 8 ずつ増加します。最大繰り返し回数は 128 です。
テスト ベンチは列の境界をチェックせず、増分中に最大列制限に達した場合はラップアラウンドします。
128 個のコマンドがページを埋め尽くします。0 以外の列アドレスの場合、繰り返し回数 128 は列の境界を越えて、列アドレスの先頭に戻ります。
バスの利用
バス使用率は、読み取りと書き込みの合計数を考慮してユーザー インターフェイスで計算され、次の式が使用されます。
- BL8はXNUMXつのメモリクロックサイクルを必要とする
- end_of_stimulus は、すべてのコマンドが完了した時間です。
- calib_done はキャリブレーションが完了した時刻です。
Exampパターン
これらの例ampファイルは、BANK_ROW_COLUMN に設定された MEM_ADDR_ORDER に基づいています。
単一読み取りパターン
00_0_2_000F_00A_1 – このパターンは、10 列目、15 行目、XNUMX 番目のバンクからの単一の読み取りです。単一書き込みパターン
00_0_1_0040_010_0 – このパターンは、32 列目、128 行目、最初のバンクへの単一書き込みです。同じアドレスへの単一の書き込みと読み取り
00_0_2_000F_00A_0 – このパターンは、10 列目、15 行目、XNUMX 番目のバンクへの単一書き込みです。
00_0_2_000F_00A_1 – このパターンは、10列目、15行目、XNUMX番目のバンクからの単一の読み取りです。
同じアドレスでの複数の書き込みと読み取り
0A_0_0_0010_000_0 – これは、列に表示される 10 から 0 まで始まるアドレスへの 80 回の書き込みに対応します。
0A_0_0_0010_000_1 – これは、列に表示される 10 から 0 まで始まるアドレスの 80 回の読み取りに対応します。
書き込み中のページラップ
0A_0_2_000F_3F8_0 – これは、10 回の書き込み後に列アドレスがページの先頭に折り返される XNUMX 回の書き込みに相当します。
パフォーマンストラフィックジェネレータのシミュレーション
この時点でMIG exは完了ですamp設計シミュレーションが完了しました。これは、シミュレーション セットアップの準備が整い、パフォーマンス シミュレーション RTL の変更が完了し、新しいシミュレーション階層が適切で、刺激パターンを理解していることを意味します。perfsim_stimulus.txt で 16 回の書き込みと読み取りを実行して、シミュレーションをもう一度実行します。
run-all を実行し、init_calib_complete 信号がアサートされるまで待機すると、提案された書き込みと読み取りの数を確認できます。その後、シミュレーションは停止します。
シミュレーションを終了するように求められたら、「いいえ」を選択し、パフォーマンス統計を確認できるトランスクリプト ウィンドウに移動します。
選択した場合 「シミュレーションを終了」 パフォーマンス統計は file 名前 sim_1/behaveにあるmig_band_width_output.txt フォルダ。
Exampディレクトリパス:-
/mig_7シリーズ_0_example_perf_sim\mig_7series_0_example.sim/sim_1/振る舞い
なぜパーセントがtagバス使用率は29のみです。同じIP設定で刺激のみを変更してシミュレーションを再実行します。 file 256回の書き込みと256回の読み取り
ff_0_0_0000_000_0
ff_0_0_0000_000_1
パーセンテージが表示されますtage は 85 であり、これは DDR3 が長い書き込みおよび読み取りバーストのシーケンスでより優れたバス使用率を提供することを意味します。
パフォーマンスを向上させる一般的な方法
効率に影響を与える要因は、次の 2 つのセクションに分けられます。
- メモリ固有
- コントローラ固有
図9はオーバーを示していますview メモリに特有の用語。
SRAM やブロック メモリとは異なり、DDR2 または DDR3 のパフォーマンスは最大データ レートだけではありません。
それは、次のような多くのタイミング要因に依存します。
- tRCD: 行コマンド遅延 (または ras から cas への遅延)。
- tCAS(CL): 列アドレスストローブの遅延。
- tRP: 行プリチャージ遅延。
- トラス: 行のアクティブ時間 (変更前にアクティブ化します)。
- tRC: 行サイクル時間。tRC = tRAS + tRP
- トラック: ランダムアクセス遅延。tRAC = tRCD + tCAS
- tCWL: Cas 書き込み遅延。
- ありがとう: ZQキャリブレーション時間。
- RFC: 行更新サイクル時間
- tWTR: 書き込みから読み取りまでの遅延。最後の書き込みトランザクションから読み取りコマンドまでの時間。
- tWR: 書き込み回復時間。最後の書き込みトランザクションからプリチャージ時間まで
リストされているすべてのパラメータのタイミングは、使用されるメモリのタイプとメモリ部品の速度グレードによって異なります。
定義とタイミング仕様の詳細については、DDR2 DDR3 JEDEC または任意のメモリ デバイスのデータシートを参照してください。
効率は主にメモリへのアクセス方法に依存します。アドレス パターンが異なると、効率の結果も異なります。
メモリタイミングのオーバーヘッド
- 新しいバンク/行に変更する場合、または同じバンク内で行を変更する場合のアクティベーション時間とプリチャージ時間。 - したがって、行の変更を減らすと、tRCD と tRP を削除できます。
- 連続書き込みまたは読み取りコマンドを送信します - tCCD タイミングを維持します。
- 書き込みから読み取り、読み取りから書き込みへのコマンド切り替えを最小限に抑える - 読み取りアクセスに変更するための書き込み回復時間、読み取りから書き込みに変更するためのバスターンアラウンド時間
- 適切な更新間隔を設定します。
- DDR3 SDRAM では、平均周期間隔 tREFI でリフレッシュ サイクルが必要です。
- 最大8つの追加のリフレッシュコマンドを事前に発行することができます(「プルイン」)。これによりリフレッシュの回数は減りませんが、9つのリフレッシュコマンド間の最大間隔はXNUMX × tREFIに制限されます。
- すべての銀行を活用する – 適切なアドレス指定メカニズムが望ましいです。
- 行-バンク-列: 連続したアドレス空間で発生するトランザクションの場合、コアは既存の行の終わりに達すると、自動的に DRAM デバイスの次のバンクの同じ行を開いてトランザクションを続行します。これは、連続したアドレス位置に大量のデータ パケットをバーストする必要があるアプリケーションに適しています。
- 銀行-行-列: 行の境界を越えると、現在の行は閉じられ、同じバンク内で別の行が開かれます。MSB はバンク アドレスであり、異なるバンク間の切り替えに使用できます。これは、一定期間 1 つのメモリ ブロックに、より短くランダムなトランザクションを実行し、その後別のブロック (バンク) にジャンプするのに適しています。
- バースト長
- BL 8 は 3 シリーズの DDR7 でサポートされています。BC4 の効率は非常に低く、50% 未満です。これは、BC4 の実行時間が BL8 と同じであるためです。データはコンポーネント内でマスクされるだけです。
- フルバーストの書き込みを望まない場合は、データ マスクまたは読み取り後の書き込みのいずれかを検討できます。
- 適切な ZQ 間隔を設定する (DDR3 のみ)
コントローラは、ZQ ショート (ZQCS) と ZQ ロング (ZQCL) の両方のキャリブレーション コマンドを送信します。- DDR3 Jedec規格に準拠
- ZQキャリブレーションについては、JEDEC仕様JESD5.5-79 DDR3 SDRAM規格のセクション3で説明されています。
- ZQキャリブレーションは、VT間の変動を考慮するために、定期的にオンダイターミネーション(ODT)をキャリブレーションします。
- ロジックはbank_common.v/vhdに含まれています
- パラメータTzqcsは、ZQキャリブレーションコマンドがメモリに送信される速度を決定します。
- カウンターを無効にして、app_zq_req を使用して手動で送信することも可能です。これは、Refresh を手動で送信するのと同様です。
詳細については、(Xilinx Answer 47924) を参照してください。
コントローラのオーバーヘッド
- 定期読み取り – 参照 (ザイリンクスアンサー43344) 詳細については。
- 読み取り期間を変更しないでください
- 書き込み中に定期的な読み取りをスキップし、実際の読み取りの前に失われた読み取りの数を発行します。
- 並べ替え – 参照 (ザイリンクスアンサー34392) 詳細については。
ユーザーおよび AXI インターフェイス設計の場合は、これを有効にすることが望ましいです。- 並べ替えは、いくつかのコマンドを先読みし、非メモリ コマンドが有効な帯域幅を占有しないようにユーザー コマンドの順序を変更するロジックです。パフォーマンスは実際のトラフィック パターンにも関連します。
- アドレス パターンに基づいて、並べ替えにより、プリチャージ コマンドとアクティブ化コマンドをスキップし、tRCD と tRP がデータ帯域幅を占有しないようにすることができます。
- 銀行ATMの数を増やしてみてください。
- コントローラのロジックのほとんどはバンクマシンにあり、それらはDRAMバンクに対応しています。
- 特定のバンク マシンは、常に 1 つの DRAM バンクを管理します。
- バンク マシンの割り当ては動的であるため、物理バンクごとにバンク マシンを用意する必要はありません。
- バンクマシンは構成可能ですが、面積とパフォーマンスの間でトレードオフが発生します。
- 許容される銀行ATM台数は2〜8台です。
- デフォルトでは、4 つのバンク マシンが RTL パラメータを通じて構成されます。
- バンクマシンを変更するには、memc_ui_top Exに含まれるパラメータnBANK_MACHS = 8を考慮してください。amp8 台のバンクマシンの場合 – nBANK_MACHS = 8
これで、パフォーマンスに影響を与える要因がわかりました。
512パケットあたり512バイトのデータを提供するアップストリームアプリケーションを考えてみましょう。これを異なるメモリ位置に保存する必要があります。64バイトのデータバイトは3のDDRXNUMXデータバーストに相当するため、exを再実行します。amp刺激のあるデザイン file 512 回の書き込み、512 回の読み取り、および 64 回の書き込みまたは読み取りごとに行切り替えが含まれます。
- 3f_0_0_0000_000_0
- 3f_0_0_0001_000_0
- 3f_0_0_0002_000_0
- 3f_0_0_0003_000_0
- 3f_0_0_0004_000_0
- 3f_0_0_0005_000_0
- 3f_0_0_0006_000_0
- 3f_0_0_0007_000_0
- 3f_0_0_0000_000_1
- 3f_0_0_0001_000_1
- 3f_0_0_0002_000_1
- 3f_0_0_0003_000_1
- 3f_0_0_0004_000_1
- 3f_0_0_0005_000_1
- 3f_0_0_0006_000_1
- 3f_0_0_0007_000_1
シミュレーションの最後には、バスの使用率が 77 パーセントであることがわかります。
図 11: 512 回の書き込みと 512 回の読み取りのパフォーマンス統計 – 64 回の書き込みまたは読み取りの行切り替え。
前のセクションで学んだ知識を応用して効率を向上させることができます。 view 行を変更する代わりにすべてのバンクを利用するには、以下に示すようにアドレス パターンを変更してバンクを変更します。
これは、MIG GUI のメモリ アドレス マッピング設定で ROW_BANK_Column を設定することと同じです。
- 3f_0_0_0000_000_0
- 3f_0_1_0000_000_0
- 3f_0_2_0000_000_0
- 3f_0_3_0000_000_0
- 3f_0_4_0000_000_0
- 3f_0_5_0000_000_0
- 3f_0_6_0000_000_0
- 3f_0_7_0000_000_0
- 3f_0_0_0000_000_1
- 3f_0_1_0000_000_1
- 3f_0_2_0000_000_1
- 3f_0_3_0000_000_1
- 3f_0_4_0000_000_1
- 3f_0_5_0000_000_1
- 3f_0_6_0000_000_1
- 3f_0_7_0000_000_1
シミュレーションの最後には、以前の 77 パーセントのバス使用率が 87 パーセントになっていることがわかります。
さらに高い効率が必要な場合は、1024 バイトまたは 2048 バイトの大きなパケット サイズを選択するか、手動更新を検討してください。
注記: Xilinx では、データの信頼性に影響する Jedec 自動リフレッシュ タイミングを満たすことができるかどうか不明であるため、コントローラー リフレッシュのバイパスを推奨していません。
コントローラー側では、nBANk_MACH を変更してパフォーマンスの向上を確認できます。
ただし、設計のタイミングに影響する可能性がありますので、 (ザイリンクスアンサー36505) nBANk_MACHの詳細については
core_name_mig_sim.vを開きます file パラメータnBANK_MACHSを4から8に変更し、シミュレーションを再実行します。パラメータ値をハードウェアで有効にするには、core_name_mig.vを更新する必要があります。 file.
同じパターンを使用し、バス使用率は 87% になりました (図 -12)。
nBANK_MACHS を 8 に設定すると、効率は 90% になります。
また、½ コントローラーと ¼ コントローラーは、遅延により効率に悪影響を与えることにも注意してください。
例えばampたとえば、コマンドは 4 CK サイクルごとにしか送信できないため、最小 DRAM タイミング仕様に準拠すると余分なパディングが発生する場合があり、理論上の効率が低下する可能性があります。
さまざまなコントローラーを試して、効率要件に適したものを見つけてください。
参考文献
- Zynq-7000 AP SoC および 7 シリーズ FPGA MIS v2.3 [UG586]
- ザイリンクス MIG ソリューション センター http://www.xilinx.com/support/answers/34243.html
改訂履歴
13年03月2015日 – 初回リリース
PDFをダウンロード: ザイリンクス DDR2 MIG 7 パフォーマンス見積もりガイド