このIPについて
すべてVHDLによって記述しています。後述しますが、特定のデバイスに依存するコードを含みます。ただし他のデバイスを使用する場合であっても、代替えの機能をご使用になることで特に問題なく本IPをご利用になることは可能だと思います(当然ですが、古いデバイスでは速度面で性能を満たさない場合はあります)。
このIPにご興味のある方は、ナビゲーションメニューの「お問合せ」をご参照の上、必要事項を記入してメールにてご連絡ください。FPGA受託設計開発サービスのご利用如何にかかわらず、ソースなどは基本的に無料で開示させて頂きます。もちろんカスタマイズ等のご用命は大歓迎です。
HDTV(1080i)の同期信号について

SMPTE 274Mの1920×1080スキャンニング・アナログインターフェースに規定される同期信号は、NTSCなどのSDTVで見慣れたものとはかなり様相の異なった3値同期パルスを有します。
写真は、「地上ディジタル」チューナのD3出力(Y信号)をオシロスコープで観測したものです。ブランキングレベルを基準として正負方向にそれぞれ同振幅(300mV)のパルスが水平走査のタイミングリファレンスになっています。
1080i(1920×1080)インタレース・システムの基準クロック周波数は、74.25MHzで、Hブランキングまで含めた水平総画素数は2200、Vブランキングまで含めた垂直総ライン数は1125となっています。なお、垂直走査周波数はNTSCと同様、29.97Hzです。
IP仕様 - 同期信号の生成
構成はシンプルです。リセット信号の解除とともに、2つのカウンタが回り始めます。基準クロック74.25MHzを0から2199までカウントするH_counterと、H_counterが1919の時にクロックの立ち上がりエッジでインクリメントされるV_counterの2つをリファレンスとします。V_counterは1から1125までカウントします。H_counterが0から1919までの範囲で、かつV_counterが21から560、および584から1123までの間が画像の有効領域です。図1a, 1b (クリックすると大きな図が表示されます)に示すように、両カウンタの値によって決まるタイミングで各エッジを定義したものを同期信号とします。V_counterの値はLINE番号そのものとしております。
このIPでは、8bitの3ch D/Aコンバータを使用する場合の設計例を示します。同期信号区間におけるY, Pb, Prの具体的な値は図2 (クリックすると大きな図が表示されます)のとおりです。
3値同期信号はブランキングから上下各シンクチップまでの両エッジにスロープを持たせるためにクロック2発分のデュレーションでブランキングレベルから各シンクチップレベルまで遷移させており、そのデュレーションの中間点での振幅にはブランキングとシンクチップの中間値を与えています(図ではそこまで示していません)。

図2
IP仕様 - MULTIFORMAT COLOR BARの生成
ここでは、ARIB STD-B28 V1.0に準拠のマルチフォーマットカラーバーを出力してみます。Yは同期信号の負側の先端(シンクチップ)からIRE100までを1Vp-pのレンジに納めるように、Pb, PrはIRE-50からIRE50までを700mVp-pのレンジに納めるようにbit配分します。本IPはあくまでも試験信号の発生器なので、IRE100以上のダイナミックレンジは不要と考え、8bitを出来るだけ有効に割り当てることにしました。また、トランジェント部分には特に何も処理をしていません。

カラーバーチャート設計仕様 各部のディジタル値は下表のように設定
Y | 148 | 209 | 200 | 181 | 171 | 114 | 104 | 86 | 148 |
---|---|---|---|---|---|---|---|---|---|
Pb | 128 | 128 | 61 | 143 | 76 | 180 | 113 | 195 | 128 |
Pr | 128 | 128 | 134 | 61 | 67 | 189 | 195 | 122 | 128 |
Y | 216 | 254 | 209 | 209 | 209 | 209 | 209 | 209 | 89 |
Pb | 149 | 128 | 128 | 128 | 128 | 128 | 128 | 128 | 217 |
Pr | 39 | 128 | 128 | 128 | 128 | 128 | 128 | 128 | 120 |
Y | 241 | 114 | |||||||
Pb | 39 | 128 | 128 | 128 | 128 | 128 | 128 | 128 | 107 |
Pr | 136 | 128 | 128 | 128 | 128 | 128 | 128 | 128 | 189 |
Y | 103 | 76 | 254 | 254 | 76 | 76 | 103 | ||
Pb | 128 | 128 | 128 | 128 | 128 | 128 | 128 | 128 | 128 |
Pr | 128 | 128 | 128 | 128 | 128 | 128 | 128 | 128 | 128 |
シリコン上での動作結果
ALTERAのCycloneII EP2C8Q208C8を対象に、QuartusIIを用いて論理合成、フィッティングを行いました。特に何も制約条件を課しませんでしたが、74.25MHzで楽々OKとなりました。動作検証用のハードウェアとして、有限会社ヒューマンデータ様のACM-014Aを使わせていただきました(図3)。3ch DAC搭載のマザー基板は当方にて設計しました。

図3: 検証装置
ちなみに74.25MHzは、altpllメガファンクションを使用して、27MHzの発振器出力からPLLで生成しました。74.25 = 27 x (11/4) になります。
一番下の写真は、FULL HD 液晶ディスプレーへ出力した様子です。

図4 1ライン目でトリガをかけてVsyncを見る

図5 Yのカラーバー部分を見る

写真1 FULL HD 液晶ディスプレーでカラーバーを見る