解像度

今回はフレームレートが遅い分、スキャンラインの本数が多いという条件なのでモニタにテストパターンを表示してみることにした。

次に FPGA にいれて、液晶モニタに表示してみたほう。(左端の縦線がでないのはバグ, アップスキャンモードでシミュレーションしてなかった)

下の16dotが表示しきれていない。液晶モニタとしては 640x480 で表示しているとつもりなので、384x256 の2倍の 768x512 をオーバースキャンで映しているという点で評価したほうがいいかもしれない。

無難な映像信号とするには 800x600 で映るように補正をかけた方が良さそうだ。そうなるとCPUの処理時間なり座標系統に矛盾が発生するのでどうやって補正するのかちょっと考えてみたい。というのも、縦画面ものや今の規格と大きくかけ離れた解像度もサポートできたほうがよいからである。

VESA の規格で似ている値が表示領域 800x600, フレームレート 56Hzというやつ。pixel clock 38.1 MHz, Width 1088, Height 619. これで 56.6Hz なのでスキャンラインの本数を 635 に水増しすると 55.1 Hz という、元のフレームレートに近い値になる。

このシステムはスキャンラインに割り込みがかけられるので再現度を上げるなら、ライン単位で処理数を補正しないといけない。このためCPU のクロック周波数は元が Master/4 で 8MHz なので 9.52 MHz に変更。もとの 284x2 line 分は 8MHz で動かせる回数の clock 数だけ動かして後は CPU を止める。635-284x2 line の分は全て CPU を止める。

これで 800x600 にアップスキャンすることが可能なんだが、FPGA が 10MHz 未満は出せなかったような。10 MHz で補正をかけないとだめかも*1。ここらへんはテストパターンを作ってモニタがいい感じになるか調整してから進めないと難しそうだ。

*1:CPU のマニュアル見たら 3.3V だと 8MHz が上限って書いてあるからクロックアップになってしまう