exponenta event banner

5G Агрегирование, демодуляция и анализ несущих NR нисходящей линии связи

В этом примере показано, как генерировать, агрегировать и демодулировать несколько несущих нисходящей линии связи с использованием функций 5G Toolbox™.

Введение

В этом примере генерируется сигнал NR с агрегированием несущих (CA). Для выполнения агрегирования несущих в примере вычисляются частотные смещения для случая внутреннего смежного CA, как описано в TS 38.104 Раздел 5.3A. В примере также поддерживаются настраиваемые внутриполосные несмежные и межполосные сценарии CA.

Чтобы сформировать агрегированную форму сигнала нисходящей линии связи, пример конфигурирует совместимый со стандартом фиксированный опорный канал нисходящей линии связи (FRC) для каждой компонентной несущей. TS 38.101-1 Приложение A.3 определяет FRC физического общего канала нисходящей линии связи (PDSCH) для FR1, а TS 38.101-2 Приложение A.3 определяет FRC PDSCH для FR2. Для генерации сигнала FRC можно задать полосу пропускания канала, интервал между поднесущими, модуляцию, режим дуплексирования и идентификатор соты. Для получения дополнительной информации о том, как произвести DL FRCs, посмотрите 5G НОМЕР ТМ и Поколения Формы волны FRC.

После генерации компонентных несущих (КУ) в примере повторная выборка форм сигнала на общую частоту дискретизации и объединение КУ для генерации агрегированной формы сигнала.

Наконец, пример фильтрует и понижает выборку выбранного CC для выполнения измерений EVM и декодирования PDSCH.

Выбор параметров несущих компонентов

Вектор ChannelBandwidths определяет полосу пропускания для каждого CC. Длина этого вектора соответствует количеству КЦ. Элементы ChannelBandwidths должны находиться в наборе {5, 10, 15, 20, 25, 30, 40, 50, 60, 70, 80, 90 100} МГц для FR1 и в наборе {50, 100, 200, 400} МГц для FR2. TS 38.101-1 Таблиц 5.5A.1-1 Раздела 5.5A.1 и TS 38.101-2 списков Таблицы 5.5A.1-1 Раздела 5.5A.1 действительные комбинации пропускной способности для FR1 и скопления перевозчика FR2, соответственно.

Если ccSpacings вектор пуст, в примере вычисляются расстояния между последовательными несущими, ccSpacings, как описано в TS 38.104. Чтобы выбрать выбранные расстояния, добавьте их в ccSpacings вектор.

% Configure three carriers for the aggregation. You can select a different
% number of carriers by modifying the number of elements in the
% |channelBandwidths|, |SCSs|, |modulations|, and |nCellIDs| vectors.
frequencyRange = 'FR1'; % (FR1 or FR2)
channelRaster = 100; % Channel raster in kHz (15, 60 or 100)
channelBandwidths = [60 40 40]; % Channel bandwidths in MHz 
                                % (5, 10, 15, 20, 25, 30, 40, 50, 60, 70, 80, 
                                % 90 or 100 for FR1)
                                % (50, 100, 200 or 400 for FR2)
SCSs = [30 30 30]; % Subcarrier spacings in kHz 
                   % (15, 30 or 60 for FR1) 
                   % (60 or 120 for FR2)
modulations = {'QPSK' '64QAM' '256QAM'}; % ('QPSK', '64QAM' or '256QAM' for FR1)
                                         % ('QPSK', '16QAM' or '64QAM' for FR2)
nCellIDs = [1 2 3]; % Cell IDs          
duplexMode = 'TDD'; % Duplex mode ('TDD' or 'FDD')
sv = '15.2.0'; % Standard version ('15.1.0', '15.2.0' or '15.7.0')
numSubframes = 10; % Number of subframes to generate per carrier

% Choose the spacings between consecutive carriers, |ccSpacings|, or leave
% the vector empty for calculating the spacings, as described in TS 38.104
% Section 5.3A
ccSpacings = []; % MHz

% Select the CC to demodulate
CCofInterest = 2;

% Verify the number of CCs, channel bandwidths, subcarrier spacings,
% modulations, and spacings. Additionally, check that the spacings are
% greater than 0.
hNRVerifyCarrierParameters(length(channelBandwidths),length(SCSs),...
    length(modulations),length(nCellIDs),ccSpacings);

Конфигурация полки компонентов

Создание структуры конфигурации для каждого CC с помощью hNRReferenceWaveformGenerator. Сохраните структуры конфигурации для всех CCs в массиве ячеек.

