06控制器和控制卡(2)
控制器和控制卡(2)
5. 串行(xing)控制卡
(1)异步串行通信原理
两台计算机/设备进行数据交换,即通信,必须像人们对话一样使用同一种语言。在计算机通信术语中,我们把计算机/设备与计算机/设备之间的“语言”称为通信协议。通信协议规定了传送一个有效数据长度单位的格式。通擦我们使用术语 “帧” 来形容这种格式。为了能让通信双方确定收/发的顺序和进行一些错误检测操作,除了必要的数据之外,在传输的一帧信息中还包含起始同步和错误检测作用的其他信息,例如在开始传输数据信息之前先发送起始/同步或通信控制信息,并且在发送完需要的数据信息之后再传输一些校验信息等。
串行通信是指在线路上以比特位数据流一次一个比特进行传输的通信方式。串行通信可分为异步串行和同步串行通信两种类型。它们之间的主要区别在于传输时同步的通信单位或帧的长度不同。异步串行通信以一个字符作为一个通信单位或一帧进行传输,而同步串行通信则以多个字符或字节组成的序列作为一帧数据进行传输。实际上,异步和同步通信的区分主要是一种习惯或惯例上的划分。
(2)异步串行传输方式
异步串行通信传输的帧格式如下图。传输一个字符由起始位、数据位、奇偶校验位和停止位构成。其中起始位起同步作用,值恒为 0。数据位是传输的实际数据,即一个字符的代码。其长度可以是 5 — 8 个比特,奇偶校验位可有可无,由程序设定。停止位恒为 1,可由程序设定为 1、1.5 或 2 个比特位。在通信开始发送信息之前,双方必须设置成相同的格式,如具有相同数量的数据比特位和停止位。在异步通信规范中,对于每一个比特位,把传送 1 称为传号(MARK),传送 0 称为 空号(SPACE)。
当无数据传输时,发送方处于传号(MARK)状态,持续发送 1。若需要发送数据,则发送方需要首先发送一个比特位间隔时间的空号起始位。接收方收到空号后,就开始与发送方同步,然后接受随后的数据。 若程序中设置了奇偶校验位,那么在数据传输完之后还需要接收奇偶检验位。最后是停止位。在一个字符帧发送完后可以立刻发送下一个字符帧,也可以暂时发送传号,等一会儿在发送字符帧。
在接收以字符帧时,接收方可能会检测到以下三种错误之一:
a. 奇偶检验错误。此时应该要求对方重新发送该字符
b. 过速错误。由于程序取字符速度慢于接收速度,就会发生这种错误。此时应该修改程序加快取字符频率
c. 帧格式错误。在要求接收的格式信息不正确时会发生这种错误。例如在应该收到停止位时却收到了空号。通常造成这种错误的情况除了线路干扰以外,很可能是通信双方的帧格式设置的不同。
(3)串行控制器
为实现串行通信,PC 机上通常都带有 2 个符合 RS-232C 标准的串行接口,并使用通用异步接收/发送器控制芯片 UART (Universal Asyncronous Receiver/Transmitter)组成的串行控制器来处理串行数据的收发工作。PC 机上的串行接口通常使用 25 芯或者 9 芯的 DB-25 或 DB-9 连接器,主要用来连接 MODEM 设备进行工作,因此 RS-232C 标准规定了很多 MODEM 专用接口引线。
以前的 PC 机都使用国家半导体公司的 NS8250 或 NS16450 UART 芯片,现在的 PC 机则使用了 16650A 及其兼容芯片,但都与 NS8250/16450 芯片兼容。
6. 显示控制
对于 IBM PC/AT 及其兼容计算机而言,可以使用彩色和单色显示卡。IBM 最早推出的 PC 机视频系统标准有单色 MDA 标准和彩色 CGA 标准以及 EGA 和 VGA 标准。以后推出的所有高级显示卡(包括现在的 AGP 显示卡)虽然都具有极高的图形处理速度和智能加速处理能力,但他们还是都支持这几种标准。Linux 0.1x 操作系统仅适用了这几种标准都支持的文本显示方式。
(1)MDA 显示标准
单色显示适配器 MDA (Monochrome Display Adapter)仅支持黑白两色显示。并且只支持独有的文本字符显示方式 (BIOS 显示方式 7)。其屏幕显示规格是 80 列 X 25 行(列号 x = 0..79; 列号 y = 0..24),共可显示 2000 个字符。每个字符还带有 1 个属性字节,因此显示一屏(一帧)内容需要占 4KB 字节。其中偶地址字节存放字符代码,奇地址字节存放显示属性。MDA 卡配置有 8KB 显示内存。在 PC 机内存寻址范围中占用从 0xb0000 开始的 8KB 空间(0xb0000 — 0xb2000)。如果显示屏行数是 video_num_lines = 25;列数是 video_num_colums = 80,那么位于屏幕列行值 x, y 处的字符和属性在内存中的位置是:
字符字节位置 = 0xb0000 + video_num_colums * 2 * y + x * 2;
属性字节位置 = 字符字节位置 + 1;
在 MDA 单色文本显示方式中,每个字符的属性字节格式如下表所示。其中, D7 置 1 会使字符闪烁; D3 置 1 使字符高亮度显示。它与彩色文本字符的属性字节基本一致,但只有两种颜色:白色(0x111)和黑色(0x000。他们的组合效果如下表。
(2)CGA 显示标准
彩色图形适配器 CGA (Color Garaphics Adapter)支持 7 种彩色和图形显示方式(BIOS 显示方式 0 —— 6)。在 80 列 X 25 行的文本字符显示方式下,有单色和 16 色彩色两种显示方式(BIOS 显示方式 2 —— 3)。CGA 卡标配有 16KB 显示内存(占用内存地址范围 0xb8000 -- 0xbc000),因此其中共可存放 4 帧显示信息。同样,每一帧(一屏)4KB 显示内存中,偶地址字节存放字符代码,奇地址字节存放字符显示属性。但在 console.c 程序中只使用了其中 8KB 显示内存(0xb8000 —— 0xba000)。在 CGA 彩色文本显示方式中,每个显示字符的属性字节格式定义见下图。
与单色显示一样,图中 D7 置 1 用于让显示字符闪烁;D3 置1 让字符高亮度显示;比特位 D6、D5、D4 和 D2、D1、D0 可以分别组合出 8 种颜色。前景色与高亮度比特位组合可以显示另外 8 种字符颜色。
(3) EGA/VGA 显示标准
增强型图形适配器 EGA (Enhance Graphics Adapter)和视频图形阵列 VGA (Video Garphics Adapter)除兼容或支持 MDA 和 CGA 的显示方式以外,还支持其他在图形显示方面的增强显示方式。在于 MDA 和 CGA 兼容的显示方式下,占用的内存地址起始位置和范围都分别相同。但 EGA/VGA 都标配有起码32K 的显示内存。在图形方式下占用从 0xa0000 开始的物理内存地址空间。