Spartan3E Starter KitのVGAコントローラをVerilogで書こうと思っているので、仕様を決定している。
VGAの表示領域は800×600で72Hz。とりあえずはテストのためにビットごとに色を+1で作る回路をつけて状況を見ようと思っている。でも、仕事が忙しくなれば家でも仕事をするかもしれないので、中断するかもしれない。
まずは
fpga-lab.orgさんの
3月25日の徒然日記で知った
VGA Video OutputでVGAフォーマットのお勉強。その結果、仕様を一部だが決定した。
DDR SDRAMコントローラを使うために、Spartan3E Starter KitでVGAコントローラを作ることにした。解像度は800×600、垂直同期の周波数は72Hzとする。そうするとピクセルクロックは50MHzとなる。このピクセルクロックはSpartan3E Starter Kitに搭載される50MHzの水晶発信器をDCMで等倍して作ることにする。
水平同期関係のパラメータは、表示領域が800ピクセル、Front Porchは56ピクセル、Back Porchは64ピクセル、水平同期パルスは120ピクセルとなる。

一方、垂直同期関係のパラメータは、表示領域が600ライン、Front Porchが37ライン、Back Porchは23ライン、垂直同期パルスは6ラインとなる。

画素のフォーマットはSpartan3E Starter KitではRGBそれぞれ1ビットずつの3ビットが必要である。それぞれを1バイトのビット1に割り付ける。更に4バイトごとに整列させるためにダミーバイトを1つつける。
Spartan3E Starter KitのDDR SDRAMは16ビット幅であるので、1クロックで4バイト読み出しが出来る。(16ビット×2) これは4バイトなので、VGAの1ドット分となる。DDR SDRAMは100MHzで動作しているので、画面描画のために、フルにDDR SDRAMから読み出していると50/100でDDR SDRAMの帯域の1/2を占有することになる。あとの1/2でDDR SDRAMにプロセッサからアクセスしたり、DMA(しないけど)したりすることになる。
現在のDDR SDRAMコントローラは、リードしたデータを読み出す場合にデータのみを出力しているが、VGAコントローラとプロセッサなどのほかのマスタ・デバイスのアクセスを分けるために、2ビット分のIDを付加する。
VGAコントローラ、プロセッサなどのほかのマスタ・デバイス、アービタ、DDR SDRAMコントローラのデータパスのブロック図を下に示す。
- 2007年03月29日 13:14 |
- VGAコントローラ
-
| トラックバック:1
-
| コメント:7
12bit RGB化
はじめまして。ガギゴンと申します。
いつも楽しみに拝見しています。
グラフィックコントローラ、非常に楽しみにしています。
恐縮ですが、ハードを改造してRGB12bit化はするのはどうでしょうか。
以下のサイトの通り改造してみたところ、うまく12bit化することが出来ました。
http://home.freeuk.com/fpgaarcade/displaytest.htm
- 2007/03/31(土) 00:24:35 |
- URL |
- ガキゴン #lHe5zLgI
- [ 編集 ]
ガキゴンさん、こんにちは。
12bit RGBはSpartan3A Starter Kitで実現されていますね。同じ抵抗分圧みたいですが。Spartan3A Starter Kitを買えば12bit RGBにしますが、今のところ改造する気はありません。その代わりといっては何ですが、たっぷりと拡張の余地を残してあります。
VGAコントローラも実は前々から作ろうと思っていたのですが、いまいちモチベーションがあがりません。PicoBlazeではつけてもたいしたこと出来ないでしょうし。。。
とりあえず、DDR SDRAMコントローラのバーストモードのデバックとして考えています。仕事に追われているので、(休暇も取ってしまったし)休みの日も家で仕事になりそうなので、早急には出来ないかもしれませんが、作りたいと思っています。
#何かリッチなCPUを乗せて小さなLinuxを載せると面白いかな?
- 2007/03/31(土) 05:42:35 |
- URL |
- marsee #-
- [ 編集 ]
marsee さん、こんにちは。
デバッグ表示用にVGAコントローラを設計されているのですね。
また拡張の余地があるとのこと、了解です。
>#何かリッチなCPUを乗せて小さなLinuxを載せると面白いかな?
実は、こちら「FPGAの部屋」でMicroBlazeが取り上げられないかと
ひそかに期待しておりました。
個人的には、MicroBlaze + VGAコントローラ + ハードウェアスプライト
機能を実装して、オリジナルゲーム機なんかつくれたらと思ってしまいます。
勝手な妄想を書いてしまい申しわけありません。
- 2007/03/31(土) 08:50:44 |
- URL |
- ガキゴン #-
- [ 編集 ]
>デバッグ表示用にVGAコントローラを設計されているのですね。
自分で作った物がちゃんと動くかに興味があります。VGAコントローラ、と書き込み回路をつなぐとバーストでアクセスがあるはずなので、データがちゃんと読み書き出来るかどうかがわかるはずだと思っています。つまりデバックするために周辺回路を作るイメージです。
MicroBlazeは.fpga-lab.orgさんなどを参考にされると良いと思います。実を言いますと、あまりマイコン関連に興味がなくて、特にライセンスがあるであろうMicroBlazeにはあまり興味がありません。唯一、アナログもコンフィグできるPSoCに興味があります。載せるのであればOpenCoresの何かかなとおもっています。
何かお仕事とかニーズがあればマイコン関連もやるとは思いますが、趣味でどうしてもやりたいとかいうモチベーションがありません。
PCI ExpressやHyper Transportなどのハイスピード・シリアルIOなどに興味がありますが、家でやれるようなものではないですし。。。
家では奥さんが土日お仕事が多いので、子守や家事の仕事があるので、なかなか集中して仕事及び趣味が出来ません。やはり、簡単な回路や、新しいFPGAのお勉強などしかできないと思っています。
#家事も結構悪くないと思うときもありますけど。。。お風呂掃除をしている時にひらめいたりします。。。
- 2007/03/31(土) 10:13:45 |
- URL |
- marsee #-
- [ 編集 ]
わー、ピンの足にチップ抵抗つけてますね。ガキゴンさん、おもしろいページをありがとうございます。
3Eのstarter kitはFXコネクターの敷居が高くて、ちょこっと電子工作とかするには向かないと思っていました。
- 2007/03/31(土) 21:11:46 |
- URL |
- Sim #mQop/nM.
- [ 編集 ]
SVGAにはピクセルクロックが50MHzのパラメータもあるようです。
Hdisp = 800, Hfp = 56, Hsync = 120, Hbp = 64, Vdisp = 600, Vfp = 37, Vsync = 6, Vbp = 23です。
色々なパラメータが載っています。
http://web.mit.edu/6.111/www/s2004/NEWKIT/vga.shtml
- 2007/03/31(土) 21:34:53 |
- URL |
- Sim #mQop/nM.
- [ 編集 ]
Simさん、こんにちは。
液晶ディスプレイ買ったばかりなので垂直60Hzのみだと思っていたら、72Hzも対応しているようです。ちょっと書いてあるピクセルクロックが違いますが、72Hzでやってみようと思います。ありがとうございました。
ブログを書き換えます。
- 2007/03/31(土) 22:12:47 |
- URL |
- marsee #-
- [ 編集 ]
FPGAの部屋さんで、VGAコントローラねたをしているのに刺激されて出してみます。Spartan 3 starter kit用に作った9bitアナログ出力ボードです。抵抗を並べてアナログ信号にしてます。RGB各3bitずつなので9bitです。さきっぽはサンハヤトの変換基板CK-13です(右側の緑の基板)
- 2007/04/01(日) 15:53:03 |
- Sim's blog