% Establish the number of component carriers 
numCC = length(channelBandwidths);

% CC configuration
referenceChannel = cell(1,numCC);
wavegen = cell(1,numCC);
for i = 1:numCC
    % Select a reference channel, FRC, based on the chosen modulation and
    % frequency range
    referenceChannel{i} = strcat('DL-FRC-',frequencyRange,'-',modulations{i});
    
    % Create a generator object for the above PDSCH FRC reference channel
    wavegen{i} = hNRReferenceWaveformGenerator(referenceChannel{i},...
        channelBandwidths(i),SCSs(i),duplexMode,nCellIDs(i),sv);
end

Расчет параметров агрегирования несущих

Для выполнения агрегирования несущих необходимо вычислить частотные параметры, описанные в TS 38.104, разделы 5.3 и 5.4.

  • Fc_offset - вектор, содержащий центральную частоту каждого CC в основной полосе

  • F_offset_low - смещение частоты от нижнего Fc_offset к нижней границе агрегированной полосы пропускания

  • F_offset_high - смещение частоты от верхнего Fc_offset к верхней границе полосы пропускания агрегированного канала

  • F_edge_low - нижний край полосы пропускания агрегированного канала

  • F_edge_high - верхний край полосы пропускания агрегированного канала

  • BW_channel_CA - агрегированная полоса пропускания канала для всех CCs

Центрировать компонент нижней несущей на основной полосе (Fc_offset(1) = 0 Гц) и вычислить центральную частоту для остальных CCs. Для определения центральных частот с помощью метода, описанного в TS 38.104 Раздел 5.3A, необходимо рассчитать минимальные полосы защиты и минимальные расстояния CC. Либо для выбора собственных центральных частот выберите непустую ccSpacings вектор.

% Get the largest SCS configuration, |SCSConfig|, among the SCS
% configurations supported for each two consecutive channel bandwidths to
% obtain the minimum guardband, as described in TS 38.104 Section 5.4.1.2.
table = hGetGBTable(frequencyRange); % Minimum guardband table
if isequal(frequencyRange,'FR1')
    if any(channelBandwidths(:) == 5)
        SCSConfig = 1; 
    else
        SCSConfig = 2; 
    end
else
    SCSConfig = 3;
end

% Calculate the minimum guardband, as described in TS 38.104 Section 5.3.3
% Table 5.3.3-1 for FR1 and Table 5.3.3-1 for FR2, to obtain the minimum CC
% spacings.
minimumGuardBand = zeros(1,numCC);
NDLRB = zeros(1,numCC);
scs = strcat(num2str(2^SCSConfig*15),'kHz'); % Common SCS in kHz to extract 
                                             % minimum guardband 
for i = 1:numCC 
    NDLRB(i) = wavegen{i}.Config.SCSCarriers{1}.NSizeGrid;
    minimumGuardBand(i) = table{{scs},{strcat(num2str(channelBandwidths(i)),...
        'MHz');}}; % kHz
    minimumGuardBand(i) = minimumGuardBand(i)*1e-3; % MHz
end

% Compute the minimum CC spacings, as defined in TS 38.104 Section
% 5.4.1.2. Use these spacings to calculate the center frequencies and for
% filtering each CC.
minCCSpacings = zeros(1,numCC-1); % Minimum CC spacing
for k = 2:numCC
    minCCSpacings(k-1) = hNRCarrierAggregationChannelSpacing( ...
        channelBandwidths(k-1), channelBandwidths(k), minimumGuardBand(k-1), ...
        minimumGuardBand(k),channelRaster,SCSConfig); % MHz
end

% Determine the center frequency for each CC with respect to 0 Hz.
% Initially, the lower carrier frequency is at baseband (Fc_offset(1) = 0 Hz).
Fc_offset = zeros(1,numCC);
if isempty(ccSpacings)
    ccSpacings = minCCSpacings;
end
for k = 2:numCC
    Fc_offset(k) = Fc_offset(k-1) + ccSpacings(k-1); % MHz
end

Вычислите смещения частоты от нижней и верхней центральных частот к нижней и верхней границам агрегированной полосы пропускания соответственно, как описано в TS 38.104 Раздел 5.3A.

F_offset_low = (NDLRB(1)*12+1)*(SCSs(1)*1e-3)/2 + minimumGuardBand(1); % MHz
F_offset_high = (NDLRB(end)*12-1)*(SCSs(end)*1e-3)/2 + minimumGuardBand(end); %MHz

