В этом примере показано, как использовать блок FFT 1536 в LTE демодуляция OFDM.
Сгенерируйте форму волны передатчика.
Удалите циклический префикс.
Подготовьте входные параметры к БПФ 1 536 симуляций.
Сформируйте сетку ресурса.
Сравните символы CellRS от сетки с тем из lteCellRS
функция.
Сгенерируйте HDL-код.
Сгенерируйте форму волны передатчика.
cfg = lteTestModel('1.1','15MHz'); cfg.TotSubframes = 1; tx = lteTestModelTool(cfg);
Вышеупомянутая генерация сигналов передатчика использует БПФ с 2048 точками, который приводит к масштабному коэффициенту в модуляции OFDM. Если бы БПФ с 1536 точками использовался, форма волны имела бы масштабный коэффициент. Этот пример умножает форму волны на фактор достигнуть правильного масштабирования.
tx = tx*(2048/1536);
Чтобы достигнуть 23.04 члены Шотландского парламента, производящие уровень, передискретизируйте tx
выборки
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.