exponenta event banner

Создание многопользовательского сигнала VHT

В этом примере показано, как генерировать многопользовательский сигнал 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')

Figure contains an axes. The axes contains 3 objects of type line.