当前位置:首页 > 通信技术 > 通信技术
[导读]针对CAN协议中提出的串行CRC检验原理,给出其硬件实现方法及具体实现时应需注意的技术问题,给出了RTL级的VHDL代码。

摘要  针对CAN协议中提出的串行CRC检验原理,给出其硬件实现方法及具体实现时应需注意的技术问题,给出了RTL级的VHDL代码。为了提高CRC编码的生成速度和CRC检验的效率,介绍了CRC检验的并行原理,并针对CAN协议中CRC编码的生成多项式推导出了8位并行CRC编码的逻辑关系式。最后对串行和并行两种实现方式进行了性能对比,并给出了为满足CAN协议而进行CRC编码时应注意的问题。
关键词 CAN协议;CRC检验;串行;并行
   
引言
     通信系统总线在传输信息时,不可避免要受到各种干扰的影响,使得传输信息出错。CAN协议中,为了保证帧传输的可靠性和较高的检错效率,其采用了以下几种检错方式:位错误、填充错误、CRC错误、格式错误及应答错误检测。通过以上检错方式,它对于受损报文检测不到其受损的概率为:报文受损率*4.7*10-11,因而CAN总线极高的检错率使得它目前被广泛应用到工业控制、通信、汽车甚至军事等多个领域。CRC检验作为CAN协议中一种重要的且行之有效的检错方式,它的生成多项式可以检验7级,具有编码简单且误判率低的优点。
 
2  CRC检验原理
     CAN协议中规定,需要对帧起始、仲裁场、控制场和数据场(若存在的话)组成的未经填充的位流进行CRC编码。具体实现方法为:被除多项式的系数由帧起始、仲裁场、控制场、数据场(若存在的话)及15位(最低系数)0组成的未经填充的位流给定,而生成多项式为X15+X14+X10+X8+X7+X4+X3+1,被除多项式被生成多项式除(系数按模-2计算),余数即为将要发至总线的CRC序列。发送节点和接收接点的CAN控制器均采用相同的方法生成CRC检验码,并与发送节点送出的CRC检验码进行比较,以判断报文是否出错,若出错,CAN控制器会依据总线仲裁原则及受损报文优先发送原则对已损坏报文自动进行重发。
 
3  CRC检验码电路的硬件实现
      CRC检验码硬件上的实现,可以采用串行和并行两种实现方式。在串行方式中,需编码的位流按位逐位输入,位流输入完成后生成检验码,检验码紧随需检验的位流发出或接收到。并行方式中需检验的位流每k位输入到检验码生成电路中,因而检验码的生成效率大大高于串行方式。以下针对CAN 协议中CRC检验的生成多项式进行阐述。
3.1 CRC检验码的串行实现
       CAN协议中CRC码为15位,需要15位的移位寄存器来实现,移位寄存器c0c1c2……c12c13c14在CRC检验码生成过程中寄存CRC检验码的中间值,计算完成后其值即为最终的CRC检验码。设c(t)=[c0c1c2……c12c13c14]为t时刻移位寄存器的状态,复位时初始状态时c(0)=[ 000……000]。移位寄存器的状态转换方程为:
c(t+1)= [c0c1c2……c12c13]*[0|I14]⊕(c14⊕dst)*g
                     = [c0c1c2……c12c13]*[0|I14]⊕c14*g⊕dst*g
                     = [c0c1c2……c12c13 c14]*A⊕dst*g
                    = c(t) *A⊕dst*g
      上式中,I14为14阶单位阵,dst为串行输入数据,⊕表示异或,g=[g0g1……g13g14]为生成多项式的系数行矩阵,而A为n阶方阵
      依据以上的CRC检验码的状态转换方程实现的RTL级的VHDL代码如下:
c<=ds xor c(14);
if(rst='0')then
c<=(others=>'0');
elsif(rising_edge(clk))then
  if(en_transmit='0')then
    c<=(others=>'0');
elsif(en_crc_code='1' and f_ds='1' and f_ds_sync='0')then
if(c ='1')then
  c(14 downto 1)<=c(13 downto 0) xor "10001011001100";
  c(0)<='1';
else
c(14 downto 1)<=c(13 downto 0);
  c(0)<='0';
