Main Content

nrORANBlockDecompress

O-RAN fronthaul block decompression

    Description

    example

    dGrid = nrORANBlockDecompress(cGrid,cParam,method,cIQWidth,IQWidth) performs open radio access network (O-RAN) fronthaul block decompression on the compressed user plane (U-Plane) IQ data, cGrid. The input method specifies the decompression method. The function implements the block floating point (BFP), block scaling, and μ-law decompression methods, as defined in O-RAN.WG4.CUS TS Annexes A.1.2, A.2.2, and A.3.2, respectively [1]. The function returns the decompressed grid, dGrid. Inputs IQWidth and cIQWidth specify the bit width of the IQ samples before and after compression, respectively. cParam specifies the compression parameter applied in the compressed data, cGrid.

    dGrid = nrORANBlockDecompress(cGrid,cParam,method,cIQWidth) performs only BFP or μ-law decompression.

    dGrid = nrORANBlockDecompress(cGrid,cParam,method) performs only BFP decompression.

    Examples

    collapse all

    Generate an NR downlink resource grid to perform O-RAN fronthaul block compression.

    cfg = nrDLCarrierConfig;
    [waveform,info] = nrWaveformGenerator(cfg);
    grid = info.ResourceGrids.ResourceGridBWP;

    Scale the bit width of the IQ samples in the resource grid to 16 bits.

    IQWidth = 16;
    peak = max(abs([real(grid(:)); imag(grid(:))]));
    scaleFactor = peak / (2^(IQWidth-1)-1);
    scaledGrid = round(grid / scaleFactor);

    Specify the bit width for the compressed IQ samples.

    cIQWidth = 9;

    Specify the compression method.

    method = 'BFP';

    Perform O-RAN fronthaul block compression.

    [cGrid,cParam] = nrORANBlockCompress(scaledGrid,method,cIQWidth);

    Perform O-RAN fronthaul block decompression.

    dGrid = nrORANBlockDecompress(cGrid,cParam,method);

    Descale the decompressed grid using the scaling factor from before the compression.

    descaledGrid = dGrid * scaleFactor;

    Input Arguments

    collapse all

    Compressed resource grid of U-Plane IQ data, specified as a K-by-L-by-P complex array. K is the number of subcarriers, a multiple of 12, where 12 corresponds to the resource elements (REs) in a physical resource block (PRB). L is the number of OFDM symbols. P is the number of antennas. The input cIQWidth specifies the bit width of the IQ samples in the compressed grid.

    Data Types: double | single
    Complex Number Support: Yes

    Compression parameter, specified as a K/12-by-L-by-P integer array.

    • For BFP compression, cParam is the common exponent applied per compressed PRB, with integer values from 0 to IQWidth – 1.

    • For block scaling compression, cParam is the common scale factor applied per compressed PRB, with integer values from 1 to 128.

    • For μ-law compression, cParam is the common shift applied per compressed PRB, with integer values from 0 to 7.

    Data Types: double

    O-RAN fronthaul decompression method, specified as one of these values.

    • 'BFP' — Specify this value for BFP decompression, as defined in O-RAN.WG4.CUS TS Annex A.1.2.

    • 'blockScaling' — Specify this value for block scaling decompression, as defined in O-RAN.WG4.CUS TS Annex A.2.2.

    • 'muLaw' — Specify this value for μ-law decompression, as defined in O-RAN.WG4.CUS TS Annex A.3.2.

    Data Types: string | char

    Bit width of the compressed IQ samples (in the input cGrid), including the sign bit, specified as one of these values.

    • Integer from 1 to 16 — This value specifies the bit width for all compressed IQ samples.

    • K/12-by-L-by-P integer array with values from 1 to 16 — The vector elements specify the bit width of the compressed IQ samples within a PRB.

    For BFP decompression, the function ignores this input.

    Data Types: double

    Bit width of the IQ samples before compression, specified as an integer from 1 to 32. This value determines the bit width of the decompressed IQ samples in the output dGrid. For μ-law compression, this input must be 16. For BFP decompression, the function ignores this input.

    Data Types: double

    Output Arguments

    collapse all

    Decompressed resource grid of U-Plane IQ data, returned as a K-by-L-by-P complex array. The input IQWidth determines the bit width of the IQ samples in the decompressed grid.

    Data Types: double | single
    Complex Number Support: Yes

    References

    [1] O-RAN.WG4.CUS TS. “O-RAN Fronthaul Working Group; Control, User and Synchronization Plane Specification” Open Radio Access Network Alliance Technical Specification.

    Extended Capabilities

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

    Version History

    Introduced in R2022b

    See Also

    Functions