General CRC Generator HDL Optimized
页面进行中。 |
生成 CRC 码位并将其添加到输入数据中。
类型: HDLCRCGenerator
图书馆中的路径:
|
说明
程序块 General CRC Generator HDL Optimized 与程序块General CRC Generator 相似,用于生成循环冗余校验(CRC)位并将其附加到输入数据中。 General CRC Generator HDL Optimized 数据块针对 HDL 代码生成进行了优化。该模块不是一次性处理整个帧,而是接收并返回数据采样流和相应的控制信号。控制信号指示采样的有效性和帧边界。为实现更高的吞吐量,该模块可接收长度不超过 CRC 的矢量数据,并采用并行架构。
端口
输入
#
数据输入
—
输入数据
标量
Details
输入数据:
-
scalar "是表示位数的整数。在这种情况下,程序块支持无符号整数(
UInt8
、UInt16`或`UInt32
)或`fixdt(0,N,0)`数据类型。 -
vector
是二进制值向量。在这种情况下,程序块支持Float64
或Bool
数据类型。
数据宽度必须小于或等于 CRC 长度,CRC 长度必须是数据宽度的倍数。对于 CRC-CCITT/CRC-16,有效的数据宽度值为`16`、8
、4
、2`和`1
。
示例: 向量输入`UInt8`为`[0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1],相当于`19
。
数据类型 |
Float64`、UInt8`、UInt16`、UInt32`、Bool`、Fixed`。 |
复数支持 |
无 |
#
startIn
—
输入帧开始指示符
尺度
Details
输入帧开始指示符。
数据类型 |
|
复数支持 |
无 |
#
endIn
—
输入框结束指示符
标量
Details
输入帧结束的指示符。
数据类型 |
布尔 |
复数支持 |
无 |
#
有效期
—
有效输入数据的指示符
标量
Details
有效输入数据的指示符。
这是一个控制信号,用于指示 dataIn 端口上的数据是否有效。
数据类型 |
|
复数支持 |
无 |
输出
#
数据输出
—
输出数据
scalar
| vector
Details
附加校验和的输出数据。输出数据的类型和维度与输入数据相同。
数据类型 |
Float64、UInt8、UInt16、UInt32、Bool、Fixed。 |
复数支持 |
无 |
#
启动输出
—
输出帧开始指示器
scalar
Details
表示输出帧的起始位置。
数据类型 |
|
复数支持 |
无 |
#
结束输出
—
输出帧结束指示符
标量
Details
输出帧结束指示符。
数据类型 |
|
复数支持 |
无 |
#
有效输出
—
有效输出数据的指示符
标量
Details
有效输出数据的指示符。
这是一个控制信号,用于指示 dataOut 端口上的数据是否有效。
数据类型 |
|
复数支持 |
无 |
参数
参数
#
Polynomial —
生成多项式
Array of real numbers
Details
定义生成多项式为二元向量,其系数按阶数降序排列。向量的长度等于多项式的阶数加 1
。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# Initial state — 移位寄存器的初始状态
Details
以二进制标量或向量的形式指定内部移位寄存器的初始状态。可以使用单精度或双精度数字,但必须等于 "0.0 "或 "1.0"。对于向量输入,初始状态长度必须等于生成多项式的阶数。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
Direct method —
采用直接算法计算校验和
Logical
Details
选择该复选框可使用直接算法计算 CRC 校验和。如果不选中,设备将使用间接算法计算 CRC 校验和。
有关直接和间接算法的详细信息,请参阅直接和间接 CRC 算法。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
#
Reflect input —
输入字节序
Logical
Details
指定输入字节的顺序:
-
选择该复选框,可使数据块在每个输入字节进入移位寄存器前进行翻转。
-
清除该复选框可使程序块将报文数据原封不动地传送到移位寄存器。
如果选中此复选框,输入数据宽度必须是 `8`的倍数。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
#
Reflect CRC checksum —
校验和字节顺序
Logical
Details
指定校验和字节的顺序:
-
选择此复选框,可使数据块在将每个校验和字节传递到最终 XOR 阶段前翻转该字节。
-
清除该复选框可使数据块将校验和字节原封不动地传递到最终 XOR 阶段。
如果选中此复选框,输入数据宽度必须是 `8`的倍数。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
# Final XOR value — 校验和值
Details
以二进制标量或向量的形式指定校验和。允许使用单精度或双精度数字,但必须等于 0.0
或 1.0
。程序块将 CRC 校验和与该值进行 XOR 运算,然后将其添加到输入数据中。
如果指定向量输入,向量的长度必须等于生成多项式的阶数。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
算法
使用向量或整数输入时,程序块会执行并行 CRC 算法[1] 。
为确保现代通信系统的高吞吐量,数据块采用并行架构实现 CRC 算法。该架构会递归计算 输入位的每个 CRC 校验位。在帧结束时,校验和结果被附加到信息中。对于多项式长度的 , 位的递归校验和并行计算如下:
,
其中
-
- 是 的矩阵 ,它选择当前状态的元素来计算新输入位的多项式;
-
- 是 元素向量,提供与生成多项式相关的新输入比特,并用零填充;
-
- 使用逻辑 AND 来实现程序块;
-
- 逻辑 XOR