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

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

3天内不再提示

PCIe核心技术CRC基础知识

SSDFans 来源:ssdfans 作者:ssdfans 2021-02-02 10:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

CRC是CyclicRedundancyCheck的缩写,是一种通过额外冗余bit来检查数据完整性的一种方法。一个比较容易类比的方法就是除法操作。例如我们有数据512,我们将512除以11得到46余数是6。那么我们可以将6作为校验信息一起传递给对方。接收端收到512和校验信息6后,也做相同的除法操作,如果得到的余数与收到的校验信息一致,我们认为收到的数据大概率是完整的。 我们将十进制转换成二进制,重新看一遍过程,原始数据是

512 = 10 0000 0000 11 = 1011 10 0000 0000/1011 = 100 0110 余 110

当传输过程中某一个bit被反转了,例如: 10 0001 0000 (528)

接收端使用收到的数据进行除法操作,将会得到:

10 0001 0000/1011 = 100 1000 余 0

那么这个校验信息就不一样了,所以接收端认为数据或者校验信息在传输过程中可能出现了错误。

为了使得校验比较方便,我们可以将需要校验的信息放在数据的后面。由于除数是11(1011b),余数有可能是0(0000b)到10(1010b),所以我们可以将原数据向左移4位,空出来的空间存放校验信息。左移4位相当于把原数据乘以了24,即十进制的16。 512*16 = 8192 二进制表示:10 0000 0000 0000b 然后用8192/11 = 744 余8 不难算出,只要将8192加上3,这个新的数就可以被11整除。 所以我们可以将3作为这个原数据的校验信息,并放在原数据的后面一起传送,即: 10 0000 0000 0011b

如果接收端接收到的数据无法被11整除,即有余数,那么证明接收到的内容可能在传输过程中被修改了。 例如,仍然是原数据的第六个bit被反转了,即: 10 00010000 0011b (8451)

那么接收端对接收到的内容进行运算会发现: 8451/11 = 768 余 3

并不能被11整除,所以内容可能在传输过程中被修改了。 我们仔细观察会发现,原本的信息是可以被11整除的,多出来的部分是由于某个bit反转而引起的,我们单独将该信息拿出来,可以得到: 1 0000 0000b (256) 如果将这个错误信息除11,我们会发现: 256/11 = 23 余 3 也是余3,是不是发现了什么?没有错,导致最后整个信息不整除的主要原因,是因为反转的bit与其所在的位置所表达的数不能够被11整除。 因为我们在数字世界传送信息的时候大部分都是01表示的二进制代码,所以信息中有任意一个bit被反转,都是2的多少次幂。所以只要除数不是偶数且不是1就可以检测出任意一个bit的错误。例如3(11b),5(101b),7(111b)等等。

由于除法操作可能需要借位,在实际的CRC计算中,采用的是异或(XOR)操作而避免了借位。同样的,如果数据仍然是10 0000 0000b,而‘除数’是1011b,这个‘除数’也被称之为二项式(polynomial),也可以表达成 X3+X+1。 那么我们一样将原数据左移,只不过这次我们只移动3位且补0,因为不使用减法操作,只要异或完的结果少于4位,我们就把那3位数作为‘余数’。具体操作如下: 首先将10 0000 0000b左移3位: 1 0000 0000 0000b,然后用1011b作为‘除数’: 异或操作的真值表: 0 xor 0 = 0 0 xor 1 = 1 1 xor 0 = 1 1 xor 1 = 0 其实就是相同就是0,不一样就是1。下面是长除的整个过程:

1011100101 1011/1000000000000 1011 1100 1011 1110 1011 1010 1011 1000 1011 1100 1011 111 ----------‘余数’

这里可以看到我们得到的‘余数’与实际的除法得到的余数有所不同,那么使用这种方式有什么好处呢? 我们接着往下看。

这个‘余数’被称为CRC3的值,作为校验信息可以直接替换掉数据的最后3位,这3位是原数据左移后,补了0的3个位置。当计算出CRC3的值后,可以直接把111b添加在后面,即: 1 0000 0000 0111b 因为异或的原因,这个数正好可以被1011b通过长除的方法整除,便利性与传统除法来说要好不少,大家可以参考前面标红的那句话。另外就是异或操作在数字设计中也比较容易实现。 接下来我们继续分析一下检错能力,前面提到设计过的二项式可以保证任意一个bit反转都可以被检测出来。如果需要保证连续相邻的两个bit都反转了也可以被检测出来怎样设计呢?那我们可以分析一下连续两个bit都反转的情况,错误信息的规律。例如我们可以用Xn+Xn-1来表示连续两个bit都反转的情况。因为原来的两个bit与11b进行异或都会取反,所以我们可以用Xn+Xn-1来表示11b并处在任意的位置。通过提取公因数得到: Xn+Xn-1 = Xn-1(X+1) 所以我们设计的二项式只要不能被X+1整除,那么连续两个bit的错误信息就无法被该二项式整除。因此类似X2+1 或者X3+1这种二项式就是不错的选择。 Note: 二项式 X2+1就是101b 二项式 X3+1就是1001b

原文标题:PCIe核心技术之CRC系列1 - CRC3

文章出处:【微信公众号:ssdfans】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    0

    文章

    206

    浏览量

    30960
  • PCIe
    +关注

    关注

    16

    文章

    1479

    浏览量

    88917

