Engee 文档

General CRC Generator HDL Optimized

页面进行中。

生成 CRC 码位并将其添加到输入数据中。

类型: HDLCRCGenerator

图书馆中的路径:

/Basic/Additional/Discrete/General CRC Generator HDL Optimized

说明

程序块 General CRC Generator HDL Optimized 与程序块General CRC Generator 相似,用于生成循环冗余校验(CRC)位并将其附加到输入数据中。 General CRC Generator HDL Optimized 数据块针对 HDL 代码生成进行了优化。该模块不是一次性处理整个帧,而是接收并返回数据采样流和相应的控制信号。控制信号指示采样的有效性和帧边界。为实现更高的吞吐量,该模块可接收长度不超过 CRC 的矢量数据,并采用并行架构。

端口

输入

# 数据输入 — 输入数据
标量

Details

输入数据:

  • scalar "是表示位数的整数。在这种情况下,程序块支持无符号整数(UInt8UInt16`或`UInt32)或`fixdt(0,N,0)`数据类型。

  • vector 是二进制值向量。在这种情况下,程序块支持 Float64Bool 数据类型。

数据宽度必须小于或等于 CRC 长度,CRC 长度必须是数据宽度的倍数。对于 CRC-CCITT/CRC-16,有效的数据宽度值为`16`、842`和`1

示例: 向量输入`UInt8`为`[0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1],相当于`19

数据类型

Float64`、UInt8`、UInt16`、UInt32`、Bool`、Fixed`。

复数支持

# startIn — 输入帧开始指示符
尺度

Details

输入帧开始指示符。

数据类型

Bool.

复数支持

# endIn — 输入框结束指示符
标量

Details

输入帧结束的指示符。

数据类型

布尔

复数支持

# 有效期 — 有效输入数据的指示符
标量

Details

有效输入数据的指示符。

这是一个控制信号,用于指示 dataIn 端口上的数据是否有效。

数据类型

Bool.

复数支持

输出

# 数据输出 — 输出数据
scalar | vector

Details

附加校验和的输出数据。输出数据的类型和维度与输入数据相同。

数据类型

Float64、UInt8、UInt16、UInt32、Bool、Fixed。

复数支持

# 启动输出 — 输出帧开始指示器
scalar

Details

表示输出帧的起始位置。

数据类型

Bool.

复数支持

# 结束输出 — 输出帧结束指示符
标量

Details

输出帧结束指示符。

数据类型

Bool.

复数支持

# 有效输出 — 有效输出数据的指示符
标量

Details

有效输出数据的指示符。

这是一个控制信号,用于指示 dataOut 端口上的数据是否有效。

数据类型

Bool.

复数支持

参数

参数

# Polynomial — 生成多项式
Array of real numbers

Details

定义生成多项式为二元向量,其系数按阶数降序排列。向量的长度等于多项式的阶数加 1

默认值

[1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]

程序使用名称

Polynomial

可调谐

可计算

# Initial state — 移位寄存器的初始状态

Details

以二进制标量或向量的形式指定内部移位寄存器的初始状态。可以使用单精度或双精度数字,但必须等于 "0.0 "或 "1.0"。对于向量输入,初始状态长度必须等于生成多项式的阶数。

默认值

0

程序使用名称

InitialState

可调谐

可计算

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

Details

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

有关直接和间接算法的详细信息,请参阅直接和间接 CRC 算法

默认值

false (关掉)

程序使用名称

DirectMethod

可调谐

可计算

# Reflect input — 输入字节序
Logical

Details

指定输入字节的顺序:

  • 选择该复选框,可使数据块在每个输入字节进入移位寄存器前进行翻转。

  • 清除该复选框可使程序块将报文数据原封不动地传送到移位寄存器。

如果选中此复选框,输入数据宽度必须是 `8`的倍数。

默认值

false (关掉)

程序使用名称

ReflectInput

可调谐

可计算

# Reflect CRC checksum — 校验和字节顺序
Logical

Details

指定校验和字节的顺序:

  • 选择此复选框,可使数据块在将每个校验和字节传递到最终 XOR 阶段前翻转该字节。

  • 清除该复选框可使数据块将校验和字节原封不动地传递到最终 XOR 阶段。

如果选中此复选框,输入数据宽度必须是 `8`的倍数。

默认值

false (关掉)

程序使用名称

ReflectCRCChecksum

可调谐

可计算

# Final XOR value — 校验和值

Details

以二进制标量或向量的形式指定校验和。允许使用单精度或双精度数字,但必须等于 0.01.0。程序块将 CRC 校验和与该值进行 XOR 运算,然后将其添加到输入数据中。

如果指定向量输入,向量的长度必须等于生成多项式的阶数。

默认值

0

程序使用名称

FinalXORValue

可调谐

可计算

算法

使用向量或整数输入时,程序块会执行并行 CRC 算法[1] 。

为确保现代通信系统的高吞吐量,数据块采用并行架构实现 CRC 算法。该架构会递归计算 输入位的每个 CRC 校验位。在帧结束时,校验和结果被附加到信息中。对于多项式长度的 位的递归校验和并行计算如下:

,

其中

  • - 是 的矩阵 ,它选择当前状态的元素来计算新输入位的多项式;

  • - 是 元素向量,提供与生成多项式相关的新输入比特,并用零填充;

  • - 使用逻辑 AND 来实现程序块;

  • - 逻辑 XOR

general crc generator hdl optimized 1 cn

文学

  1. Campobello, G., G. Patane, and M. Russo."并行 CRC 实现"。IEEE Transactions on Computers 52, no.10 (October 2003):1312-19.https://doi.org/10.1109/TC.2003.1234528.