Вычислите нижний и верхний края агрегированной полосы пропускания канала, TS 38.104 Section 5.3A.

F_edge_low = Fc_offset(1) - F_offset_low; % MHz
F_edge_high = Fc_offset(end) + F_offset_high; % MHz

Вычислите полосу пропускания агрегированного канала, TS 38.104 Section 5.3A

BW_channel_CA = F_edge_high - F_edge_low; % MHz
fprintf('BW_channel_CA: %0.4f MHz\n',BW_channel_CA);
BW_channel_CA: 141.0800 MHz

Определите сдвиг частоты для центрирования полосы пропускания агрегированного канала на основной полосе частот (0 Гц).

shiftToCenter = -1*(BW_channel_CA/2 + F_edge_low);

% Center aggregated bandwidth at baseband
Fc_offset = Fc_offset + shiftToCenter;
F_edge_low = Fc_offset(1) - F_offset_low;
F_edge_high = Fc_offset(end) + F_offset_high;

% Display frequency band edges
fprintf('F_edge_low:  %0.4f MHz\n',F_edge_low);
F_edge_low:  -70.5400 MHz
fprintf('F_edge_high: %0.4f MHz\n',F_edge_high);
F_edge_high: 70.5400 MHz
fprintf('F_offset_low:  %0.4f MHz\n',F_offset_low);
F_offset_low:  30.7050 MHz
fprintf('F_offset_high: %0.4f MHz\n',F_offset_high);
F_offset_high: 20.6750 MHz
% Display carrier frequencies
fprintf('\n');
for i = 1:numCC
    fprintf('Component Carrier %d:\n',i);
    fprintf('   Fc: %0.4f MHz\n', Fc_offset(i));
end
Component Carrier 1:
   Fc: -39.8350 MHz
Component Carrier 2:
   Fc: 9.9650 MHz
Component Carrier 3:
   Fc: 49.8650 MHz

Расчет скорости избыточной выборки

Вычислите требуемые коэффициенты избыточной выборки для каждого носителя компонентов, OSRsдля использования общей частоты дискретизации для агрегированной формы сигнала.

% Obtain sample rates of the component carriers
CCSR = zeros(1,numCC);
carriers = cell(1,numCC);
for i = 1:numCC
    carriers{i} = nrCarrierConfig;
    carriers{i}.NCellID = nCellIDs(i);
    carriers{i}.NSizeGrid = NDLRB(i);
    carriers{i}.SubcarrierSpacing = SCSs(i);
    carriers{i}.CyclicPrefix = wavegen{i}.Config.BandwidthParts{1}.CyclicPrefix;
    info = nrOFDMInfo(carriers{i});
    CCSR(i) = info.SampleRate; % Hz
end

% Calculate the oversampling ratio for the largest BW CC to ensure the
% waveform occupies a maximum of 85% of the total bandwidth, |bwfraction|
bwfraction = 0.85; % Bandwidth utilization of 85%
OSR = (BW_channel_CA/bwfraction)/(max(CCSR)/1e6);

% To simplify the resampling operation, choose an oversampling ratio which
% is a power of 2: calculate the next power of two above OSR
OSR = 2^ceil(log2(OSR));

% Calculate the overall sample rate for the aggregated waveform
SR = OSR*max(CCSR); % Hz
fprintf('\nOutput sample rate: %0.4f Ms/s\n\n',SR/1e6);
Output sample rate: 245.7600 Ms/s
% Calculate the individual oversampling factors for the component carriers
OSRs = SR./CCSR;

Генерация сигналов и агрегирование несущих

Позвоните в generateWaveform функции из hNRReferenceWaveformGenerator вспомогательный файл для генерации формы сигнала для каждого CC. Повторная выборка каждой несущей на общую частоту дискретизации, частотная модуляция несущих на соответствующую центральную частоту и, наконец, агрегирование C для формирования комбинированной формы сигнала.

% Generate and aggregate the component carriers
waveform = 0;
tmwaveinfo = cell(1,numCC);
waveInfo = cell(1,numCC);
resourcesInfo = cell(1,numCC);
frequencyShifter = comm.PhaseFrequencyOffset('SampleRate',SR);
for i = 1:numCC
    % Generate each CC
    [wf,waveInfo{i},resourcesInfo{i}] = generateWaveform(wavegen{i},...
        numSubframes);
    
    % Resample the CCs so that they have the same sample rate  
    wf = resample(wf,OSRs(i),1)/OSRs(i);
    
    % Frequency modulate each CC to the appropiate center frequency
    frequencyShifter.FrequencyOffset = Fc_offset(i)*1e6;
    wf = frequencyShifter(wf);
    frequencyShifter.release();
    
    % Aggregate the CCs to form the combined signal
    waveform = waveform + wf;
