FC2カウンター FPGAの部屋 2010年04月26日
FC2ブログ

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

FPGAの部屋

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

SP605のMCBの動作を確認する2(ISimでシミュレーション)

SP605のMCBの動作を確認する1(ISimでシミュレーション)”で初期化部分のパラメータを確認したが、今度はWrite, Read部分のパラメータを確認する。

ZQ CALIBRATION LONGコマンドからBank ACTIVATEコマンドまでは、約3.8usecだった。
SP605_MIG_ISIm_8_100425.png

Bank ACTIVATEコマンドの次の2つ目のWRITEコマンドが実行するまでのDDR3 SDRAMモデルが出力した表示を下に示す。

sim_tb_top.\MEM_INST3.u_mem_c3 .cmd_task: at time 9622501.0 ps INFO: Activate bank 0 row 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .cmd_task: at time 9637501.0 ps INFO: Write bank 0 col 200, auto precharge 0
sim_tb_top.\MEM_INST3.u_mem_c3 .main: at time 9645001.0 ps INFO: Sync On Die Termination Rtt_NOM = 60 Ohm
sim_tb_top.\MEM_INST3.u_mem_c3 .cmd_task: at time 9647501.0 ps INFO: Write bank 0 col 208, auto precharge 0
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9651251.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 00000200 data = 0400
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9652501.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 00000201 data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9653751.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 00000202 data = 0400
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9655001.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 00000203 data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9656251.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 00000204 data = 0400
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9657501.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 00000205 data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .cmd_task: at time 9657501.0 ps INFO: Write bank 0 col 210, auto precharge 0
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9658751.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 00000206 data = 0400
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9660001.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 00000207 data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9661251.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 00000208 data = 0410
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9662501.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 00000209 data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9663751.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 0000020a data = 0410
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9665001.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 0000020b data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9666251.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 0000020c data = 0410
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 9667501.0 ps INFO: WRITE @ DQS= bank = 0 row = 0000 col = 0000020d data = 0000


上の図でmcb3_dram_odt がWriteの時に1になって、ODTが入っている(9645001.0 ps INFO: Sync On Die Termination Rtt_NOM = 60 Ohm)。
SP605のMCBの動作を確認する1(ISimでシミュレーション)”でWrite Latency = 5に設定したはずだが、シミュレーション波形で見てもWrite Latency = 5だった。(当たり前) 12.62nsec / 2.5nsec ≒ 5(カーソルでクロックが違っているので値が少し違っている)
SP605_MIG_ISIm_9_100426.png

Readの場合を見てみよう。CAS Latency = 6 と設定されていた。下のタイミングチャートを見ると15nsec = 2.5nsec =6 となっている。
SP605_MIG_ISIm_10_100426.png

下に、READコマンド2つ分のDDR3 SDRAMモデルが出力した表示を下に示す。

sim_tb_top.\MEM_INST3.u_mem_c3 .main: at time 13102501.0 ps INFO: Sync On Die Termination Rtt_NOM = 0 Ohm
sim_tb_top.\MEM_INST3.u_mem_c3 .cmd_task: at time 13105001.0 ps INFO: Read bank 0 col 200, auto precharge 0
sim_tb_top.\MEM_INST3.u_mem_c3 .cmd_task: at time 13115001.0 ps INFO: Read bank 0 col 208, auto precharge 0
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13118751.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 00000200 data = 0400
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13120001.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 00000201 data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13121251.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 00000202 data = 0400
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13122501.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 00000203 data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13123751.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 00000204 data = 0400
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13125001.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 00000205 data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .cmd_task: at time 13125001.0 ps INFO: Read bank 0 col 210, auto precharge 0
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13126251.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 00000206 data = 0400
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13127501.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 00000207 data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13128751.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 00000208 data = 0410
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13130001.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 00000209 data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13131251.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 0000020a data = 0410
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13132501.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 0000020b data = 0000
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13133751.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 0000020c data = 0410
sim_tb_top.\MEM_INST3.u_mem_c3 .data_task: at time 13135001.0 ps INFO: READ @ DQS= bank = 0 row = 0000 col = 0000020d data = 0000


1つ目のReadコマンドが入ってからデータが出る前に、2つ目のReadコマンドが出力されている。その後に1つ目のデータが出力されている。

これでMCBがDDR3 SDRAMをコントロールする動作は大体わかったので、MCBのユーザー側のインターフェースを見て行こうと思う。
  1. 2010年04月26日 05:51 |
  2. Virtex-6, Spartan-6
  3. | トラックバック:0
  4. | コメント:0