Приложение блока FFT 1536 в LTE Демодуляция OFDM

В этом примере показано, как использовать блок FFT 1536 в LTE демодуляция OFDM.

  1. Сгенерируйте форму волны передатчика.

  2. Удалите циклический префикс.

  3. Подготовьте входные параметры к БПФ 1 536 симуляций.

  4. Сформируйте сетку ресурса.

  5. Сравните символы CellRS от сетки с тем из lteCellRS функция.

  6. Сгенерируйте HDL-код.

Сгенерируйте форму волны передатчика.

cfg = lteTestModel('1.1','15MHz');
cfg.TotSubframes = 1;
tx = lteTestModelTool(cfg);

Вышеупомянутая генерация сигналов передатчика использует БПФ с 2048 точками, который приводит к масштабному коэффициенту$\frac{1}{2048}$ в модуляции OFDM. Если бы БПФ с 1536 точками использовался, форма волны имела бы масштабный коэффициент$\frac{1}{1536}$. Этот пример умножает форму волны на фактор$\frac{2048}{1536}$ достигнуть правильного масштабирования.

tx = tx*(2048/1536);

Чтобы достигнуть 23.04 члены Шотландского парламента, производящие уровень, передискретизируйте tx выборки $\frac{3}{4} = \frac{23.04e6}{30.72e6}$

rx = resample(tx,3,4); % rate conversion from 30.72Msps to 23.04Msps

Удалите циклический префикс. Первый символ каждого паза имеет 12 дополнительных выборок CP.

rx(11520+1:11520+12) = []; % discard 12 CP samples in slot 2
rx(1:12) = []; % discard 12 CP samples in slot 1
rx = reshape(rx,108+1536,14); % reshape to form 14 OFDM symbols
rx(1:108,:) = []; % discard remaining 108 CP samples from all symbols

Подготовьте входные параметры к БПФ 1 536 симуляций.

SampleTime = 4.3e-8; % 1/23.04e6;
data = rx(:);
valid = true(1536*14,1);
data = fi(data,1,22,20);

dataIn = timeseries(data,(0:length(data)-1).'*SampleTime);
validIn = timeseries(valid,(0:length(valid)-1).'*SampleTime);

FFT1536Latency = 3180;

NofClks = FFT1536Latency+length(data); % number of simulation clock cycles
StopTime = (NofClks)*SampleTime;

open_system HDLFFT1536model;
sim HDLFFT1536model;

simOut = dataOut(validOut);
simOut = double(simOut(:)*1536);

Сформируйте сетку ресурса и удалите поднесущую DC.

fftOut = fftshift(reshape(simOut,1536,14));
resourceGrid = fftOut(318+1:318+1+900,:);
resourceGrid(900/2+1,:) = [];

Сравните символы CellRS от сетки с символами, возвращенными в lteCellRS функция.

cellRS = lteCellRS(cfg);
cellRSIndices = lteCellRSIndices(cfg);
simCellRS = resourceGrid(cellRSIndices);
figure;
plot(real(simCellRS),imag(simCellRS),'o','MarkerSize',15);
hold on;
plot(real(cellRS),imag(cellRS),'*','MarkerSize',10)
legend('CellRS symbols from the FFT 1536 simulation grid'...
    ,'CellRS symbols from lteCellRS function','Location','southoutside')
axis([-1 1 -1 1]);

Чтобы сгенерировать HDL-код для блока FFT 1536, у вас должна быть лицензия HDL Coder™. Чтобы сгенерировать HDL-код от блока FFT 1536 в этой модели, щелкните правой кнопкой по блоку и выберите Create Subsystem from Selection. Затем щелкните правой кнопкой по подсистеме и выберите HDL Code> Generate HDL Code for Subsystem.

Смотрите также

Блоки

Для просмотра документации необходимо авторизоваться на сайте