end if;
end if;
end if;
      在以上代码中,rst 为外部复位信号,en_transmit 为帧发送使能信号,en_crc_code 为CRC代码编码使能信号,ds为输入的串行数据,f_ds与ds同时有效,f_ds='1' and f_ds_sync='0'代表f_ds的上升沿,c为15位移位寄存器,用于寄存CRC检验码的中间结果并输出其最终结果。
       需注意的是:信号en_crc_code在发送支路中和接收支路中应包含需编码位流的填充和解除填充信息(即填充位不进行编码)。
 
3.2 CRC检验码的并行实现
       CRC检验码的并行实现方式,CAN协议中未给出,但并行实现方式具有很高的检验码生成效率,很有必要采用,以下给出其实现方法。其状态转移方程可表示为:
 
式中,c为15位移位寄存器,复位时各位均为0,在检验码生成过程中,寄存CRC检验码的中间值,其值每输入k位数据变化一次,编码完成后输出最终的检验码,c(t)和c(t+k)分别为c在t时刻及t+k时刻的状态,实际应用中c(t+k)表示紧随c(t)状态的并行k位数据输入后的状态,k 为并行宽度,此处取8,dp为k位并行输入数据,A即为3.1节所述方阵,
,其中的G亦为3.1节所述的生成多项式的系数行矩阵。矩阵运算过程中,  需注意的是:矩阵乘积的结果需进行模2处理,即奇数用1代替,偶数以0代替。由此得到基于CAN协议中生成多项式的8位并行CRC检验码逻辑表,如表1所示。寄存器每位的表示如c6= c9⊕c13⊕dp2⊕dp6。在实际编码中,需添加一些控制信号,如异步复位信号、编码同步清零信号、编码同步使能信号等。
表1  8位并行CRC检验码逻辑表
c(t+k)
c(t)、dp
c0
c7 c8 c9 c10 c11 c13 c14 dp 0 dp1 dp2 dp3 dp4 dp6 dp7
c1
c8 c9 c10 c11 c12 c14 dp1 dp2 dp3 dp4 dp5 dp7
c2
c9 c10 c11 c12 c13 dp2 dp3 dp4 dp5 dp6
c3
c7 c8 c9 c12 dp0 dp1 dp2 dp4
c4
c7 c11 c14 dp4 dp7 dp10
c5
c8 c12 dp1 dp5
c6
c9 c13 dp2 dp6
c7
c7 c8 c9 c11 c13 dp0 dp1 dp2 dp4 dp5
c8
c0 c7 c11 c12 c13 dp0 dp4 dp5 dp6
c9
c1 c8 c12 c13 c14 dp1 dp5 dp6 dp7
c10
c2 c7 c8 c10 c11 dp0 dp1 dp3 dp4
c11
c3 c8 c9 c11 c12 dp1 dp2 dp4 dp5
c12
c4 c9 c10 c12 c13 dp6 dp2 dp3 dp5
c13
c5 c10 c11 c13 c14 dp3 dp4 dp6 dp7
c14
c6 c7 c8 c9 c10 c12 c13 dp0 dp1 dp2 dp3 dp5 dp7
3.3 性能对比
       用VHDL语言对两种CRC检验码生成方法实现编码后,利用Model Technology公司的仿真软件ModelSim SE PLUS 5.6a进行了功能仿真以验证原理及编码的正确性。又利用Exemplar Logic公司的综合工具LeonardoSpectrum对两种代码分别进行了综合,综合过程中FPGA芯片选取Xinlinx公司的 2s200pq208,速度等级为5级,优化采取自动优化方式,结果如表2所示:
表2  串行和并行CRC编码性能对比
 
Area (LUTs)
Delay (ns)
DFFs
Clock (MHz)
并行方式
35
8
15
119.6
串行方式
8
6
15
160.9
      由上表可以计算出,两种实现方式的速度比为119.6*k/160.9=119.6*8/160.9=5.95,消耗硬件资源比为4.375,时间延迟比为1.33,因而二者性能有很大的差异。
 
