linear coprime interleavers.
------------------------------------------------
[ recursion version ]
f(0) = 0
f(i) = mod(a * f(i-1) + b, N), i=1,2,...,N-1
[ parallel version ]
if a = 1,
f(i) = mod(b * i, N), i=0,1,...,N-1
else
f(i) = mod( ((1-a^i) * b) / (1-a), N), i=0,2,...,N-1
end
when a=1 and b is chosen to be the closest integer, which is relatively prime to N, to the Golden section of N, it's Golden prime interleaver
where:
0 < a < N, a-1 be a multiple of p, for every prime p dividing N; a-1 be a multiple of 4, if N is a multiple of 4.
0 <= b < N, and b is relatively prime to N;
Welch-Costas Interleaver (costa array)
------------------------------------------------
[ recursion version ]
f(0) = 0
f(i) = mod(a*f(i-1), N+1);
[ parallel version ]
f(i) = mod(a^i, N+1) - 1, i = 0,1,...,N-1
where,
N is a prime number minus 1;
a is a primitive element in GF(N+1)
Ref:
J. Costas, A study of a class of detection waveforms having nearly ideal range. Doppler ambiguity properties, Proc. IEEE 72 (8) (1984) 996–1009.
C. Heegard, and S. B. Wicker., Turbo Coding. Boston: Kluwer Academic Publishers, 1999. pp:54-55.
Takeshita-Costello Interleaver
--------------------------------------------------
c(i) = ( a * i * (i+1) / 2 ) mod N, i = 0,1,...,N-1
f(c(i)) = c( (i+1) mod N ), i = 0,1,...,N-1
where N should be 2^m, a should be an odd number less than N
Ref:
O. Y. Takeshita, and D. J. Costello, D.J., Jr., New deterministic interleaver designs for turbo codes IEEE Trans. Inf. Theory, vol.46, no.6, pp:1988-2006, Sept. 2000