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

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

FPGAの部屋

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

Spartan3A Starter KitのビットマップVGAコントローラの仕様2

Spartan3A Starter KitのビットマップVGAコントローラの仕様1”の続き。今度はビットマップVGAコントローラの内部構成を考える。
ビットマップVGAコントローラの内部ブロック図を下に示す。
BitMaped_VGA_Controller_2_090107.png
     ビットマップVGAコントローラの内部ブロック図

上図で、いつもの水平カウンタ、垂直カウンタ、それに伴うHSYNC(垂直同期)、VSYNC(垂直同期)を出力する回路がある。非同期FIFOは150MHzのDDR2 SDRAMコントローラと65MHzのビットマップVGAコントローラをクロックドメインを切り替えるために使用する。非同期FIFOは、ビットマップの画像データをバッファリングしておくためにも使用する。専用の画像メモリが接続されているわけではないため、ビットマップVGAコントローラが画像データを要求しても、すぐには画像データを取得することが出来ない。どうしても画像データのRead要求を発行してからレイテンシが発生してしまう。このレイテンシも変化することが考えられる。例えば、CPUが命令やデータを取得するためにReadデータを読んでいる最中だったら、それが終了するまで、ビットマップVGAコントローラは画像データを取得出来ない。また、もしCPUがメモリを使用していない場合でも、DDR2 SDRAMコントローラにRead要求してからデータが出てくるまでのレイテンシがある。さらに、DDR2 SDRAMがリフレッシュをしている場合も考えられて、その場合には画像データ取得のレイテンシが伸びることが考えられる。
ビットマップVGAコントローラは出力するデータを切らすことが出来ないので、以上で述べてきた最大のレイテンシが発生してもデータを切らすことが無いように非同期FIFOの容量を決定する必要がある。
そして、非同期FIFOからDDR2 SDRAMコントローラへRead要求を出すタイミングを決定する必要がある。ある一定の残り容量のスレッショルドを越えて、データが減った場合にアービタに画像データを要求する方法もあるが、今回は非同期FIFOがつねにFULLになるように制御しようと思う。つまり常にFULLになる様にReadコマンドを発行するわけだ。この方式の欠点は、常にFULLになるように制御するので、Read要求がバーストではなく、シングル転送になり易いことだ。特に非同期FIFOの出力側は65MHzなので、入力側の0.21倍のスループットになっている。こういう構成だと、出ていく方が遅いため、FULLで制御すると確実にDDR2 SDRAMコントローラへのRead要求は単発になるだろう。そうすると効率が悪いか。。。
それでは、やはり、非同期FIFOからDDR2 SDRAMコントローラへRead要求を出すタイミングは非同期FIFOの画像データが3/4か1/2になった時としようと思う。これからRead要求を発行してからReadデータを受け取るまでの最悪のレイテンシを考察してみて、その値でスレッショルド値を決定することにする。非同期FIFOの容量を幾つにするかも、それの考察で決定する。
さて、次にピクセルデータ管理モジュールがある。これは150MHzのクロックドメインに入っている。この詳細なブロック図を下に示す。
BitMaped_VGA_Controller_3_090107.png
ピクセルデータ管理モジュールのブロック図

DDR2 SDRAMの画像データのアドレスをカウントするアドレスカウンタがある。これは1024X768ピクセルカウントすると初期値に戻る。これも将来的には異なるクロックドメイン(65MHz) で動作する回路から初期値を設定できるようにするかもしれない。そのためのインターフェース回路を追加する可能性がある。Readコマンド生成モジュールはDDR2 SDRAMコントローラへのRead要求を生成してアービタに送るモジュールとなっている。

次は、VeritakでのDDR2 SDRAMコントローラのシミュレーション結果を元に最大のレイテンシを考察することにする。アービタのレイテンシも概算で算出して、非同期FIFOのスレッショルド値と容量を決定する。
  1. 2010年01月07日 05:29 |
  2. VGAコントローラ
  3. | トラックバック:0
  4. | コメント:2