В этом примере показано, как реализовать время WLAN и модель синхронизации частоты, которая оптимизирована для генерации HDL-кода и аппаратной реализации. Время и синхронизация частоты являются ключевыми шагами, чтобы восстановить информацию о пакете беспроводной локальной сети (WLAN).
Модель оценивает и корректирует время и смещения частоты в полученном сигнале WLAN, которые введены беспроводным каналом и ухудшениями фронтенда радиочастоты (RF). Первоначально, модель выполняет крупное время и оценку частоты и коррекции на полученном сигнале. Затем модель точно настраивает время и оценку частоты и коррекции на полученном сигнале удалить любые остаточные смещения. Модель поддерживает 20, 40, и опции полосы пропускания на 80 МГц для невысокой пропускной способности (Non-HT), высокой пропускной способности (HT), очень высокой пропускной способности (VHT) и высокоэффективных (HE) форматов системы координат. Пример сравнивает модель Simulink® выход с функциями MATLAB® при помощи функций WLAN Toolbox™.
Пакетное декодирование WLAN включает эти этапы: время и синхронизация частоты, демодуляция OFDM, оценка канала & эквализация, обнаружение формата, декодирование сигнала и декодирование данных.
В этой процедуре декодирования только время и этап синхронизации частоты могут быть оптимизированы для генерации HDL-кода. Поддержка HDL расширена для других этапов в будущем релизе.
В MATLAB, запуск эта команда, чтобы открыть модель в качестве примера.
model_name = 'wlanhdlTimeAndFrequencySynchronization';
open_system(model_name);
WLANTimeAndFrequencySynchronization
модель содержит эти подсистемы: Крупная Синхронизация Времени, Крупная Оценка CFO и Коррекция, Прекрасная Синхронизация Времени, и Прекрасная Оценка CFO и Коррекция.
В MATLAB, запуск эта команда, чтобы открыть подсистему WLANTimeAndFrequencySynchronization.
open_system([model_name '/WLANTimeAndFrequencySynchronization'],'force');
Крупный алгоритм синхронизации времени реализует двойное раздвижное окно для корреляции как описано в функции MATLAB wlanPacketDetect.m
. Крупная подсистема Синхронизации Времени использует автокорреляцию устаревшего короткого учебного поля (L-STF) символы, чтобы возвратить предполагаемое смещение запуска пакет. Пиковая подсистема Детектора сравнивает метрики корреляции с энергией сигналов и определяет запуск пакета. На следующем этапе прекрасное обнаружение символьной синхронизации совершенствовало этот пакет, запускают оценку с помощью устаревшего длинного учебного поля (L-LTF).
В MATLAB, запуск эта команда, чтобы открыть Крупную подсистему Синхронизации Времени.
open_system([model_name '/WLANTimeAndFrequencySynchronization/Coarse Time Sync']);
Рассмотрение запуска пакета от Крупной подсистемы Синхронизации Времени, Крупная подсистема Оценки и Коррекции CFO выполняет автокорреляцию на входе с помощью L-STF и составляет в среднем расчетные метрики корреляции по окну длительности L-STF. Затем подсистема оценивает несущую частоту возмещена (CFO) путем рассмотрения угла законченной метрики.
В MATLAB, запуск эта команда, чтобы открыть Крупную подсистему Оценки CFO.
open_system([model_name '/WLANTimeAndFrequencySynchronization/Coarse CFO Estimation and Correction/Coarse CFO Estimation']);
Эта подсистема использует оценку CFO, чтобы откорректировать смещение частоты.
В MATLAB, запуск эта команда, чтобы открыть Крупную подсистему Коррекции CFO.
open_system([model_name '/WLANTimeAndFrequencySynchronization/Coarse CFO Estimation and Correction/Coarse CFO Correction']);
Прекрасная подсистема Синхронизации Времени занимает грубо откорректированное время и форму волны смещения частоты для прекрасной синхронизации смещения времени. Крест подсистемы Коррелятора коррелирует полученный сигнал с локально сгенерированным L-LTF. Пиковая подсистема Искателя ищет максимальный пик корреляции и затем синхронизирует сигнал.
В MATLAB, запуск эта команда, чтобы открыть Прекрасную подсистему Синхронизации Времени.
open_system([model_name '/WLANTimeAndFrequencySynchronization/Fine Time Sync']);
Прекрасная подсистема Оценки и Коррекции CFO берет синхронизировавшую форму волны прекрасного времени в качестве входа для точной настройки смещения частоты. Эта подсистема оценивает и корректирует CFO, чтобы удалить любой остаток, оставленный после крупной коррекции частоты, выполняет прекрасную оценку CFO, похожую на крупную оценку при помощи L-LTF вместо L-STF, и оценивает частоту, возмещенную путем рассмотрения угла усредненных корреляций.
В MATLAB, запуск эта команда, чтобы открыть Прекрасную подсистему Оценки CFO.
open_system([model_name '/WLANTimeAndFrequencySynchronization/Fine CFO Estimation and Correction/Fine CFO Estimation']);
Прекрасная подсистема Коррекции CFO использует предполагаемый прекрасный CFO для исправления остаточного смещения частоты и затем выводит откорректированный WLAN полученный сигнал.
В MATLAB, запуск эта команда, чтобы открыть Прекрасную подсистему Коррекции CFO.
open_system([model_name '/WLANTimeAndFrequencySynchronization/Fine CFO Estimation and Correction/Fine CFO Correction']);
Модель в качестве примера принимает принятую форму волны как вход наряду с допустимым, и запустите сигналы. Модель возвращает синхронизируемую форму волны как выход наряду с допустимым сигналом. Другие выходные параметры в примере включают обнаруженный флаг пакета, оценку CFO наряду с его допустимым и количеством пакетов, обнаруженных как выход. Оценка CFO является суммой крупного CFO и прекрасных оценок CFO. wlanFrontEndInit
скрипт предоставляет вход модели. wlanWaveformGenerator.m
функция в скрипте генерирует кадр на 20 МГц VHT, который передается через канал TGac с профилем задержки Модели A. Аддитивный белый Гауссов шум (AWGN) в отношении сигнал-шум (SNR) на 30 дБ добавляется с другими ухудшениями канала CFO на 10 кГц и смещением синхронизации '25'.
fprintf('\n Simulating HDL time and frequency synchronization \n'); out = sim('wlanhdlTimeAndFrequencySynchronization.slx'); fprintf('\n HDL simulation complete. %d packet detected.',out.numPacketsDetected(end));
Simulating HDL time and frequency synchronization HDL simulation complete. 1 packet detected.
Выходные параметры примера проверяются при помощи функций WLAN Toolbox. Задайте ту же входную форму волны для модели Simulink и ее MATLAB эквивалентная функция и затем сравните выходные параметры.
fprintf('\n Comparing WLAN MATLAB time and frequency synchronization \n') inputWaveformRef = inputWaveform(1:end-length(Hd.Numerator)+1); inputWaveformRef = filter(Hd.Numerator,1,inputWaveformRef); % WLAN packet detection [startOffset,Mn]=wlanPacketDetect(inputWaveformRef,CBW); rxWave1 = inputWaveformRef(startOffset+1:end); % Coarse CFO estimation and correction coarseFreqOff = wlanCoarseCFOEstimate(rxWave1,CBW); rxWave2 = hwlanFrequencyOffsetCorrect(rxWave1,fs,coarseFreqOff); % Fine time synchronization searchBufferLLTF = rxWave2(1:wlanConfig.lstfLen*10+wlanConfig.lltfLen*3); [offset,MN] = wlanSymbolTimingEstimate(searchBufferLLTF,CBW); rxWave3 = rxWave2(offset+1:end); % Fine CFO estimation and correction LTFs = rxWave3(10*wlanConfig.lstfLen+(1:wlanConfig.lltfLen*2)); fineFreqOff = wlanFineCFOEstimate(LTFs,CBW); matOut = hwlanFrequencyOffsetCorrect(rxWave3,fs,fineFreqOff); fprintf('\n MATLAB simulation complete. \n'); simData = out.syncedData; simValid = out.validOut; simOut = double(simData(simValid));
Comparing WLAN MATLAB time and frequency synchronization MATLAB simulation complete.
Пример синхронизирует время и частоту входной формы волны, сгенерированной с помощью wlanFrontEndInit.m
скрипт и выходные параметры время и частота откорректировали форму волны как показано в этой схеме синхронизации.
Схема синхронизации показывает что выход rxOut
синхронизируется в начале L-STF и что предполагаемое смещение частоты составляет 9,695 кГц, который является близко к введенному смещению частоты 10 кГц.
plot(real(matOut)); hold on; simOut = simOut(1:length(matOut)); plot(real(simOut)); title('Comparison of Real Part of WLAN HDL Simulink and MATLAB reference output','FontSize', 10); xlabel('Sample Number'); ylabel('Amplitude'); legend('Real Part of MATLAB reference output','Real part of Simulink output'); figure; plot(imag(matOut)); hold on; simOut = simOut(1:length(matOut)); plot(imag(simOut)); title('Comparison of Imaginary Part of WLAN HDL Simulink and MATLAB reference output','FontSize', 10); xlabel('Sample Number'); ylabel('Amplitude'); legend('Imaginary Part of MATLAB reference output','Imaginary part of Simulink Output');
wlanPacketDetect
(WLAN Toolbox) | wlanFineCFOEstimate
(WLAN Toolbox) | wlanCoarseCFOEstimate
(WLAN Toolbox) | wlanSymbolTimingEstimate
(WLAN Toolbox)