Chien Search
Understanding Chien Search
Algebraic FEC decoding (BCH and Reed-Solomon) follows a three-step pipeline: (1) compute syndromes from the received word, (2) find the error-locator polynomial σ(x) using the Berlekamp-Massey or Euclidean algorithm, and (3) find the roots of σ(x) to determine error positions. The Chien search handles step three. If σ(α-j) = 0 for some j, then position j in the received codeword contains an error. The brute-force approach would evaluate the polynomial at each of the n = 2m - 1 field elements independently, but Chien's key insight exploits the recurrence relationship between consecutive evaluations.
The algorithm initializes t registers R1 through Rt with the polynomial coefficients σ1 through σt. At each clock cycle j, register Ri is multiplied by the constant αi. The sum 1 + R1 + R2 + ... + Rt is computed via an XOR tree (addition in GF(2m)). If the sum equals zero, α-j is a root and position j contains an error. After n clock cycles, all roots have been found. This structure maps perfectly onto FPGA fabric: each register-multiplier pair consumes minimal logic, and the XOR tree has logarithmic depth. For RS(255,239) with t = 8, the entire search completes in 255 clocks at the symbol rate, adding zero throughput penalty. Forney's algorithm then uses the located error positions to compute error magnitudes for non-binary codes like Reed-Solomon.
Chien Search Recurrence
σ(x) = 1 + σ1x + σ2x² + ... + σtxt
Chien Register Update (clock j → j+1):
Ri(j+1) = αi · Ri(j) for i = 1, 2, ..., t
Root Test:
If 1 ⊕ R1(j) ⊕ R2(j) ⊕ ... ⊕ Rt(j) = 0, then α-j is a root
Where α is the primitive element of GF(2m), t = error-correcting capability, and ⊕ denotes GF addition (XOR). Hardware cost: t constant multipliers + (t-1)-input XOR tree. Latency: n = 2m - 1 clock cycles.
FEC Codes Using Chien Search in RF Systems
| Standard | Code | Field | t (errors) | Chien Cycles |
|---|---|---|---|---|
| DVB-S2 (satellite) | RS(204,188) | GF(28) | 8 | 204 |
| CCSDS (deep space) | RS(255,223) | GF(28) | 16 | 255 |
| OTN G.709 (optical) | RS(255,239) | GF(28) | 8 | 255 |
| WiMAX 802.16 | RS(255,239) | GF(28) | 8 | 255 |
| HF military (MIL-STD-188) | RS(31,15) | GF(25) | 8 | 31 |
Frequently Asked Questions
How does the Chien search algorithm work?
After the Berlekamp-Massey algorithm computes the error-locator polynomial from syndromes, the Chien search finds which field elements are roots. It initializes t registers with polynomial coefficients and, at each clock cycle, multiplies register i by αi. If the XOR sum of all registers plus 1 equals zero, the current element is a root and that codeword position has an error. This completes in n cycles for an (n, k) code, requiring only t constant multipliers and one XOR tree.
Why is Chien search preferred over direct polynomial evaluation?
Direct evaluation requires t multiplications per element, totaling n · t general multiplications. Chien's recurrence reduces each step to t constant-coefficient multiplications (by fixed powers of α, implementable as XOR networks in GF(2m)) and one XOR tree. For RS(255,239) with t = 8, this cuts general multipliers from 2,040 to zero, replacing them with 8 small constant multipliers. This makes real-time FPGA decoding practical at 400+ MHz.
What FEC codes use Chien search in RF systems?
Chien search is integral to BCH and Reed-Solomon decoders in DVB-S2/S2X satellite links, CCSDS deep-space codes (RS(255,223)), optical transport (OTN G.709), WiMAX, and tactical military HF radios (MIL-STD-188). It forms the third stage of the standard algebraic decoding pipeline after syndrome computation and error-locator polynomial calculation. Modern implementations achieve symbol rates of 10+ Gbps on 28 nm FPGAs.