FC2カウンター FPGAの部屋 VGAコントローラの仕様の一部
FC2ブログ

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

FPGAの部屋

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

VGAコントローラの仕様の一部

しばらく、車の修理や新車の購入調査、息子の入学など、もろもろで忙しく、VGAコントローラをやる暇がなかったが、仕様をいろいろ考えている。

まずはそれぞれの値のカウンタを作るためのvga_cont_parameters.vhは下のようだ。

// VGA Controllerのパラメータ

parameter H_DISPLAY_PIXELS = 10'd799; // 800-1
parameter H_DISPLAY_WIDTH = 10;

parameter H_FRONT_PORCH_PIXELS = 6'd56; // 56-1
parameter H_FRONT_PORCH_WIDTH = 6;

parameter H_BACK_PORCH_PIXELS = 6'd63; // 64-1
parameter H_BACK_PORCH_WIDTH = 6;

parameter H_SYNC_PIXELS = 7'd119; // 120-1
parameter H_SYNC_WIDTH = 7;

parameter V_FRONT_PORCH_LINES = 10'd599; // 600-1
parameter V_DISPLAY_WIDTH = 10;

parameter V_FRONT_PORCH_LINES = 6'd36; // 37-1
parameter V_FRONT_PORCH_WIDTH = 6;

parameter V_BACK_PORCH_LINES = 5'd22; // 23-1
parameter V_BACK_PORCH_WIDTH = 5;

parameter V_SYNC_LINES = 3'd5; // 6-1
parameter V_SYNC_WIDTH = 3;


後は、VGAコントローラの仕様なのだが、いつもVGAに出力するデータを切らしてはいけないので、32深度のvga_data_fifoというFIFOを用意する。

1.vga_data_fifoを32深度として16深度までフィルしたらVGA出力をスタート。そのままDDR SDRAMからデータを読み込んで、32深度まで行ったらDDR SDRAMからの読み出しをストップ。16深度まで戻ったらDDR SDRAMからの読み出しを再開する。VGAコントローラからの読み出しをアービタは最優先で処理する。
2.VGAコントローラは50MHz動作なので、16*20(ns)=320(ns)の余裕がある。つまり16深度まで戻ったらDDR SDRAMからの読み出しを再開する訳だが、320nsの間にDDR SDRAMからのフレームデータが来ればOKな訳だ。その場合に、16深度読むときに何バーストでDDR SDRAMから読むかというと、VGAコントローラはDDR SDRAMの半分のスピードならばFIFOがあふれないはずなのでDDR SDRAMから16+8=24回、読み出すことにする。
3.最悪条件は16深度まで戻った時に、リフレッシュ動作が起こることだ。リフレッシュ動作のレイテンシを計算すると、PALL(プリチャージ)=20ns, REF(リフレッシュ)=100ns, ACT(バンクアクティブ)=200nsで合計140nsだ。320-140=180ns、よって、DDR SDRAMコンローラの18クロック中、VGAコントローラの9クロック中にDDR SDRAMからデータをもらってくることが目標となる。
4.シミュレーション時にレイテンシが大きすぎる時には、FIFOを64深度に改めることにする。
  1. 2007年04月10日 21:30 |
  2. VGAコントローラ
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/461-b0b03c73
この記事にトラックバックする(FC2ブログユーザー)