总线是电子设备、器件之间有线通信的物理介质,按照不同的分类方式,有多种类型。
这里介绍下相关概念
串行与并行
并行总线
并行总线是数字电路里最早也是最普遍采用的总线结构。在这种总线上,要传输的数据线、地址线、控制线等都是并行传输,比如要传输8位的数据宽度,就需要8根数据信号线同时传输,如果要传输32位的数据宽度就需要32根数据信号线同时传输。
并行总线的最大好处是总线的逻辑时序比较简单,电路实现起来比较容易,但是缺点也是非常明显的。比如并行总线的信号线数量非常多,会占用大量的管脚和布线空间,因此芯片和PCB板的尺寸很难实现小型化,特别是如果要用电缆进行远距离传输时,由于信号线的数量非常多,使得电缆变得非常昂贵和笨重。
采用并行总线的另外一个问题在于总线的吞吐量很难持续提升。对于并行总线来说,其总线吞吐量=数据线位数×数据速率。我们可以通过提升数据线的位数来提高总线吞吐量,也可以通过提升数据速率来提高总线吞吐量。
以个人计算机里曾经非常流行的PCI总线为例,其最早推出时总线是32位的数据线,工作时钟频率是33MHz,其总线吞吐量=32bit×33MHz;后来为了提升其总线吞吐量推出的PCI-X总线,把总线宽度扩展到64位,工作时钟频率最高提升到133MHz,其总线吞吐量=64bit×133MHz。
但是随着人们对于总线吞吐量的要求的不断提高,这种提升总线带宽的方式遇到了瓶颈。首先由于芯片尺寸和布线空间的限制,64位数据宽度已经几乎是极限了。另外一方面,这64根数据线是共用一个采样时钟,为了保证所有的信号都满足其建立保持时间的要求,在PCB上布线、换层、拐弯时需要保证精确等长。而总线工作速率越高,对于各条线的等长要求就越高,对于这么多根信号要实现等长的布线是很难做到的。
对于并行总线来说,更致命的是这种总线上通常挂有多个设备,且读写共用,各种信号分叉造成的反射问题使得信号质量进一步恶化。
常见并行总线:并行lcd、pci、std
串行总线
所谓串行总线,就是并行的数据在总线上不再是并行地传输,而是时分复用在一根或几根线上传输。比如在并行总线上传输1个Byte的数据宽度需要8根线,而如果把这8根线上的信号时分复用在一根线上就可以大大减少需要的走线数量,同时也不需要再考虑8根线之间的等长关系。
采用串行总线以后,就单根线来说,由于上面要传输原来多根线传输的数据,所以其工作速率一般要比相应的并行总线高很多。
比如以前计算机上的扩展槽上广泛使用的PCI总线采用并行32位的数据线,每根数据线上的数据传输速率是33Mbit/s,演变到PCI-E(PCI-Express)的串行版本后每根线上的数据速率至少是2.5Gbit/s(PCI-E 1代标准),现在PCI-E的数据速率已经达到了5Gbit/s(PCI-E 2代标准)或8Gbit/s(PCI-E 3代标准)。
采用串行总线的另一个好处是在提高数据传输速率的同时节省了布线空间,同时芯片的功耗也降低了,所以在现代的电子设备中,当需要进行高速数据传输时,使用串行总线的越来越多。
常见串行总线:MIPI、I2C、SPI、UART、USB
同步和异步
同步比异步快
同步总线
指互联的部件或设备均通过统一的时钟进行同步,即所有的互联的部件或设备都必须使用同一个时钟(同步时钟),在规定的时钟节拍内进行规定的总线操作,来完成部件或设备之间的信息交换。
时钟信号独立于数据,有独立时钟,同步指按照一定的步骤,有规律,有节奏的执行;执行过程之间有一定的逻辑关系
常见同步总线:I2C、SPI
异步总线
指没有统一的时钟而依靠各部件或设备内部定时操作,所有部件或设备是以信号握手的方式进行,即发送设备和接受设备互用请求(request)和确认(acknowledgement)信号来协调动作,总线操作时序不是固定的。因此,异步总线能兼容多种不同的设备,而且不必担心时钟变形或同步问题使得总线长度不受限制。例如,火线协议(Firewire或IEEE1394)和USB2.0协议都是异步总线协议
时钟信号是从数据中提取出来的,异步指两个过程之间没有什么依赖性,就算上一过程没有执行结束,只要有需要,当前过程也可以执行
常见异步总线:uart,usb、rs-232、rs-485
单工和双工
单工
只能实现单向传输,就是只能发送或是接收
常见单工总线:RS-232C
双工
双工是指可以双向传输,既可以发送又可以接收。
全双工
全双工是指发送和接收可以同时进行,一般需要两根以上数据线。
常见全双工总线:SPI、uart
半双工
半双工是指,同一时间,只能发送或接收,一般只有一根数据线。
常见半双工总线:I2C
单端和差分
严格意义上来说,所有的电压信号都是“差分”的,因为一个电压总是相对另一个电压而言。但大部分情况下,我们会把“地”作为电压基准点,从而测得另一个电压值,这种信号被称为单端信号。由于是和“地”做比较,单端信号在PCB上的表现通常只有一根导线。
差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相等,相位相差180度。在这两根线上传输的信号就是差分信号。差分信号在PCB上的表现会有两根导线。
差分信号抗干扰能力强、速度快、功耗低,但布线要求高
单端
常见单端总线:i2c、spi、uart
差分
常见差分总线:MIPI