コンポジット信号の壁

 TVのビデオ入力信号は、コンポジットビデオやS端子がまだ一般的ですが、FPGA-PACMANでこれらのNTSC信号を扱うには、無理があります。
 理由はいくつかありますが、最も大きな原因はPACMANのビデオタイミングがNTSCからはずれていることです。

 NTSCのカラー信号は3.58MHzのサブキャリアで変調されますが、受信器(TV)の復調回路では大きく分けると下記の2種類があるようです。

1.フィルタ方式
 3.58MHzのトラップフィルタなど、アナログ回路でC信号を復調します。
 従来からの一般的な方法で、普通のTVに多く見られます。
 サブキャリアは送信側も受信側も3.58MHzにピッタリ合っている必要があり、双方の周波数にずれがあると画質が劣化します。

2.PLL方式
 PLLとVCOを使い、水平走査周期を455.5逓倍して3.58MHzのサブキャリアを作成します。
 送信側のサブキャリアを正確に再現出来るため、送信側と受信側の周波数誤差による画像劣化が発生しないのが特徴です。
 液晶TVなど、デジタル制御傾向が強いモニタに見られます。
 言い換えると、サブキャリアは3.58MHzちょうどでなくても良いということですが、水平走査周期はサブキャリアの455.5倍で完全に同期している必要があります。
 水平走査周期とサブキャリアが同期していないと、画質は劣化します。
 手持ちの液晶TVがこれでしたが、サブキャリア3.58MHzのまま水平走査期間を縮めていくと、色がにじむような感じになりました。

 FPGA-PACMAN beta2では、1ラインをサンプリングして、水平周期をNTSCに合わせて再スキャンして出力しています。
 垂直同期のタイミングで、スキャンをブチ切って無理矢理同期させているので、PLL方式のTVでは、画面上部が崩れるなどテレビを選びます。
 PACMANのビデオタイミングは、CPUの動作とも同期していて、再現性を維持したまま変更することは非常に困難です。
 正規のNTSC信号で出力する為には、画面1フレームをサンプリングし、フレーム毎に再スキャンする必要があり、大量のメモリと回路を必要とします。
 また、輝度信号も色信号もローパスフィルタにより抑圧されるため、特にコンピュータのような画面では再現性が悪くなります。
 FPGAでデジタル変調する場合、変調回路も複雑になります。

NTSCについては"Electronic Lives Manufacturingサイトのここに丁寧な説明があります。