Engee 文档

通用 CRC 综合检测器

根据生成多项式的码元帧误差检测器。

类型: GeneralCRCSyndromeDetector

图书馆中的路径:

/Communication Systems/Error Detection And Correction/CRC/General CRC Syndrome Detector

说明

通用 CRC 综合检测器*程序块为接收到的编解码帧计算循环冗余校验和(CRC)。为了正确检测通信信道中的错误,有必要将*通用 CRC 综合检测器*模块的参数设置与配对的*通用 CRC 发生器*模块进行协调。

端口

输入

# IN_1 — 接收到的编码
二进制列向量

Details

以二进制列向量形式给出生成的编解码。

数据类型

Float64 | Boolean.

复数支持

输出

# OUT_1 — 输出帧
二进制列向量

Details

以二进制列向量形式返回的输出帧,继承了输入信号的数据类型。输出帧包含已去除校验和的接收编码。

输出帧的长度为 位,其中 是接收到的编解码的大小, 是帧中校验和的数量, 是生成多项式的阶数。

数据类型

Float64`。

复数支持

Float64 | Boolean.

# 错误 — 校验和错误
二进制矢量列

Details

以二进制列向量形式返回的校验和错误信号,继承了输入信号的数据类型。 Err 的长度等于 Checksums per frame 的值。对于每次校验和计算,Err 中`0`元素的值表示无校验和错误,Err 中`1`元素的值表示有校验和错误。

数据类型

Float64|Boolean.

复数支持

参数

参数

# 发生器多项式 — 生成多项式
String

Details

CRC 算法的生成多项式,以下列方式之一指定:

  • 多项式符号向量。例如:

  • 二进制字符串向量,按幂次降序表示生成多项式的系数。该向量的长度为 ( ),其中 是生成多项式的阶数。例如`[1 1 0 1 1]` 表示多项式

  • 整数字符串向量,包含多项式中按降序排列的非零项的指数 。例如`[3 2 0 0]` 表示多项式

默认使用 CRC-16-CCITT 生成多项式。

下表列出了一些常用的生成多项式。

CRC 算法名称

生成多项式 CRC-31

CRC-32

z^32 + z^26 + z^23 + z^22 + z^16 + z^12 + z^11 + z^10 + z^8 + z^7 + z^5 + z^4 + z^2 + z + 1

CRC-24

z^24 + z^23 + z^14 + z^12 + z^8 + 1.

CRC-16

z^16 + z^15 + z^2 + 1

CRC-16-CCITT

z^16 + z^12 + z^5 + 1

反向 CRC-16

z^16 + z^14 + z + 1

CRC-8

z^8 + z^7 + z^6 + z^4 + z^2 + 1

CRC-4

z^4 + z^3 + z^2 + z + 1

示例:z^7 + z^2 + 1'[1 0 0 0 0 0 0 1 0 1 0 1][7 2 0 0] 表示同一个多项式,

默认值

z^16 + z^12 + z^5 + 1

程序使用名称

GeneratorPolynomial

可调谐

可计算

# 初始状态 — 内部移位寄存器的初始状态

Details

内部移位寄存器的初始状态,指定为二进制标量或二进制向量字符串,长度等于生成多项式的阶数。

标量值将扩展为长度等于生成多项式阶数的字符串矢量。

默认值

0

程序使用名称

InitialStates

可调谐

可计算

# 直接法 — 采用直接算法计算校验和
Logical

Details

选择该复选框可使用直接算法计算 CRC 校验和。如果不选中,设备将使用间接算法计算 CRC 校验和。

默认值

false (关掉)

程序使用名称

DirectMethod

可调谐

可计算

# 反射输入字节 — 打开输入字节显示
Logical

Details

选择该复选框可在将数据输入移位寄存器前逐个字节翻转输入数据。

  • 如果选中*反映输入字节*复选框,则输入帧长度除以*每帧校验和*值必须是`8`的整数倍。

  • 如果未选中*反映输入字节*参数,程序块不会翻转输入数据。

默认值

false (关掉)

程序使用名称

ReflectInputBytes

可调谐

可计算

# 在最终 XOR 之前反射校验和 — 启用显示最后一次 XOR 操作前的校验和
Logical

Details

选择该复选框可在输入数据完全通过移位寄存器后,围绕其中心翻转 CRC 校验和。

  • 如果取消选中 在最终 XOR 之前反映校验和,则程序块不会翻转 CRC 校验和。

默认值

false (关掉)

程序使用名称

ReflectChecksums

可调谐

可计算

# 最终 XOR — 最后一次 XOR 运算

Details

最后一次 XOR 运算指定为二进制标量或二进制字符串向量,长度等于生成多项式的阶数。

在将 CRC 添加到输入数据之前,会使用 Final XOR 参数的值作为 CRC 校验和来执行 XOR 操作。标量值将扩展为长度等于生成多项式阶数的字符串向量。

  • Final XOR 参数的 0 值等同于无 XOR 操作。

默认值

0

程序使用名称

FinalXOR

可调谐

可计算

# 每帧校验和 — 为每个帧计算的校验和数
Int64 integer

Details

为每个帧计算的校验和的个数,以正整数表示。

默认值

1

程序使用名称

ChecksumsPerFrame

可调谐

可计算

算法

直接和间接 CRC 算法

通用 CRC 综合检测器*支持使用间接和直接 CRC 转换算法生成 CRC 校验和。

间接 CRC 算法

间接 CRC 转换算法采用与多项式 相对应的二进制数据向量,并添加与多项式 相对应的 位校验和。

输入向量和校验和的级联对应于多项式 ,因为乘以 相当于将输入向量 向左移动几个比特。算法选择校验和 ,使 是一个度数为 的预定多项式 的倍数,该多项式称为_生成多项式_。

算法将 除以 ,并将校验和设置为与余数对应的二进制向量。也就是说,如果 ,其中 是一个度数小于 的多项式,那么校验和就是与 对应的二进制向量。如有必要,算法会在校验和中添加零,使其长度为

CRC 生成函数实现了 CRC 算法的传输阶段,其功能如下:

  1. 将输入数据向量向左移动 位,并将相应的多项式除以

  2. 设置校验和,使其等于长度为 的二进制向量,相当于步骤 1 的余数。

  3. 将校验和与输入向量相加。结果就是输出向量。如上所述,CRC 检测功能计算整个输入向量的校验和。

CRC 算法使用二进制向量来表示按强度降序排列的二进制多项式。例如,向量 [1 1 0 1 1] 表示多项式

general crc syndrome detector 1

比特从低索引比特到高索引比特进入线性反馈移位寄存器(LFSR)。输入信息比特序列代表信息多项式的系数,按幂级数递减。信息矢量用零填充 ,以清除 LFSR,其中 是生成多项式的阶数。如果左级寄存器 d(1) 的输出为 1,则移位寄存器中的位与生成多项式的系数进行 XOR。当增强信息序列完全通过 LFSR 时,寄存器中就包含了校验和 [d(1) d(2) …​ d(r)]。这是二进制长除法的实现,其中信息序列是除数(分子),多项式是股息(分母)。CRC 校验和是除法运算的余数。

直接 CRC 算法

该框图显示了直接 CRC 算法。

general crc syndrome detector 2 cn

其中,_信息块输入_是 ,_代码字输出_是

直接 CRC 编码的初始阶段发生在三个开关处于 的位置时。算法向编码器输入信息位 。这些比特是输出编码字的第一个 比特。同时,算法将 位发送到线性反馈移位寄存器(LFSR)。当系统将 -th 比特的信息完全传输到 LFSR 后,开关移动到 。在这里,LFSR 包含多项式除法的数学残差。这些比特从 LFSR 中移出,成为码字输出端的剩余比特(校验和)。

CRC 检测器的操作

一般 CRC 综合检测器*块根据指定的生成多项式和帧中的校验和数量,输出接收信息的帧和校验和错误向量。

每个子帧中的校验位都会被去除,因此输出帧的长度为 ,其中 是接收到的编码列的长度, 是帧中校验和的个数, 是生成多项式的阶数。输入帧应是 的统一倍数。

对于内部移位寄存器的特定初始状态:

  • 生成的编码词被分为 C 个大小相等的子帧。

  • 子帧中移除 CRC 校验和,并与接收到的编码词子帧计算出的校验和进行比较。

  • 输出帧由子帧比特与 子帧组合而成,然后作为列向量输出。

  • 校验和错误以长度为 的二进制列向量形式输出。0 "元素的值表示接收到的子帧中没有错误,"1 "元素的值表示接收到的子帧中有错误。

在这里显示的情况下,接收到一个第三位有错误的 16 位码字,使用生成多项式计算校验和 ,初始状态为 0,每帧校验和的数量为 2

general crc syndrome detector 3 cn

输入帧被分为两个大小为 5 的子帧,计算出大小为 3 的校验和并添加到每个子帧中。由于初始状态"[0]"不会影响 CRC 算法的结果,因此没有显示初始状态。传输码字的输出帧为 5 + 3 + 5 + 5 + 3 = 16 比特。

文献

  1. Sklar, Bernard."数字通信:基础与应用》。Englewood Cliffs, N.J.: Prentice-Hall, 1988.

  2. Wicker, Stephen B. "Error Control Systems for Digital Communication and Storage." Upper Saddle River, N.J.: Prentice Hall, 1995.