さあ、自分で選んだドットクロック対応に計算した HFL/VFL の数字があり、無難 な再描画速度が見つかり、十分な VRAM (ビデオメモリ) があることを確認しまし た。これからが本当の黒魔術です -- いつどこで同期信号を出すかを知る必要があ ります。
同期信号が実際にモニタの水平及び垂直の走査周波数を制御しています。仕様表 から引っぱり出してきた HSF と VSF は定格上の最大同期周波数の推定値です。ア ダプタカードからの信号の中の同期信号はモニタにどれくらい速く実際に動作す るか伝えます。
上記の 2 つの絵を思い出して下さい。目に見える画像 (あなたの選んだ解像度) を表示するために使われるのは、フレームをラスタ走査するために必要な時間の 一部だけです。
前の定義によれば、 1 本の水平走査線をたどるのには HFL 分の時間掛かります。 表示される部分のクロック回数 (水平スクリーン解像度) を HR と呼びましょう。 その時は明らかに、定義から HR < HFL となります。具体的に両方が同時に開始し たと仮定して次に示します :
|___ __ __ __ __ __ __ __ __ __ __ __ __ |_ _ _ _ _ _ _ _ _ _ _ _ | |_______________________|_______________|_____ 0 ^ ^ 単位: 水平クロック | ^ ^ | HR | | HFL | |<----->| | |<->| HSP |<->| HGT1 HGT2
ここで、上にあるように表示データのクロック終了とフレーム全体のクロック終了 の間に HSP の同期信号長を配置します。何故そうするのか? それはこうすると、 画面表示が左右に移動しなくなるからです。表示をスクリーン上で表示されるべき 場所、つまりモニタの表示可能領域内にきっちりとおさめるためです。
その上、同期信号の両側に "保護時間" として約 30 クロック必要です。HGT1 と HGT2 で表わしています。一般的には HGT1 は HGT2 と等しくありませんが、しか し真っさらの状態から設定を行うならば、2 つを等しくして実験を始めたら良いで しょう (それは同期信号を中央に置くことになります) 。
同期信号の置き違えの症状は、1 つの境界が極端に広くなって画像の他の側が画面 の端から回り込んだり、白い端の線と"お化け画像"の帯になったり、画面の画像表 示のずれとして現われます。垂直同期信号抜けは垂直保持が調節不備になっている TV の様に実際に縦スクロールします (事実、同じ現象が起こります) 。
幸運ならば、モニタの同期信号の幅がその仕様書に記載されているでしょう。記 載がない場合には、ここからが本当の黒魔術の始まり、、、
ここでは少し試行錯誤を行う必要があるでしょう。しかしほとんどの場合には、同 期信号を約 3.5 から 4.0 マイクロ秒と仮定すれば安全です。
具体的には、HSP を 3.8 マイクロ秒にしましょう (この値は実験を始めるに当た っては悪い値ではありません) 。
さて、先ほど 65Mhz をクロックに使いましたから、HSP を 247 クロック分と等し くすればよいことがわかります。( 247 = 65 * 10**6 * 3.8 * 10^-6) [メガ=10^6, マイクロ=10^-6 である事を思い出して下さい]
幾つかの製造会社はドット幅より水平方向のフレームパラメタで見積もっています。 次の用語を御覧下さい。:
稼働時間 (HAT) ミリ秒に換算した HR に相当. HAT * DCF = HR.
空白時間 (HBT) ミリ秒に換算した (HFL - HR) に相当. HBT * DCF = (HFL - HR).
フロントポーチ (HFP) まさしく HGT1 です.
同期時間 まさしく HSP です.
バックポーチ (HBP) まさしく HGT2 です.
前の絵に戻って、247 クロック分を絵の中でどのように置いたらいいでしょう?
この例では、HR は 944 で HFL は 1176 です。この 2 つの例の差は 1176-944=232 < 247です! 明らかにこの違いを調整しなければいけません。何が できるでしょうか?
最初に 1176 は 1184 へ上げて、 944 は 936 へ下げてください。さて、違いは 1184-936= 248 になりました。う〜ん、近づきましたね。
次は HSP を計算するのに 3.8 の代わりに、3.5 を使うようにすると、 65*3.5=227 となります。かなり良くなりました。しかし 248 は 227 よりそれほ ど大きくありません。HR と SP の開始点の間と SP の終了点と HFL の間に 30 か それぐらいあける必要があります。そして、それらは 8 の倍数にしなければなり ません ! 我々はここで行き詰まってしまったのでしょうか ?
いいえ! こうしてみましょう、936% 8==0 です、また (936+32)% 8==0 です。しかし、936+32=968、968+227=1195、1195+32=1227 となります。ふむふむ、 そんなに悪くはありません。しかし、8 の倍数にはなっていませんので、1232 に 丸めて下さい。
しかし、同期信号を HR と HFL のちょうど真ん中に置くことが出来ないという潜 在的な困難があります。幸いにも、1232-32=1200 も 8 の倍数である事と、 (1232-32)-968=232 は 3.57 マイクロ秒 (232/65) という妥当な長さの同期信号に 対応することが計算でわかります。
さらに、 936/1232 は大体 0.76 つまり 76%, ですが、80% からそう 遠くないのでまあ大丈夫でしょう。
その上、現在の水平フレーム長を使うなら、基本的にはモニタがその能力内で 52.7KHz(=65MHz/1232) において同期が取れるかどうか調べましょう。問題は無い でしょう。
経験則から、上記の 936*75%=702 を新しい垂直解像度にしましょう。 702*1.05=737 が新しい垂直フレーム長になります。
画面再描画速度は 65Mhz/(737*1232)=71.6 Hz になります。それでも素晴らしいで すね。
同様に垂直同期信号の配置を図解します :
|___ __ __ __ __ __ __ __ __ __ __ __ __ |_ _ _ _ _ _ _ _ _ _ _ _ | |_______________________|_______________|_____ 0 VR VFL 単位: 垂直クロック ^ ^ ^ | | | |<->|<----->| VGT VSP
垂直表示データの終了時きっかりに同期信号を発信します。VGT は同期信号の垂直 保護時間です。ほとんどのモニタは VGT 無し (保護時間無し) で快適に動作し、 例題でも保護時間無しです。2,3 クロックの保護時間が必要なものもありますが、 保護時間を入れて不都合が生じることは普通ありません。
例題に戻りましょう : フレーム長の定義から、垂直クロックは全水平フレー ムを辿る時間ですので、例題では 1232/65Mhz=18.95 マイクロ秒になります。
実験によれば垂直同期のパルス幅は 50 マイクロ秒から 300 マイクロ秒の範囲に 設定すべきです。例題では 8 垂直クロック分、150 マイクロ秒を使用します (150 マイクロ秒 / 18.95 マイクロ秒 8)。
幾つかの製造会社はドット幅より垂直方向のフレームパラメタで見積もっています。 次の用語を御覧下さい。:
稼働時間 (VAT) ミリ秒に換算した VR に相当. VAT * VSF = VR.
空白時間 ミリ秒に換算した (VFL - VR) に相当. VBT * VSF = (VFL - VR).
フロントポーチ (VFP) まさしく VGT です.
同期時間 まさしく VSP です.
バックポーチ (VBP) 垂直同期信号の後の第 2 保護時間に似ています。しばしばゼロです。