在硬件概念中,我们经常听到接口和总线这两个概念,它们密切相关,但又有所区别。
首先,连接的部件数量不同。
接口通常用于两个部件之间的连接,而总线则可连接多个部件,是多个部件共享的传输介质。这意味着接口更多地关注于单一连接关系,而总线则涉及到更广泛的设备间通信。
比如,我们常把UART称为串行接口、SDIO称为“安全数字输入输出卡”接口、JTAG称为“调试”接口。因为这些仅称为接口的硬件模块,一般在一个系统板子上只有一个。或者有多个,但彼此毫无关联,比如一个ARM -M3的板子上可支持两个串口,但两个串口毫无关联。
我们把CAN、I2C、ISA、AGP、PCI、USB等等称为总线。是因为这些总线上可以挂接多个外部设备。甚至于工作在主从方式的SPI,因为可以有多个从设备,也称为SPI总线。虽然现实当中,我只见过接两片SPI FLASH的设计,但人家就是具备接多个从设备的能力,就可以称为总线。
其次,总线是一种标准化接口,它是由数据线、地址线、控制线等构成,它是可以挂接接口设备息的公用通道。主机的各个部件通过总线相连接,外部设备则通过相应的接口电路再与总线相连接。总线侧重于定义通信的标准和规范,而接口则侧重于这些标准和规范的实际物理实现。
其实,两者之间的关系可以举例简单理解为:PCI接口的设备都要通过PCI总线来进行通信,而PCI总线就是一种传输通道。
上述例子可以说明接口和总线之间存在着密切的依赖关系:接口需要通过总线来实现设备间的通信。
综上所述,接口和总线在硬件概念中既有区别也有联系。
接口主要用于两个部件之间的连接,而总线则是连接多个部件的信息传输线。
总线提供了通信的标准和规范,而接口则是这些标准和规范的具体物理实现。
接口与总线,两者共同工作,确保了硬件设备间的有效通信。
硬件设备之间,如何进行“有效通信”呢?其实少不了“协议”这一层。
协议是物理设备之间进行通信时的“规则",其内容主要包括设备间如何相互识别、如何建立链接、使用的讯号类型、数据的编码解码方式、数据传输的类型、数据传 输的方式以及物理层面上的电压、电流、保持时间和截止时间等。
只有当两个设备之间的协议相同或者相容时,才可以正常进行通讯。不同协议能够支持的最大传输速率也不同。