В этом примере показано, как генерировать многопользовательский сигнал VHT из отдельных компонентов. Он также показывает, как генерировать ту же самую форму сигнала с помощью wlanWaveformGenerator функция.
Создайте объект конфигурации VHT, указав трех пользователей и три передающие антенны.
vht = wlanVHTConfig('NumUsers',3,'NumTransmitAntennas',3);
Установка числа пространственно-временных потоков для вектора [1 1 1], которая указывает, что каждому пользователю назначен один пространственно-временной поток. Установите позиции пользователя в значение [0 1 2]. Установите идентификатор группы равным 5. Для многопользовательской операции применяются значения идентификатора группы от 1 до 62.
vht.NumSpaceTimeStreams = [1 1 1]; vht.UserPositions = [0 1 2]; vht.GroupID = 5;
Установка различных значений MCS для каждого пользователя.
vht.MCS = [0 2 4];
Установите длину APEP 2000, 1400 и 1800 байт. Каждый элемент соответствует количеству байтов, назначенных каждому пользователю.
vht.APEPLength = [2000 1400 1800]
vht =
wlanVHTConfig with properties:
ChannelBandwidth: 'CBW80'
NumUsers: 3
UserPositions: [0 1 2]
NumTransmitAntennas: 3
NumSpaceTimeStreams: [1 1 1]
SpatialMapping: 'Direct'
MCS: [0 2 4]
ChannelCoding: 'BCC'
APEPLength: [2000 1400 1800]
GuardInterval: 'Long'
GroupID: 5
Read-only properties:
PSDULength: [2000 6008 12019]
Просмотрите значения длины PSDU для трех пользователей. Длина PSDU является функцией как длины APEP, так и значения MCS.
vht.PSDULength
ans = 1×3
2000 6008 12019
Отображение индексов полей для формы сигнала VHT.
ind = wlanFieldIndices(vht)
ind = struct with fields:
LSTF: [1 640]
LLTF: [641 1280]
LSIG: [1281 1600]
VHTSIGA: [1601 2240]
VHTSTF: [2241 2560]
VHTLTF: [2561 3840]
VHTSIGB: [3841 4160]
VHTData: [4161 48000]
Создайте отдельные поля, составляющие форму сигнала VHT.
lstf = wlanLSTF(vht); lltf = wlanLLTF(vht); lsig = wlanLSIG(vht); [vhtsigA,sigAbits] = wlanVHTSIGA(vht); vhtstf = wlanVHTSTF(vht); vhtltf = wlanVHTLTF(vht); [vhtsigB,sigBbits] = wlanVHTSIGB(vht);
Извлеките первые два информационных бита VHT-SIG-A и преобразуйте их в их десятичный эквивалент.
bw = bi2de(double(sigAbits(1:2)'))
bw = 2
Значение 2 соответствует полосе пропускания 80 МГц (см. wlanVHTSIGA).
Извлеките информационные биты VHT-SIG-A с 5 по 10 и преобразуйте их в их десятичный эквивалент.
groupid = bi2de(double(sigAbits(5:10)'))
groupid = 5
Извлеченный идентификатор группы, 5, соответствует соответствующему свойству в объекте конфигурации VHT.
Извлеките длину пакета из информационных битов VHT-SIG-B. Для многопользовательской работы с полосой пропускания 80 МГц первые 19 битов содержат информацию о длине APEP. Преобразуйте длины полей в их десятичные эквиваленты. Умножьте их на 4, поскольку длина поля VHT-SIG-B выражается в единицах по 4 байта.
pktLen = bi2de(double(sigBbits(1:19,:)'))*4
pktLen = 3×1
2000
1400
1800
Убедитесь, что извлеченная длина APEP соответствует значению, заданному в объекте конфигурации.
isequal(pktLen',vht.APEPLength)
ans = logical
1
Извлеките значения MCS из информационных битов VHT-SIG-B. Компонент MCS задается битами, 20 к 23.
mcs = bi2de(double(sigBbits(20:23,:)'))
mcs = 3×1
0
2
4
Значения соответствуют значениям, заданным в объекте конфигурации VHT.
Создайте три последовательности данных, по одной для каждого пользователя.
d1 = randi([0 1],vht.PSDULength(1)*8,1); d2 = randi([0 1],vht.PSDULength(2)*8,1); d3 = randi([0 1],vht.PSDULength(3)*8,1);
Создайте поле данных VHT, используя эти последовательности данных.
vhtdata = wlanVHTData({d1 d2 d3},vht);Создание многопользовательского сигнала VHT с отключенным окном. Извлеките поле данных из формы сигнала.
wv = wlanWaveformGenerator({d1 d2 d3},vht,'WindowTransitionTime',0);
wvdata = wv(ind.VHTData(1):ind.VHTData(2),:);Подтвердите, что два подхода к генерации дают одинаковые результаты.
isequal(vhtdata,wvdata)
ans = logical
1
Визуализация формы сигнала путем построения графика ее величины.
t = ((1:length(wv))'-1)/80e6; plot(t,abs(wv)) xlabel('Time (s)') ylabel('Magnitude')
