为了编制高级语言图形和图像的显示程序,有必要深入了解字符和彩色图形的控制器的硬件工作原理及寄存器功能,下面以MDA(Monochrome Display Adapter)为例阐述字符显示控制器的硬件工作原理和编程技术,以VGA卡为例阐述彩色图形显示控制器的硬件工作原理和寄存器的编程技术。
  图3.25字符显示控制器原理框图 (点击查看大图)
  

  1.字符显示控制器的结构与工作原理
  字符显示控制器的结构如图3.25所示,它以CRT显示控制器为核心,CRT控制器的主要功能是形成字符缓冲器及属性存储器的地址码,并且同步的产生水平扫描、垂直扫描信号并送到视频控制逻辑中,字符缓冲器及属性存储器各2K字节,分别用来存放80×25=2000个待显示的字符及其对应的属性,它们既可被CPU访问,由CPU送入需要显示的字符代码;又能被CRTC所访问,逐一读出其中的字符码和属性,再经过字符发生器和移位寄存器形成显示器需要的视频显示信号,送给监视器去显示。
字符控制器的工作原理简述如下:
  (1) CPU在显示器水平和垂直回扫期间,把欲显示的字符码及其属性送入字符缓冲器和属性缓冲器;
  (2) CRTC以每秒50帧的频率,一面产生行同步、帧同步等信号送给视频信号处理逻辑,一面产生地址码读出缓冲器中字符码及其属性;
  (3) 以缓冲器中读出的字符代码和CRTC提供的扫描线序号为地址,读出字符发生器中的字形点阵信息,从属性缓存器中读出属性信息,再经过属性译码器译码处理。
  (4) 字形点阵信息读出后送入移位寄存器,然后逐位移出送到视频控制逻辑中,与有关的属性、光标等组合处理后,形成显示器所需要的视频亮度信号,在监视器的屏幕上显示输出字符。
  字符显示控制器与主机的接口电路比较简单,其中地址总线和数据总线用来传送地址码和数据;MEMW、MEMWR、IOW和IOR指出访问的是字符缓存器(及属性存储器),还是CRTC内部寄存器,是写入还是读出,RESET信号用来复位;I/O READY用来使CPU和字符显示控制器同步,因为显示控制器的操作是由字符时钟信号(由 16.275MHz分频而得到1.8MHz信号)定时,CPU访问显示器时必须插入等待状态;I/O CLOCK信号为CPU访问CRTC时的时钟信号。

  2.彩色图形显示控制器
  以VGA卡为例说明彩色图形显示控制器的结构和工作原理,彩色图形控制器总体结构原理如图3.26所示。主要由下述五部分组成:VGA彩色图形控制器、显示缓存器、视频输入输出ROM(BIOS)、CPU总线驱动器以及视频D/A转换器。
 (点击查看大图)
  
  (1) VGA彩色图形控制器
  VGA彩色图形控制器的芯片,是VGA卡的核心器件,它的原理方框图如图3.27所示。它主要由CRT控制器、时序控制器、属性控制器、图形控制器以及三个接口:主机总线接口、显示缓存接口和视频DAC接口组成。
  CRT控制器(CRTC)产生基本存储时序并为控制再生内存读取产生字符时钟。在有效的显示回扫期间,通过显示内存周期,周期性的插入指定的系统微处理器的周期,它允许系统微处理器访问内存,映像屏幕寄存器可以防止内存映像表被更改。
  图形控制器在系统微处理器(CPU)对显示缓存器进行读写操作时,在它到达显示缓存器之前,图形控制器可对显示缓存器中的数据进行逻辑操作。这些逻辑操作包括4个逻辑写方式和2个逻辑读方式,例如颜色比较读方式,在写方式时可以屏蔽个别位像素,单一周期可以写入32个像素数据。在图形工作方式时,图形控制器将并行的存储数据转换为串行位面数据;字符工作方式时,并行属性数据可直接送出。
  属性控制器通过图形控制器控制显示缓存器中的数据,并将其转换成显示屏幕上将要显示的格式。在字符方式时输入属性数据,在图形方式时串行位面数据被转换成一个8位彩色值,再经过调色板(可同时显示256种颜色的调色板)输出的数据颜色值,在这里被当作地址输出18位颜色值,经过D/A变换转换成3个模拟彩色信号去驱动显示器。闪烁、下加横线以及光标等都存在属性控制器中。
  主机总线接口,显示缓存器接口以及视频D/A转换接口逻辑,控制VGA芯片与主机、显示缓存器以及监视器传递数据。
  图3.27 VGA芯片原理框图
  
  (2) 显示缓存器
  显示缓存器的原理结构图以及它与VGA芯片的连接如图3.28所示。显示缓存器可以选用两片256 KB×4 DRAM芯片(256KB),它支持所有的VGA显示模式。当显示缓存器选用4片256 KB×4 DRAM芯片时(512KB),VGA的显示模式可以达到800×600分辨率16种颜色(非隔行扫描的图形方式),也可以达到1024×768分辨率16种颜色(隔行扫描的图形方式)以及132列的文本方式。
  图3.28 VGA的显示存储器结构及与VGA芯片的连接 (点击查看大图)
  
  (3)CPU总线驱动电路和视频输入输出BIOS
  CPU总线驱动电路以及视频BIOS(EPROM)结构如图3.29所示。CPU总线分两部分:一部分地址总线和控制总线接到VGA芯片的总线接口电路;另一部分总线的地址低位和数据线经过了比较电路和驱动电路(74245),可以通过设置开关的位置来改变I/O地址,另一个电路是装视频BIOS程序的EPROM2756,它里面装载VGA显示控制器的底层驱动程序。在计算机系统生成时,可以把它装到DOS或Windows系统中。
  图3.29总线驱动器电路与视频BIOS结构原理图
  
  (4)视频D/A转换器
  视频D/A转换电路与VGA芯片的连接如图3.30所示。视频D/A转换电路可以有多种选择,图3.30给出英国INMOS公司生产的IMSG178彩色调色板电路。它主要由两部分电路组成:一是调色板(Palette),实际上是一个存储阵列,输入是VGA的P0~P7像素8位的彩色值。存储阵列有256个存储单元,字长18位,是作彩色变换函数的存储单元。调色板的伪彩色变换函数在初始化时,由主机通过IMSG178的D0~D7微处理接口通道装入。IMSG178微处理的接口由调色板存储器阵列的地址寄存器以及三个8位字长数据寄存器组成。调色板初始化加载时,计算机首先通过数据总线D0~D7及寄存器选择位RS0和RS1,加载调色板存储器阵列的地址寄存器,然后用同样方法加载三个数据寄存器,最后用18位的数据打入到存储器的阵列,它就是调色板的变换函数。正常工作时从VGA取出的帧存储器的数字图形数据P0~P7,送到IMSG178的C0~C7像素锁存器,它作为调色板存储器阵列的地址,最后输出的就是经过调色板变换的3×6位伪彩色数字图形信号。
  IMS G178还有3个6位D/A变换器,调色板输出的数字式伪彩色信号,通过锁存器送到3个6位D/A变换器,转换成模拟的RGB信号,最后配上从VGA芯片来的复合消隐和复合同步信号,通过RGB(2、3、4脚)输出到彩色监视器。
  图3.30 视频D/A转换电路 (点击查看大图)