В этом примере показано, как реализовать модель синхронизации времени и частоты 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']);
Подсистема 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 кГц.
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 Toolbox) | wlanFineCFOEstimate
(WLAN Toolbox) | wlanPacketDetect
(WLAN Toolbox) | wlanSymbolTimingEstimate
(WLAN Toolbox)