GDC

NECのPC9801シリーズで標準のグラフィックコントローラとして採用されたので有名なのが、Graphic Display Controller (GDC) uPD7220です。1981年に発表され、3 um幅n-MOSプロセスで5.4 mm角のチップに14000素子を集積しています。これ以前のCRT表示用のLSIは画面のリフレッシュを行う機能しかなくて、線の描画などはプログラムを書いてCPUに実行させなければならないものが大半でした。しかし、GDCには直線や円を(制限付きで)描画する機能まで含まれていたのがユニークでした。

uPD7220
上はオリジナルのuPD7220で、下は改良版で高速化されたuPD7220A-1。ほかにCMOS化してさらに機能追加したuPD72020が存在する。

マイクロプロセッサ側から見れば、8 bitバス幅の普通のI/O周辺LSIで、8080Aや8085、Z80などにも簡単に接続できます。もちろん、8086などの16 bitマイクロプロセッサに接続することも容易です。GDCが管理する表示リフレッシュ用メモリ(VRAM)は1 Word 16 bit構成で256 KWordまで接続できるようになっています。もちろん、解像度や色数によっては少ないメモリで済みますし、文字表示専用に使用するなら相当少ないメモリでも実用的です。GDC管理下にあるVRAMには、マイクロプロセッサからGDCの内部レジスタにコマンドを書き込むことでアクセスできます。そのため、マイクロプロセッサのメモリ空間に存在する必要はありません。8 bitのマイクロプロセッサでメモリ空間をバンク切り替えしたりして無理にVRAMをアクセスできるようにしなくても、充分に効率的にアクセスできます。GDCを通してVRAMとメインメモリの間でDMA転送を行うこともできますから。ただし、16 bit CPUになってくると、そのような手法よりマイクロプロセッサが直接VRAMにアクセスした方が高速になる場合があり、特に時代が下がって16 bit CPUが高速化されてくるとその傾向が強くなります。そのため、システムによってはGDCを迂回してマイクロプロセッサがVRAMに直接アクセスするための回路を付加するものもあります。

他に主なスペックとして、次のようなものがあげられます。

特に、この最後の最高速でも1ドット当たり720 nsで描画というところが問題で、8 bit CPU時代には確かにすばらしい高速描画でしたが、16 bit CPUでは足枷になってしまう場面がありました。たとえば長方形領域の塗りつぶしでは、1 Word分のデータを一気に書き換えられる場面もありますが、GDCで書き換えさせると条件によっては1ドット分ずつの描画を16回くり返し行うので、11.6 usかかってしまうことがあります。改良高速版のuPD7220A-2を8 MHzクロックで動作させても8 usです。16 bit CPUをうまくプログラミングすれば、16 bit幅で一気に書き換えてかまわないか条件判断を毎回行っていたとしても2 usもあれば書き換えられそうですから、GDCを迂回してマイクロプロセッサが直接VRAMのデータを書き換える回路を付加した方が性能が向上します。ただ、必ずGDCを通して描画するようにするとマイクロプロセッサ側へのインターフェース回路が劇的に簡単になりますから(DMAを使わなければ8255の接続と同じようなものだしDMAを用いてもuPD765と同じようなもの)、性能をとるかコストをとるか、ちょいと悩むところですね。

GDCのコマンドだけ簡単に並べてみます。
コマンド名 役割
RESET 初期化と表示の停止
SYNC 動作モードと同期信号タイミングの定義
MASTER/SLAVE マスタ動作とスレーブ動作の選択
START 表示開始
STOP 表示停止
ZOOM 拡大表示係数と拡大描画係数の設定
SCROLL 表示開始アドレスと表示領域の設定
CSRFORM 文字表示時のカーソル形状指定
PITCH VRAMの水平方向Word数設定
LPEN ライトペンアドレスの読み出し
VECTW 直線・四辺形・円弧・点などの描画パラメータの設定
VECTE VECTWで指定したパラメータに基づいて描画実行
TEXTW グラフィックテキスト情報設定
TEXTE グラフィック敵視と描画実行指示
CSRW 描画アドレスの設定
CSRR 描画アドレスの読み出し
MASK マスクレジスタ値の設定
WRITE VRAMへのデータ書き込み
READ VRAMデータの読み出し
DMAW VRAMへのDMA転送
DMAR VRAMからのDMA転送
これらのコマンドにはRESETやSTOPコマンドのようにパラメータがなくて1 Byteのコマンドだけのものもありますし、8 Byteのパラメータを必要とするSYNCコマンドや最大16 Byteのパラメータを必要とするSCROLLコマンドなどもあります。
uPD7220AではRESET2, RESET3, STOP2コマンドが追加されているほか、パラメータの未使用ビットに意味が与えられて強化されたコマンドが多数あります。

基本的に表中のVECTWコマンド以降が描画用のコマンドで、それより前が初期設定用のコマンドになっています。もっともLPENコマンドはそのどちらでもありませんし、ハードウェアスクロールさせながら描画するような場合にはSCROLLコマンドも使用する必要がありますけど。

Return to IC Collection