πŸ”’ CRC Calculator

CRC-8 / CRC-16 / CRC-32 Online Calculator  |  EasyFPGA.blog

πŸ“„ How CRC works & full usage guide β†’

  1. 1Select a preset (e.g. CRC-32 for Ethernet) or enter custom polynomial parameters below.
  2. 2Enter input data β€” choose HEX, ASCII, or Binary tab.
    HEX example: 31 32 33  |  ASCII example: 123456789
  3. 3Click Calculate to get the CRC result in HEX / Decimal / Binary / Verilog literal.
  4. 4Scroll to RTL Generator β†’ set Data Width β†’ click ⚑ Generate RTL + Testbench.
  5. 5Click πŸ“‹ Copy or ⬇ Download to save the .sv files for Vivado / Icarus simulation.
πŸ’‘ The Self-Test section at the bottom compares the calculator and a JavaScript evaluation of the RTL equations against reference CRC values (e.g. CRC-32 of "123456789" = 0xCBF43926).
For a deeper explanation of CRC theory and RTL implementation, see the full guide on EasyFPGA.blog β†’

βš™οΈ Calculate

HEX input: separate with spaces or commas (e.g. 31 32 33 or 0x31,0x32)
CRC Result
0x00000000
HEX
-
Decimal
-
Binary
-
Verilog
-
Click any value to copy

πŸ’» RTL Generator (SystemVerilog)

Free calculation and RTL/testbench generation for personal learning on this website. The EasyFPGA tool and generated code are subject to the usage terms. Except as permitted by law, saving, copying, modifying, redistributing, or incorporating the code into a project or product requires prior written permission.

The generated module is a basic CRC datapath: it consumes one full data word every clock after synchronous reset. It has no enable/valid, frame-start, or partial-word handling. Add and verify those controls for your protocol. For RefIn=true, the lowest byte of data_in is processed first; for RefIn=false, the highest byte is first. A single combinational stage is generated; timing closure depends on width, device, and implementation.

πŸ“š Common CRC Standards

CRC-32
Poly: 0x04C11DB7
Most widely used CRC. Excellent error detection.
βœ… Ethernet, ZIP, PNG, MPEG
CRC-32C
Poly: 0x1EDC6F41
Hardware-optimized variant of CRC-32.
βœ… iSCSI, SCTP, SSD, NVMe
CRC-16/IBM-3740
Poly: 0x1021
Also known as CRC-16/CCITT-FALSE.
Init FFFF Β· RefIn/RefOut false Β· XorOut 0000; not X.25 or XMODEM.
CRC-16/MODBUS
Poly: 0x8005
Industrial communication standard.
βœ… MODBUS, industrial equipment
CRC-16/ARC
Poly: 0x8005
Also known as CRC-16/IBM.
ARC Β· Init 0000 Β· XorOut 0000; not CRC-16/USB.
CRC-8
Poly: 0x07
Simple CRC for small packets.
SMBus PEC (CRC-8/SMBUS); not a universal I2C checksum.

πŸ§ͺ Self-Test

Checks all six presets against the reference check values for "123456789" and compares the calculator with a JavaScript evaluation of the generated XOR equations at 8 bits/clock. This browser check does not compile or simulate the generated SystemVerilog, or verify timing and protocol integration. Runs automatically on page load. See the CRC parameter catalogue.

πŸš€ Learn CRC and connect it to an FPGA design

Follow XOR division and the LFSR circuit, then learn how to use the calculator and generated datapath. For integration support, timing optimization, or permission to use generated code in a project, contact EasyFPGA.

Copied!