A turbo encoder includes a memory for temporarily storing an incoming data sequence
and an interleaved address generator (IAG) designed to generate a sequence of addresses
corresponding to the interleaved data sequence. The IAG performs calculations based
on the length of the incoming data sequence and is able to generate a first interleaved
address by (or before) the time the incoming data sequence has completely shifted
into the memory. As a result, the encoder begins to output encoded data substantially
as soon as the corresponding incoming data have been received, thus substantially
reducing the processing delay. In addition, each interleaved address can be generated
on the fly as needed during data output. As a result, the entire set of interleaved
addresses does not need to be stored, thus reducing the memory requirements for
the encoder.