オシロスコープでビデオ信号を観測するとき、あると便利…というか、どうしても欲しくなるのがビデオラインセレクタです。ラインセレクタとは、ビデオ信号の中の任意の狙ったラインだけにトリガをかけるための測定補助機器です。
今使っているオシロは、拡張機能でラインセレクタやIRE目盛りなどを簡単に追加できる機種なので、わざわざ自作る必要もなかったのかも知れません。まぁ、このラインセレクタを構想したのはそのオシロを買う前でしたから(^^;。
| トリガモード | 全ライン、両フィールド、奇数フィールド、偶数フィールド 奇数フィールド(superframe中)、偶数フィールド(superframe中) |
| 操作パネル | 表示: 16桁x1行 LCDモジュール 操作: UPボタン、DOWNボタン、モードボタン |
| 入出力 | ビデオ入力: CVBS/Y 入力/スルー(75Ω/Hi-Z) トリガ出力: TTLレベル(立ち上がり) |
| 電源 | DC 5〜12V, 20mA |
ラインセレクタの製作例は昔から数多くあり、それらは同期分離回路と多数のカウンタで構成されているのが普通でした。でも、今回はカウンタは使わずに全てマイコンで処理しています。回路図を見ると分かるように、非常にシンプルな回路でなおかつ多機能を実現できました。
ビデオ信号から分離されたコンポジット同期信号は、AVRの外部割り込みとF/Fに入ります。トリガ出力をソフトウェアだけで処理するとどうしてもジッタが出るので、トリガの瞬間は同期パルスのエッジがそのまま出力に抜けるようにしています。
同期分離回路はディスクリートで組みましたが、手持ちがあるならLM1881を使うと良いと思います。基板上のテストピンには、オシロで波形をモニタするとき便利なようにシンクチップクランプした波形を出しています。
フォアグランドプロセスでボタン入力や表示を処理します。実際のラインの計数やトリガ処理は全てバックグランドプロセスで行います。AVRは高性能なので処理能力はまだまだ十分に余っています。F/Wやハードをちょっと拡張すれば、もっと多彩なトリガモードやマーカーの合成なども簡単にできるでしょう。
16bit TC1のクロックソースを1.25MHzに、コンペアレジスタを65に設定にします。TC1は、1ライン期間で79までカウントアップする計算になります。ライン計数処理は、外部割り込み(INT1)で駆動されます。割り込みが入ったときTC1の値が60(3/4H)以上のときはTC1をクリアしてカウンタ変数をインクリメント(525の次は1に戻る)します。60未満の場合は、Hlaf-H割り込みなので計数処理をスキップします。
カウンタ変数を+1したあと、カウンタの値(=次のライン)がトリガ指定ラインとマッチした場合は、トリガ要求フラグを立てておきます。次にTC1が65(次のライン開始前10μs)で常にコンペアマッチ割り込みが入るので、このときトリガ要求が立っていたら、F/Fのリセットを解除します。そして次の同期パルスは出力に抜けます。F/Fは次の外部割り込みで再びリセットされます。トリガ出力のパルス幅は2μs程度になります。
外部割り込みの8μs後に同期信号の値をサンプリングしてシフトレジスタ(左シフト)に入れ、Hlaf-H割り込みの場合はそのまま抜けます。ライン開始ならシフトレジスタの値を調べて 0b11111110 で垂直同期開始と判断します。奇数フィールドのライン4だけがこの条件にマッチするので、そのときカウンタ変数に4を代入してビデオ信号のフレームとカウンタを同期させます。この同期処理はカウントアップの前です。
外部割り込みが入らないと約20msでTC1がオーバーフローしてその割り込みが入ります。この割り込みが入ったら、無信号シグナルをフォアグランドタスクに送り、無信号フラグを立ててます。無信号フラグは外部割り込みでクリアされます。
まず、ビデオ信号を入力に接続します。ビデオ信号をスルーで別の機器へ中継するときは、終端抵抗を切り離しておきます。トリガ出力はオシロに適当なトリガソース(立ち上がりエッジ)として接続します。入力ビデオ信号は、NTSCを前提として動作しています。「うちのTVはPALだ」と信じて疑わない方は、PAL用のF/W(LS_PAL.ASM)を使ってください。
モードボタンを押すと、トリガモードが順に切り替わります。UP/DOWNボタンは、1回押す毎にライン番号(1〜263)を±1し、さらに0.4秒以上押し続けると高速送りします。フィールドの範囲を外れたら、反対側のフィールドに飛びます(OddまたはEvenモードのとき)。また、ゲーム機などのノンインターレーススキャンでは、ラインカウンタが263でリセットされてしまうので、偶数フィールドにはトリガがかかりません。各トリガモードの動作は次の通り。
| 表示 | 動作 |
|---|---|
| All Line | 全てのライン。 |
| Both <n> | 両フィールドの指定ライン。(※2) |
| Odd <n> | 奇数フィールドの指定ライン。 |
| Even <n> | 偶数フィールドの指定ライン。(※2) |
| O--- <n> | スーパーフレーム中の1奇数フィールドの指定ライン。(※1) |
| -E-- <n> | スーパーフレーム中の1偶数フィールドの指定ライン。(※1) |
|
※1:スーパーフレームモードはSC-H位相を取っているわけはなく、 単に1フレーム飛ばしでトリガしているだけなので、 どちらのフィールドにトリガがかかるかは決まっていません。 また、PAL用F/Wはスーパーフレームに対応していません。 ※2:それに相当するフレームライン番号も表示(括弧内)されます。 | |

