映像同期ずれとその対策

この項では PCE の映像仕様は Vsync 59.83Hz (263 line) として言及します. Vsync 60.05Hz (262 line) についての記述は省略しますが、実装と確認はこのモードにも対応した設計を行ないます.

720p に準拠するために発生する同期ずれ

R-TYPE の2面の映像がわかりやすかったので発生場所を図示して説明します.
このシーンでは 2 フレームに1度、背景が 1 pixel 横にスクロールします.



この画面の途中で 1pixel スクロールがずれる場面が(計算上)約5秒に1度、10フレーム程度が連続で発生します。人の直感では引っ張られるような違和感があります.

720p 標準規格準拠

この原因はVsync が 720p では 60.00Hz, PCE では 59.83Hz と一致しないことです. 長距離走でいうところの周回遅れが約 5 秒に1度発生しています. 720p の VSync は 60.00Hz と 59.94Hz があり Vsync を 59.94Hz に変更すると発生頻度が約10秒になりますが、頻度が高いことに変わりがありません.

この方式の利点と欠点は下記です.

  • 利点: 規格がしっかりと決まっているため現在のデジタル映像機器ではきれいに映すことが出来る.
  • 利点: 高画質録画も出来る
  • 利点: PCE 本体の改造が不要
  • 欠点: 同期ずれが発生する頻度が高い
  • 欠点: 遅延が 0 から 1 frame の間で少数単位で可変する

対策1: PCE の master clock を利用して独自の映像規格を作る

PCE の Hsync に完全同期して、表示領域 1024x768 ぐらいの映像信号を作り出すことに一応成功しています.Hsync に同期し、3倍の早さで動かしています.

この方式の利点と欠点は下記です.

  • 利点: 遅延がほぼない (1/263frame固定)
  • 利点: 構造が単純
  • 欠点: 独自規格で映る機材がどれぐらいあるかわからない
  • 欠点: 録画出来ない
  • 欠点: PCE 本体の改造が必要

最近この部分もソースを書き直して細かいバグを直したのですが、4:3 のモニターで映らなくなってしまいました. 別のモニターでは映ってはいますが、どの範囲で映像規格を調整していいのかわからない状態です.

対策2: 720p の pixel clock を調整して PCE の VSync に極力近づける

up1 基板の再設計を行なうときに気付いた方法です.

720p の pixel clock は 74,250,000 Hz, VSync は 60.00Hz と決まっています. pixel clock を 74,034,796 Hz にすると, VSync は PCE と同じ値にできます. このような中途半端な値は programmable any frequency clock generator を利用することによって非常に近い値を出すことができます. この Si5351A は何故か安いので利用を検討してます. *1
http://akizukidenshi.com/catalog/g/gI-10141/

Si5351 が出せるこの周波数は計算上全く同じ値でなく 10 の -1 乗からずれていきますが、精度はかなりよいです*2. 720p 標準規格同様に何秒に1度,映像上同期ずれが発生するのか計算したら、一番早くても18日*3かかるそうです.

この計算が合っていていれば本体の改造なしで同期ずれをほぼ発生しない状態を作り出すことが出来ます. しかし、規格非準拠のため受信側の映像機器が映るのかは動かしてみる必要があります.

映像機器の問題は今の状態ではわかりませんが利点と欠点は下記と言えるでしょう。

  • 利点: PCE 本体の改造が不要
  • ??: 遅延が 0 から 1 frame の間で少数単位で可変するが発生頻度が非常に少ない(1日は発生しない)
    • おそらく 0.8 frame 程度で固定での遅延
  • ??: 独自規格で映る機材がどれぐらいあるかわからない
  • ??: 録画出来るかもわからない

*1:音向けclock 22.5792MHz の入手手段が余り良くなかったのでこれを使うことを考えていた

*2:PCE VSync 59.826,097,86Hz, 720p調整済み Vsync 59.826,097,78Hz

*3:日です.秒でも分でもないです