当前位置:首页 > 通信技术 > 通信技术
[导读]针对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硬件描述语言与数字逻辑电路设计. 西安电子科技大学出版社
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