家庭でのビデオ編集などで、ビデオ/TV機器の調整をしようとするきに必要になってくるのがテスト信号ジェネレータです。カラーバーやクロスハッチなどの模様をモニタに表示して色調や画面サイズのチェック・調整を行うアレですね。また、ビデオシステムの調整やその特性の評価においては、特殊なテスト信号を被測定機器や伝送路に通してビデオ信号専用の測定器(波形モニタやベクトルモニタ)で測定されます。
この手のパターンジェネレータは多くのキットが出ていたりしますが、どれもアナログ方式で波形の精度があまり良くなく、生成できるテスト信号の種類もごく限られているので、電子工作レベルでの使用にはちょっと物足りないのが現状です。そこで、自作回路の評価・調整にも使える高精度なテスト信号を生成することを目的に、デジタル方式のテスト信号発生器を製作してみました。
| テスト信号 | NTSC (CVBS,Y/C) | Y/CB/CR (480i) | Y/CB/CR (480p) |
|---|---|---|---|
| ブラック | ○ | ○ | ○(wide) |
| フルカラーバー (75.75,100.100,100.75) | ○ | ○ | ○(wide) |
| SMPTEカラーバー | ○ | ○ | |
| ARIBカラーバー (75%,100%,+I) | ○(wide) | ○(wide) | |
| 100%フルフィールド (赤,緑,青) | ○ | ○ | ○(wide) |
| クロスハッチ | ○ | ○ | ○(wide) |
| クロスドット | ○ | ○ | ○(wide) |
| マルチバースト | ○ | ||
| 0-5MHz水平スイープ | ○ | ○ | |
| 0-10MHz水平スイープ | ○ | ○ | ○(wide) |
| 変調ランプ | ○ | ||
| 変調10ステップ | ○ | ||
| 変調ペデスタル | ○ | ||
| ランプ | ○ | ○ | ○(wide) |
| 5ステップ | ○ | ○ | ○(wide) |
| NTC7コンポジット | ○ | ||
| ウィンドウ | ○ | ○ | ○(wide) |
| フラッシュ | ○ | ○ | |
| sin(x)/x | ○ | ||
| ボータイ | ○ |
とりあえず、電子工作で必要になるテスト信号は最低限サポートすることにします。さらに、メーカー製のテスト信号発生器を参考に、表1に示すようなテスト信号を作成してみました。それらの多くはベクトルモニタや波形モニタ、スペアナなど専用測定器がないと意味のないものですが、興味半分といったところなので、まぁいいでしょう(^^;。趣味のビデオ編集程度の用途ならカラーバーやクロスハッチなどだけで十分です。各テスト信号の詳細については、ビデオテスト信号の解説を参照してください。
NTSC方式のテスト信号を生成します。DACを複数チャネル設けて、コンポジット信号(CVBS)と、S信号(Y/C分離)も同時に生成できるようにします。さらに、当初は予定になかったY/色差コンポーネント信号(Y/CB/CR)もサポートします。実は、このプロジェクトは何年も暖めて(放置して?)いたものなのですが、そうしているうちにアナログテレビ(NTSC)の先行きが怪しくなってきてしまったので、製作開始に当たり急遽追加したのです。自作ったはいいけど既に....ではシャレにならないですからね。
| 主要IC |
DAC: MB40988 (富士通) MCU: ATmega161 (ATMEL) PLD: XC95108 (Xilinx) |
| 出力端子 |
CVBS:RCAピンジャック Y/C: 4pin Mini-DIN (S1対応) Y/CB/CR: 14pin D型ハーフピッチ (D2対応) |
| 出力インピーダンス |
映像信号: 75Ω ID信号: 10kΩ |
| NTSC出力 D1出力(480i) |
タイミング: SMPTE 170M (RS-170A)準拠、セットアップ=0IRE CVBS出力: 輝度=714mV、同期=-286mV、バースト=286mVp-p Y/C出力: 輝度=714mV、同期=-286mV、バースト=286mVp-p Y/CB/CR出力: 輝度=700mV、同期=-300mV、色差=±350mV |
| D2出力(480p) |
タイミング: SMPTE 293M準拠 Y/CB/CR出力: 輝度=700mV、同期=-300mV、色差=±350mV |
| サンプリング | 8ビット×3、28.63636MHz |
| 電源 |
AC100V 50/60Hz、5W以下 |
| 製作費 | 約10,000円 (部品代) |
任意のパターンのビデオ信号を生成するには、フレームメモリにパターンデータを書き込んでおいて、それを順次読み出してビデオDACに送り込むという方法が一般的です。パソコンのビデオシステムと違うところは、可視部のピクセルデータではなく全ラインの生の出力波形を記録しているという点です。NTSC信号の場合、サンプリング周波数は4fsc(約14.3MHz)またはその整数倍が必要になります。また、これをテスト信号源として使うにはポストフィルタに特性の良いビデオフィルタ(遮断特性が急峻で群遅延がフラット、アパーチャ補正付き)が必要で、これは非常に高価で入手も困難です。そこで、サンプリング周波数に8fscを選ぶことでポストフィルタへの要求を緩和するようします。要はオーバーサンプリングと同じ考えです。
フレームメモリの容量は、ライン当たりのサンプル数×フレーム当たりのライン数だけ必要になるので、この場合は1820×525で、1Mサンプル分のフレームメモリを用意するのが正攻法といえます。さらに、8fsc(35nsサイクル)で途切れることなくデータを読み出せる必要があります。このような用途にはSDRAMが最適ですが、手持ちのジャンクSRAM(32Kバイト)を有効に使うため、何とかしてデータ量を圧縮する方法を考えてみます。
今回は、テスト信号が同じパターンのラインの繰り返しであることに着目しました。必要な種類のラインパターンだけメモリに置いて、ライン毎に必要なパターンを選択して表示することでデータ量を減らすのです。カラーバーのような変化の少ないテスト信号なら十数ライン分もあれば十分ですし、ダウンロード時間も短縮できてパターン切り替えが瞬時に行えます。さすがに垂直方向に連続変化するような画面(自然画、モノスコープ、垂直スイープなど)には対応できませんが。さらに、輝度信号と色信号を別チャネルに分けます。輝度信号は垂直同期部のパターンが多く、色信号は同相分と逆相分があるなど特徴に相違があるので、これらを別々に扱えば圧縮効率が上がり、Y/C信号も同時に得られます。
なお、この圧縮テクニックが使えるのはNTSC信号だけです。PAL信号ではカラーサブキャリアの位相がライン毎に少しづつ回転しているからダメです。SECAMなどはそもそもカラーサブキャリアの位相の概念がありません。それらのビデオ信号には素直にフレームメモリを使うしかありません。
今回はマイコンに手持ちのAtmelのATmega161を使いましたが、これに限らずどんなマイコンを使っても同じことです。マイコンは、ユーザI/Fや波形データのダウンロードなどの処理をします。信号出力中は、ライン毎に決められたパターンを順に選択していきます。波形データやラインシーケンステーブルはシリアルEEPROMに記憶しておきます。この際、輝度信号の単調性や色信号の周期性を利用して波形データを1/10以下に圧縮しておいて、ダウンロードするときに展開します。このように2段階の圧縮処理を適用することにより、数十フレーム分のデータ(100Mバイト相当)が40kバイト程に収まり、トータルで1/2500以下の圧縮率となっています。
3チャネルDACの1チャネルを輝度信号に、残りを色信号に割り当てます。色信号に2チャネル分取ったのは、Y/CB/CRコンポーネント出力に対応するためです。当然ですが、NTSC出力とコンポーネント出力は排他使用です。DAC出力はポストフィルタを通して高調波成分を除いた後、高速オペアンプでDCオフセットの調整とバッファリングして出力されます。オペアンプの反転入力にぶら下がっているCRは、アパーチャ効果による高域低下を補償するためのものです。
2桁の7セグメントLEDに出力中のパターン番号を表示します。また、有効な出力を出しているコネクタの表示LEDが点灯します。パターンはダイアルを回して選択、押して設定です。選択中はパターン番号が点滅します。
何分、数十MHzで動作するデジタル回路と高速アナログ回路が同居しているので、ノイズ対策はしっかりしなければなりません。電源を強化するため、片面が総グランドになっているユニバーサル基板に組み立てます。デジタル部とアナログ部はレイアウトで分離したうえで、グランドプレーンにスリットを切ってデジタル部からのノイズを遮断します。デジタルグランドとアナロググランドは、DAC付近で1点接続します。
というわけで、今回もユニバーサルカウンタと同じくガングロなデザインです(笑)。フロントパネルにスモーク板を貼り付けてしまえば、アルミケースの穴加工はいい加減で良いので製作が楽です。また、LEDのコントラストも良くなり視認性も向上するなど、安直な割にはカッコ良く(?)仕上がるので、オススメな方法です。
NTSCモードの100%カラーバー信号を選択して、TP4の波形をオシロで測ります。VR4でペデスタルレベルが0Vになるように、VR1で輝度のピークが1.43Vになるように調整します。片方を回すともう片方も少しずれるので、調整を2~3回繰り返します。TP5, TP6はY/CB/CRモードの100%カラーバー信号を出して、振幅を±700mVに調整します。
基準発振器にはTCXOを使いたかったのですが、入手困難のため、普通の水晶発振回路を使用しました。TC1を回して発振周波数を28,636,360±80Hzに調整します。
10MHzスイープ信号を出力して、Y信号の波形をオシロか波形モニタで観測して振幅が大体フラットになっていればアパーチャ補正はOKです。ピークが出たり、5MHz以上が大きく落ちたりしている場合は、C38で調整したあとC42,C46にそれと同じ値を付けます。
