Main Content

wlanBCCInterleave

Interleave binary convolutionally encoded input

Description

example

y = wlanBCCInterleave(bits,type,numCBPSSI,cbw) outputs the interleaved binary convolutionally encoded (BCC) input bits for a specified interleaver type, as defined in Sections 21.3.10.8 and 23.3.9.8 of IEEE® 802.11™-2020. numCBPSSI specifies the number of coded bits per OFDM symbol per spatial stream per interleaver block and cbw specifies the channel bandwidth.

example

y = wlanBCCInterleave(bits,type,numCBPSSI) outputs the interleaved input bits for the non-HT interleaver type.

Examples

collapse all

Perform BCC interleaving for the VHT interleaving type.

Define the input parameters. Set the number of coded bits per OFDM symbol per spatial stream per interleaver block to 52, the channel bandwidth to 20 MHz, and the number of spatial streams to 4.

numCBPSSI = 52;
cbw = 'CBW20';
numSS = 4;

Create a sequence of bits for two OFDM symbols, four spatial streams, and one segment.

inBits = randi([0 1],2*numCBPSSI,numSS,1,'int8');

Perform BCC interleaving on the bits.

out = wlanBCCInterleave(inBits,'VHT',numCBPSSI,cbw);

Perform BCC interleaving for the non-HT interleaving type.

Define the input parameters. Set the number of coded bits per OFDM symbol per spatial stream per interleaver block to 48.

numCBPSSI = 48;

Create a sequence of random bits for one OFDM symbol, one spatial stream, and one segment.

inBits = randi([0 1],numCBPSSI,1);

Perform BCC interleaving on the bits.

out = wlanBCCInterleave(inBits,'Non-HT',numCBPSSI);

Compare the original sequence with the interleaved one.

[inBits out]
ans = 48×2

     1     1
     1     0
     0     0
     1     1
     1     1
     0     0
     0     0
     1     1
     1     0
     1     1
      ⋮

Get the interleaving sequence of a non-HT interleaver type.

Define the input parameters. Set the number of coded bits per OFDM symbol per spatial stream per interleaver block to 192.

numCBPSSI = 192;

Create a numeric sequence from 1 to numCBPSSI.

seq = (1:numCBPSSI).';

Perform BCC interleaving on the numeric sequence.

intSeq = wlanBCCInterleave(seq,'Non-HT',numCBPSSI);
intSeq(1:10)
ans = 10×1

     1
    17
    33
    49
    65
    81
    97
   113
   129
   145

Input Arguments

collapse all

Input sequence containing binary convolutionally encoded (BCC) data, specified as an (NCBPSSI×NSYM)-by-NSS-by-NSEG array, where:

  • NCBPSSI is the number of coded bits per OFDM symbol per spatial stream per interleaver block.

  • NSYM is the number of OFDM symbols.

  • NSS is the number of spatial streams.

    • If type= 'Non-HT', then NSS must be 1.

    • If type= 'VHT', then NSS must be from 1 to 8.

  • NSEG is the number of segments.

Data Types: double | int8

The type of interleaving, specified as 'VHT' or 'Non-HT'.

Data Types: char | string

Number of coded bits per OFDM symbol per spatial stream per interleaver block specified as a positive integer. As defined in IEEE 802.11ac™-2013 Table 22-6, the value of numCBPSSI depends on the interleaving type:

'Non-HT'NSD×NBPSCS
'VHT'NSD×NBPSCS/NSEG

where:

  • NSD is the number of data subcarriers.

  • NBPSCS is the number of coded bits per subcarrier per spatial stream, specified as 1, 2, 4, 6, or 8.

  • NSEG is the number of segments.

When type= 'Non-HT', numCBPSSI can be 48, 96, 192, 288, and 384, since NCBPSSI = 48 × NBPSCS.

When type= 'VHT', numCBPSSI can be 24, 48, 96, 144, and 192, since NCBPSSI = 24 × NBPSCS.

Data Types: double

Channel bandwidth in MHz, specified as 'CBW1','CBW2', 'CBW4','CBW8', 'CBW10', 'CBW16', 'CBW20', 'CBW40', 'CBW80', or 'CBW160'. When the interleaver type is set to 'Non-HT', then cbw is optional.

Data Types: char | string

Output Arguments

collapse all

Interleaved output, returned as an (NCBPSSI×NSYM)-by-NSS-by-NSEG array, where:

  • NCBPSSI is the number of coded bits per OFDM symbol per spatial stream per interleaver block.

  • NSYM is the number of OFDM symbols.

  • NSS is the number of spatial streams.

  • NSEG is the number of segments.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2017b