如果对总线做一个简单的概括,可以认为总线就是数字信号的集合,而这些信号被提供给计算机上的每块电路板,大致把这些信号分为4类
1地址信号,由微处理器产生,通常用来对RAM进行寻址操作,当然也可以用来对连接到计算机的其他设备进行寻址操作。
2数据输出信号,由微处理器产生,用来把数据写入到RAM或其他设备
3数据输入信号,由计算机其他部分提供,由微处理器读取。通常情况下,数据输入信号由RAM输出,这就解释了微处理器是怎样从内存中读取内容的。其实,其他部件也可以给微处理器提供数据输入信号。
4控制信号。这些信号多种多样,通常与计算机内所用的特定的微处理器相对应。控制信号可以产生于微处理器,也可以由与微处理器通信的其他设备产生。如微处理器要把一些数据写入到特定的内存单元时,它所使用的信号就是控制信号。
总线还可以为计算机上不同的电路板供电。
早期比较流行的是S-100总线,一开始只适用8080,后来改进可以适用其他处理器。一块S-100电路板的规格是5.3x10英寸,其中有一边是要插到一个插槽上的,这个插槽有100个连接器(S-100名称由来)。
S-100总线是专门为8080芯片设计的,有16个地址信号,8个数据信号及8个数据输出信号(8080不区分数据输入和输出信号,由电路板上其他芯片支持完成)。总线上也含有8个中断信号,其他设备需要CPU立即做出响应时,便会产生这些信号。通常,在安装了8080的电路板上有一个被称为Intel 8214优先级中断控制单元的芯片,就是专门处理中断的。中断发生时,这个芯片会产生一个中断信号并送给8080.8080识别出这个中断后,芯片就会提供一个RST(restart)指令,在这条指令作用下,微处理器会把当前程序计数器的值保存下来,并依据中断类型,跳转到地址0000h、0008h、0010h、0018h、0020h、0028h、0030h或0038h处执行。
1981年秋,最著名的开放体系结构的个人计算机-IBM的PC问世。IBM公布了PC的技术参考资料,里面包含了整台计算机的全部电路图,IBM为其制造的扩展板的资料也在其中。这个手册很重要,它的出现使得很多制造商可以生产自己的PC扩展板,实际上,这创造出了整个PC的克隆体——与IBM的PC几乎完全相同,运行软件也一样。
如今的桌面计算机领域,从起初的IBM的PC发展而来的计算机数量庞大,占据约90%的市场份额。尽管IBM本身只占很小一部分。苹果公司的麦金托什因为起初采用的是封闭体系结构,如今桌面计算机市场上只占有不到10%的份额。
最初IBM PC采用的是Intel 8088微处理器,可以寻址1MB的存储单元。虽然8088内部是一个16位的微处理器,但外部却只能寻址8位的存储器。工业标准体系结构(ISA)总线,是IBM为最初的PC设计的。扩展板上有62针的连接插头。有20个地址信号,8个复用的数据输入/输出信号,6个中断请求信号及3个直接存储器访问(DMA)请求信号。DMA可以使存储设备快速地执行存储操作。通常情况下,所有读/写内存的操作都是由微处理器来完成的,但采用DMA后,其他设备可以不通过微处理器而获得总线的控制权,进而直接对内存进行读写。
1987年,IBM推出了微通道体系结构(MCA)总线,其中的某些部分称为了IBM专利,因此没能成为一种工业标准。1988年9家公司(不包括IBM)联合推出了32位的EISA总线取代了MAC,成为了工业标准。但后来,Intel设计的外围部件互连(PCI)总线已普遍使用在PC兼容机上。
现在假设我们有块容量1024位的存储芯片,一般我们想按照8位的存储形式存储数据。一般用32个芯片组成一个4KB存储器。为了存储完整的字节,而连接在一起的芯片的集合,称为存储体。例如,一个4KB大小的存储器板就由4个存储体组成,而每个存储体又包含8个芯片。
8位微处理器,例如8080、6800,有16位地址,可用来寻址64KB的存储空间。如果你制作了一个包含4个存储体、大小为4KB的存储器板,则存储器板上的16位地址信号就有如下所示的功能。
A0-A9直接与RAM芯片相连接;A10和A11用来选择4个存储体中要被寻址的那一个;A12~A15确定哪些地址申请用这块存储器板,换言之,就是这块存储器板响应哪些地址。微处理器整个存储空间的大小是64KB,被划分成16个不同的区域,每个区域的大小是4KB,我们设计的4KB存储器板占用了其中一个区域。这16个区域划分情况如下:
举例说明,假定4KB存储器板使用了A000h~AFFFh地址区域。这就意味着,第一个存储体占用了地址A000h~A3FFh,第二个占用了地址A400h~A700h,第三个占用了地址A800h~ABFFh,剩下的AC00h~AFFFh地址空间分给了第四个存储体。
你完全可以制作一块4KB存储器板,在用到它的时候再灵活确定其地址范围。要获得这样的灵活性,可以使用一种名为双列直插式封装(DIP)开关的器件。在DIP中,有一系列极小的开关(从2到12个不等)。DIP是可以插在标准的IC插槽中的,如下图所示。
在一种称为比较器的电路中,你可以把这个开关和总线上的地址信号的高4位连接起来,就像下面这样。
例如,把A13和A15对应的开关闭合,就意味着让存储器板能响应存储空间A000h~AFFFh。弱总线上的地址信号A12、A13、A14、A15与开关上设置的值相同的话,四个异或门的输出都是0,或非门的输出为1,如下图所示:
接下来我们把Equal信号和一个2-4译码器联合起来使用,就能为四个存储体中的每一个都产生一个信号,便于对存储体进行选择。具体链接如下图:
若想选择第三个存储体,把A10、A11分别置0和1就可以了。
你可能会认为我们还需要8个4-1选择器,用来从4个存储体中选择正确的数据输出信号。但是我们并没有这么作,原因如下:
通常情况下,TTL兼容集成电路的输出信号要么大雨2.2V(逻辑1)要么小于0.4V(逻辑0)。试想一下,如果把输出信号连接起来会发生什么呢?一个集成电路的输出为1,另一个集成电路的输出为0,若把这两个输出连接在一起,结果又是什么呢?恐怕谁也无法回答。就是因为这种不确定性,一般不会把集成电路的输出信号连接在一起。
除了逻辑0和逻辑1之外,还有一种“真空”态,就像芯片的引脚上什么都没有连一样。当片选信号为1时,芯片的数据输出信号就会进入这种状态。这样一来,我们可以把4个存储体相应的数据输出信号连接在一起,并且可以把8个输出复用作为总线的8个数据输入信号。
之所以强调三态输出的概念,是因为它对总线的操作至关重要。几乎所有连接在总线上的器件都使用由总线传递而来的数据输入信号。但不管何时,连接在总线上的电路板中,只有一个能确定总线数据输入信号的类型,其他电路板处于三种状态的无效状态。‘
静态随机访问存储器(SRAM)和动态访问存储器(DRAM)是不同的,通常对于每1位存储空间,SRAM需要用4个晶体管(触发器作为存储器用,用到的晶体管更多),而DRAM只需要1个晶体管,但DRAM需要较复杂的外围支持电路,这正是它的缺点。
DRAM芯片在使用时需要定期访问其存储器中的内容,尽管有时并不需要这些内容。这一过程称之为更新(refresh)周期,每秒钟都必须进行几百次。
尽管业界在使用DRAM上有些争论,但近年来,DRAM芯片的容量日益增加,使得DRAM最终成为标准。计算机主板上一般都配备内存插槽,这些内存插槽可以容纳几块小的存储器板,分为单列直插内存模块(SIMM)和双列直插内存模块(DIMM)两种,里面包含了好几个DRAM芯片。
微处理器还必须留些空间给输出设备。
电子射线管(CRT)——20世纪上半个世纪,从外观上看-已经成为最常见的计算机输出设备了。我们称连接到计算机上的CRT为视频显示器或监视器,而称可以为视频显示器提供信号的电子元件为视频适配器。通常在计算机中,视频适配器是独立存在的,它们拥有自己的电路板,也就是我们常说的显卡。
实际上,视频显示器是由一束连续的光束射线迅速扫描屏幕而形成。射线从屏幕左上角开始,从左到右进行扫描,到达屏幕边缘后又折回向左,进行第二行扫描。我们称每一个水平行为扫描行(scan line),称射线回到每个扫描行的开始位置为水平回归。当完成了对最后一行的扫描时,又会从屏幕的右下角返回到屏幕左上角,并不断重复。
电视机采用的是隔行扫描技术,帧是一个完整的静态视频图像,两个场(field)才能形成一个单独的帧。由奇数扫描线和偶数扫描线组成。水平扫描频率即扫描每个水平行的速率,绿如15750Hz,把这个数除以60Hz,结果是2625行,这个正式每个场所包含的扫描线的数目,整个帧的扫描线的数目是场的两倍,也即525行。
黑白电视机的视频信号十分简单,且易于理解。每秒扫60次,扫描信号包含一个垂直同步脉冲,用来指示一个场的开始。这个脉冲为0V,宽度约为400ms。相比较而言,水平同步脉冲则用来指示每个扫描行的开始:视频信号为0V,宽度为5ms,每秒出现15750次。两个水平同步脉冲之间,信号的电压是0.5V~2.0V范围内变化的,其中0.5V表示黑色,2.0V表示白色。处于两者之间的电压则表示一定的灰度。
事实上,电视机能响应信号的变化频率是有上限的,我们称这一上限为电视机带宽。
通信领域中,带宽是及其重要的概念,某个特定的传输媒介能够传输的信息量都是受带宽限制的。以电视机为例,带宽限制了视频信号从黑到白然后回到黑这一变化的速率。
从计算机角度来说,我们可以很方便的把视频图像想象成由离散点组成的矩形网络,这些离散点称为像素。
如果电视机的带宽为4.2MHz,它就允许2个像素每秒420万次的变化,或者用2x4200000除以水平扫描速率15750——每个水平扫描行有533个像素。但并不是所有像素都是可用的,约1/3的像素被隐藏起来——处于图像的远端或射线的水平回归中。这样算来,水平扫描行上可用的像素约为320个。
与水平方向类似,垂直方向上525个像素也不是都可用。原因是,像素在屏幕的顶部、底部以及垂直回归器件都会有所损失。当计算机采用电视机作为显示器时,就不依赖于隔行扫描技术了,垂直方向上有着合理的像素数目200个。
视频适配器的分辨率为320x200.
一种可行的方法显示文本字符,使用8x8的网格(64个像素)
每个字符都被定义为一个7位的ASCII码,但每个字符也与64比特相关,这64比特决定了字符显示为什么样子。
视频适配器中必须配置一些RAM,用以存储所显示的内容;微处理器也必须能够向此RAM中写入数据以改变显示器上显示的内容。更方便的是,这个RAM也是微处理器存储空间的一部分。那么,上面描述的显示适配器需要多大的RAM呢?
结果可能处于1KB~192KB之间
怎样减少显示适配器的内存需求呢?一种方法是限制适配器的功能,让其只显示文本。我们已知,25行,每行40个字符,一共显示1000个字符。这样一来,视频卡上的RAM只需要存储这1000个字符的7位ASCII码。1000x7bit,大约1024字节,即1KB。
字符生成器也是视频适配器板上的一部分,包含了所有ASCII码字符的像素图。通常它是只读存储器,即ROM。它是一种集成电路,在生产的时候已经填入了数据,固定的地址输出的数据是不变的。ROM中没有数据输入信号,这点与RAM不同。
你可以把ROM看成是可以进行代码转换的电路。每片ROM都有7个地质信号及64个数据输出信号,里面存储了128个ASCII码字符的8x8像素图。因此ROM可以实现7位ASCII码的64位码(定义了字符显示的外观)的转换。但是64个数据输出信号会使芯片变得很大。更合适的做法是,用10个地址信号和8个输出信号。其中7个地址信号是用来确定ASCII码字符的(这7个地址位来自视频板上的RAM的数据输出)。其他三个地址信号用来表示行。举个例子,最高行用000表示,最低行用111表示。8个输出位就是每行8个像素。
假设,ASCII码为41h,就是大写字母A。总共有8行,每行8位。下表给出了字母A的10位地址(ASCII码和行代码之间用空格分开)和数据输出信号。
上图中,可以看出以0为背景,用1表示的字母A
除此之外,还必须支持光标功能。光标是一个小小的下划线,用来表明从键盘上输入的下一个字符会在屏幕的什么位置显示出来。光标所在的行和列常备存储在两个8位的寄存器中,这两个寄存器也是视频版的一部分,而且微处理器可以对其进行写操作。
有的显示适配器不仅仅只显示文本,还可以显示其他数据,我们称这样的显示适配器为图形适配器(图形显卡)。通过向图形显卡上的RAM写入数据,微处理器就可以画出图形了,当然能显示各种大小和样式的文本。图形显卡要比只显示文本的显卡所需要的存储空间更大。320x200的图形显卡有64000个像素,如果每个像素需要1位RAM,那么这样的图形显卡就需要6400位RAM,即8000字节。然而,这只是最低要求,1位是和1像素对应的。只能用来表示两种颜色——例如黑和白。
但是电视机还显示不同灰度的色彩,为了让图形显卡拥有这种功能,通常每个像素对应于RAM中的一整个字节,其中00h表示的是黑色,FFh表示的是白色,介于两者之间的数值对应不同的灰度。一个320x200视频板若能显示256种灰度,就需要64000字节的RAM。这与一直在讨论的某个8位微处理器的整个地址空间非常接近。
如果想显示丰富多彩的颜色,每个像素就需要至少3个字节。如果现在你手头有放大镜的话,不妨用它观察下彩色电视机或计算机视频显示器,你会发现,每种颜色都是由红绿蓝三种原色的不同组合二形成的。三原色每种颜色都需要一个字节来表示强度。就需要192000字节的RAM
标准电视机上,320x200分辨率是所能达到的最高分辨率。正式因为这样,我们要为计算机特制显示器,使其拥有更高的带宽。1981年,第一台显示器随IBM PC一起销售,可以显示25行,每行80个字符。
这么多年来,视频适配器的分辨率以及能显示的颜色不断增加,这两者也成为了视频显示适配器的重要参数。到了1987年,水平640像素、垂直480像素的视频适配器被IBM的PS/2个人计算机和苹果公司的Macintosh II机采用,起到了里程碑的作用,因为从那时起640x480就是视频分辨率的最低标准了。
1889年,爱迪生以及他的工程师迪克生正在进行活动电影摄影机和活动电影放映机的研究,他们决定:让电影图像的宽比高多出1/3.图像的宽和高之比,称为屏幕长宽比。通常,我们把爱迪生和迪克生所确定的这个比表示成1.33:1,或4:3。60多年了,大多数电影一直采用则个比列,电视机也是如此。但在20世纪50年代早期,好莱坞引入宽屏技术,与电视机展开竞争,并最终打破了这个比例。