← All problems

Galois Field GF(2^8) Multiplier

Hard · Combinational · SystemVerilog

Design a combinational module that multiplies two 8-bit elements of $GF(2^8)$ using the AES irreducible polynomial $x^8 + x^4 + x^3 + x + 1$ ($0x11B$), producing the standard field product used in AES MixColumns, Reed-Solomon, and BCH codes.

Arithmetic in $GF(2^8)$ differs from ordinary integer arithmetic:

- **Addition** is bitwise XOR — there are no carries. - **Multiplication** is polynomial multiplication modulo the irreducible polynomial {POLY}.

The parameter {POLY} is fixed at $9'h11B$. Only the lower 8 bits of {POLY} ($0x1B$) are ever XOR'd during reduction — the $x^8$ term is implicit.

When either {a} or {b} is $0$, {product} must be $0$.

When {b} $= 1$, {product} must equal {a} (multiplicative identity).

Open this challenge in the editor →