A method for generating a data signal in a wireless Orthogonal Frequency Division Multiplexing, OFDM system, comprising the steps of: parsing a coded bit stream into multiple spatial data streams; interleaving the coded bits in each of one or more spatial data streams in an interleaver array including N row rows and N column columns of bits; transmitting said coded and interleaved bits of each spatial data stream, wherein said interleaving operation in a spatial data stream includes the steps of performing: a) a first permutation to ensure that adjacent coded bits are mapped onto nonadjacent subcarriers in one spatial data stream for transmission according to relation: i = N row × k mod N column + floor k / N column, k = 0,1,..., N CBPS − 1, b) a second permutation to ensure that coded bits are mapped alternately onto less and more significant bits of the constellation according to relation: j = s × floor i / s + i + N CBPS − floor N column × i / N CBPS mod s, i = 0,1,..., N CBPS − 1, wherein N CBPS is a block size corresponding to a number of coded bits in a single OFDM symbol, s is the number of bits parsed into a spatial data stream and is determined according to s = max(N BPSC /2,1), N BPSC is the number of coded bits per subcarrier, k denotes the index of the coded bits before said first permutation, i is the index after said first and before said second permutation, j is the index after said second permutation, said interleaving operation further comprising, for different spatial data streams beyond a first spatial data stream, a third permutation for providing frequency rotation to increase diversity of said wireless system, wherein said frequency rotation is performed according to relation: r = j − 2 × i SS − 1 mod 3 + 3 × floor i ss − 1 / 3 × N rot × N BPCS mod N CBPS, j = 0, 1,..., N CBPS − 1, wherein i ss = 1,..., N ss is the index of the spatial data stream on which interleaving is operating, N ss being the number of spatial data streams, N rot is a base rotation number in use and r is the index after said third permutation. parsing a coded bit stream into multiple spatial data streams; interleaving the coded bits in each of one or more spatial data streams in an interleaver array including N row rows and N column columns of bits; transmitting said coded and interleaved bits of each spatial data stream, wherein said interleaving operation in a spatial data stream includes the steps of performing: a) a first permutation to ensure that adjacent coded bits are mapped onto nonadjacent subcarriers in one spatial data stream for transmission according to relation: i = N row × k mod N column + floor k / N column, k = 0,1,..., N CBPS − 1, b) a second permutation to ensure that coded bits are mapped alternately onto less and more significant bits of the constellation according to relation: j = s × floor i / s + i + N CBPS − floor N column × i / N CBPS mod s, i = 0,1,..., N CBPS − 1, wherein N CBPS is a block size corresponding to a number of coded bits in a single OFDM symbol, s is the number of bits parsed into a spatial data stream and is determined according to s = max(N BPSC /2,1), N BPSC is the number of coded bits per subcarrier, k denotes the index of the coded bits before said first permutation, i is the index after said first and before said second permutation, j is the index after said second permutation, a) a first permutation to ensure that adjacent coded bits are mapped onto nonadjacent subcarriers in one spatial data stream for transmission according to relation: i = N row × k mod N column + floor k / N column, k = 0,1,..., N CBPS − 1, b) a second permutation to ensure that coded bits are mapped alternately onto less and more significant bits of the constellation according to relation: j = s × floor i / s + i + N CBPS − floor N column × i / N CBPS mod s, i = 0,1,..., N CBPS − 1, wherein N CBPS is a block size corresponding to a number of coded bits in a single OFDM symbol, s is the number of bits parsed into a spatial data stream and is determined according to s = max(N BPSC /2,1), N BPSC is the number of coded bits per subcarrier, k denotes the index of the coded bits before said first permutation, i is the index after said first and before said second permutation, j is the index after said second permutation, N CBPS is a block size corresponding to a number of coded bits in a single OFDM symbol, s is the number of bits parsed into a spatial data stream and is determined according to s = max(N BPSC /2,1), N BPSC is the number of coded bits per subcarrier, k denotes the index of the coded bits before said first permutation, i is the index after said first and before said second permutation, j is the index after said second permutation, said interleaving operation further comprising, for different spatial data streams beyond a first spatial data stream, a third permutation for providing frequency rotation to increase diversity of said wireless system, wherein said frequency rotation is performed according to relation: r = j − 2 × i SS − 1 mod 3 + 3 × floor i ss − 1 / 3 × N rot × N BPCS mod N CBPS, j = 0, 1,..., N CBPS − 1, wherein i ss = 1,..., N ss is the index of the spatial data stream on which interleaving is operating, N ss being the number of spatial data streams, N rot is a base rotation number in use and r is the index after said third permutation. i ss = 1,..., N ss is the index of the spatial data stream on which interleaving is operating, N ss being the number of spatial data streams, N rot is a base rotation number in use and r is the index after said third permutation.