CAN总线详解-位填充

发布时间:

2023-02-24 12:25

在使用NRZ位表示时,使用位填充提供的总线状态来满足周期性同步。每当发送逻辑在数据中遇到一定填充宽度的有相等值连续位时,它会自动填充一个位的互补值,填充到输出比特流中。接收器执行逆过程,从接收数据中去除它。NRZ码的带宽利用率很高,但是有些时候它不能传输时钟信号。比如,传输0-0-0-0或1-1-1-1在物理线路上将看到一条水平直线的“低电平”或“高电平”,当接受方和发送方的时钟存在偏差时,会造成接收方多检出或少检出一个位。如下图,发送方1-0跳变开始,接收方时钟与它同步,但是接收方比发送方的系统时钟慢了1/5Tq,当发送方连续发了6个零,接收方只连续收到了5个零,丢了一个位。

对于采用NRZ码的异步通信,为了避免这种情况,就要定义一个最大时钟同步间隔。即最大允许发送N个连续位时必须要反转一次电平,让接收方同步发送方的时钟。定义发送数据帧中连续位的个数为数列{n_i},如果max{n_i}<N,就不需要填充,否则就要对帧中满足填充。但是这个填充位是0还是1没有任何数据意义,它只是时钟同步的标志,接收到之后必须要被识别出来并剔除掉,才能恢复出发送方的原始数据。

每填充一个位,填充的位也会被定义到发送数据序列里,则{n_i}就要重新计算一次,重新判定max{n_i}<N。从而可能会出现填充的连锁反应,如下图所示。而在去填充的时候,要首先全识别出填充位,然后再一起剔除。

这里是占位文字