「連射装置を作る①」に訂正を追記(09/11)

【V-SYNCなど】CRTの雑な説明

はじめに
連射装置などの作成記事で「V-SYNC」と書かれていても「何だそれは?」という方もいると思います。そこで番外編としてちょっと知った風に解説してみます。

CRTとは

CRTというのは陰極線管(Cathode Ray Tube)のことです。
ブラウン博士が発明したのでブラウン管とも呼ばれます。昔はテレビもパソコンのモニターも全てブラウン管でしたね。

理科の実験でお馴染みのクルックス管も陰極線管です。磁石を近づけると陰極線がグイっと曲がる現象を覚えている方も多いと思います。
この電界や磁界で陰極線が曲がる現象をイメージしておくとモニターについても理解しやすいと思います。

ものすごくざっくりとCRT(ブラウン管)の動作説明を

ここではテレビやモニターなどの受像管としてのCRTについて説明していきます。

CRTは大きな真空管です。
陰極線を発射する電子銃と、陰極線が当たる場所をコントロールするための電磁石がついています。
電源を入れるとキーンとする感覚があるのは、この電磁石のためです。

電子銃から放たれた陰極線は目的の場所にぶつけるため電磁石によりグイっと曲げられます。
真空管の端っこには蛍光物質が塗られていて、そこに陰極線(電子)がぶつかると光が放出されます。
その光を私たちは見ているわけです。

陰極線が当たる範囲はとても狭いため、少しずつ横に位置をずらしながら照射していきます。
これを「走査」と呼び、横1ライン走査した帯を「走査線」といいます。
横1ライン走査した後は電子銃を次のラインへ移動し走査していきます。
最後のラインまで描き終わると、電子銃は最初の位置に戻されます。

ある瞬間で捉えると陰極線はごく小さな範囲しか照らせないのですが、非常に高速に走査されていくため、我々はその残光を一枚の絵として見ることができます。

走査の流れ


  1. 電子銃を最初の位置(上の図では左上)にセット
  2. 横に1ライン分描画(水平表示期間)
  3. 次の行の初めの位置に電子銃を移動(水平帰線期間)
  4. 2~3を走査線の数だけ繰り返す
  5. 最後まで表示できたら電子銃を最初の位置に戻す(垂直帰線期間)
  6. (1~4が垂直表示期間)

ゲームプログラムにおける同期信号の役割

走査線を描いている間(垂直表示期間)に画面を書き換えてしまうと人の目にはチラつきとして見えてしまうため、ゲームでは一般的に垂直表示期間の間に計算したりデータを用意したりと準備しておき、垂直帰線期間になったら画面を書き換えるということをしています。

そのため描画に関係のない処理(例えばレバーやボタンの入力読み取り)も含めて、一定の周期ごとに行う処理はV-SYNC(垂直同期信号)でタイミングを取るように作られることが多いのです。

連射装置やコマンドコントローラーを作る際も、ゲームのプログラムがレバーやボタンの入力を読み取るタイミングに合わせてON/OFFを切り替えてあげる必要があるため、同じようにV-SYNC(垂直同期信号)でタイミングを取る必要があるのです。

memo
チラつきを感じないようにするには、表示されていない期間中に描き換えればいいのだから、水平帰線期間中に画面描画しても良いのでは?と思うかもしれません。

確かにそうなのですが、水平帰線期間は垂直帰線期間よりもずっと短い時間なので、水平帰線期間のうちに書き換えることはなかなか難しいのです。
しかしチラつかせずに多少のことは行う時間があるため、例えばスクロールレジスタの値を変えてあげればラスタースクロールになったりと2Dゲームではよく活用されていました。

ちなみに単位として、V-SYNCではHz/H-SYNCではKHz/ピクセルクロック(1ドットを送るタイミング)ではMHzが使われるのが一般的です。それほど時間に差があるのですね。

C-SYNC(複合同期信号)と同期分離

規格によって、V-SYNC(垂直同期信号)とH-SYNC(水平同期信号)ではなく、C-SYNC(複合同期信号)が使われている場合もあります。
C-SYNCは文字通りV-SYNCとH-SYNCがmixされた信号です。
当サイトで登場するアーケード基板ではC-SYNCが使われています。

そのためシンクロ連射回路等でV-SYNCを必要とする場合には、C-SYNCからV-SYNCを取り出してあげる必要があります。
こういった作業を「同期分離」と呼び、同期分離するための電子回路を「同期分離回路」と呼んだりします。
(google検索してみると回路図も見つかると思います)

我が家の環境ではC-Sync Cleanerという装置をつけている関係で、C-SYNC Cleanerが同期分離してくれたV-SYNCを活用できるのですが、一般的には同期分離回路を自作する必要があります。

分離後の同期信号(黄色:V-SYNC、水色:H-SYNC)

余談

よく「1フレームは1/60秒」と言われますが、なぜ約1/60秒が基本となっているのか不思議に思ったことはありませんか?

たどっていくと、白黒テレビ時代のNTSC(アメリカや日本等で採用されているテレビ放送規格)の同期信号としてアメリカの交流電源の周波数(60Hz)が採用されたことが由来のようです。
NTSC(全米テレビジョンシステム委員会)もCGA/EGA/VGA(IBM)もアメリカで生まれた規格ですしね。

一方、SECAMやPALなど秒間25コマのインターレースでテレビ放送がされていた地域は、ドイツの発電機が使用されていたために電源周波数が50Hzだった、ということのようです。
(地域によっては60HzのSECAM,PAL方式で放送されていたところもあるようですね)

wikipedia - NTSC
白黒時代に垂直同期周波数を米国の電源周波数と等しい60Hzに決定した理由は、端的に言えば1940年代の電子回路に使える増幅素子が真空管だけだったためである。


当時はコンセントから取ったAC電源を直接整流してコンデンサで平滑化しただけで回路内部のメイン電源を生成するトランスレス設計が当たり前であり、安定化されていないB電源には交流周波数と同じ周期の脈流成分が多量に含まれていた。

同様にブラウン管に印加する加速電圧も安定化されていないために電子ビームの速度が変化してしまい画面が明滅したり偏向感度が変化して画像が膨張・収縮する現象を抑えきれず、表示フィールドレートと電源周波数が等しく[6]なっていないと激しいフリッカー(ちらつき)や画面の振動を生ずる危険性があった。

またブラウン管の蛍光面を焼きつきから保護するために放送を受信していない時にも水平・垂直偏向系を駆動し続ける必要があり仮の同期信号を電源周波数の逓倍で作れるよう、総走査線数は比較的小さな奇数の積 525=3×5×5×7となっている

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です