HD6445+XGAディスプレイ

HD6445の使い方を勉強中です。

グラフィックボード(CRTC)その1
こちらのページを大いに参考にさせてもらってます。もちろんデータシートも。

で、気付いたことメモ。

  • 同期信号のタイミング指定がキャラ単位なので、先日PSoC5でうまくいったタイミングと同じにできない。HD6445が出す信号をPSoC5でエミュレートして検証する必要あり。
    • 特に垂直はかなりズレそう。ただしトータルは R4 VERTICAL TOTAL ADJUST で調整できるはず。
  • ラスター(1文字あたりの縦px数)は1文字8*8pxなので8。ではなく、32を設定する。で、ラスタアドレスは下位2bitを無視してキャラROMに繋ぐ?
    • 256*192pxを縦横4倍してXGA(1024*768px)としてディスプレイに出力するための方策。
    • データシートのINTERNAL BLOCK DIAGRAMによるとラスターカウンタは2段あって、2段目がスムーススクロールのコントロールに使われてるよう。つまり、上記のような拡大出力にも対応していて、XGAレベルでの4px移動をスムーススクロールとして扱ってくれるということなら、すごく考えられたICだ。その機能を使うかは別として…。

追記

  • スムーススクロールは行ごとの開始ラスターアドレスがR29に設定した値になる機能のよう。ラスター上限を超えると次の行のデータが出てくるような図があるので、そのタイミングでVRAMのアドレスが次の行+ラスターアドレスが0にリセット、となるのでしょう。つまりR29を+4ずつ足していけば4倍拡大出力時のスムーススクロールも実現可能、のはず。
  • それとは別に、縦2倍ならCRTCで対応可能(RASTER INERPOLATION)。同じラスタのタイミングを2回ずつ出力してくれる。
  • SKEW。詳しい説明がないので常識的な概念なんだろうか…たぶん、可視範囲でアクティブになる信号DISPTMGのディレイをかけられる(キャラクタ単位)。先日考慮した「走査に先行して出力データを作っておかないといけない」というのはこれで対応できそう。走査の方を遅れさせるわけですね。この場合、同期信号も遅れてくれた方がいいと思うけど、その辺はどうなってるんだろう。
  • 分割スクリーン機能あり。どういう仕組みだろう?と思ったけど、各スクリーンごとにVRAM上の開始アドレスを設定できるらしい。なるほど!