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

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

FPGAの部屋

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

Spartan3A Starter KitのビットマップVGAコントローラの仕様3(レイテンシの測定)

今回はSpartan3A Starter Kitで自作したDDR2 SDRAMコントローラのレイテンシを測定する。Veritakシミュレータでシミュレーションをして、Write、Readのレイテンシを測定する。
本当はReadだけで良いのだが、ついでにWriteのレイテンシも測定したい。
まずはinitialize_end が1(初期化が終了)してから最初のWriteアクセス。これはACT(アクティベート)コマンドを入れているので、レイテンシは多少長い。
BitMaped_VGA_Controller_4_090108.gif

この場合のWriteレイテンシは約87nsec となった。(黒いカーソルから赤いカーソルまで)上図で説明すると、read_writeが0の時がWriteなので、addr_fifo_wrenが1の時にアドレスの書き込みとなって、ここでDDR2 SDRAMへのWriteを要求している(同時にWriteデータもFIFOに書き込んでいるはず)。そこからDDR2 SDRAMのWriteした時点までをWriteレイテンシとしている。

同一ROWアドレス、同一バンクがアクティベートされていれば、ACTコマンドを入れずにWriteコマンドやReadコマンドを入れることができる。自作のDDR2 SDRAMコントローラはバンクを1つしかアクティベートしないので、ROWアドレスか、バンクが異なる場合はプリチャージしてACTコマンドを入れる必要があるので、この場合はレイテンシが伸びてしまう。通常はこうなるが、リフレッシュの場合にプリチャージをするので、その後の1発目のWriteは上図のレイテンシとなる。
次にReadの場合のレイテンシを示す。この場合はWriteで書き込んだROWアドレス、バンクと同一なので、ACTコマンドは省略されている。
BitMaped_VGA_Controller_5_090108.gif

READ要求を入れてからデータがREADできるまでのレイテンシは147nsec だった。上図で、read_writeが1の時がReadなので、addr_fifo_wrenが1の時にDDR2 SDRAMへのReadを要求している。そこから、Readデータが読み出されるまでをReadレイテンシとしている。
このReadは、プリチャージをしていない場合なので、プリチャージをする場合を考えてみる。Writeの後にReadした時に、プリチャージとACTコマンドが入った場合のWriteコマンドとReadコマンドの間隔は113nsec となった。次に、Writeの後にReadした時に、プリチャージとACTコマンドが入らない場合のWriteコマンドとReadコマンドの間隔は33nsec だった。よって、80nsec がプリチャージとACTコマンドのコストということができると思う。

次にリフレッシュによるレイテンシについて、みて行こうと思う。リフレッシュのタイミングを下に示す。これは次のバーストのためにプリチャージしてACTコマンドを入れたときにリフレッシュが起きて、また同じACTコマンドを入れ直している例だ。下図に示す。
BitMaped_VGA_Controller_6_090109.gif

この場合には、上図に示すように、180nsec のレイテンシが増加することになる。

これらのシミュレーション波形を見ると、最悪の場合は、ROWアドレスやバンクが異なる(つまりプリチャージ、ACTコマンドを入れなければならない)ReadコマンドがFIFOに詰まっている場合だと思う。そのような場合をシミュレーションによって創りだすことによって、ビットマップVGAコントローラがRead要求をした時のレイテンシの最悪値を求めたいと思う。
  1. 2010年01月09日 09:02 |
  2. VGAコントローラ
  3. | トラックバック:0
  4. | コメント:0