0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于TMS320C5000处理器实现CRC计算的设计实例

电子设计 来源:信息化研究 作者:尹冬元,梁松海 2021-06-15 15:40 次阅读

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。

pYYBAGDIW2eARHxuAACm-TiEJcQ543.png

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

pYYBAGDIW1CASfzcAAIhwmx2aXg248.png

poYBAGDIW16AKxKEAAG73cVCnbY791.png

pYYBAGDIW0eAckVLAAEBxRg2QwM927.png

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机中实现。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18202

    浏览量

    221926
  • dsp
    dsp
    +关注

    关注

    544

    文章

    7669

    浏览量

    344228
  • 寄存器
    +关注

    关注

    30

    文章

    5020

    浏览量

    117617
收藏 人收藏

    评论

    相关推荐

    S3C2410处理器

    S3C2410处理器通过GPD端口连接LED1-4四个灯,试着画出其电路连接图,并变成实现其逐一点亮功能。
    发表于 11-23 21:50

    tms320c5000

    大佬们,有没有tms320c55x系列的学习资料啊
    发表于 03-22 16:46

    请问TMS320F28069处理器的DMA功能支不支持SCI串口通讯?

    目前在用TMS32F28069做伺服驱动,要接收编码反馈信息,速度要求较高想用DMA功能来辅助SCI串口接收数据,查了下手册不太确定是否可以支持SCI,想请问一下TI工程师或各大网友大神,
    发表于 09-19 09:42

    Raw-OS移植到TMS320F28335处理器的感想

    Clipped from:中国RTOS联盟(147640063)群共享TMS320F28335 为TI公司推出的C28x+FPU架构的32位处理器,主频150MHZ,内置68KBRAM,512KB
    发表于 02-15 06:36

    基于TMS320F2812处理器的智能接口板设计

    中航工业计算技术研究所 周宇晨引言随着电子技术的发展,数字电路的集成度和性能有了非常大的提高,因此可以在单板上实现复杂的电路功能,本设计就是在TI公司高集成度的TMS320F2812处理器
    发表于 05-22 05:01

    TMS320C6678处理器的VLFFT该怎么演示?

    本白皮书探讨了TMS320C6678处理器的VLFFT演示。通过内置8个固定和浮点DSP内核的TMS320C6678处理器来执行16K-1024K的一维单精度浮点FFT算法样本,检测其
    发表于 09-29 10:05

    TMS320VC5402处理器上怎么移植μC/OS-II操作系统?

    TMS320VC5402处理器片内共有8条总线以及CPU、片内存储和片外电路等硬件。该处理器具有低功耗、速度快,高度并行化等特点。
    发表于 10-29 06:41

    如何用TI DSP TMS320C6678处理器进行TI-IPC多核通信案例

    如何用TMS320C6678处理器进行TI-IPC多核通信案例本文基于创龙科技TL6678-EasyEVM评估板进行演示。​图1TL6678-EasyEVM评估板TL6678-EasyEVM是一款
    发表于 01-25 19:49

    【经验分享】TMS320C6678处理器如何进行OpenMP多核通信案例

    本文主要介绍TMS320C6678处理器开发中比较常用的多核通信方式:OpenMP,主要基于创龙科技TL6678-EasyEVM评估板进行演示。​图1 TL6678-EasyEVM评估板
    发表于 01-28 20:14

    TMS320C6678处理器的性能怎么样?

    TMS320C6678处理器的性能怎么样?怎么探讨TMS320C6678处理器的VLFFT演示?
    发表于 04-19 10:53

    DSPtms320c6748处理器通过emifa连接ad7606的读取采样后的数据怎么储存

    DSPtms320c6748处理器通过emifa连接ad7606的读取采样后的数据怎么储存
    发表于 07-02 21:08

    RK3399处理器与AR9201处理器有哪些不同之处呢

    RK3399处理器与AR9201处理器有哪些不同之处呢?hi3559A处理器与RV1126处理器有哪些不同之处呢?
    发表于 02-21 07:29

    Arm Cortex-R82处理器技术参考手册

    ®-R82处理器的专用调试组件。 DebugBlock被实例化为单独的顶级单元,以允许您在始终在线的POWER域中实现调试组件。 尽管DebugBlock作为一个单独的单元进行了实例
    发表于 08-17 08:02

    40位以内任意长度的CRC计算及校验的实现

    论述了40位以内任意长度的CRC计算及校验在TMS320C5000系列DSP中的实现方法。运用该方法能实现任意信息长度的40位以内任意
    发表于 05-05 20:31 1832次阅读
    40位以内任意长度的<b class='flag-5'>CRC</b><b class='flag-5'>计算</b>及校验的<b class='flag-5'>实现</b>

    TMS320C6000和TMS320C5000设备中使用MCBSP的特点详细概述

    在TI的STMS320C6000和TMS320C5000数字信号处理器(DSP)上实现的多通道缓冲串行端口(MCBSP)是非常相似的。该文件提供了在C6000和C
    发表于 04-27 09:03 9次下载