さあ、自分で選んだドットクロック対応に計算した 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 = 65x10**6 * 3.8 *10**(-6)) [メガ=10**6, マイクロ=10**(-6) である事を思い出してください]
メーカーによっては、ドット幅ではなく水平方向のフレームパラメータを好ん で使います。次の用語をご覧ください:
ミリ秒に換算した HR に相当。HAT * DCF = HR
ミリ秒に換算した (HFL - HR) に相当。HBT * DCF = (HFL - HR)
まさしく HGT1 です.
まさしく HSP です。
まさしく 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 マイクロ秒という妥当な長さの同期信号に 対応することが計算でわかります。
さらに、 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)。
メーカーによっては、ドット幅ではなく垂直方向のフレームパラメータを好ん で使います。次の用語をご覧ください:
ミリ秒に換算した VR に相当。VAT * VSF = VR
ミリ秒に換算した (VFL - VR) に相当。VBT * VSF = (VFL - VR)
まさしく VGT です。
まさしく VSP です。
垂直同期信号の後の第 2 保護時間に似ています。しばしばゼロです。