end

График агрегированного спектра несущей

Отображение спектра агрегированного сигнала несущей с помощью hNRCarrierAggregationPlotSpectrum функция помощника. График спектра показывает отдельные полосы частот несущих. Этот пример не преобразует сигнал с повышением частоты в радиочастотный (RF), центр агрегированной полосы частот находится на полосе частот (0 Гц).

specPlot = hNRCarrierAggregationPlotSpectrum(waveform,SR,...
    'Power Spectrum of Carrier Aggregation',{'Signal spectrum'});

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Power Spectrum of Carrier Aggregation contains an object of type line. This object represents Signal spectrum.

Демодуляция и фильтрация CC

Выберите CC, затем демодулируйте, фильтруйте и понижайте выборку CC по своему выбору, следуя этим шагам.

  • Перевод CC на основную полосу (0 Гц)

  • Вычисление частот полосы пропускания и полосы останова фильтра

  • Выполните фильтрацию соседних CCs с помощью разработанного фильтра и выполните понижающую выборку CC.

% Verify carrier of interest ID
if CCofInterest > numCC || CCofInterest <= 0 || mod(CCofInterest,1) ~= 0
    error('nr5g:NRDownlinkCarrierAggregationExample:CCOutOfRange',...
        'Cannot demodulate CC number %d, choose an integer number that falls between 1 and %d\n',...
        CCofInterest, numCC) ;
end
fprintf(1,'Extracting CC number %d: \n', CCofInterest);
Extracting CC number 2: 
% Define downsampling filter order
filterOrder = 201;

% Precalculate the filter passband and stopband values for all CC
firPassbandVec = (NDLRB*12-1).*(SCSs*1e-3)/2 / (SR/1e6/2);
firStopbandVec = hNRCarrierAggregationStopband(minCCSpacings,NDLRB,SR,SCSs);

% Choose the passband and stopband values for the carrier of interest
firPassband = firPassbandVec(CCofInterest);
firStopband = firStopbandVec(CCofInterest);

% Pad signal with zeros to consider filter transient response length
waveform = [waveform; zeros(filterOrder*2,size(waveform,2))];

% Center the carrier of interest at 0 Hz
frequencyShifter.FrequencyOffset = -Fc_offset(CCofInterest)*1e6;
demodulatedCC = frequencyShifter(waveform);

% To ease the filter design requirements, apply the downsampling in two
% stages if necessary. Use a downsampling factor of 4 in the initial stage.
% If the quality of the resulting signal is not as required, consider a
% different filter design in this initial stage.
if (firStopband < 0.1)
    % Downsample by 4 in the initial stage
    SRC = 4;
    demodulatedCC = resample(demodulatedCC,1,SRC);
    % Update passband and stopband values
    firPassband = firPassband * SRC;
    firStopband = firStopband * SRC;
else
    % Do not apply an extra downsampling 
    SRC = 1;
end

% Design the lowpass filter to filter out the CC of your choice
frEdges = [0 firPassband firStopband 1];
firFilter = dsp.FIRFilter;
firFilter.Numerator = firpm(filterOrder,frEdges,[1 1 0 0]);

% Display the response of the designed filter
fvtool(firFilter,'Analysis','freq');

Figure Filter Visualization Tool - Magnitude Response (dB) and Phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) and Phase Response contains an object of type line.

% Filter the signal to extract the component of interest
rxWaveform  = firFilter(demodulatedCC);

% Plot the demodulated and filtered spectra
filteredSpecPlot = ...
    hNRCarrierAggregationPlotSpectrum([demodulatedCC, rxWaveform],SR,...
            'Demodulated and Filtered Waveform Power Spectrum',...
            {'Carrier aggregated signal' 'Filtered signal'});

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Demodulated and Filtered Waveform Power Spectrum contains 2 objects of type line. These objects represent Carrier aggregated signal, Filtered signal.

% Downsample the filtered carrier to its baseband rate
rxWaveform = downsample(rxWaveform,OSRs(CCofInterest)/SRC);

Измерения EVM

