分享
基于Verilog语言的CAN总线错误分析及仿真_吕思宇.pdf
下载文档

ID:2250715

大小:2.50MB

页数:4页

格式:PDF

时间:2023-05-04

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于 Verilog 语言 CAN 总线 错误 分析 仿真 吕思宇
工业控制计算机2023年第36卷第2期CAN总线(即Controller Area Network,控制器局域网络)CAN总线功能的实现离不开CAN控制器和CAN驱动器1,以及中央处理模块对发送接收数据的处理。CAN控制器的实现除了采用相关硬件器件以外,还会采用在FPGA内使用IP核(知识产权内核)的方式来实现。IP核即完全实现了CAN控制器功能及CAN2.0B协议的代码内核,采用IP核的方式不但节省了PCB布板空间,更重要的在于,一旦CAN总线发生故障,特别是FPGA内部的故障2,通过IP核内部的HDL(硬件描述语言)代码能够精确定位到CAN总线错误的状态和位置,能够方便地定位故障原因,对CAN总线错误的研究及仿真有着重要的实际意义。本文采用Verilog语言编写的IP软核3,在FPGA内部实现了CAN控制器以及CAN总线协议的功能,在FPGA开发软件ISE14.7当中使用Verilog语言编写仿真平台,采用ISIM工具对CAN总线错误进行功能仿真和分析。1CAN总线状态的分类及转换根据CAN2.0B协议,CAN总线节点的错误状态可以分为以下三种4-5:1)主动错误状态。处于主动错误状态的节点可以正常参与总线上的通信,而且可以在检测到错误时送出主动错误标志。主动错误标志由连续6个显性位构成。当节点检测到错误时,错误计数器(发送错误计数器TEC或接收错误计数器REC)计数累加。2)被动错误状态。当错误计数器累加到大于127时,节点状态转为被动错误状态。处于被动错误状态的单元也能正常参与总线通信,但是为了不妨碍其他节点通信,在检测出错误时发送被动错误标志,被动错误标志由连续6个隐性位组成。处于被动错误状态的节点即使检测出错误,如果总线上其他节点没有错误,整个总线也被认为是没有错误的。当节点检测到错误时,错误计数器值继续累加。3)总线关闭状态。当发送错误计数器(TEC)累加到大于255时,节点状态转为总线关闭状态。处于总线关闭状态的单元不能参与总线通信,不能发送或接收任何数据帧,相当于从总线上离线出去。其他节点可以正常通信。处于总线关闭状态的节点,当在总线上检测到128次连续11个位的隐性位后,自动转为主动错误状态。CAN总线节点状态转换过程如图1所示。通过CAN总线节点状态的划分,CAN总线能够区分临时故障和永久性故障,处于短期干扰导致的临时故障时,并不妨碍CAN总线的正常通信,而处于永久性故障时,则会自动断开故障节点,以保障其他节点的正常通信。图1CAN总线节点状态转换图2CAN总线错误种类及触发机制在CAN2.0B协议中,对CAN总线错误的种类进行了划分,包括5种CAN总线错误种类4。2.1位错误(bit error)当节点获得总线发送权后,会对总线电平进行侦听检测,当检测到的总线电平和从CAN控制器发送的电平不一致时,就会认为是位错误。位错误的检测段,包括了数据帧从帧起始到帧结束,遥控帧从帧起始到帧结束,以及错误帧和过载帧。当发送单元在发送数据时产生位错误,则发送错误计数器(TEC)值加8。基于 Verilog 语言的 CAN 总线错误分析及仿真吕思宇倪云龙叶胜衣朱燕君(中国电子科技集团公司第五十八研究所,江苏 无锡214072)Analysis and Simulation of CAN Bus Error Based on Verilog-HDL摘要:CAN总线是一种串行数据通信总线,主要用于车载设备之间的通信。CAN总线是一种无主总线,在通信过程中每个节点均可以作为主机进行发送,作为从机进行接收,各个节点发送数据时采用仲裁机制进行发送,保证了数据发送的有序性,但是同时也容易受到外界干扰而发生错误。列举了CAN总线错误的状态、CAN总线错误的种类以及触发机制,对CAN总线错误基于Verilog代码进行分析,并通过ISIM仿真对CAN总线各种错误的触发机制进行了研究,分析了CAN总线错误产生的原因。关键词:CAN总线;CAN控制器;现场可编程门阵列;知识产权内核;ISIM仿真Abstract:CAN bus is a kind of serial data communication bus,used in communication between devices on cars.Thestate of CAN bus errors,the variety of CAN bus errors,and the mechanism of CAN bus error triggering are all given inthis paper.The states of CAN bus errors,the types of CAN bus errors,and the mechanism of CAN bus error triggeringare discussed.The can bus errors are discussed based on Verilog-HDL code,and are researched with ISIM simulation,and the reasons of CAN error are discussed in this paper.Keywords:CAN Bus,CAN controller,field programmable gate array,intellectual property core,ISIM simulation47基于Verilog语言的CAN总线错误分析及仿真位错误的产生原因有多种,例如CAN总线受到干扰导致相应位发生翻转,这种情况下产生的位错误是暂时性错误,当干扰消除时,位错误即消失,不会影响总线正常通信。或者由于CAN驱动器的故障,导致CAN总线电平异常,这种情况下产生的位错误往往是永久性的错误5。位错误的触发机制可以用Verilog代码6表示如下:assign bit_err=(tx_state|error_frame|overload_frame|rx_ack)&sample_point&(tx!=sampled_bit);代码中,tx_state表示发送状态,error_frame表示错误帧状态,overload_frame表示过载帧状态,rx_ack表示接收应答位状态,tx表示发送的数据位,sampled_bit表示采样到的数据位。位错误的触发机制就是,当在发送状态或错误帧状态或过载帧状态时采样到的数据位和发送的数据位不一致,就会触发位错误。2.2填充错误(stuff error)CAN总线协议规定,发送单元在发送数据时,为了防止突发错误,在帧起始(SOF)到循环冗余校验(CRC)段间的数据,相同的电平如果持续5位,在下一位(第6位)需要插入与前5位反型的电平,该插入位即为填充位。位填充机制如图2所示:图2位填充机制示意图在需要位填充的段内,连续检测到6位相同的电平即为检测到填充错误。填充错误的触发原因与位错误类似,总线干扰以及驱动器故障等也可以触发填充错误。填充错误的触发机制可以用CAN控制器软核(CAN-IP)内verilog代码表示如下:assign stuff_err=sample_point&bit_stuff_cnt_en&bit_de_stuff&(sampled_bit=sampled_bit_q);在采样到总线上5个数据位电平相同时,第6位的电平(sampled_bit_q)如 果 和 前5位 相 同(sampled_bit),sam-pled_bit=sampled_bit_q,就会触发填充错误。2.3 CRC错误(CRC error)CAN数据帧在数据段后面是CRC段,CRC段包括15位的CRC值以及1位的CRC界定符,CRC的计算范围包括帧起始、仲裁段、控制段、数据段,如图3所示,当接收到的CRC值与计算出来的CRC值不一致时,就会报CRC错误:图3CRC段示意图数据在传输过程中,帧起始、仲裁段、控制段、数据段或CRC段其中之一只要出现错误,就会导致CRC错误。2.4格式错误(format error)在正常的CAN数据帧中,固定格式包括1位CRC界定符,1位ACK(应答)界定符,以及7位帧尾,均为隐性电平(1),如果它们之间某一位数据发生了翻转,就会导致格式错误。格式错误的触发机制可以用CAN-IP核内verilog代码表示如下:assign form_err=sample_point&(bit_de_stuff)&rx_crc_lim&(sampled_bit)|(rx_ack_lim&(sampled_bit)|(eof_cnt3d6)&rx_eof&(sam-pled_bit)&(transmitter)|(&rx_eof&(sampled_bit)&trans-mitter);代 码 中rx_crc_lim表 示CRC界 定 符,rx_ack_lim表 示ACK界定符,rx_eof表示帧尾位,可见,当采样到的数据位和固定格式位不一致时就会报格式错误。2.5 ACK错误(ACK error)正常情况下ACK位应为显性电平(0),用来指示发送的数据被正确接收了。如果检测到ACK位为1,就会导致ACK错误。CAN帧ACK段如图4所示:图4ACK段示意图ACK错误的触发机制可以用CAN-IP核内verilog代码表示如下:assignack_err=rx_ack&sample_point&sampled_bit&tx_state&(self_test_mode);ACK错误的触发机制为,在非自检模式下,在发送状态中,检测到总线上接收到的ACK位为1,正确情况应该为0。3CAN总线错误的ISIM仿真及分析为了对CAN总线错误进行仿真分析,需要在FPGA开发环境ISE14.7中对仿真模块及平台使用Verilog语言7进行建模。仿真模型以CAN-IP核为基础8-9,CAN-IP核是完全实现了CAN控 制 器SJA1000功 能 的 软 核 模 块,可 以 把 它 当 成SJA1000器件来使用10。仿真平台结构框图如图5所示:图5CAN-IP仿真平台结构框图如图5所示,UUT(Unit Under Test,待测单元)中例化了4个大模块:时钟复位模块、U0、U1、发送接收控制模块。时钟复位模块为整个系统提供时钟及复位信号,U0及U1模块用来对CAN-IP核进行初始化及控制,U0及U1两个模块产生的发送信号TX在UUT中进行相与操作,结果送入2个CAN-IP核作为接收信号RX输入,以此来模拟CAN总线的实际收发情况。48工业控制计算机2023年第36卷第2期发送接收控制模块用来整合控制UO及U1的发送,接收信号。为了应用CAN-IP核并成功启动仿真,需要对CAN-IP核内的寄存器进行配置,CAN初始化模块主要完成了这一功能。在CAN初始化模块内部,仿照对SJA1000器件的配置流程,对CAN-IP核内部的各个寄存器进行配置,配置流程6如图6所示:图6CAN-IP核配置流程配置过程为,首先配置IP核到复位模式,在复位模式下,依次配置发送端口、接收端口、Pelican工作模式、帧信息、采样位置、位宽度(此处为4 s),波特率,然后配置待发送数据,并使能接收中断,配置验收滤波器的模式,最后配置IP核到工作模式,开启正常工作10。配置好CAN-IP核,在仿真平台TESTBENCH中设置好仿真激励后,运行ISIM仿真器进行仿真11-12。下面分别对填充错误,格式错误的仿真结果进行分析。3.1填充错误仿真为了触发位填充错误,在CAN-IP内部的CAN_BSP(位流处理模块)模块中更改相应的代码:tx_next=(bit_de_stuff_tx)&tx_bit)|(bit_de_stuff_tx&(tx_q);tx_q表示第6位待发送的数据位,正常应该取反tx_q,在这里设置为不取反,以模拟填充位的翻转。运行ISIM仿真,结果如图7所示。如图7所示,IN_OTXD为总线上的发送信号TX波形,图7b中,由于CANIP中设置

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开