Restore ordering of symbols permuted by helical interleaver
Convolutional sublibrary of Interleaving
The Helical Deinterleaver block permutes the symbols in the input signal by placing them in an array row by row and then selecting groups in a helical fashion to send to the output port.
The block uses the array internally for its computations. If C is the Number of columns in helical array parameter, then the array has C columns and unlimited rows. If N is the Group size parameter, then the block accepts an input of length C·N at each time step and inserts them into the next N rows of the array. The block also places the Initial condition parameter into certain positions in the top few rows of the array (not only to accommodate the helical pattern but also to preserve the vector indices of symbols that pass through the Helical Interleaver and Helical Deinterleaver blocks in turn).
The output consists of consecutive groups of N symbols. Counting from the beginning of the simulation, the block selects the kth output group in the array from column k mod C. The selection is helical because of the reduction modulo C and because the first symbol in the kth group is in row 1+(k-1)*s, where s is the Helical array step size parameter.
This block accepts a column vector input signal containing C·N elements.
The block can accept the data types
and fixed-point. The data type of this output will be the same as
that of the input signal.
After processing a message with the Helical Interleaver block and the Helical Deinterleaver block, the deinterleaved data lags the original message by
samples. Before this delay elapses, the deinterleaver output is either the Initial condition parameter in the Helical Deinterleaver block or the Initial condition parameter in the Helical Interleaver block.
If your model incurs an additional delay between the interleaver output and the deinterleaver input, then the restored sequence lags the original sequence by the sum of the additional delay and the amount in the formula above. For proper synchronization, the delay between the interleaver and deinterleaver must be m· C · N for some nonnegative integer m. You can use the DSP System Toolbox™ Delay block to adjust delays manually, if necessary.
The number of columns, C, in the helical array.
The size, N, of each group of symbols. The input width is C times N.
The number of rows of separation between consecutive output groups as the block selects them from their respective columns of the helical array.
A scalar that fills the array before the first input is placed.
 Berlekamp, E. R. and P. Tong. "Improved Interleavers for Algebraic Block Codes." U. S. Patent 4559625, Dec. 17, 1985.