结论
      由以上讨论可以看出:采用串行实现方法、原理和电路结构简单,消耗硬件资源少,可以工作在较高的时钟频率下;采用并行实现方法、原理和实现电路复杂,消耗硬件资源多,工作频率虽然低于串行方式,但生成CRC检验码的速度(指效率)大大高于串行方式。因而,串行实现方法适合于硬件资源紧缺,检验码生成速度要求不高的场合;而并行实现方法适用于硬件资源丰富,检验码生成速度要求较高的场合。
       在实际设计中,采用哪一种CRC检验方式,还需要考虑收发帧的需填充位流的结构。为了满足CAN协议的规定要求(即需检验帧起始位,仲裁场、控制场和数据场(若存在的话)组成的未经填充的位流,位流总长度为整数字节多一位),发送支路采用串行方式,可完全按照协议要求生成CRC检验码,接收支路由于多了 15位CRC检验码(外加帧起始位恰好为2个字节),可采用8位并行方式实现CRC检验。
 
参考文献:
1  BOSCH CAN Specification version 2.0
2  贾丽媛,戴光明. ATM协议处理中CRC的并行实现. 湖南城市学院学报,(自然科学版)
    第13卷,第4期 2004年12月:68~69
3 侯伯亨, 顾新 .VHDL硬件描述语言与数字逻辑电路设计. 西安电子科技大学出版社
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在微型计算机中,所有信息(如数值、符号和图像等)均以二进制形式存储、传输和计算。由于二进制数冗长、不方便读写和辨认,因此,现代微型计算机也支持编程时使用书写长度更短的十六进制数和十进制数,同时也为各种非数值信息提供了相应...

关键字: 微型计算机 数制 编码

巴林麦纳麦2023年1月12日 /美通社/ -- 巴林花旗银行庆祝其全球技术中心成立一周年,该中心有望在十年内雇用1000名巴林编码员。目前,该中心由110名巴林员工组成,其中91名巴林员工已经开始在花旗银行Seef办事...

关键字: 编码 TI AI ST

上海2022年11月16日 /美通社/ -- 一个多世纪以来,岗位一直是分配工作的主导模式,它定义了工作如何完成,由谁完成,如何管理和领导,如何从招聘、薪酬、职业发展到绩效管理等各种人力资源实践来支持员工。然而,根据德勤...

关键字: 人工智能 数字化 模型 编码

浪潮推出“四海”云游戏加速方案。其基于ARM服务器NF5280R6和VPU(视频处理单元)M10A,在1080P全高清分辨率下,能够同时运行60多路游戏,帮助云游戏运营商在提升游戏画面编码效果的同时,降低总体拥有成本和运...

关键字: 云游戏 APP ARM 编码

巍巍嵩岳,铁甲轰鸣。6月10日,2016中国汽车拉力锦标赛(英文简称CRC)首站在千年少林旁的嵩皇体育小镇揭开战幕,来自全国各地的40多支车队133台战车齐聚于此、一决高下。值得关注的是,在最接近量产车的S2组,初次参赛...

关键字: CRC 战车 逸动XT

(全球TMT2022年9月23日讯)近日,浪潮城市信息模型(CIM)基础平台V1.0正式发布。该产品综合应用数字孪生、物联网、5G、区块链、大数据等技术,实现城市治理各环节全程管控、智能协同,强化城市全生命周期管理,助...

关键字: 模型 编码 大数据 区块链

(全球TMT2022年8月30日讯)近日,浪潮M6服务器的带外管理模块固件BMC获得了由中国网络安全审查技术与认证中心发布的IT产品信息安全认证EAL4证书,这表明浪潮M6系列服务器在产品及信息安全保障方面均获得顶级认...

关键字: 信息安全 网络安全 ASSURANCE CRC

加速小分子新药的早期研发进程 上海2022年8月8日 /美通社/ -- 保诺-桑迪亚,一家由安宏资本投资的、业内领先的药物发现、开发和商业服务CRDMO公司,和小分子药物研发DEL技术先驱X-Chem公司共同...

关键字: DNA 编码 DM BSP

摘要:传统的备件仓储管理模式存在备件到货后备件计划员未及时领用、备件实物查找效率低下、备件库存信息更新不及时等问题,为此研发了一个备件仓储管理辅助系统。该系统充分利用了互联网技术,提出了"互联网+"仓储管理模式,在备件到...

关键字: 仓储管理 微信 编码

首个中国科技公司代表 国际电信联盟任命阿里云叶琰为编码组副主席

关键字: 阿里云 编码 视频
关闭
关闭