HDL-синхронизация по времени и частоте WLAN

В этом примере показано, как реализовать модель синхронизации времени и частоты 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);

The WLANTimeAndFrequencySynchronization модель содержит эти подсистемы: Грубая синхронизация времени, Грубая оценка и коррекция CFO, Точная синхронизация времени и Тонкая оценка и коррекция CFO.

В MATLAB запустите эту команду, чтобы открыть подсистему WLANTimeAndFrequencySynchronization.

open_system([model_name '/WLANTimeAndFrequencySynchronization'],'force');

Грубая синхронизация времени

Алгоритм грубой временной синхронизации реализует двойное скользящее окно для корреляции, как описано в функции MATLAB wlanPacketDetect.m. Подсистема грубой синхронизации времени использует автокорреляцию устаревших символов короткого поля обучения (L-STF), чтобы вернуть предполагаемое смещение запуска пакета. Подсистема Peak Detector сравнивает метрики корреляции с энергией сигналов и определяет начало пакета. На следующем этапе обнаружение тонкого символа синхронизации уточняет эту оценку начала пакета, используя устаревшее длинное поле обучения (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. Подсистема Peak Searcher ищет максимальный пик корреляции и затем синхронизирует сигнал.

В MATLAB запустите эту команду, чтобы открыть подсистему Fine Time Sync.

open_system([model_name '/WLANTimeAndFrequencySynchronization/Fine Time Sync']);

Точная оценка и коррекция CFO

Подсистема Fine CFO Estimation and Correction принимает сигнал с синхронизацией по времени в качестве входов для точной настройки смещения частоты. Эта подсистема оценивает и корректирует CFO, чтобы удалить любой остаток, оставшийся после коррекции грубой частоты, выполняет тонкую оценку CFO, подобную грубой оценке, используя L-LTF вместо L-STF, и оценивает смещение частоты, принимая во внимание угол усредненных корреляций.

В MATLAB запустите эту команду, чтобы открыть подсистему Fine CFO Estimation.

open_system([model_name '/WLANTimeAndFrequencySynchronization/Fine CFO Estimation and Correction/Fine CFO Estimation']);

Подсистема точной коррекции CFO использует оцененную точную CFO для коррекции смещения остаточной частоты, а затем выводит исправленный принятый сигнал WLAN.

В MATLAB запустите эту команду, чтобы открыть подсистему Fine CFO Correction.

open_system([model_name '/WLANTimeAndFrequencySynchronization/Fine CFO Estimation and Correction/Fine CFO Correction']);

Интерфейс модели и верификация

Модель примера принимает принятую форму волны как вход вместе с действительными и стартовыми сигналами. Модель возвращает синхронизированную форму волны как выход вместе с действительным сигналом. Другие выходы в примере включают в себя флаг обнаружения пакетов, оценку CFO вместе с ее действительным и количество пакетов, обнаруженных в качестве выхода. Оценка CFO является суммой грубых оценок CFO и мелких CFO. The wlanFrontEndInit скрипт предоставляет вход модели. The wlanWaveformGenerator.m функция в скрипте генерирует кадр VHT 20 МГц, который передается через канал TGac с профилем задержки модели A. Добавляется аддитивный белый Гауссов шум (AWGN) при соотношении сигнал/шум (ОСШ) 30 дБ с другими нарушениями канала 10 кГц

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 кГц.

Сравнение выхода Simulink и эталонного выхода MATLAB

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');

См. также

Функции