则在数据采样1处得到的采样值即为曼彻斯特编码前的原数据,数据采样2是用来帧头帧尾检测;总线冲突检测的原则为:总线上曼彻斯特码的半个bit周期之内的电平应一致,前后半个周期电平应相异,否则被认为码错。
3.2 CRC校验
CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验。它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制。在各种通信系统中,CRC有bit型算法、字节型算法以及基于查找表的算法。前者适合串行数据通信的校验,后两者常用于高速并行通讯领域。
MVBC可以独立的完成CRC校验码的产生与数据的校验而无需软件参与。其中:
G(x) = x7+x6+x5+x2+1
电路实现方法上我们选择bit型算法,CRC发生电路采用LFSR,主体由一组移位寄存器和模2加法器(异或单元)组成即在数据串行发出的同时,数据经过带有异或单元的移位寄存器产生CRC校验码,实际电路图如图3-5:
串行数据的CRC校验电路也与CRC发生电路一样,不同的是前者CRC电路在移位寄存器之前,而后者在后。
3.3 总线接口模块的设计实现
总线接口模块包括上述的Encoder、Decoder。
3.3.1 Encoder
Encoder模块主要有以下功能:
(1)构建帧头帧尾;
(2)按照传输层指示进行CRC校验;
(3)对数据进行曼彻斯特编码;
(4)实现主、从帧的发送;
在Class 1 mode以及其它Class mode下,Encoder分别由Class1模块和MCU控制。
如果当前配置允许发送,且控制模块告诉Encoder有帧要发送,以及帧类型、帧长度,则Encoder先将配置好的帧头发送,然后将帧数据、产生的CRC校验码移位后经曼彻斯特编码输出,最后发送帧尾,这样完成主、从帧的发送。电路实现如图3-6所示:
3.3.2 Decoder
MVB总线采用冗余介质,因此MVBC需要冗余的接收模块来完成帧的接收。
(1)两个Decoder根据选择各自完成信号检测(信任线)或冗余检测(冗余线)功能,完成各自帧数据的起始位判定、数据采样、数据解码和数据移位功能;
(2)Decoder从信任线上接收数据,并监视冗余线;
(3)判断帧类型,从帧中提取数据和校验序列(非CRC校验,可选)并存入RXBuffer中;