Puncturing can use either 3GPP rate matching or random puncturing in order to fine tune the coding rate to adapt to configurable transport block sizes delivered to PHY by the MAC. The overall coding sub-system is shown in Figure below. New transport blocks arriving from the MAC layer (based on multi-user scheduling) are coded using a CRC extension and the chosen binary code. These are then fed to the active transport block buffer along with those that are to be retransmitted. Each transmitted block is punctured and then passed to a bit-interleaver and modulation mapper (BICM). OpenAirMesh supports QPSK, 16-QAM and 64-QAM modulation.
Coded Modulation Subsystem
The transmitted transport blocks can be split into to two spatial streams in the case of point-to-point MIMO transmission. Each stream receives an adjustable amplitude and then each is passed to a different (orthogonal) space-time parser which guarantees that both streams use different antennas in the same time/frequency dimension. This allows for low-complexity successive detection at the receiver and maximizes diversity against fading. This is a form of superposition coding since the two streams are combined additively in the air through the use of multiple transmit antennas.
A second design objective for this coding strategy, in addition to low-complexity point-to-point MIMO operation, is that the same transmitter and receiver structure can be used in a distributed MIMO scenario. Here one spatial stream is used at each source and the second stream originates in another part of the network, either in the same cluster or an adjacent cluster. Co-operation is needed in order to guarantee different STF parsing for the two streams so that they can be decoupled at the SIC receiver. A particular user can decode both streams or simply select the one it requires.
Modules | |
| Transport block Scrambling | |
| Each transport block is scrambled using the LFSR shown in the following figure with a random initial state in the LFSR determined at deployment time. | |
| Cyclic Redundancy Check | |
| For the purpose of error-detection a cyclic-redundancy check (CRC) is applied to every transport block entering the PHY coding subsystem, including those destined for the CHBCH,MCH, RACH and SACCH. | |
| Convolutional Coding | |
| For coded-modulation formats using convolutional coding, the 802.11a rate 1/2 64-state convolutional coder shown below shall be applied to the scrambled and parity-checked transport blocks. | |
| Puncturing | |
| Random puncturing makes use of a 32-bit Tausworthe random number generator. | |
| Bit-Interleaving and Modulation Mapping | |
| The interleaving depth for CHBCH,MCH,RACH and SACCH in the multiplexing sub-block is chosen to ensure sufficient separation in frequency for adjacent coded outputs, and thus maximize frequency diversity. | |
1.4.7