hNRPDSCHEVM вспомогательная функция возвращает PDSCH EVM посредством выполнения синхронизации, демодуляции OFDM, оценки канала и выравнивания. Функция отображает EVM для каждого слота и кадра и общее усреднение EVM по всей входной форме сигнала. Функция также строит графики: EVM на символ OFDM, слот, поднесущую и общую EVM.

% Parameterize the channel estimator configuration using the structure |cfg|
cfg = struct();
cfg.Evm3GPP = true; % To measure EVM as defined in TS 38.104, Annex B(FR1) 
                    % / Annex C(FR2) set |Evm3GPP| to |true|. 
cfg.TargetRNTIs = [];
cfg.PlotEVM = true;
cfg.DisplayEVM = true;
cfg.Label = wavegen{CCofInterest}.ConfiguredModel{1};

% Perform EVM measurements and plot results
[evmInfo,eqSym,refSym] = hNRPDSCHEVM(wavegen{CCofInterest}.Config,...
    rxWaveform,cfg);
Low edge RMS EVM, Peak EVM, slot 1: 3.092 8.591%
High edge RMS EVM, Peak EVM, slot 1: 2.795 8.020%
Low edge RMS EVM, Peak EVM, slot 2: 2.996 8.556%
High edge RMS EVM, Peak EVM, slot 2: 2.774 7.533%
Low edge RMS EVM, Peak EVM, slot 3: 3.114 9.851%
High edge RMS EVM, Peak EVM, slot 3: 2.796 7.604%
Low edge RMS EVM, Peak EVM, slot 4: 2.972 8.648%
High edge RMS EVM, Peak EVM, slot 4: 2.784 7.600%
Low edge RMS EVM, Peak EVM, slot 5: 2.949 8.783%
High edge RMS EVM, Peak EVM, slot 5: 2.774 7.659%
Low edge RMS EVM, Peak EVM, slot 6: 3.079 9.422%
High edge RMS EVM, Peak EVM, slot 6: 2.783 7.265%
Low edge RMS EVM, Peak EVM, slot 10: 3.118 10.700%
High edge RMS EVM, Peak EVM, slot 10: 2.779 8.086%
Low edge RMS EVM, Peak EVM, slot 11: 3.070 9.473%
High edge RMS EVM, Peak EVM, slot 11: 2.767 7.837%
Low edge RMS EVM, Peak EVM, slot 12: 3.053 8.774%
High edge RMS EVM, Peak EVM, slot 12: 2.780 7.284%
Low edge RMS EVM, Peak EVM, slot 13: 2.993 8.781%
High edge RMS EVM, Peak EVM, slot 13: 2.792 7.980%
Low edge RMS EVM, Peak EVM, slot 14: 2.981 8.352%
High edge RMS EVM, Peak EVM, slot 14: 2.789 7.437%
Low edge RMS EVM, Peak EVM, slot 15: 2.930 8.303%
High edge RMS EVM, Peak EVM, slot 15: 2.791 7.852%
Low edge RMS EVM, Peak EVM, slot 16: 3.023 8.961%
High edge RMS EVM, Peak EVM, slot 16: 2.788 7.686%
Averaged low edge RMS EVM, frame 0: 3.029%
Averaged high edge RMS EVM, frame 0: 2.784%
Averaged RMS EVM frame 0: 3.029%

Figure contains 3 axes. Axes 1 with title EVM vs OFDM symbol contains 2 objects of type line. These objects represent rms EVM, peak EVM. Axes 2 with title EVM vs slot contains 2 objects of type line. These objects represent rms EVM, peak EVM. Axes 3 with title EVM vs subcarrier contains 2 objects of type line. These objects represent rms EVM, max EVM.

Figure EVM (%) contains an axes. The axes with title EVM resource grid contains an object of type surface.

Figure contains an axes. The axes with title Equalized symbols constellation contains 3 objects of type line.

Averaged overall RMS EVM: 3.029%
Overall Peak EVM = 10.7004%

Декодирование PDSCH

Декодируйте PDSCH восстановленного сигнала и проверьте результирующий CRC на наличие ошибок.

% Perform time synchronization on the input waveform
offset = nrTimingEstimate(carriers{CCofInterest},rxWaveform,...
    waveInfo{CCofInterest}.ResourceGridBWP);
rxWaveform = rxWaveform(1+offset:end,:);

% Perform OFDM demodulation
rxGrid = nrOFDMDemodulate(carriers{CCofInterest},rxWaveform);

