论文网
English Papers
万事OK网
发表论文
 
 首页 > IT文章 > 程序设计 >
CRC算法与实现

[科技论文网] http://www.scipapers.com    2007-12-02  

    使用字节型算法,前面出现的PPP帧FCS计算和验证过程,可用下面的程序片断实现:

        byte ppp[13] = {0xFF, 0x03, 0xC0, 0x21, 0x04, 0x03, 0x00, 0x07, 0x0D, 0x03, 0x06, 0x00, 0x00};
        u16 result;
        
        // 计算CRC
        result = GetCrc16(ppp, 11);
        
        // 填写FCS,先低后高
        ppp[11] = result & 0xff;
        ppp[12] = (result >> 8) & 0xff;
        
        // 验证FCS
        if(IsCrc16Good(ppp, 13))
        {
            ... ...
        }
    

    该例中数据长度为11,说明CRC计算并不要求数据2字节或4字节对齐。

    至于查找表的生成算法,以及CRC-32等其它CRC的算法,可参考RFC 1661, RFC 3309等文档。需要注意的是,虽然CRC算法的本质是一样的,但不同的协议、标准所规定的初始化、移位次序、验证方法等可能有所差别。


    结语

    CRC是现代通信领域的重要技术之一。掌握CRC的算法与实现方法,在通信系统的设计、通信协议的分析以及软件保护等诸多方面,能发挥很大的作用。如在作者曾经设计的一个多串口数据传输系统中,每串口速率为460kbps,不加校验时误码率大于10-6,加上简单的奇偶校验后性能改善不很明显,利用CRC进行检错重传,误码率降低至10-15以下,满足了实际应用的要求。


    参考文献

    1. Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD 51, RFC 1661, 1994
    2. J. Stone, "Stream Control Transmission Protocol (SCTP) Checksum Change", RFC 3309, 2002
    3. J. Satran, "Internet Protocol Small Computer System Interface (iSCSI) Cyclic Redundancy Check (CRC)/Checksum Considerations", RFC 3385, 2002
    4. International Standardization,"High-level data link control (HDLC) procedures", ISO/IEC 3309, 1992
    5. ITU-T V.41, "Code-independent error-control system", 1989
    6. 郭梯云等,《数据传输(修订本)》, 人民邮电出版社, 1998

        来源:

声明:本文由网友推荐或作者提交,版权归原作者所有,刊登此文仅为传播知识,展示研究成果,提高文章引用率。未经原作者授权,禁止用于任何形式的商业行为。科技论文网倡导尊重知识、尊重劳动、保护原创、知识共享。由于部分论文文章来于网络,文章作者不祥,请相关的原创作者与我们联系,以便加上您的署名。

上一页 1 2 3  
CRC算法与实现
下面没有链接了     Base64算法详解和实现
最新论文
·[程序设计]CRC算法与实现
·[程序设计]Base64算法详解和实现
·[程序设计]查找算法集(数组实现、链表实现)
·[程序设计]质数填表问题的回溯算法
·[程序设计]拓朴排序算法实现
·[程序设计][数值算法]线性方程组的求解---迭代法小结
·[程序设计]完全三叉树解决长方形容器中光源反射点遍历的问题
·[程序设计]动态规划求解最长公共子串问题
·[程序设计]最小生成树kruskal算法
·[程序设计]递归与动态编程
 
 

搜索论文

Google
论文分类

论文网 论文发表网 论文 免费论文网 找论文网 毕业论文 中国论文网 英语论文 百度论文 聘教网 易搜
 免费发布论文    中国论文网 2008版权所有  业务联系:pinjiao@126.com