VDG周りが出来たので、それを表示するためにVGAモニタ出力の回路を設計する事にしました。
ビデオ出力も考えましたが、ハードルがかなり高いようです。
詳しく書かれているページはこちら →
http://picavr.uunyan.com/ この中のAVRの工作、の所にいろいろ書いています。
VGA出力は、かなり簡単なようです。
VGA出力の仕様はこちら →
http://www.epanorama.net/documents/pc/vga_timing.html このページによると、HSYNC、VSYNC、を適切に出力すれば、出力できるようです。
とりあえずテスト的にカウンタを組んで、HSYNC、VSYNC、を出力するように HDL を組みました。
データはとりあえずベタ"1111"としました。
で、QuarutsII でレイアウトすると...画面が出ない。
ロジアナで見てみると、カウンタの値がめちゃくちゃ。
ちゃんとタイミング制約ファイル(〜.sdc)を作らないとだめかー、という事で(どうせ必要なので)、作成してみることにしました。
その制約ファイルがこれです。
sdc ファイル この際なので、後から必要なものも入れました。
2〜 3行目:外部からのクロックの設定
5〜12行目:PLLの逓倍/分周の設定
14〜18行目:clock uncertainty の設定
20〜25行目:それぞれのクロックは非同期なので、それらの間のパスはタイミング検証しないようにする。
28〜37行目:出力信号の遅延値の設定
PLLの分周比は変な数字ですが、出来るだけオリジナルのクロック周波数に近づけた結果です。
50MHz × 63/220 = 14.318MHz(VDG周りのクロック)
50MHz × 23/ 72 = 15.972MHz(CPUのクロック)
50MHz × 1/ 2 = 25MHz (VGA出力のクロック)
これで、レイアウトしてみると...やはりまだだめ。
ロジアナで見たカウンタ値もめちゃくちゃ。
....と思ったら。ロジアナの信号のアサインが、MSBとLSBが逆でした。
カウンタはキチンと動いていて、パルスもちゃんと出力されているのに、画面が出ない...
もしやと思って、表示期間以外を"0000"にするようにすると...おー、ちゃんと色がでたー。
しょーもないミスをしてしまいました。