В этом примере показано, как реализовать модель синхронизации времени и частоты WLAN, оптимизированную для генерации кода HDL и реализации аппаратных средств. Синхронизация по времени и частоте является ключевым шагом для восстановления пакетной информации беспроводной локальной сети (WLAN).
Модель оценивает и корректирует временные и частотные сдвиги в принимаемом сигнале WLAN, которые вводятся с помощью искажений радиоканала и радиочастотного (RF) интерфейса. Первоначально модель выполняет грубую оценку времени и частоты и корректировки принятого сигнала. Затем модель точно настраивает оценку времени и частоты и поправки на принятый сигнал, чтобы удалить любые остаточные смещения. Модель поддерживает варианты пропускной способности 20, 40 и 80 МГц для форматов кадров без высокой пропускной способности (Non-HT), высокой пропускной способности (HT), очень высокой пропускной способности (VHT) и высокой эффективности (HE). В примере сравниваются выходные данные модели Simulink ® с функциями MATLAB ® с помощью функций Toolbox™ WLAN.
Декодирование пакетов WLAN включает в себя эти этапы: синхронизация времени и частоты, демодуляция OFDM, оценка и выравнивание канала, обнаружение формата, декодирование сигнала и декодирование данных.

В этой процедуре декодирования только этап синхронизации времени и частоты может быть оптимизирован для генерации кода ЛПВП. Поддержка ЛПВП распространяется и на другие этапы будущего выпуска.
В MATLAB выполните эту команду, чтобы открыть пример модели.
model_name = 'wlanhdlTimeAndFrequencySynchronization';
open_system(model_name);

WLANTimeAndFrequencySynchronization модель содержит следующие подсистемы: грубая синхронизация времени, грубая оценка и коррекция финансового директора, тонкая синхронизация времени и тонкая оценка и коррекция финансового директора.
В MATLAB выполните эту команду для открытия подсистемы WLANTimeAndFrequencySynchronization.
open_system([model_name '/WLANTimeAndFrequencySynchronization'],'force');

Алгоритм грубой временной синхронизации реализует двойное скользящее окно для корреляции, как описано в функции MATLAB. wlanPacketDetect.m. Подсистема грубой синхронизации времени использует автокорреляцию устаревших символов короткого обучающего поля (L-STF) для возврата оцененного смещения начала пакета. Подсистема пикового детектора сравнивает показатели корреляции с энергией сигналов и определяет начало пакета. На следующем этапе обнаружение точного хронирования символа уточняет эту оценку начала пакета с использованием унаследованного длинного обучающего поля (L-LTF).
В MATLAB выполните эту команду, чтобы открыть подсистему грубой синхронизации времени.
open_system([model_name '/WLANTimeAndFrequencySynchronization/Coarse Time Sync']);

Учитывая начало пакета из подсистемы грубой синхронизации по времени, подсистема грубой оценки и коррекции финансового директора выполняет автокорреляцию на входе с использованием L-STF и усредняет вычисленные показатели корреляции по окну длительности L-STF. Затем подсистема оценивает смещение несущей частоты (CFO), рассматривая угол результирующей метрики.
В MATLAB выполните эту команду для открытия подсистемы оценки грубого финансового директора.
open_system([model_name '/WLANTimeAndFrequencySynchronization/Coarse CFO Estimation and Correction/Coarse CFO Estimation']);

Эта подсистема использует оценку финансового директора для коррекции смещения частоты.
В MATLAB выполните эту команду для открытия подсистемы коррекции грубого финансового директора.
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, аналогичную грубой оценке, используя L-LTF вместо L-STF, и оценивает сдвиг частоты с учетом угла усредненных корреляций.
В MATLAB выполните эту команду для открытия подсистемы оценки точного финансового директора.
open_system([model_name '/WLANTimeAndFrequencySynchronization/Fine CFO Estimation and Correction/Fine CFO Estimation']);

Подсистема коррекции точного финансового директора использует расчетный точный финансовый директор для коррекции смещения остаточной частоты, а затем выводит скорректированный принятый сигнал WLAN.
В MATLAB выполните эту команду, чтобы открыть подсистему точной коррекции финансового директора.
open_system([model_name '/WLANTimeAndFrequencySynchronization/Fine CFO Estimation and Correction/Fine CFO Correction']);

Пример модели принимает принятый сигнал в качестве входного сигнала вместе с действительными и начальными сигналами. Модель возвращает синхронизированный сигнал в виде выходного сигнала вместе с действительным сигналом. Другие выходные сигналы в примере включают в себя флаг обнаружения пакета, оценку финансового директора вместе с его действительностью и количество пакетов, обнаруженных как выходные данные. Оценка финансового директора представляет собой сумму грубых оценок финансового директора и мелких оценок финансового директора. wlanFrontEndInit предоставляет входные данные для модели. wlanWaveformGenerator.m функция в сценарии генерирует кадр VHT 20 МГц, который проходит через канал TGac с профилем задержки модели A. Аддитивный белый гауссов шум (AWGN) при отношении сигнал/шум 30 дБ (SNR) добавляется с другими нарушениями канала 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');


wlanCoarseCFOEstimate(Панель инструментов WLAN) | wlanFineCFOEstimate(Панель инструментов WLAN) | wlanPacketDetect(Панель инструментов WLAN) | wlanSymbolTimingEstimate(Панель инструментов WLAN)