原文标题:PCIe核心技术之CRC系列1 - CRC3

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    大电流温升试验仪的核心技术拆解:恒流源设计、温控算法与抗干扰策略

    大电流温升试验仪的精准检测能力,核心依赖于三大核心技术的协同作用——恒流源设计、温控算法与抗干扰策略。这三项技术相互支撑、缺一不可,共同决定了试验仪的检测精度、运行稳定性与适应能力,是设备实现高效
    的头像 发表于 03-25 09:28 207次阅读
    大电流温升试验仪的<b class='flag-5'>核心技术</b>拆解:恒流源设计、温控算法与抗干扰策略

    阻燃系列基础知识

    我很荣幸有机会在这里与大家分享我对阻燃系列基础知识的研究。今天,我们将探讨的主题是“阻燃系列基础知识”。在我们日常生活中,火灾事故频发,造成巨大的财产损失和人员伤亡。因此,了解阻燃材料的基础知识对于
    的头像 发表于 02-06 08:07 596次阅读
    阻燃系列<b class='flag-5'>基础知识</b>

    有源晶振的核心技术优势与应用价值‌

    有源晶振的核心技术优势与应用价值‌ 在高速发展的数字时代,精准、稳定的时钟信号是各类电子系统正常运行的“心脏”。有源晶振(Active Crystal Oscillator)作为核心时钟源之一,凭借
    的头像 发表于 01-20 12:47 305次阅读
    有源晶振的<b class='flag-5'>核心技术</b>优势与应用价值‌

    无刷电机驱动器的基础知识

    本文将从技术角度出发,对三相无刷电机的电机驱动器的作用、种类和规格进行介绍。通过本文,您可以学习到电机驱动器选型所需的基础知识
    的头像 发表于 12-10 14:13 6905次阅读
    无刷电机驱动器的<b class='flag-5'>基础知识</b>

    远心镜头核心技术解析与应用

    光线平行于光轴传播,实现高精度、无失真成像。本文将解析远心镜头的核心技术原理,并探讨其在实际应用中的优势与场景。核心技术解析基本原理远心镜头的原理基于光学系统的特
    的头像 发表于 12-08 17:25 906次阅读
    远心镜头<b class='flag-5'>核心技术</b>解析与应用

    RK 平台 Vendor Storage 开发指南:基础知识、流程与实用技巧

    备可靠性校验、掉电恢复等关键特性,是保障设备身份标识、功能授权等核心信息安全的重要组件。本文将从基础知识、开发流程、使用途径三方面,为开发者梳理完整的开发逻辑。 一、核心基础知识:了解
    的头像 发表于 11-22 07:11 1168次阅读
    RK 平台 Vendor Storage 开发指南:<b class='flag-5'>基础知识</b>、流程与实用技巧

    UPS电源的核心技术是什么

    UPS电源的核心技术围绕电力转换与稳定控制展开,涵盖整流、逆变、储能管理、切换控制四大核心模块,其技术原理与分类如下:一、核心模块与技术原理
    的头像 发表于 11-01 08:56 790次阅读
    UPS电源的<b class='flag-5'>核心技术</b>是什么

    便携式高光谱相机的核心技术与应用优势

    光谱相机凭借其独特的核心技术和广泛的应用场景,成为了农业监测、环境评估、材料分析等领域的重要解决方案。本文将深入解析便携式高光谱相机的核心技术和其带来的诸多应用优势,助您更好地理解这一领域的最新发展。 1. 什么
    的头像 发表于 09-05 15:39 895次阅读
    便携式高光谱相机的<b class='flag-5'>核心技术</b>与应用优势

    语音机器人交互系统:核心技术与应用挑战

    : 一、核心技术模块 1. 自动语音识别(ASR):这是系统的“耳朵”。它负责将用户输入的模拟语音信号转换为计算机可处理的文本信息。当前,基于深度学习的端到端模型大幅提升了在复杂环境、多方言及口语化表达下的识别准确率与实时性
    的头像 发表于 09-02 11:08 989次阅读

    Kubernetes安全加固的核心技术

    在生产环境中,Kubernetes集群的安全性直接关系到企业数据安全和业务稳定性。本文将从实战角度,带你掌握K8s安全加固的核心技术
    的头像 发表于 08-18 11:18 951次阅读

    【「DeepSeek 核心技术揭秘」阅读体验】+混合专家

    感谢电子发烧友提供学习Deepseek核心技术这本书的机会。 读完《Deepseek核心技术揭秘》,我深受触动,对人工智能领域有了全新的认识。了解Deepseek-R1 、Deepseek-V3
    发表于 07-22 22:14

    慧荣科技剖析PCIe 5.0 SSD主控芯片的核心技术

    随着AI应用的爆发式增长,存储行业正迎来一场深刻的技术变革。PCIe 5.0 SSD作为新一代高性能存储的代表,其发展和普及备受瞩目。
    的头像 发表于 06-30 15:40 1569次阅读

    工业物联网的核心技术是什么

    工业物联网(IIoT)的核心技术是实现工业设备互联、数据采集、传输、处理与应用的关键,以下从设备连接、数据采集、通信传输、数据处理与分析、安全保障五个维度展开介绍: 设备连接技术 传感器技术
    的头像 发表于 06-12 09:34 1178次阅读

    【书籍评测活动NO.62】一本书读懂 DeepSeek 全家桶核心技术:DeepSeek 核心技术揭秘

    , incentivize.”也就是说,不要去“教”模型,而要“激励”它自主探索。 《DeepSeek核心技术揭秘》是剖析 DeepSeek 技术原理的专业技术书,以全面的内容、深入的技术
    发表于 06-09 14:38

    B10 BMS技术知识初探(上、下)

    商用的最核心技术之一。本课程对BMS技术相关知识, 进行概念级、扫盲级讲解;让所有关注、关心、以及想进入新能源行业发展的朋友们,能够对BMS技术知识有最基本的 认识;也希望通过本课程的
    发表于 05-02 11:04