ビットマップVGAコントローラをデバックしている。大体動作してきたと思う。
下にシミュレーション波形を示す。

vram_addressが読んでくるVRAM(DDR2 SDRAM)のアドレスを示す。読んでくる時にカウントアップされている。vram_req_weはアービタへのVRAMのリクエストを書き込む信号。リクエストしたVRAMアドレスのデータがvram_data_inにでてきて、その有効はvram_data_validによって示される。
cs_rdgステートマシがビットマップVGAコントローラの描画データの読み込み状態を示す。最初にidle_rdgになっているが、リセットが外れたら、init_full_modeになって、描画データを貯めておくpixel_async_fifoをFULL状態になるまで、アービタにリクエストを出す。リクエストがDDR2 SDRAMコントローラに届いて、VRAMにある描画データを読み込みpixel_async_fifoがFULLになったら、cs_rdgステートマシンはwait_half_full状態に移行し、pixel_async_fifoが描画データを吐き出して、半分になるのを待つ。半分になったら、cs_rdgステートマシはreq_vram_burstステートに移行し、pixel_async_fifoの容量半分をアービタにリクエストをだして、描画データを読んでくる。
最初に、pixel_async_fifoがFULLになってから、描画もスタートする。これは、cs_rdgステートマシがinit_full_modeからwait_half_full状態に移行したときにh_countのカウントが始まることでわかると思う。今のところ、動作的にはうまく行っているようだ。ちなみにDDR2 SDRAMから読んでくるデータはまだ、書き込んでいないのでXとなってしまっている。
pixel_async_fifoがFULLから半分になるのが2.672usec、req_vram_burstステートに移行して描画データを読んでから、もう一度req_vram_burstステートに移行するまでの時間は1.541usecだった。最初は描画が止まっているので、長い時間になっている。req_vram_burstステートでは、ちょうどpixel_async_fifoの容量の半分のデータをアービタにリクエストしているが、もう少し増やそうと思う。
- 2010年02月09日 05:44 |
- VGAコントローラ
-
| トラックバック:0
-
| コメント:0