搞定通讯接口的三板斧!

今天这篇文章我们来聊一聊通讯接口相关的内容。

众所周知,不同国家,甚至是不同地区的人,要能顺利沟通,必须说对方能听懂的语言。无论是家乡话,普通话,还是英语,法语等各种语言,都有他们适用的场合。芯片之间也需要“交流,要能识别到对方的信号,通讯芯片之间必遵守相同的规则。因此,无论是UART,I2C,还是SPI,CAN等各种接口,也都有他们适用的场合。

面对这么多的接口和协议规范,有没有什么好的方法将他们全部包含进去呢?

答案是肯定的,借鉴前辈们的总结和归纳,众多的接口通讯其实只要抓住三个核心点就能分清:时钟同步和异步,信号的传输方向,时钟的来源。也就是文章标题所说的通讯接口三板斧。

1. 第一板斧——时钟同步和异步

接口之间的交互方式存在多种形式,如果按照是否有公共时钟CLK的参与,可以分为同步传输和异步传输。

同步:两个或两个以上随时间变化的量在变化过程中保持着一定的相对关系。异步:双方不需要共同的时钟,接收方不知道发送方什么时候发送。以特定的信号来提示对方开始接收信息。

同步和异步都是针对时钟来说的,同步意味着信号需要参考时钟信号,而异步信号不需要参考CLK信号。

(1) 异步传输

异步传输是指将比特串划分为一个个小组发送,这些小组可以在任何时间发送。异步传输也叫做起止式通信。

异步传输最大的特点就是在传输每帧数据时,每个字符代码前后的都有起始位和停止位标识字符的开始和结束。以常见的UART异步通信数据格式为例。

在数据开始发送时,有严格起始信号,停止信号。在某些场合还会增加标志位,奇偶校验位。因此,异步通讯的特点:通信方式简单,效率低,速率低;常见的应用场合:UART  CAN总线,误码率高及对数据速率要求低的线路。

(2) 同步传输

同步传输是指每一个数据位都是用相同的时间间隔发送,而接收时也必须以发送时的相同时间间隔接收每一位信息。

不论是否传输数据,接收单元与发送单元都必须在每一个二进制位上保持同步。发送方和接收方的时钟是相同的,一般在同步字符后,传送大量数据。

同步信号在发送和接收数据时,需要严格参考时钟信号。因此,在同步信号传输中,如果时钟信号存在错乱,传输的数据也将受到干扰。但是这种传输方式因为省去了固定的字节消耗,效率高,速度快,速度取决于时钟频率。在工程中应用较多的是I2C,SPI都属于同步传输的方式。

(3) 同步和异步的差异

2. 第二板斧——信号传输方向

前面根据数据传输是否需要时钟将接口的传输分为同步和异步。如果按照在传输的时候,是单方向的传输还是双向的传输,又可以分为单工,全双工,半双工。

(1)单工

单工通信说明接口之间的信息只能单向的传递,比如,电视,广播,功放。在UART通信中,单独针对RXD来说,信号只能通过RXD信号从发送设备向接收设备发送数据。接收设备不能通过RXD管脚做其他功能使用。

(2)半双工

半双工说明接口之间的信息通道支持双向的传输,但是在某一个固定的时刻,信号只能从一方传递到另一方,不能同时传递信号。比如对讲机,智能音响。在单板中经常使用的RS485两线式的接口就是半双工的通信方式。

(3)全双工

全双工说明信息能在某个时刻双向传输,不需要像半双工那样存在切换,全双工的通道一直支持信息双向的传递。比如有线电话,手机,都是双向通讯。在单板上,使用较广泛的UART(RXD/TXD),SPI(SDI/SDO)都是全双工接口。

3. 第三板斧——时钟的来源

在有时钟参与的接口通讯中,依据时钟的差异,IC之间的通讯又可以分为系统同步,源同步,自同步三种类型的通讯方式。

(1) 系统同步

系统同步也称为公共同步,即在IC之间通信中,外部公共时钟应用于两个IC之间,并用于数据发送以及接收。

系统同步的接口要求接收端的数据要比时钟先到达,这样才能在时钟到达的时候正确采样。系统同步一般用在低于200MHz~300MHz的场合。这种通讯方式在笔者平时单板开发中见得很少,仅仅在SOC和以太网PHY芯片之间曾见过,50MHz的晶振同时给SOC和PHY作为时钟,但是产品中未曾使用。

(2) 源同步

源同步是指两个通讯的IC,发送端在发送数据的时候,会伴随着时钟一起发送,接收端依据此时钟进行数据的接收。

源同步在视频领域使用比较多,传感器输出信号格式为:数据+时钟+行场同步信号,接收端SOC在接收到图像Sensor传输的数据后,根据时钟的时序,来接收每个像素点。

源同步的时钟和数据都是从发送端发出,这里需要注意采样时序的问题,接收端的SOC接收到的时钟采样需要在数据的中间,因此,数据先发送,再是时钟,这样在接收端时钟和数据错开的相位刚好能保证时钟采样到的信号在数据中间。源同步使用较多的应用场合接口速率在200MHz~800MHz,如DDR,QDR等。

(3) 自同步

自同步的意思就是不需要单独的时钟线,但是器件能在数据流中准确得到数据和时钟。通讯模型如下:

自同步电路主要模块分为并串转换,串并转换和时钟数据恢复。自同步在高速接口中使用比较多,如FPGA的GTP接口,内部包含的高速SerDes就是自同步。

SerDes串行解串器在发送端将多路低速并行信号被转换成高速串行信号(含数据和时钟),在接收端通过CDR恢复出数据和时钟。

自同步常用于速率小于10GHz的单板中,PCIE,SATA这些高速接口都是自同步的方式。还有一些自定义的接口协议,为了节约传输线,通常将时钟信号放在数据信号中一起传输,在接收端分离出时钟信号。

不同的使用场合需要使用不同的芯片,不同的芯片之间的接口也存在巨大的差异,在变化中也存在一些共性的问题,只要记住上面的三板斧,在遇到新的通讯接口时,就会更快看到差异和本质。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 1
收藏 2
关注 582
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