MPLAB X IDEのデバッグ方法が分かったところで、JR-100のコンポジットビデオ信号をPICで(ほぼ)正しいNTSC信号に変換する回路を検討していこうと思います。目的はJR-100のビデオ出力信号をビデオキャプチャアダプタGV-USB2でキャプチャすることです(参考記事:JR-100+GV-USB2)。エンジニアなら、動かなければ自分で作る、というのが基本ですよね!?
まず映像関係のパラメータをまとめてみます。MB14392内の処理が不明のため、以前の計測結果から推定してます。JR-100に搭載されている水晶発振子の周波数(14.31818MHz)に対して、どれもほぼ整数倍になっているのでたぶん推定は合っているでしょう。モノクロNTSC規格からずいぶんとずれていますね〜。
パラメータ | JR-100の値 | モノクロNTSC規格 |
---|---|---|
基準クロック (fB) | 14.31818MHz | – |
ドットクロック(fD) | 7.15909MHz (fB/2) |
– |
水平同期周波数(fH) | 15.980kHz (fD/448) |
15.750kHz |
垂直同期周波数(fV) | 62.4Hz (fH/256) |
60Hz |
1ラインの時間(1H = 1/fH) | 62.58μs | 63.49μs |
1フレームのライン数 | 256 | 262.5 |
水平同期パルス幅 | 8.94μs (64/fD) |
4.7μs |
垂直同期パルス幅 | 500.6μs (8H) |
190.47μs (3H) |
特に水平同期パルス幅と垂直同期パルス幅が大きく違っているのが良くなさそうです。それならJR-100が生成する映像信号はそのままとして、水平・垂直同期信号だけを規格に従った波形になるように変換するという作戦でいってみますか。最終的には変換の入力はJR-100のコンポジット信号としたいところですが、まずはこの作戦がうまくいくか確かめるためにJR-100内部の同期信号と映像を直接取り出して試してみることにします。
まず初めに下調べから。NTSC信号についてはChaNさんによる「RS-170A NTSCビデオ信号タイミング規格の概要」を大変参考にさせていただきました。僕にとってはバイブルの一つです。
早速回路を設計してみます。信号の生成にはPICを使うことにしました。以前からPICを使って何か作ってみたかったのでちょうどよいテーマが出来ました。僕にとってPICは完全に初めて触るものです。なのでどのPICを選ぶかは深く考えず、DACがあると今後便利そう?というくらいのノリでPIC16F1705を選択しました。秋月で100円です(2017/9/23現在)。今回の回路では入出力ポートの状態変化割り込みくらいしか機能を使ってないので、他のものでもよいかもしれません。
注意:僕はまだPIC超初心者です。回路が正しいかまだ分からないので、もし同じものを作る場合はその点を踏まえ自己責任でお願いします。。。
(2017/10/9追記) 回路の一部を修正しています。最新版はこちら⇒JR-100のNTSC信号を標準化(4)
クロックは3.579545MHzの水晶発振子を外付けしてPIC内蔵のPLLで4倍にすることにします。PIC16F1705は4クロックで1命令を実行するので実行性能は3.579545MIPSですね。ビデオ信号を扱うにはちょっと性能的にシビアな気がしますが、とりあえずこれで検討を進めます。
回路としては上のブロック図そのままにPICに置き換えたものです。I/OポートRA0に入力したJR-100の同期信号のエッジを検出して、適当な時間の同期パルスをRC0から出力することにします。同期・映像信号の加算は単純に抵抗による加算回路としました。
ついでに出力電圧もNTSC規格に沿って変換することにします。RC0から出てくる整形後の同期信号とバッファICから入ってくる映像信号はどちらもTTLレベルのHigh(5V)とLow(0V)です。RC0がHigh、映像がLow (黒レベルの信号)のときを0REとして、RC0がLow、映像がLow (同期信号の底)ならほぼ-40RE(-294mV)、RC0がHigh、映像がHigh(白レベル)ならばほぼ100RE(743mV)となるように抵抗値を調整してます。
さらに、入力信号はJR-100内のICから直接信号を引っ張ってくるので、念のためバッファ74HC125を経由して今回の回路への入力とします。
さて、入力信号をどうやって取ってくるかを考えるために、JR-100内部の映像出力周りの回路を見てみます。回路図はかなり前にとある方からいただいたものを僕が改めて清書したものです。同期信号はMB14392のSYNCピンから出力されており、また映像信号はIC21 (74LS00)の11番ピンから出力されています。MB14392のSYNCピンがHighのときにトランジスタQ3がONになり、それに伴いトランジスタQ2がOFFになってVIDEO OUTが0Vになることから、MB14392が生成する同期信号は立ち上がりと立ち下がりが反転したものになっているようです。
回路ができたので、次はPICのプログラムを検討するために具体的な信号の関係を整理してみようと思います。
コメント