В этом примере показано, как производительность ссылки IEEE® 802.11ac™ может улучшаться beamforming передача, когда информация о состоянии канала доступна в передатчике.
Передайте энергию особого внимания beamforming к получателю, чтобы улучшить ОСШ ссылки. В этой схеме передатчик называется формирователем луча, и получатель называется beamformee. Держащаяся матрица используется формирователем луча, чтобы направить энергию к beamformee. Держащаяся матрица вычисляется с помощью информации о состоянии канала, полученной посредством измерений канала. В IEEE 802.11ac [1] эти измерения получены путем звучания каналом между формирователем луча и beamformee. Чтобы звучать как канал, формирователь луча отправляет NDP (Пустой Пакет Данных) к beamformee. beamformee использует информацию о канале, предоставленную путем звучания, чтобы вычислить матрицу обратной связи. Эта матрица является fedback к формирователю луча в сжатом формате. Формирователь луча может затем использовать матрицу обратной связи, чтобы создать держащуюся матрицу и передачи beamform к beamformee. Процесс формирования держащейся матрицы показывают в схеме ниже.
В IEEE 802.11ac отдельный пользователь beamformee возможность не обязателен. Поэтому передатчику мультиантенны, вероятно, придется использовать различную схему передать пакеты к получателю, который не может действовать как beamformee. Одна такая схема является пространственным расширением. Пространственное расширение позволяет многим пространственно-временным потокам быть переданными на большем количестве антенн передачи. Используя пространственное расширение может обеспечить маленькое усиление разнообразия передачи в каналах с плоским исчезновением когда по сравнению с прямым отображением пространственно-временных потоков, чтобы передать антенны [2].
В этом примере 4x2 настройка MIMO рассматривается между передатчиком и получателем с двумя пространственно-временными потоками, используемыми в пакетной передаче данных. Сначала сценарий получателя, который не способен к тому, чтобы быть beamformee, рассматривается. Передача сделана с помощью пространственного расширения, и символы данных восстанавливаются и измеренное качество сигнала. Показать преимущества передачи beamforming пакет данных затем передается по той же реализации канала, но на этот раз с помощью передачи beamforming. Производительность этих двух схем затем сравнена. Эти этапы показывают в схеме ниже.
4x2 настройка MIMO используется в этом примере с 2 пространственно-временными потоками.
NumTxAnts = 4; % Number of transmit antennas NumSTS = 2; % Number of space-time streams NumRxAnts = 2; % Number of receive antennas
Формат определенная настройка формы волны VHT описан с помощью объекта настройки формата VHT. В этом примере форма волны сконфигурирована с пропускной способностью на 20 МГц и настройкой MIMO, заданной выше.
cfgVHT = wlanVHTConfig; cfgVHT.ChannelBandwidth = 'CBW20'; cfgVHT.APEPLength = 4000; cfgVHT.NumTransmitAntennas = NumTxAnts; cfgVHT.NumSpaceTimeStreams = NumSTS; cfgVHT.MCS = 4; % 16-QAM, rate 3/4
В этом примере модель канала TGac используется с Моделью-B профиля задержки. Реализацией канала управляют с seed, чтобы позволить воспроизводимость.
tgacChannel = wlanTGacChannel; tgacChannel.DelayProfile = 'Model-B'; tgacChannel.ChannelBandwidth = cfgVHT.ChannelBandwidth; tgacChannel.SampleRate = wlanSampleRate(cfgVHT); tgacChannel.NumReceiveAntennas = NumRxAnts; tgacChannel.NumTransmitAntennas = NumTxAnts; tgacChannel.TransmitReceiveDistance = 100; % Meters tgacChannel.RandomStream = 'mt19937ar with seed'; tgacChannel.Seed = 70; % Seed to allow repeatability
Шум добавляется к форме волны области времени при выходе канала со степенью, noisePower
.
noisePower = -37; % dBW
Setup другие объекты и переменные для симуляции.
% Recovery configuration cfgRec = wlanRecoveryConfig('PilotPhaseTracking','None'); % Indices for extracting fields ind = wlanFieldIndices(cfgVHT); % AWGN channel to add noise with a specified noise power. The random % process controlling noise generation is seeded to allow repeatability. awgnChannel = comm.AWGNChannel; awgnChannel.RandomStream = 'mt19937ar with seed'; awgnChannel.Seed = 5; awgnChannel.NoiseMethod = 'Variance'; awgnChannel.Variance = 10^(noisePower/10); % Calculate the expected noise variance after OFDM demodulation noiseVar = vhtBeamformingNoiseVariance(noisePower,cfgVHT); % Number of spatial streams Nss = NumSTS/(cfgVHT.STBC+1); % Get the number of occupied subcarriers in VHT fields ofdmInfo = wlanVHTOFDMInfo('VHT-Data',cfgVHT); Nst = ofdmInfo.NumTones; % Generate a random PSDU which will be transmitted rng(0); % Set random state for repeatability psdu = randi([0 1],cfgVHT.PSDULength*8,1);
Сначала передача сделана с помощью пространственного расширения. Этот тип передачи может быть сделан передатчиком мультиантенны к получателю, который не способен к тому, чтобы быть beamformee. SpatialMapping
свойство объекта настройки формата позволяет различным пространственным схемам отображения быть выбранными. В этом примере пример используется пространственная матрица расширения, обеспеченная в Разделе 2.3.11.1.1.2 из [3]. Поэтому 'Custom'
пространственное отображение сконфигурировано. Пользовательская пространственная матрица отображения используется путем присвоения SpatialMappingMatrix
из объекта настройки формата. Эта матрица описывает отображение каждой поднесущей для каждого пространственно-временного потока ко всем антеннам передачи. Поэтому размером пространственной используемой матрицы отображения является Nst-by-Nsts-by-Nt
. Nst
количество занятых поднесущих, Nsts
количество пространственно-временных потоков и Nt
количество антенн передачи. Пространственная матрица отображения копирует некоторые пространственно-временные потоки, чтобы сформировать желаемое количество потоков передачи.
% Configure a spatial expansion transmission vhtSE = cfgVHT; vhtSE.SpatialMapping = 'Custom'; % Use custom spatial expansion matrix vhtSE.SpatialMappingMatrix = helperSpatialExpansionMatrix(vhtSE); % Generate waveform tx = wlanWaveformGenerator(psdu,vhtSE); % Pass waveform through a fading channel and add noise. Trailing zeros % are added to allow for channel filter delay. rx = tgacChannel([tx; zeros(15,NumTxAnts)]); % Allow same channel realization to be used subsequently reset(tgacChannel); rx = awgnChannel(rx); % Allow same noise realization to be used subsequently reset(awgnChannel); % Estimate symbol timing tOff = wlanSymbolTimingEstimate(rx(ind.LSTF(1):ind.LSIG(2),:),vhtSE.ChannelBandwidth); % Channel estimation vhtltf = rx(tOff+(ind.VHTLTF(1):ind.VHTLTF(2)),:); vhtltfDemod = wlanVHTLTFDemodulate(vhtltf,vhtSE); chanEstSE = wlanVHTLTFChannelEstimate(vhtltfDemod,vhtSE);
Полученное поле данных демодулируется и компенсируется, чтобы восстановить символы OFDM для каждого пространственного потока.
% Demodulate and equalize the data
vhtdata = rx(tOff+(ind.VHTData(1):ind.VHTData(2)),:);
[~,~,symSE] = wlanVHTDataRecover(vhtdata,chanEstSE,noiseVar,vhtSE,cfgRec);
Созвездие каждого пространственного потока построено ниже.
refSym = wlanReferenceSymbols(cfgVHT); % Reference constellation seConst = vhtBeamformingPlotConstellation(symSE,refSym, ... 'Spatial Expansion Transmission Equalized Symbols');
Отклонение в созвездии является приблизительно тем же самым для каждого пространственного потока, когда SNRs являются приблизительно тем же самым. Это вызвано тем, что средняя степень в канале является в среднем приблизительно тем же самым на пространственно-временной поток:
disp('Mean received channel power per space-time stream with spatial expansion: ') for i = 1:NumSTS fprintf(' Space-time stream %d: %2.2f W\n',i, ... sum(mean(chanEstSE(:,i,:).*conj(chanEstSE(:,i,:)),1),3)) end
Mean received channel power per space-time stream with spatial expansion: Space-time stream 1: 0.73 W Space-time stream 2: 0.50 W
Когда получатель способен к тому, чтобы быть beamformee, beamformed передача может создать более высокий ОСШ по сравнению с пространственным расширением. Мы теперь покажем преимущество имения в наличии информации о состоянии канала, чтобы создать и использовать держащуюся матрицу. Чтобы вычислить beamforming держащаяся матрица, NDP передается через канал. 'Direct'
пространственное отображение используется в передаче NDP, и количество пространственно-временных потоков сконфигурировано, чтобы совпадать с количеством антенн передачи. Это позволяет VHT-LTF использоваться, чтобы звучать как каналы между каждой из антенн передачи и получить антенны. Расчетная beamforming матрица затем используется к beamform передача через канал. Та же реализация канала используется в звучании и передаче данных и нет никакого сжатия обратной связи между beamformee и формирователем луча, поэтому beamforming может рассматриваться как совершенный в этом примере.
% Configure a sounding packet vhtSound = cfgVHT; vhtSound.APEPLength = 0; % NDP so no data vhtSound.NumSpaceTimeStreams = NumTxAnts; vhtSound.SpatialMapping = 'Direct'; % Each TxAnt carries a STS % Generate sounding waveform soundingPSDU = []; tx = wlanWaveformGenerator(soundingPSDU,vhtSound); % Pass sounding waveform through the channel and add noise. Trailing zeros % are added to allow for channel filter delay. rx = tgacChannel([tx; zeros(15,NumTxAnts)]); % Allow same channel realization to be used subsequently reset(tgacChannel); rx = awgnChannel(rx); % Allow same noise realization to be used subsequently reset(awgnChannel); % Estimate symbol timing tOff = wlanSymbolTimingEstimate(rx(ind.LSTF(1):ind.LSIG(2),:),vhtSound.ChannelBandwidth);
Оценка канала выполняется с помощью звучащего пакета, чтобы оценить фактический ответ канала между каждой передачей и получить антенну.
% Channel estimation vhtLLTFInd = wlanFieldIndices(vhtSound,'VHT-LTF'); vhtltf = rx(tOff+(vhtLLTFInd(1):vhtLLTFInd(2)),:); vhtltfDemod = wlanVHTLTFDemodulate(vhtltf,vhtSound); chanEstSound = wlanVHTLTFChannelEstimate(vhtltfDemod,vhtSound);
Канал оценил, что использование wlanVHTLTFChannelEstimate включает циклические сдвиги, примененные в передатчик к каждому пространственно-временному потоку. Чтобы вычислить beamforming держащаяся матрица, циклические сдвиги, примененные в передатчике, удалены из оценки канала.
% Remove impact of cyclic shift from channel estimate chanEstSound = vhtBeamformingRemoveCSD(chanEstSound, ... vhtSound.ChannelBandwidth,vhtSound.NumSpaceTimeStreams);
В этом примере beamforming держащаяся матрица вычисляется с помощью сингулярного разложения (SVD) [3]. SVD матрицы канала приводит к двум унитарным матрицам, U
и V
, и диагональная матрица сингулярных значений S
. Первый NumSTS
столбцы V
на поднесущую используются в качестве beamforming держащаяся матрица. SVD вычисляется с помощью функции svd.
chanEstPerm = permute(chanEstSound,[3 2 1]); % permute to Nr-by-Nt-by-Nst V = zeros(Nst,NumTxAnts,NumRxAnts); for i = 1:Nst [U,S,V(i,:,:)] = svd(chanEstPerm(:,:,i),'econ'); end steeringMatrix = V(:,:,1:NumSTS); % Nst-by-Nt-by-Nsts
beamforming, регулирующий матрицу, вычисленную выше, применяется как пользовательская пространственная матрица отображения и используется, чтобы отправить данные через тот же канал.
% Configure a transmission with beamforming vhtBF = cfgVHT; vhtBF.SpatialMapping = 'Custom'; % Permute steering matrix to Nst-by-Nsts-by-Nt vhtBF.SpatialMappingMatrix = permute(steeringMatrix,[1 3 2]); % Generate beamformed data transmission tx = wlanWaveformGenerator(psdu,vhtBF); % Pass through the channel and add noise. Trailing zeros % are added to allow for channel filter delay. rx = tgacChannel([tx; zeros(15,NumTxAnts)]); rx = awgnChannel(rx); % Estimate symbol timing tOff = wlanSymbolTimingEstimate(rx(ind.LSTF(1):ind.LSIG(2),:),vhtBF.ChannelBandwidth); % Channel estimation vhtltf = rx(tOff+(ind.VHTLTF(1):ind.VHTLTF(2)),:); vhtltfDemod = wlanVHTLTFDemodulate(vhtltf,vhtBF); chanEstBF = wlanVHTLTFChannelEstimate(vhtltfDemod,vhtBF);
Полученное поле данных демодулируется и компенсируется, чтобы восстановить символы OFDM для каждого пространственного потока.
% Demodulate and equalize the data
vhtdata = rx(tOff+(ind.VHTData(1):ind.VHTData(2)),:);
[~,~,symBF] = wlanVHTDataRecover(vhtdata,chanEstBF,noiseVar,vhtBF,cfgRec);
Компенсируемое созвездие для каждого пространственного потока построено ниже. Обратите внимание на то, что высший порядок пространственный поток имеет большее отклонение. Это происходит из-за упорядоченных сингулярных значений каналов, используемых в SVD beamforming.
bfConst = vhtBeamformingPlotConstellation(symBF,refSym, ... 'Beamformed Transmission Equalized Symbols');
Это упорядоченное расположение также отображается в средней степени полученных пространственно-временных потоков. Степень полученного первого пространственно-временного потока больше, чем второй пространственно-временной поток. Это вызвано тем, что полученная сила сигнала является функцией сингулярных значений канала, который SVD заказывает уменьшающимся способом.
disp('Mean received channel power per space-time stream with SVD transmit beamforming: ') for i = 1:NumSTS fprintf(' Space-time stream %d: %2.2f W\n',i, ... sum(mean(chanEstBF(:,i,:).*conj(chanEstBF(:,i,:)),1),3)) end
Mean received channel power per space-time stream with SVD transmit beamforming: Space-time stream 1: 2.08 W Space-time stream 2: 0.45 W
Фигура ниже строит компенсируемое созвездие от пространственного расширения и beamformed передач для всех пространственных потоков. Отметьте улучшенное созвездие с помощью основанной на SVD передачи beamforming.
str = sprintf('%dx%d',NumTxAnts,NumRxAnts); compConst = vhtBeamformingPlotConstellation([symSE(:) symBF(:)],refSym, ... 'Beamformed Transmission Equalized Symbols', ... {[str ' Spatial Expansion'],[str ' Transmit Beamforming']});
Улучшение может также быть измерено через RMS и величину вектора максимальной погрешности (EVM). EVM является мерой демодулируемого качества сигнала.
EVM = comm.EVM; EVM.AveragingDimensions = [1 2]; % Average over all subcarriers and symbols EVM.MaximumEVMOutputPort = true; EVM.ReferenceSignalSource = 'Estimated from reference constellation'; EVM.ReferenceConstellation = refSym; [rmsEVMSE,maxEVMSE] = EVM(symSE); % EVM using spatial expansion [rmsEVMBF,maxEVMBF] = EVM(symBF); % EVM using beamforming for i = 1:Nss fprintf(['Spatial stream %d EVM:\n' ... ' Spatial expansion: %2.1f%% RMS, %2.1f%% max\n' ... ' Transmit beamforming: %2.1f%% RMS, %2.1f%% max\n'], ... i,rmsEVMSE(i),maxEVMSE(i),rmsEVMBF(i),maxEVMBF(i)); end
Spatial stream 1 EVM: Spatial expansion: 9.2% RMS, 44.8% max Transmit beamforming: 2.0% RMS, 8.6% max Spatial stream 2 EVM: Spatial expansion: 9.2% RMS, 52.3% max Transmit beamforming: 4.1% RMS, 12.7% max
Этот пример демонстрирует, что, если получатель способен к тому, чтобы быть beamformee, ОСШ может потенциально быть улучшен, когда передача является beamformed по сравнению с пространственной передачей расширения. Увеличение полученной степени при использовании beamforming может привести к более надежной демодуляции или потенциально даже схеме модуляции и кодирования высшего порядка использоваться в передаче.
В реалистической операционной симуляции производительность beamforming была бы ухудшена из-за задержки между вычислением информации о состоянии канала и обратной связью квантованием обратной связи и beamformee. Для получения дополнительной информации см. [2].
Этот пример использует следующие функции помощника:
Станд. IEEE 802.11ac™-2013 Стандарт IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации - Поправка 4: Улучшения для Очень Высокой Пропускной способности для Операции в Полосах ниже 6 ГГц.
Perahia, Элдэд и Роберт Стейси. Беспроводная связь следующего поколения LANS: 802.11n и 802.11ac. Издательство Кембриджского университета, 2013.
Станд. IEEE 802.11™-2012 Стандарт IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации.