В этом примере показано, как использовать блок демодулятора OFDM LTE для возврата сетки ресурсов LTE из потоковых выборок. Из этого блока можно создать код HDL.
Формирование входных символов OFDM LTE с использованием Toolbox™ LTE. Выберите опорный канал на основе NDLRB и укажите тип циклического префикса.
enb = lteRMCDL('R.5'); enb.TotSubframes = 1; enb.CyclicPrefix = 'Normal'; % or 'Extended' % ------------------------------------------------------------ % NDLRB | Reference Channel % ------------------------------------------------------------ % 6 | R.4 % 15 | R.5 % 25 | R.6 % 50 | R.7 % 75 | R.8 % 100 | R.9 % ------------------------------------------------------------ [waveform,LTEGrid,info] = lteRMCDLTool(enb,[1;0;0;1]); %%In this example, the Input data sample rate parameter is set to |Use % maximum input data sample rate|. Hence, the LTE OFDM Demodulator block % expects input samples at 30.72 MHz sample rate to correspond to the % size of the FFT. The sample rate of |waveform| depends on NDLRB, % so the generated waveform might be at a lower rate. To generate % a test waveform, upsample the signal to 30.72 MHz, normalize the power, % and add noise. Scale the signal magnitude to be in the range -1 to 1 for % easy conversion to fixed-point types. FsRx = 30.72e6; FsTx = info.SamplingRate; % -------------------------------------------------------------- % NDLRB | Sampling Rate (MHz) % ------------------------------------------------------------ % 1) 6 | 1.92 % 2) 15 | 3.84 % 3) 25 | 7.68 % 4) 50 | 15.36 % 5) 75 | 30.72 % 6) 100 | 30.72 % ------------------------------------------------------------ tx = resample(waveform,FsRx,FsTx); avgTxPower = (tx' * tx) / length(tx); tx = tx / sqrt(avgTxPower); n = 0.1 * complex(randn(length(tx),1),randn(length(tx),1)); rx = tx + n; rx = 0.99 * rx / max(abs(rx));
Используйте функцию LTE Toolbox в качестве поведенческой ссылки для демодуляции OFDM. Понизить форму тестового сигнала до фактической частоты дискретизации для выбранного NDLRB. Затем компенсируют масштабный коэффициент, который является результатом разности размеров БПФ.
refInput = resample(rx,FsTx,FsRx); refGrid = lteOFDMDemodulate(info,refInput); refGrid = refGrid * FsRx/FsTx;
Настройте входные данные модели Simulink™. Преобразование тестового сигнала в тип данных с фиксированной точкой для моделирования результата из 12-битного АЦП. Время выборки Simulink составляет 30,72 МГц.
Модель Simulink импортирует поток образцов dataIn и validIn, входные параметры NDLRB и cyclicPrefixTypeи переменная stopTime.
NDLRB = info.NDLRB; if strcmp(info.CyclicPrefix,'Normal') cyclicPrefixType = false; else cyclicPrefixType = true; end sampling_time = 1/FsRx; dataIn = fi(rx,1,12,11); validIn = true(length(dataIn),1);
Вычислите время моделирования Simulink с учетом задержки блока демодулятора OFDM LTE. Задержка БПФ фиксирована, поскольку блок использует БПФ из 2048 точек. Предположим максимально возможную задержку операций удаления циклического префикса и выбора поднесущей. Моделирование должно выполняться достаточно долго, чтобы применить входные данные плюс задержка конечного входного символа.
FFTlatency = 4137; CPRemove_max = 512; % extended CP carrierSelect_max = 424; % NDRLB 100 stopTime = sampling_time*(length(dataIn)+CPRemove_max+FFTlatency+carrierSelect_max);
Запустите модель Simulink. Модель импортирует dataIn и validIn структуры и возвраты dataOut и validOut.
modelname = 'LTEOFDMDemodulatorExample'; open(modelname) set_param(modelname,'SampleTimeColors','on'); set_param(modelname,'SimulationCommand','Update'); sim(modelname)

Сравните выходные данные модели Simulink с поведенческими результатами и вычислите SQNR блока демодулятора OFDM, оптимизированного для HDL.
rxgridSimulink = dataOut(validOut); figure('units','normalized','outerposition',[0 0 1 1]) subplot(2,1,1) plot(real(refGrid(:))) hold on plot(squeeze(real(rxgridSimulink))) legend('Real part of behavioral waveform','Real part of HDL-optimized waveform') title('Comparison of LTE Time-Domain Downlink Waveform') xlabel('OFDM Subcarriers') ylabel('Real Part of Time-Domain Waveform') subplot(2,1,2) plot(imag(refGrid(:))) hold on plot(squeeze(imag(rxgridSimulink))) legend('Imag part of behavioral waveform','Imag part of HDL-optimized waveform') title('Comparison of LTE Time-Domain Downlink Waveform') xlabel('OFDM Subcarriers') ylabel('Imag Part of Time-Domain Waveform') sqnrRealdB = 10*log10(var(real(rxgridSimulink))/abs(var(real(rxgridSimulink))-var(real(refGrid(:))))); sqnrImagdB = 10*log10(var(imag(rxgridSimulink))/abs(var(imag(rxgridSimulink))-var(imag(refGrid(:))))); fprintf('\n LTE OFDM Demodulator: \n SQNR of real part is %.2f dB',sqnrRealdB) fprintf('\n SQNR of imaginary part is %.2f dB\n',sqnrImagdB)
LTE OFDM Demodulator: SQNR of real part is 25.98 dB SQNR of imaginary part is 23.23 dB
