什么是总线(Bus)?
每周几块汽车知识拼图,做工作的艺术家。——李自在
如果你了解过智能驾驶和智能座舱相关的知识,你一定知道目前绝大部分厂商的电子架构都是基于CAN/LIN总线的,那到底什么是"总线"?我们来聊聊。
什么是总线?
总线是来源于计算机术语,是一种信号传递的布线方式。
打个比方,有个地方有8个村子,他们经常会相互进行交流,于是要接电话线。具体怎么接,可以有下面三个方式。
方法一:就是每个村子之间修一条专线,可以直接交流,A想找B,就直接拿起电话直接打就好了——这种效率很高,但是成本也比较高,堪称土豪plus
方法二:就是8个村子一起建一个中转站,都把线路都连接到中转站上,这样A想找B,就先打电话给中转站,中转站再转接到B——这种效率低一些,但相对于方法一,如果村子比较多或者距离远,成本会更低一些
方法三:这种和方案二有一点类似,就是8个村子一起建一条共用的线路,然后大家再用分别连线到在这条公用线路上,同时也需要给这个线路雇一个协调员,当同时有几个村子要打电话的时候进行协调——这种在村子比较多或者距离远的时候成本是最低的,效率我们等会再说。
方法三就类似于我们说的总线的传递方式,也就是通过公用线路来传递信息。
总线是怎么传递信号的?
总线方式在同一时刻只能有两个村子通话,具体来说,如果一个时刻各个村子都没有打电话,那总线上是没有信号在传递的,这时候A想打电话给B:
1.A先拨通B的号码,从A的电话中传出一个需要打电话的信号给协调员
2.协调员收到信号,看看总线发现现在是闲置的,就把同意A进行传输,并且把控制权给A
3.然后A就开始给B发信息
4.这时候C也要发信息,他也传出要打电话的信号给协调员
5.协调员这时候会有一个判断,如果他判断C的要传递的信息比A重要,他会中断A的电话,让C先传;如果他判断C的要传递的信息没有A重要,那么他就先不同意C传信号,直到A传完;如果A还没传完,D也发信号要打电话,而且经过协调员判断,D的信息重要性低于A但高于C,那即使C是先来的,也得等着A打完B打,最后轮到C,排队是靠实力的,像极了丛林法则。。。
上面说的协调过程叫做“仲裁“
A给B打电话,A是传递方叫做“主模块“,B是接收方叫做”从模块“。
并行总线和串行总线
一类事物的分类总有不同的标准,比如黄瓜和西瓜可以分成蔬菜和水果两类,也可以分成绿色植物一类。
总线也是一样:
1. 按照传递的数据分:数据总线(DB-Data Bus);地址总线(AD-Address Bus);控制总线(CB-Control Bus)
2.按照所在区域分(比如计算机):内部总线,系统总线,外部总线
3.按实现方式分:并行总线,串行总线
这里就讲讲并行总线和串行总线。
不严谨的讲,并行就是多个并列的数据传输通道一起传输,就像一条多车道的高速公路,串行就是一条单车道的路。我们说的笔记本CPU 32位或者64位就是并行总线。
以数字信号为例(可以简单理解成由高低电平0/1来组成的信号,以后文章再具体讲),假设一个完整的信号是由5个byte(byte就是字节,大名鼎鼎的字节跳动就叫做ByteDance),每个byte包含8bit(位,1byte=8bit)二进制数。现在要求在5秒钟内完成传递。
那么如果通过一个8条通道的并行总线来传递,那么其实发一次就可以传递1byte的信号,理想状态下只需要每秒发一次,5秒就可以完成5个byte的信号传输。(信号在导线中的传递速度是光速级别的,所以可以认为只要发送,信号立刻到达,所以传递信号需要多少秒只与发送信号的频次有关)
如果通过一个单通道的串行总线,发一次只能传递1/5 byte,也就是1 bit的数据,那如果每秒发一次,就需要50秒才能完成,所以为了完成任务,需要1/5秒就发一次,这样就可以在10秒内完成任务。
这个发信号的频次,我们用赫兹(Hz)这个单位来表示,即(次/秒),1秒一次就是1Hz,1/5秒一次就是5Hz。
多车道就比单车道好吗,不尽然。
1.导线等长
其实实际在发数据的时候,并不是以1Hz或是5Hz这样的频率发送的,而是MHz(1000,000Hz)或者GHz(1000,000,000Hz)为单位进行传送的,每次发信号的时间间隔特别小。
这就要求并行总线要保证每次数据能同时到达接收方,不然有快有慢的话在这么高的频次下就挤在一起乱了。
为了保证这一点,需要每根并行导线等长,这并不容易,尤其是在控制电路板上,很多时候总线不是直的,而是会转弯或者跨越不同的层的(控制电路有的是立体的,很多层),这样在转弯处和跨层处保证导线等长是很难的。
2.信号干扰
另一方面,那么多线路靠在一起传递信号,也会产生互相干扰等问题。
3.体积增加,难度增加
并行线路太多就会导致日韩综艺体积增加和技术难度的增加,比如现在PC机的CPU,如果从64位增加到128位甚至512位,会带来很大的难度。
以上这些痛点,串行总线都没有,所以说在一些情况下串行总线是优于并行的。但是也要看到如果想让串行总线和并行有一样的数据传输速度,就要提高信号发送频率,这个也是一个难点。
未经同意,请勿转载,如果错误,敬请指教。
举报/反馈