CRC Calculation for Non-Aligned Packet Lengths in Wide Data Paths
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing error detection techniques, such as cyclic redundancy check (CRC), face challenges when computing CRC values for packets with lengths that are not multiples of the data path width, leading to incorrect CRC values.
Innovation Solution
A method involving a communication device that determines a packet remainder, appends zeros to generate a packet segment of equal data path width, computes a first CRC value, reverses bits, performs modulo 2 multiplication with a reciprocal CRC polynomial, and further reverses bits to obtain the correct CRC value, utilizing a lookup table for pre-computed values.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If standard CRC computation is used for packets with length not multiple of data path width, then computation process is simple, but CRC value becomes incorrect
Solution Approach 1:
The packet is divided into segments of data path width size, with the last segment being the remainder that requires special handling. This segmentation allows the complex remainder processing to be isolated and managed separately from the standard processing of full-width segments.
Solution Approach 2:
Zero bits are appended to the remainder packet segment before CRC computation to make its length equal to the data path width. This preliminary action prepares the data in advance to match the required processing width, enabling correct CRC computation for variable-length packets.
Solution Approach 3:
The remainder packet's length parameter is changed by appending zero bits until it equals the data path width. This parameter transformation allows the remainder to be processed using the same CRC computation logic as full-width segments, ensuring accuracy.
2Reliability
If packet remainder is processed without zero appending, then processing is straightforward, but error detection reliability decreases
Solution Approach 1:
Zero bits are appended to the remainder in advance to prepare it for standard CRC processing. This preliminary padding ensures that the remainder segment meets the minimum width requirement for reliable CRC computation without complicating the overall processing flow.
Solution Approach 2:
By appending zeros to make the remainder equal to data path width, the same CRC computation function can handle both full-width segments and remainder segments uniformly. This universal approach maintains reliability while simplifying the processing logic.
3Measurement precision
If CRC computation handles variable packet lengths directly, then adaptability is good, but computation accuracy deteriorates
Solution Approach 1:
The system adapts to variable packet lengths by performing a preliminary check to identify the remainder segment, then appending appropriate zero bits to make it match the data path width. This preliminary adaptation ensures accurate CRC computation for any packet length.
Solution Approach 2:
The remainder packet's length parameter is dynamically adjusted by appending zero bits to match the data path width. This parameter transformation maintains computation accuracy while preserving adaptability to different packet lengths.
Data Source
AI summary
A communication device may include a cyclic redundancy check (CRC) calculator. The CRC calculator may determine a packet remainder of a packet based on a data path width associated with the communication device; append zeros to the packet remainder to generate an appended packet remainder equal in size to the data path width; compute a first CRC value for the appended packet; reverse bits of the computed first CRC value to obtain a reversed CRC value; multiply the bit reversed CRC value with a value based on a reciprocal CRC polynomial to generate a multiplication product; compute a second CRC value for the generated multiplication product based on the reciprocal CRC polynomial; and reverse bits of the second CRC value to generate a CRC for the packet.


