トップページ > 電子工作インデックス > CRTCその1 > CRTCは何をするのか
今回の回路の制御対象はRGBラスタースキャン方式 のディスプレイとしています。必要な制御線は、ピクセル(画素)ごとの色を決めるR,G,B の3本に加えて、水平同期信号、垂直同期信号の計5本となります。水平同期信号は表示画面の ヨコ幅を、垂直同期信号はタテ幅を決めるイメージでした。
この5本の信号をCPUで生成しようとすると処理速度が追い付かなかったり、ほかの処理に 手が回らなくなったりします。それだと困るので、ディスプレイ制御部分は独立させて、 専用の回路を別に作ろうという話でした。
下の図において、一番左のCPUから表示画面のデータが送られてきます。それを最終的に一番右のディスプレイに
表示しようということですね…。
で、今考えている”CRTC”は図中央の基盤ということですが、その要となる部分はたった2つ
だけで、
画面データを格納しておく「RAM(通称VRAM)」とタイミング信号をすべて生成してくれる
「CRTC」というICです。RAMはあのRAMです。ごく普通のRandom Access Memory です。
あえてつっこんで言えばStatic RAM だと製作しやすいのでオススメです。
さて、この回路の主役であるCRTCです。 CRTCという言葉は昔のグラフィックボード全般を指すものですが、もう1つの意味があって、 そのCRTCという回路の中心で「信号生成をするLSI」のことを指す場合もあります。 "CRTC"は、例えば”シフトレジスタ”のような、その機能に即して名づけたICの名前なんですね。
以後このページではCRTCの回路全体を呼ぶときには「CRTC基盤」と言うことにします。 単に「CRTC」と表記した場合はICを指すと考えてください。
ディスプレイに画像を表示させるためにはRGB信号と同期信号が必要なのでした。
CRTCにはすべてのタイミングの元となるクロックパルス入力が必要です。
このクロックパルスを元にして垂直同期と水平同期信号を出力します。
さらに水平同期信号を出す間の時間には「読み出し状態」のRAMのアドレスを次々と
インクリメント(+1ずつ加算)していき、ピクセルごとのデータを出力させていきます。
(RAM⇔ディスプレイ間の詳細は後述)
ここで、『クロックパルスにあわせて信号線の出力をインクリメントする動作』というのは
…まさに「カウンタ」そのものですね。また、CRTCの内部には「設定レジスタ」
というのがあって、初期設定の段階でCPUによりこのレジスタに値を書き込むと
「1列分の文字数」や、「1画面に表示するタテのラインの本数」を決めることができます。
つまり、水平同期や垂直同期がクロックパルス何発目で発生するかを指定できるわけですね。
これまた、『値をカウントしていって、ある数のところでリセットする』という動作も
カウンタっぽいです。…ということで、
CRTCとはプログラマブルなカウンタの集合体!
要はRAMとカウンタなのか…と考えると、なんだか作れそうな気がします。
CRTCには”世代”という
のがあるらしく、世代ごとに大幅に機能がグレードアップしているそうなのですが、
機能が上がるにつれてCPUと接続する制御線や必要なVRAMが一気に多くなるようなので
今回の「Z80でまったり幸せ」というスタンスには合わないかもしれません。
今回は初期のCRTCの傑作と言われているHD6445(MC46505のCMOS版)を使うことにします。
汎用性が高いということなので…。
次は、このHD6445の仕様についてです。