设为首页
联系站长
加入收藏
 您的位置: Pecker's Home >> 文章频道 >> 电子技术 >> 单片机/DSP/嵌入式系统 >> DSP >> 正文
  40位以内任意长度的CRC计算及校验的实现         
40位以内任意长度的CRC计算及校验的实现
[ 作者:尹冬元、梁松海    转贴自:电子工程师    点击数:1373    更新时间:2007-7-28    文章录入:pecker

摘 要:论述了40位以内任意长度的CRC计算及校验在TMS320C5000系列DSP中的实现方法。运用该方法能实现任意信息长度的40位以内任意CRC码的计算及校验,如常见的CRC-3、CRC-12、CRC-16、CRC-24、CRC-32等。该法充分利用了不同CRC码的共性及TMS320C5000的特点,具有代码简洁、运算速度快等特点。同时,该设计思路也可以方便地在其它DSP或单片机中实现。


关键词:循环冗余校验码,数字信号处理器,计算及校验
 

1 引 言

  循环冗余校验码,简称CRC码,是常用的检测错误码,它在数据通信中得到了非常广泛的应用。不同CRC码的生成多项式各不相同,CRC码的比特数也不同,且在有的通信协议中要求将余数寄存器先初始化为全0,另外的则须初始化为全1。因此,在程序设计时必须充分利用CRC码的共性及所用DSP的指令特点。


2 用TMS320C5000实现不同CRC计算的设计思想

  CRC码的计算及校验都用到模2的多项式除法,而多项式除法可以采用带反馈的移位寄存器来实现,因此,用DSP来实现CRC计算的关键是通过DSP来模拟一个移位寄存器(也就是模拟手写多项式除法)。考虑到TMS320C5000系列DSP的累加器A和B均为40位,因此,可以用一个40位累加器A作为移位寄存器,若CRC码不够40位(设为k位),则仅用到A的最高k位,无用位用0填充。在编码中涉及到码的移位和异或操作,这可以通过C5000的SAFA(算术移位)和XOR(异或)两条指令来实现。C5000还提供了特殊指令bitt和xc,前者利用寄存器T,取出一个16位数据中的第(15-T)位,并送入TC(TC是特殊寄存器中的一位);后者是条件执行语句,它先判断所列条件是否满足,再决定是否执行其后的2条单周期指令或1条双周期指令。

步骤如下:

  (1)先将CRC移位寄存器(即余数寄存器)A的每一位有效位均初始化为全0或全1(与协议有关),而无用位清0;

  (2)将CRC移位寄存器中的值左移一位,判断移出的第一位与输入序列的最高位异或之后是否为1;

  (3)若是1,则将A与生成多项式进行异或再跳到步骤2处理下一位,否则,直接跳到步骤2继续处理下一位。在手写多项式除法的过程中我们可以发现,生成多项式即除式一共为k+1位,而余数寄存器A里仅有k位有效位,这可视为余数寄存器的k+1位永远为0,因此在实际异或运算时,生成多项式的最高位即k+1位不必参与运算。流程图如图1所示。

  重复(2)、(3)两步,直到输入信息位全部处理完为止,则A的最高k位为进行多项式除后所得的余数,若余数寄存器先初始化为全0,则此时A的最高k位就是CRC校验码,若余数寄存器先初始化为全1,则须将A取反后最高k位才是CRC码。


3 程序设计思路及设计实例

  为了实现上述设计思想,可在程序中用指针AR2指向输入信息(一个字表示16比特),用AR3指向输入信息字的某一位,用AR4表示够一个字的个数(单位为字),AR5表示不够一个字的比特数,即,若参加计算的信息比特数为161,则AR4=10,AR5=1。

  为了依次取出一个字中的bit15、bit14、...bit0等16位信息位,在程序中用到了一个全局变量bitpos,共占16个字,并将这16个地址的内容依次赋值为0,1,2,......15,而在程序中这些值不能被改变。为了实现循环长度为16的循环寻址,bitpos的地址必须为32字的整数倍,在汇编语言中用下面的语句实现:

;若B=1,则将余数寄存器与生成多项式相异或(即模2减)


   CRC码的校验过程与CRC计算相似,只是参与CRC计算的位须包括信息位及CRC码,若最后余数寄存器的值为全0(当余数寄存器初始化全0时)或某一特定值(当余数寄存器初始化全1时,与CRC码的生成多项式有关),则表示接收正确,否则表示发生错误。


4 结束语

  通过反复测试,证明了上述40位以内的CRC码计算及校验的设计思想正确,能正确实现CRC-3、CRC-12、CRC-16、CRC-24、CRC-32等任意40位以内的CRC计算及校验。所附程序具有应用简单、指令精简、运算速度快等优点。该设计思路也可以很方便地在其它DSP或单片机及PC机中实现。


参考文献

1 孙宗瀛.TMS320C5x DSP原理设计与应用.北京:清华大学出版社,2002

2 戴明桢.TMS320C54x DSP结构、原理及应用.北京:北京航空航天大学出版社,2001

3 曹志刚,钱亚生.现代通信原理.北京:清华大学出版社,1992

分享到:
    免责声明:本文仅代表作者个人观点,与Pecker's Home无关。登载目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字和图片(或其他媒体形式内容)的真实性、完整性、及时性本站不作任何保证或承诺。请读者仅作参考,并请自行核实相关内容。如果有侵犯版权事宜,请通知master@peckerhome.com,我们将在第一时间删除该信息。
  • 上一篇文章: 没有了

  • 下一篇文章: 微弱振动信号自适应采集系统设计
  • 发表评论】【告诉好友】【打印此文】【关闭窗口
     最新5篇热点文章
    处理器架构消亡史[00159]
    通信恩仇,5G江湖[00306]
    官方辟谣扫码支付引爆加油…[00545]
    谷歌搭售是不是作恶?可以…[00302]
    你对Zigbee无线连接了解多…[00532]
     
     最新5篇推荐文章
    Pecker之家开通用于电子元…[02-13]
    印刷电路板图设计经验[04-04]
    基于电力线通信的家庭网络…[03-23]
    利用USB控制器设计的Windo…[01-20]
    基于ARM920T微处理器的IDE…[01-20]
     
     相 关 文 章
    德州仪器的新一代超低功耗…[00295]
    芯原推出ZSP G4 DSP架构和…[00317]
    德州仪器在 KeyStone 多核…[00332]
    Altera率先在28-nm FPGA上…[00349]
    德州仪器推出最新多核认知…[00302]

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论