あけましておめでとうございます。
スキャンコンバータのソースの見直しをしています。外部クロックを逓倍するDCMのX68000起動時や解像度モード切り替え時の挙動をなんとかしようとしましたが、なかなか効果ある対処ができませんでした。そこで、発想を変え、DDR2メモリへまずはどんな解像度のものもそのままキャプチャさせ、表示側で水平解像度変更を行わせることにしました。
SVGAのピクセルクロックは40MHzですが、今度はこれの1/1.5、1/3の周波数のクロックを使ってDDRのメモリを読み出し表示させるのです(水平・垂直同期はSVGAのままに固定)。
で、外部クロックとは違い、安定したクロック50MHzでまずは1/1.5のクロックを作り動作試験をしました。その時の出力画像はこちら。絵が斜めになっています。
なんでこうなるか考え、あれやこれや半日いじって、やっと正常に表示するようになりました。その対応記録です。
以下は表示タイミングを作る回路のVHDLソースの一部です。回路生成にあたって、ピクセルクロック換算で波形各部の長さを規定している部分で、SVGAのクロック40MHzの1.5分の1(正確にはDCMで作り出せたのは27.273MHzだったので、1.4667分の1)に合わせ、値を修正したところです。
C_HDEが水平表示期間を示し、800を545に直しているのですが、画像がおかしくなったのは、これが1多かったのが原因でした。C_HDEを544に減らし、合計値を合わせるため、C_HBP(バックポーチ)を逆に1足して生成し直すと正しく表示してくれました。HDMIの方も正常に表示してくれました。
こちらの回路生成では、X68000の起動時から誤動作することなく、512X512の画像をSVGA画像にしてくれました。解像度モード切り替え対応に向けて一歩前進です。
★★★ メインサイトへのリンク 「
X68000改造室」★★★
PR