42
digits, associated with
m(x).
If
we
stop when i =
j,
the initial
(k
-
j)
bits of
m(x)
are zero, so the code
is
a systematic cyclic code shortened
by
forcing the first
(k
-
j)
bits to be zero. The circuit of Figure
3.1
effectively performs division.
This procedure can be used to generate codewords.
It can also be used to
detect errors. We can divide the entire received vector
(x"-km(x)
+
rex»~
by
g(x)
and check that the resultant remainder
is
zero.
If
the circuit of Figure
3.1
is
used,
we
would then be processing
(j
+ n -
k)
bits, that
is,
dividing
X"-
k
times the
received vector rather than the vector itself, but the criterion of a zero remainder
for no detected errors still holds. Alternatively
we
can stop the process after
dividing
x"-kml/(x)
by
g(x),
where
ml/(x)
is
m(x)
after possible corruption
by
errors, and compare the
r(x)
calculated from this with the received
rl/(x).
If
they
are not equal, an error has been detected.
3.4 ERROR CORRECTION WITH CYCLIC CODES
Correcting errors in received cyclic codewords
is,
as usual, much more complex
than merely detecting them.
If
g(x)
is
irreducible, then the columns of
Hare
simply some power a
i
of a root a of
g(
x),
so that a single error
is
easily corrected
because if
it
occurs in the
(n
+ 1 -
nth
column
it
will give a syndrome equal to
ai,
and i can then be deduced from that syndrome. But if more
than
one error
is
to be
corrected (which implies that
g(x)
is
composite,
as
we
have seen), then this
identification of the contributing columns of H from the syndrome becomes
nontrivial.
However, one simple method,
due
to Kasami, does exist
[9].
It
is
capable of
correcting
t or fewer errors in a cyclic code with distance d = 2 t +
1,
provided
those errors are confined to a burst less than or equal to
(n
-
k)
bits in length.
Kasami's method
is
based on the following reasoning. Suppose there are j
~
t
bits in error, with r
of
them affecting the check digits and
(j
-
r)
affecting the
message bits of a systematic codeword.
If
we
evaluate the syndrome
s,
it will have
;::0:
(d
-
(j
- r» nonzero bits contributed from the errors in the message portion of
the received vector. This
is
because this contribution to s
is
the remainder on
dividing the message multiplied
by
X"-
k
by
the generating polynomial; that
is,
it
is
precisely the check digits, and since the distance of the code
is
d,
we
need
;::0:
(d
-
(j
- r» nonzero bits. These nonzero bits
mayor
may not cancel out the r
error bits
in
the received check digits, which are the check digits' contribution to
the syndrome.
In
the worst case, if all r are cancelled, the syndrome still has
d -
(j
-
r)
- r = d - j =
2t
+ 1 - j
;::0:
t + 1
nonzero bits.
However, if the
j
~
t error bits are confined to the check digits only, then the
syndrome has
~
t nonzero bits.