绘制两个简单的波形图,一个表示曼彻斯特编码(每个位都有电平变化),另一个表示CAN使用的NRZ编码(长时间可能无电平变化)。
在NRZ编码的波形图上,当检测到连续5个相同值的位时,在第5个位后插入一个反码位(即0变1,1变0),显示一个明显的电平变化,帮助接收器重新同步。
绘制一个简化的CAN帧结构图,包括帧起始(SOF)、仲裁场、控制场、数据场、CRC序列等部分。在这些部分旁边标注“应用位填充”,而在CRC分隔符、ACK场和EOF等部分旁边标注“不应用位填充”。在一个大图中整合上述三个部分,或者使用三个独立但相互关联的小图来展示。每个部分都清晰地标注出位填充的作用和效果,以及它在CAN帧中的具体应用位置。
顶部,简述CAN信号传输的概述和位填充的重要性。
中部,分为三个小图,分别展示位同步、防止信号丢失和遵循协议规范的具体图示。
底部,总结位填充对CAN信号传输可靠性和同步性的贡献。
数据数字编码有很多方法,诸如非归零(NRZ)、曼彻斯特或脉宽编码,它们的区别在于用来表示一个位的时隙的数目不同,如图1所示。
非归零电平编码的信号电平在整个位时间里保持不变,因此只需要一个时隙来表示一个位。而曼彻斯特编码的信号在一个位时间内发生变化,因此需要两个时隙来表示一个位。曼彻斯特编码的优点是每个位都有一个信号边沿用来实现位同步(Self-clocking code)。但是曼彻斯特编码和非归零编码相比,在相同的位时间(位频率)时,位速率只能达到非归零码一半。由于非归零编码的信号电平可长时间保持不变(取决于所传输的数据),因此有必要采取适当的措施以确保不超过两个信号沿之间最大允许的时间间隔。重新同步点之间最大的时间间隔由节点振荡器的误差决定。重新同步可通过应用“位填充”的方法实现。这种方法是在一定数量的恒定位电平之后将一个反码插入到位流中。
图1 NRZ和曼彻斯特编码的位表示 CAN协议中应用的是带位填充(填充宽度为5位)的NRZ信号编码,它保证了具有足够同步能力的最高传输性能。这种类型的编码还提供非常良好的信号辐射特性(总线辐射的能量大致上和传输信号的频率以及信号边沿的数量成比例)。
CAN协议中应用NRZ编码的部分包括SOF、仲裁场、控制场、数据场、数据帧和远程请求帧的CRC序列。发送器一检测到5个连续相同值的序列,它就会在实际传输的位流中插入一个反码位。数据帧或远程帧剩下的部分(CRC分隔符、ACK场和EOF)都有一个固定的形式(隐性电平),并且不采用位填充进行发送。出错和超载帧也是如此。
CAN协议中的NRZ编码与位填充
1. NRZ编码基础
非归零(NRZ)编码:在这种编码方式中,信号的电平在整个位时间内保持不变,以表示二进制数据中的0或1。这意味着每个位只需要一个时隙来表示。
优点:具有较高的数据传输速率,因为每个位只需要一个时隙。
缺点:长时间连续相同的电平可能导致接收端失去同步,特别是当存在节点振荡器误差时。
2. 位填充(Bit Stuffing)
目的:通过在连续相同值的位序列中插入反码位(即0变1,1变0),来限制重新同步点之间的最大时间间隔,从而保持同步并防止信号丢失。
应用规则:CAN协议规定,当发送器检测到5个连续相同值的位时,它会在第5个位后插入一个反码位。
优点:确保了信号的同步性和可靠性,同时保持了较高的数据传输速率。
3. CAN帧结构中的位填充
应用部分:位填充应用于CAN帧的多个部分,包括帧起始(SOF)、仲裁场、控制场、数据场以及数据帧和远程请求帧的CRC序列。
不应用部分:CRC分隔符、ACK场、EOF(帧结束)、出错帧和超载帧等部分由于具有固定的形式(通常为隐性电平),因此不采用位填充进行发送。
4. 图示概念(文字描述)
垂直轴:表示信号电平(高电平为显性,低电平为隐性)。
水平轴:表示时间,从左到右为时间流逝。
|