本文首要叙述了计算机接口的基础知识。详细描述了串行口、并行口怎么经过握手信号进行通讯,并介绍了USB的硬件和软件结构与数据传输的办法。
在操控范畴,想要对一个相对杂乱的体系进行有用操控,要在设备之间树立一个互相联络和交流的机制,计算机科学里称这种联络机制为“接口(Interface)”。比如,当咱们需求打印一份文件时,首要主机需求与打印机之间要树立联络,然后才干向打印机发送数据。那么,这是怎样一个进程呢?
握手信号,联络主机与外设的枢纽
计算机接口的首要功用便是使数据经过接口使之能够在不同模块或体系间自在活动,抵达数据同享的意图。在曩昔很长一个时期内,主机与打印机之间是经过并行口衔接起来的,现在针式打印机依然运用并行口,激光打印机和一部分喷墨打印机现已选用USB接口了。先来看看并行口是怎样进行数据交流的。
图1 并行口衔接器
所谓并行口,是指数据在多条信号线上一起进行传送。规范的并行口为8位,也便是说只要8条数据线。那么,规范的并行口为何界说了25个针脚呢?本来,除了8根数据线,还有一系列的指令线、状况信号线和接地线(图1)。其间的指令线由主机发往打印机,而状况信号线则由打印机反馈给主机。指令线与状况线之间往往是成对呈现的——一条指令线对应一条状况线,互相接头的两个信号则被形象地称作握手(Handshaking)信号。
表1 SPP办法下并行口信号界说
经过握手信号,主控端可获得被控端的状况信息,然后决议下一步做什么了。比如,当用户需求打印文件时,会向打印机宣布nSELECT指令,假如打印机电源现已翻开,则经过SELECT信号线传回“在线”状况信号。接下来,主机向打印机传输nSTORBE信号,一起将寄存数据的发送到数据线上,一旦BUSY信号为低电平,则履行数据传输。此刻,打印机输出nACK信号,表明完成了一个字节的数据传输使命,告知主机能够开端传输下一个字节了(图2)。
图2 并行口数据传输时序图
假如在打印进程中纸张用完,打印机宣布缺纸信号,主机收到这个信号后,会在显现屏上显现出对应的信息,以告诉用户放入纸张。有了这样一个机制,机器之间便能够自动地进行各种作业。
选用同步通讯树立联络主机与外设的枢纽
握手信号的另一用处是对被控设备进行故障诊断。比如电脑在发动进程中会向打印机宣布操控指令nINT让打印机复位,假如应对信号nERROR为高电平,则阐明打印机功用正常,不然意味着打印机出错了。
握手信号是联络主机与外设的枢纽,经过握手信号你来我往的进程,主机便可获得外设必要信息,然后为数据传输做好预备。与并行口相同,规范串行口RS-232C也供给了握手信号。
握手信号是联络主机与外设的枢纽,主机经过握手信号获得外设必要信息,为数据传输做好预备。那么,握手信号是不是在一切的计算机接口中都是有必要的呢?答复是否定的。在鼠标和键盘运用PS/2接口中,就没有握手信号。键盘和鼠标也需求跟主机之间进行数据传输,没有握手信号,这些设备又是怎样与主机树立联络的呢?
咱们先调查一下PS/2鼠标端口(图3)。PS/2端口用作鼠标接口时,只用6个插针中的4个,Pin1用于传送数据,Pin3接地,Pin4向鼠标供电,Pin5为鼠标供给时钟信号。与串行口、并行口比较,PS/2接口没有握手信号,但是有时钟信号,两者的不同就在这儿。
图3 PS/2鼠标接口
难道说,时钟信号能够替代握手信号的一些功用吗?也不能够这么说。合理的解说是,这是两种彻底不同的通讯办法。并行口和串行口运用的通讯办法称作“异步通讯”,而PS/2接口则运用“同步通讯”。
通讯接口中是否运用时钟信号是差异同步通讯仍是异步通讯的标志,同步通讯的两边运用同一个时钟,而异步通讯中无须这么做。尽管如此,不管同步通讯仍是异步通讯,通讯两边都有必要互相和谐,以必定的约好(协议)坚持两边同步,不然就会形成数据的过错与紊乱。
在异步通讯办法中,收发两边获得同步的办法是选用在字符格局中设置开端位和中止位。在一个有用字符正式发送前,先发送一个开端位,而在字符结束时再发送一个中止位。接纳器不断地检测或监督线路上信号的改变,当检测到有开端位时,便知道紧随其后的是有用字符位的到来,这才开端接纳字符;当检测到中止位时,便中止接纳。运用该办法进行通讯时,发送器与接纳器不需求相同的时钟,所以称之为异步通讯。
而在同步通讯办法中,传输信息的每一位都有必要在收发两头严厉坚持同步,即所谓的“位同步”。因而,在同步通讯中,收发两头需求同一个时钟源作为同步信号。
进行同步传送时,发送端须先发送一个同步字符去告诉接纳端串行数据的第一位何时抵达,接着便以接连的办法发送信息,传输功率较高。而异步通讯每传送一个字符要添加大约20%的附加信息位,传输功率较低。
同步通讯除了具有通讯功率高的长处之外,接口电路的结构也比较简略,并且愈加易于办理。正由于如此,同步通讯的运用也非常广泛。SMBus(System Management Bus,体系办理总线)便是一种同步通讯接口,它只要两根信号线:一根双向数据线和一根时钟信号线。Windows中显现的各种设备的制造商称号和类型等信息,都是经过SMBus总线搜集的。
图4 根据SMBus的CPU温度监控电路
SMBus的数据传输率为100kbps,尽管速度较慢,却以其结构简练造价低价的特色,成为业界遍及欢迎的接口规范。主板监控体系中传送各种传感器的丈量成果,以及BIOS向监控芯片发送指令,都是运用SMBus完成的。PCI插槽上也给SMBus预留了两个引脚(A40为SMBus 时钟线,A41为SMBus 数据线),以便于PCI接口卡与主板设备之间交流信息。
USB接口是怎样进行通讯的呢?
USB接口中既没有握手信号,也没有时钟信号,它是怎样进行通讯的呢?
咱们现已知道,传统的串行口、并行口经过握手信号进行通讯,这些接口一般经过握手信号来联络主机和外设。咱们也现已知道,通讯两边能够同步或异步两种办法进行通讯,两者最大的差异是,同步通讯接口中有时钟信号线。
USB接口运用很广。但是,USB接口中既没有握手信号,也没有时钟信号,它是怎样在主机与外设之间树立联络的呢?又是怎么交流数据的呢?为了深化了解USB接口的通讯进程,先介绍USB的硬件和软件结构。
从物理结构上,USB体系是一个星形结构。USB体系包括三类硬件设备: USB主机(USB HOST)、 USB设备(USB DEVICE)和USB集线器(USB HUB)。USB总线上的物理衔接是一个分层的星形拓扑,处于每个星形拓扑中心的是HUB集线器,在主机与HUB之间,HUB与HUB之间,HUB与设备之间都是点对点的衔接。
图5 USB拓扑结构
USB HOST对USB体系进行办理、每毫秒产生一帧数据、发送装备恳求对USB设备进行装备、办理和康复总线上的过错。 USB HUB用于设备扩展衔接,一切USB DEVICE都衔接在USB HUB的端口上。USB DEV%&&&&&%E接纳USB总线上的一切数据包,经过数据包的地址域来判别是不是发给自己的数据包:若地址不符,则简略地丢掉该数据包;若地址相符,则经过呼应USB HOST的数据包与USB HOST进行数据传输。
从逻辑结构上看,每个USB逻辑设备都直接与USB HOST进行数据传输。与传统接口以硬件手法完成握手的办法不同,USB接口运用“软握手”办法。
USB的软握手机制是透过三个层次的驱动程序完成的,在这中心起到关键作用的是设备驱动程序,该程序在主机与设备之间树立起至少一个管道。管道有两种类型:流管道和音讯管道。其间有一个最重要的音讯管道是“缺省操控管道”,这个管道在设备一加电的时分就存在了,它供给设备的装备和状况等信息。主机与设备之间的联络便是经过音讯管道完成的。
图6 USB软件结构
协议栈驱动程序的首要作用是将设备与相应的设备驱动程序衔接起来。由于USB支撑的设备许多,而每个详细的设备都有自己对应的设备驱动程序。关于某一详细设备来说,运用哪个驱动来办理,就要由协议栈驱动程序经过读取设备描述符进行挑选。挑选好驱动程序之后,协议栈驱动程序还要给USB设备分配地址。
管道树立起来之后,数据的传输操控则由USB接口驱动程序担任完成了。在这儿,主机占有肯定主导权,设备只能是“听指令行事”。设备产生事情时经过音讯管道报告给主机,主机乘机向设备发送指令,注册流管道,发送或接纳数据包。主机与设备之间以数据数据包的办法进行传送,明显这与网络上数据传输的办法相同,是一种异步数据传输办法。