8 黒魔術と同期信号

この章の目次へ

さあ、自分で選んだドットクロック対応に計算した HFL/VFL の数字があり、無難 な再描画速度が見つかり、十分な VRAM (ビデオメモリ)があることを確認しまし た。これからが本当の黒魔術です -- いつどこで同期信号を出すかを知る必要があ ります。

同期信号が実際にモニターの水平及び垂直の走査周波数を制御しています。仕様表 から引っぱり出してきた HSF と VSF は定格上の最大同期周波数の推定値です。ア ダプタカードからの信号の中の同期信号はモニターにどれくらい速く実際に動作す るか伝えます。

上記の 2 つの絵を思い出して下さい。目に見える画像(あなたの選んだ解像度) を表示するために使われるのは、フレームをラスター走査するために必要な時間の 一部だけです。

水平同期 :

前の定義によれば、1本の水平走査線をたどるのには HFL 分の時間掛かります。 表示される部分のクロック回数(水平スクリーン解像度)を HR と呼びましょう。 その時は明らかに、定義から HR < HFL となります。具体的に両方が同時に開始し たと仮定して次に示します :


|___ __ __ __ __ __ __ __ __ __ __ __ __
|_ _ _ _ _ _ _ _ _ _ _ _                |
|_______________________|_______________|_____ 
0                       ^               ^  単位: 1クロック
                        |   ^       ^   |
                        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) である事を思い出して下さい]

垂直同期 :

前の絵に戻って、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    単位:1 垂直クロック
                         ^   ^       ^
                         |   |       |
                         |<->|<----->|
                          VGT    VSP

垂直表示データの終了時きっかりに同期信号を発信します。VGT は同期信号の垂直 防御時間です。ほとんどのモニターは VGT 無し(防御時間無し)で快適に動作し、 例題でも防御時間無しです。2,3 クロックの防御時間が必要なものもありますが、 防御時間を入れて不都合が生じることは普通ありません。

例題に戻りましょう : フレーム長の定義から、垂直クロックは全*水平*フレー ムを辿る時間ですので、例題では 1232/65Mhz=18.95 マイクロ秒になります。

実験によれば垂直同期のパルス幅は 50 マイクロ秒から 300 マイクロ秒の範囲に 設定すべきです。例題では 8 垂直クロック分、150 マイクロ秒を使用します (150 マイクロ秒 / 18.95 マイクロ秒 ~ 8)。

次の章へ , 前の章へ

この章の目次へ, この文書の目次へ

この文書の最初へ , この章の最初へ