Время 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);

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 и коррекция

Рассмотрение запуска пакета от Крупной подсистемы Синхронизации Времени, Крупная подсистема Оценки и Коррекции 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, чтобы удалить любой остаток, оставленный после крупной коррекции частоты, выполняет прекрасную оценку 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 кГц.

Сравнение 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');

Смотрите также

Функции