% Get the allocated slots and OFDM symbols per slot
allocatedSlots = zeros(1,size(resourcesInfo{CCofInterest}.WaveformResources.PDSCH.Resources,2));
for i=1:length(allocatedSlots)
    allocatedSlots(i) = resourcesInfo{CCofInterest}.WaveformResources.PDSCH.Resources(i).NSlot;
end
L = carriers{CCofInterest}.SymbolsPerSlot; % OFDM symbols per slot

% Create a DLSCH decoder System object
decodeDLSCH = nrDLSCHDecoder;
decodeDLSCH.MultipleHARQProcesses = false;
decodeDLSCH.TargetCodeRate = wavegen{CCofInterest}.Config.PDSCH{1}.TargetCodeRate;
decodeDLSCH.LDPCDecodingAlgorithm = 'Layered belief propagation';
decodeDLSCH.MaximumLDPCIterationCount = 6;

for NSlot=1:length(allocatedSlots)
    % Extract slot
    SlotID = allocatedSlots(NSlot);
    rxSlot = rxGrid(:,(1:L)+(SlotID*L),:);
    refSlot = waveInfo{CCofInterest}.ResourceGridBWP(:,(1:L)+(SlotID*L),:);
    
    % Perform channel estimation
    [estChannelGrid,noiseEst] = nrChannelEstimate(carriers{CCofInterest},...
        rxSlot,refSlot);
            
    % Get PDSCH resource elements from the received grid and channel estimate
    pdschIndices = resourcesInfo{CCofInterest}.WaveformResources.PDSCH.Resources(NSlot).ChannelIndices;
    [pdschRx,pdschHest] = nrExtractResources(pdschIndices,rxSlot,estChannelGrid);
    
    % Perform equalization
    [pdschEq,csi] = nrEqualizeMMSE(pdschRx,pdschHest,noiseEst);
    
    % Perform layer demapping, symbol demodulation, and descrambling
    modulation = wavegen{CCofInterest}.Config.PDSCH{1}.Modulation;
    RNTI = wavegen{CCofInterest}.Config.PDSCH{1}.RNTI;
    [dlschLLRs,rxSymbols] = nrPDSCHDecode(pdschEq,modulation,...
        carriers{CCofInterest}.NCellID,RNTI,noiseEst);
    
    % Scale LLRs by CSI
    csi = nrLayerDemap(csi); % CSI layer demapping
    NumCW = size(resourcesInfo{CCofInterest}.WaveformResources.PDSCH.Resources(NSlot).Codeword,2);
    for cwIdx = 1:NumCW
        Qm = length(dlschLLRs{cwIdx})/length(rxSymbols{cwIdx}); % Bits per symbol
        csi{cwIdx} = repmat(csi{cwIdx}.',Qm,1);   % Expand by each bit per symbol
        dlschLLRs{cwIdx} = dlschLLRs{cwIdx} .* csi{cwIdx}(:);   % Scaled symbols
    end  
    
    % Calculate the transport block sizes for the codewords in the slot
    trBlkSize = resourcesInfo{CCofInterest}.WaveformResources.PDSCH.Resources(NSlot).TransportBlockSize;
    
    % Decode the DL-SCH transport channel
    decodeDLSCH.TransportBlockLength = trBlkSize;
    NLayers = wavegen{CCofInterest}.Config.PDSCH{1}.NumLayers;
    RVSequence = wavegen{CCofInterest}.Config.PDSCH{1}.RVSequence;
    [decbits,crc] = decodeDLSCH(dlschLLRs,modulation,NLayers,RVSequence);
     
    % Display the CRC status
    if crc
        disp(['Slot ' num2str(SlotID) ': CRC failed']);
    else
        disp(['Slot ' num2str(SlotID) ': CRC passed']);
    end
end
Slot 1: CRC passed
Slot 2: CRC passed
Slot 3: CRC passed
Slot 4: CRC passed
Slot 5: CRC passed
Slot 6: CRC passed
Slot 10: CRC passed
Slot 11: CRC passed
Slot 12: CRC passed
Slot 13: CRC passed
Slot 14: CRC passed
Slot 15: CRC passed
Slot 16: CRC passed

Библиография

  1. 3GPP ТС 38.104 "НР; радиопередача и прием базовой станции (BS) "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

  2. 3GPP ТС 38.101-1 "НР; радиопередача и прием пользовательского оборудования (UE); Часть 1: Автономный диапазон 1. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

  3. 3GPP ТС 38.101-2 "НР; радиопередача и прием пользовательского оборудования (UE): Часть 2: Диапазон 2 Автономный "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

См. также

Функции

Связанные темы