2005. 1.20 新規
TV出力の概要
TV接続は、さすがに1bitDAC等では出来ない。(と思う)
仕方なく、A2拡張コネクタに基板を接続してビデオDAC回路を構成して、TVに繋ぐことにする。
当初は、どんなTVにも繋がるように8bitDACx1でコンポジットにする予定だったが、試しにモノクロ表示させたところ、あまりの解像度の低さに愕然とし、S端子に切り換えた。
回路構成はFPGAでPC-8001を作る計画とほぼ同じ1K-2Kの4bit DACx4チャンネルで、振幅幅はYC共に約1Vpp、PNPトランジスタで75Ωドライブしています。
信号の作り方とかNTSC信号については、他の方のページを参照してもらうとして、X1固有の事と、あまり書いてないことを説明します。
カラーサブキャリア基準クロック発生回路
NTSC出力の場合、カラーサブキャリアの倍数のクロックが必要である。
通常は28.636MHzとか14.318MHzとかの発振器を使うが、Spartan3ではDCMを2つ使うと、標準装備の50MHzから簡単に作れてしまうのだ
1つ目のDCMで、50MHz x 9 / 10 45MHz
2つ目のDCMで、45MHz x 7 / 11 = 28.63636....MHz
DCMを2段重ねで周波数変換する場合、倍割率を求めるのが面倒である。
プログラムで総当たりするのもてっとり速いが、各周波数を素因数分解して、因数の公倍数を求めると、値を知る助けになる。
DCMで作ったビデオクロックはジッター(ゆらぎ)が気になるところだが、偽X1の画面を見る限り、VGA,NTSCともに、ジッターを目で確認することができないレベルの安定度がある。
Cycloneでも内蔵PLLを使うことで、同様のことが可能かもしれない。
AGC回路とレベル調整
最近のビデオ信号入力装置(TVなど)には、大抵AGC(オートゲインコントロール?)機能が備わっている。
電波状況(TV放送)や粗悪ケーブル等によって信号レベルが低下しても、それを補正して画質の劣化を防ぐ回路である。
Y信号は、同期信号とブランクレベルの差、C信号はカラーバーストのレベルを基準にゲインを決定するらしいので、それらを変更することで意図的に全体のゲインを調整することが出来る。
FPGAでPC-8001を作る計画ではC信号を0.3vppで出力してるらしいが、それでもちゃんと色がついているのはAGCのおかげである。
X1の実験時において、計算値で青のカラー信号がオーバーレベルになったため、カラーバーストのレベルを一段上げることで安易に対策した。
サブキャリアの復調とY/C分離
X1の水平走査期間は、サブキャリアの448倍とNTSCからは少しはずれている。
これは、コンポジット信号にとっては問題で、下記の様な画質劣化を招く。
・水平期間からPLLでサブキャリアを生成する受信機では、サブキャリアの周波数ズレが発生する。
・上下のラインとサブキャリアが反転しないため、2次元Y/C分離は逆効果となる。
この他、コンポジット信号そのものが持つ問題として、YCクロストークで色がにじんだり、解像度が低下したりします。
S端子であれば、PLLを問題を除き原理的にこれらの不具合は発生しないので、S端子はコンピュータ向きといえるでしょう。
しかし、S端子の登場は遅すぎたようで、日本のクラシックPCでS出力を持つものは見あたりません。
色信号の不思議
X1の場合、WIDTH40ではドットクロック=カラーサブキャリアなので、PC8001の様に単純に変換しても、それなりの表示がでます。
しかしWIDTH80では、ドットクロックが2fscの7.15909MHzとなり、カラーサブキャリア1波にたいして2ドット表示しなければならない。
特に青において色信号が左右にずれたり、ぼやけたりする。
YもCのしかるべきLPFを入れてないので、そのせいだと推測するが、カット&トライにて、ディレイのみで調整した。
・キャリア信号の0°〜180°で1ドット、180°〜360°でもう1ドット表示
・C信号は、Yに対して180°遅らせる
次にタイリングの問題、WIDTH80ではタイリング(ディザ)で中間色を表示させるが、H方向の偶数、奇数ドットに対し、青+赤でタイリングするのと赤+青でタイリングしたのでは明らかに違う色になる。
これはタイリングペイントに横縞が出来て見てくれがかなり悪いので、なんとかならないかとかなり悩んだ。
しかし、実機(XTurboZ内蔵テロッパ)で確認したところ、やはり同じ色になっていならなかった。
色の再現性は実機の方がましなのだが、解像度とのトレードオフになりそうなので、「所詮そういうものか」とすっぱり諦めることにした。
色の再現性を除いては、実機よりNISE-X1のS映像の方が数段綺麗である。
カラー信号は2fscで0°=V,90°=U,180°=-V,270°=-Uと出力しているので、タイリングにおける奇数ドットと偶数ドットの関係は、符号反転するだけで同条件のはずだし、S端子の出力で確認したので、YC分離回路とクロストークの問題はない。
しかし、結果は同じにならなかった。
アナログ音痴の私にとっては、まさに未知の世界だ。
回路図
sp3_x1.pdf
ジャンパ設定で出力モードを3通りに切り換えられる。
1)"4bit x 2ch spearate"
S端子出力
2)"4bit x 2ch composite"
簡易的なコンポジット出力
DAC精度の悪さ、クロストーク、2次元YC分離の悪影響でY,Cともにボロボロで、見るに耐えず、レベル的にはX1turbo内蔵テロッパと同等かそれ以下である。
3)"8bit 1ch composite"
コンポジット出力で精度を向上させるとができる。
Y/Cミキシング処理はFPGA内部で行う必要がある。