wlanWaveformGenerator

Сгенерируйте форму волны WLAN

Синтаксис

waveform = wlanWaveformGenerator(bits,cfgFormat)
waveform = wlanWaveformGenerator(bits,cfgFormat,Name,Value)

Описание

пример

waveform = wlanWaveformGenerator(bits,cfgFormat) генерирует форму волны для заданных информационных битов и настройку формата. Для получения дополнительной информации смотрите Формат IEEE 802.11 PPDU.

пример

waveform = wlanWaveformGenerator(bits,cfgFormat,Name,Value) значения настройки генератора значения по умолчанию переопределений с помощью одного или нескольких аргументов пары Name,Value.

Примеры

свернуть все

Сгенерируйте сигнал временного интервала для 802.11ac передача VHT с одним пакетом.

Создайте объект настройки формата, vht. Присвойте две антенны передачи и два пространственных потока, и отключите STBC. Установите MCS на 1, который присваивает модуляцию QPSK и 1/2 схему кодирования уровня на 802,11 стандарта. Определите номер байтов в дополнении A-MPDU pre-EOF, APEPLength, к 1024.

vht = wlanVHTConfig;
vht.NumTransmitAntennas = 2;
vht.NumSpaceTimeStreams = 2;
vht.STBC = false;
vht.MCS = 1;
vht.APEPLength = 1024;

Сгенерируйте форму волны передачи.

bits = [1;0;0;1];
txWaveform = wlanWaveformGenerator(bits,vht);

HE настройка MU-MIMO со сжатием SIGB

Используйте только пользовательские полевые биты

Сгенерируйте полный HE пропускной способности настройка MU-MIMO в пропускной способности на 20 МГц со сжатием SIGB. Все три пользователя находятся на сингле, довольном канал, который включает только пользовательские полевые биты.

cfgHE = wlanHEMUConfig(194);
cfgHE.NumTransmitAntennas = 3;

Создайте данные PSDU для всех пользователей.

psdu = cell(1,numel(cfgHE.User));
psduLength = getPSDULength(cfgHE);
for j = 1:numel(cfgHE.User)
    psdu = randi([0 1],psduLength(j)*8,1,'int8');
end

Сгенерируйте и постройте форму волны.

y = wlanWaveformGenerator(psdu,cfgHE);
plot(abs(y))

Содержимое HE-SIG-B присваивает 4 пользователей в канале 1 и 3 пользователя в канале 2

Сгенерируйте полный HE пропускной способности форма волны MU-MIMO в пропускной способности на 80 МГц со сжатием SIGB. Канал содержимого HE-SIG-B 1 имеет четырех пользователей. Канал содержимого HE-SIG-B 2 имеет трех пользователей.

cfgHE = wlanHEMUConfig(214);
cfgHE.NumTransmitAntennas = 7;

Создайте данные PSDU для всех пользователей.

psdu = cell(1,numel(cfgHE.User));
psduLength = getPSDULength(cfgHE);
for j = 1:numel(cfgHE.User)
    psdu = randi([0 1],psduLength(j)*8,1,'int8');
end

Сгенерируйте и постройте форму волны.

y = wlanWaveformGenerator(psdu,cfgHE);
plot(abs(y));

HE настройка MU-MIMO без сжатия SIGB

Используйте распространенный и пользовательские полевые биты

Сгенерируйте полный HE пропускной способности настройка MU-MIMO в пропускной способности на 20 МГц без сжатия SIGB. Все три пользователя находятся на сингле, довольном канал, который включает и распространенный и пользовательские полевые биты.

cfgHE = wlanHEMUConfig(194);
cfgHE.SIGBCompression = false;
cfgHE.NumTransmitAntennas = 3;

Создайте данные PSDU для всех пользователей.

psdu = cell(1,numel(cfgHE.User));
psduLength = getPSDULength(cfgHE);
for j = 1:numel(cfgHE.User)
    psdu = randi([0 1],psduLength(j)*8,1,'int8');
end

Сгенерируйте и постройте форму волны.

y = wlanWaveformGenerator(psdu,cfgHE);
plot(abs(y))

Содержимое HE-SIG-B присваивает 4 пользователей в канале 1 и 2 пользователя в канале 2

Сгенерируйте форму волны HE-MU на 80 МГц для шести пользователей без сжатия SIGB. Канал содержимого HE-SIG-B 1 имеет четырех пользователей. Канал содержимого HE-SIG-B 2 имеет двух пользователей.

cfgHE = wlanHEMUConfig([202 114 192 193]);
cfgHE.NumTransmitAntennas = 6;
for i = 1:numel(cfgHE.RU)
    cfgHE.RU{i}.SpatialMapping = 'Fourier';
end

Создайте данные PSDU для всех пользователей.

psdu = cell(1,numel(cfgHE.User));
psduLength = getPSDULength(cfgHE);
for j = 1:numel(cfgHE.User)
    psdu = randi([0 1],psduLength(j)*8,1,'int8');
end

Сгенерируйте и постройте форму волны.

y = wlanWaveformGenerator(psdu,cfgHE);
plot(abs(y));

Содержимое HE-SIG-B присваивает 7 пользователей в канале 1 и никаких пользователей в канале 2

Сгенерируйте полный HE пропускной способности форма волны MU-MIMO в пропускной способности на 80 МГц без сжатия SIGB. Канал содержимого HE-SIG-B 1 имеет семь пользователей. Канал содержимого HE-SIG-B 2 не имеет никаких пользователей.

cfgHE = wlanHEMUConfig([214 115 115 115]);
cfgHE.NumTransmitAntennas = 7;

Создайте данные PSDU для всех пользователей.

psdu = cell(1,numel(cfgHE.User));
psduLength = getPSDULength(cfgHE);
for j = 1:numel(cfgHE.User)
    psdu = randi([0 1],psduLength(j)*8,1,'int8');
end

Сгенерируйте и постройте форму волны.

y = wlanWaveformGenerator(psdu,cfgHE);
plot(abs(y))

Сконфигурируйте wlanWaveformGenerator, чтобы произвести сигнал временного интервала для 802.11ac передача VHT с пятью пакетами и период неактивности с 30 микросекундами между пакетом. Используйте случайное начальное состояние скремблера для каждого пакета.

Создайте настройку VHT, возражают и подтверждают пропускную способность канала для масштабирования оси X графика.

vht = wlanVHTConfig;
vht.ChannelBandwidth
ans = 
'CBW80'

Сгенерируйте и постройте форму волны. Отобразите время в микросекундах на оси X.

numPkts = 5;
scramInit = randi([1 127],numPkts,1);
txWaveform = wlanWaveformGenerator([1;0;0;1],vht,'NumPackets',numPkts,'IdleTime',30e-6,'ScramblerInitialization',scramInit);
time = [0:length(txWaveform)-1]/80e-6;
plot(time,abs(txWaveform))
xlabel ('Time (microseconds)')
ylabel('Amplitude')

Пять пакетов разделяются периодами неактивности с 30 микросекундами.

Входные параметры

свернуть все

Информационные биты для отдельного пользователя, включая любое дополнение MAC, представляющее несколько, конкатенировали PSDUs, заданный как бинарный векторный поток. Внутренне, вектор входа bits циклично выполняется как требуется, чтобы сгенерировать конкретное количество пакетов. Свойство cfgFormat . PSDULength задает количество битов данных, взятых из потока битов для каждого сгенерированного пакета передачи. Свойство NumPackets задает количество пакетов, чтобы сгенерировать.

  • Когда bits является массивом ячеек, каждым элементом массива ячеек должен быть double, или int8 ввел бинарный вектор.

  • Когда bits является векторным или скалярным массивом ячеек, заданные биты применяются ко всем пользователям.

  • Когда bits является векторным массивом ячеек, каждый элемент применяется к каждому пользователю соответственно. Для каждого пользователя, если количество битов, требуемых через все пакеты генерации, превышает длину вектора, если, прикладной битовый вектор циклично выполняется. Цикличное выполнение на битах позволяет вам задавать короткий шаблон, например. [1;0;0;1], который повторяется как вход к PSDU, кодирующему через пакеты и пользователей. В каждой пакетной генерации, для i th пользователь, i th элемент cfgFormat.PSDULength указывает на количество байтов данных, взятых из его потока. Несколько PSDULength восемь, чтобы вычислить количество битов

Пример: [1 1 0 1 0 1 1]

Типы данных: double | int8

Настройка формата пакета, заданная как wlanHEMUConfig, wlanHESUConfig, wlanDMGConfig, wlanS1GConfig, wlanVHTConfig, wlanHTConfig или объект wlanNonHTConfig. Тип объекта cfgFormat определяет формат IEEE® 802.11™ сгенерированной формы волны. Для описания свойств и допустимых настроек для различных объектов настройки формата пакета, см.:

Скорость передачи данных и длина PSDU сгенерированного PPDUs определяются на основе свойств объекта настройки формата пакета.

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'NumPackets',21,'ScramblerInitialization',[52,17]

Количество пакетов, чтобы сгенерировать в одном вызове функции, заданном как положительное целое число.

Типы данных: double

Время простоя добавляется после каждого пакета, заданного как неотрицательный скаляр в секундах. Значение по умолчанию 0. Если IdleTime не установлен в значение по умолчанию, это должно быть:

  • ≥ Секунды 1e-06 для формата DMG

  • ≥ Секунды 2e-06 для VHT, HT-mixed, форматов non-HT

Пример: 20e-6

Типы данных: double

Начальное состояние скремблера скремблера данных для каждого пакета, сгенерированного, заданного как целое число от 1 до 127, или как N P-by-NUsers матрица целых чисел со значениями от 1 до 127. N P является количеством пакетов, и Пользователи N являются количеством пользователей.

Значение по умолчанию 93 является состоянием в качестве примера, данным в Станд. IEEE 802.11-2012 [3], Раздел L.1.5.2, и запрашивает S1G, VHT, HT и форматы Non-HT OFDM. Для формата DMG, задавая ScramblerInitialization с wlanWaveformGenerator заменяет значение, заданное объектом настройки wlanDMGConfig. Для получения дополнительной информации смотрите Инициализацию Скремблера.

  • Когда задано как скаляр, то же значение инициализации скремблера используется, чтобы сгенерировать каждый пакет для каждого пользователя мультипакетной формы волны.

  • Когда задано как матрица, каждый элемент представляет начальное состояние скремблера для пакетов в мультипакетной форме волны, сгенерированной для каждого пользователя. Каждый столбец задает начальные состояния для отдельного пользователя, поэтому до четырех столбцов поддерживаются. Если отдельный столбец обеспечивается, те же начальные состояния используются для всех пользователей. Каждая строка представляет начальное состояние каждого пакета, чтобы сгенерировать. Поэтому матрица с несколькими строками позволяет вам использовать различное начальное состояние на пакет, где первая строка содержит начальное состояние первого пакета. Если количество пакетов, чтобы сгенерировать превышает количество строк матрицы, если, строки циклично выполняются внутренне.

Примечание

ScramblerInitialization не допустим для non-HT DSSS.

Пример: [3 56 120]

Типы данных: double | int8

Длительность перехода окна применилась к каждому символу OFDM, заданному в секундах как неотрицательный скаляр. Никакая работа с окнами не применяется если WindowTransitionTime = 0. Значение по умолчанию и разрешенное максимальное значение показывают для различных форматов, типа защитного интервала и пропускной способности канала.

ФорматПропускная способностьРазрешенный WindowTransitionTime (секунды)
Значение по умолчаниюМаксимумМаксимум, разрешенный на основе длительности интервала охраны
3.2 µs1.6 µs

0.8 µs

(Долго)

0.4 µs

(Короткий)

DMG

2 640 МГц

6.0606e-09

(= 16/2640e6)

9.6969e-08

(= 256/2640e6)

S1G

1, 2, 4, 8, или 16 МГц

1.0e-07

1.6e-05

8.0e-06

HESU / HEMU

20, 40, 80, или 160 МГц

1.0e-07

6.4e-06

3.2e-06

1.6e-06

VHT

20, 40, 80, или 160 МГц

1.0e-07

1.6e-06

8.0e-07

HT-mixed

20 или 40 МГц

1.0e-07

1.6e-06

8.0e-07

non-HT

20 МГц

1.0e-07

1.6e-06

10 МГц

1.0e-07

3.2e-06

5 МГц

1.0e-07

6.4e-06

Типы данных: double

Выходные аргументы

свернуть все

Форма волны Packetized, возвращенная как матрица S-by-NT N. N S является количеством выборок временного интервала, и N T является количеством антенн передачи. waveform содержит один или несколько пакетов того же Формата IEEE 802.11 PPDU. Каждый пакет может содержать различные информационные биты. Пакетная работа с окнами формы волны включена установкой WindowTransitionTime > 0. Работа с окнами включена по умолчанию.

Для получения дополнительной информации смотрите, что Форма волны Выбирает Уровень, Работу с окнами Символа OFDM и Цикличное выполнение Формы волны.

Типы данных: double
Поддержка комплексного числа: Да

Больше о

свернуть все

IEEE 802.11 Формат PPDU

Поддерживаемые форматы IEEE 802.11 [1] PPDU, заданные для передачи, включают VHT, HT, non-HT, S1G, DMG и HE. Для всех форматов структура поля PPDU включает фрагменты данных и преамбула. Для подробного описания пакетных структур для различных поддерживаемых форматов см. Пакетную Структуру WLAN.

Уровень выборки формы волны

При выводе wlanWaveformGenerator сгенерированная форма волны имеет уровень выборки, равный пропускной способности канала.

Для всего HE, VHT, HT и формата non-HT модуляция OFDM, пропускная способность канала сконфигурирована через свойство ChannelBandwidth объекта настройки формата.

Для схем модуляции формата DMG пропускная способность канала всегда - 2 640 МГц, и интервал канала всегда - 2 160 МГц, Эти значения заданы в IEEE 802.11ad™-2012 [4], Раздел 21.3.4 и Приложение e-1, соответственно.

Для формата non-HT схема модуляции DSSS производящий микросхемы уровень всегда - 11 МГц, как задано в IEEE 802.11-2012 [3], Раздел 17.1.1.

Эта таблица показывает уровни выборки формы волны, сопоставленные со стандартным интервалом канала для каждого формата настройки до фильтрации.

Объект настройки

Modulation

ChannelBandwidth

Разрядка канала (МГц)

Выборка уровня (МГц)

(F S, F C)

wlanDMGConfig

Управляйте PHY

Для DMG пропускная способность канала фиксируется на уровне 2 640 МГц.

2160

F C = ⅔ F S = 1760

SC

OFDM

F S = 2640

wlanS1GConfig

OFDM

'CBW1'

1

F S = 1

'CBW2'

2

F S = 2

'CBW4'

4

F S = 4

'CBW8'

8

F S = 8

'CBW16'

16

F S = 16

wlanHEMUConfig и wlanHESUConfig

OFDMA

'CBW20'

20

F S = 20

'CBW40'

40

F S = 40

'CBW80'

80

F S = 80

'CBW160'

160

F S = 160

wlanVHTConfig

OFDM

'CBW20'

20

F S = 20

'CBW40'

40

F S = 40

'CBW80'

80

F S = 80

'CBW160'

160

F S = 160

wlanHTConfig

OFDM

'CBW20'

20

F S = 20

'CBW40'

40

F S = 40

wlanNonHTConfig

DSSS/CCK

Не применяется

11

F C = 11

OFDM

'CBW5'

5

F S = 5

'CBW10'

10

F S = 10

'CBW20'

20

F S = 20

F S является OFDM выборка уровня.

F C является уровнем чипа для одного поставщика услуг, управление PHY и модуляции DSSS/CCK.

Работа с окнами символа OFDM

OFDM естественно предоставляет себя обработке с преобразованиями Фурье. Отрицательный побочный эффект использования ОБПФ к процессу символы OFDM является получившимися разрывами ребра символа. Эти разрывы вызывают внеполосную эмиссию в области перехода между последовательными символами OFDM. Чтобы сглаживать разрыв между символами и уменьшать межсимвол внеполосная эмиссия, можно использовать функцию wlanWaveformGenerator, чтобы применить работу с окнами символа OFDM. Чтобы применить работу с окнами, установите WindowTransitionTime на больший, чем нуль.

Когда работа с окнами применяется, области перехода добавляются к продвижению и запаздывающему ребру символа OFDM wlanWaveformGenerator. Работа с окнами расширяет длину символа OFDM WindowTransitionTime (TR T).

Расширенная форма волны является оконной pointwise умножением во временном интервале, с помощью функции работы с окнами, заданной в Станд. IEEE 802.11-2012 [3], Раздел 18.3.2.5:

wT(t)={sin2(π2(0.5+tTTR)) (TTR2<t<TTR2)1 (TTR2<t<TTTR2)sin2(π2(0.5tTTTR)) (TTTR2<t<T+TTR2)

Функция работы с окнами применяется по продвижению и запаздывающему фрагменту символа OFDM:

  • TR/2 T к T TR/2

  • –   TR/2 T – T к   T + T TR/2

После того, как работа с окнами применяется к каждому символу, pointwise сложение используется, чтобы объединить перекрытые области между последовательными символами OFDM. А именно, запаздывающие выборки плеча в конце символа OFDM 1 (T – T TR/2 к T + T TR/2) добавляются к ведущим выборкам плеча в начале символа OFDM 2 (–TTR/2 к T TR/2).

Сглаживание перекрытия между последовательными символами OFDM этим способом сокращает внеполосные выбросы. wlanWaveformGenerator применяет работу с окнами символа OFDM между:

  • Каждый символ OFDM в пакете

  • Последовательные пакеты в форме волны, рассматривая IdleTime между пакетами

  • Последнее и первый пакет сгенерированной формы волны

Работа с окнами пакеты формата DMG

Для формата DMG работа с окнами только применима к пакетам, переданным с помощью OFDM PHY, и применяется только к модулируемым символам OFDM. Для OFDM PHY только заголовок и символы данных являются модулируемым OFDM. Преамбула (STF и CEF) и учебные поля является одним модулируемым поставщиком услуг и не является оконной. Подобно из эмиссии полосы, испытанной последовательными символами OFDM, как показано здесь, за CEF и первое учебное подполе взимается номинальная стоимость из выбросов полосы смежного оконного символа OFDM.

Для получения дополнительной информации о том, как wlanWaveformGenerator обрабатывает работу с окнами для последовательного пакета IdleTime и для последнего пакета формы волны, смотрите Цикличное выполнение Формы волны.

Цикличное выполнение формы волны

Чтобы произвести непрерывный входной поток, у вас может быть свой цикл кода на форме волны от последнего пакета назад к первому пакету.

Применение работы с окнами к последним и первым символам OFDM сгенерированной формы волны сглаживает переход между последним и первым пакетом формы волны. Когда WindowTransitionTime больше, чем нуль, wlanWaveformGenerator применяет Работу с окнами Символа OFDM.

Когда цикличное выполнение форма волны, последний символ packet_N сопровождается первым символом OFDM packet_1. Если форма волны имеет только один пакет, циклы формы волны от последнего символа OFDM пакета к первому символу OFDM того же пакета.

Когда к работе с окнами применяются последний символ OFDM пакета и первый OFDM следующего пакета, время простоя между пакетными факторами в примененную работу с окнами. Задайте время простоя с помощью свойства IdleTime wlanWaveformGenerator.

  • Если бы IdleTime является нулем, Работа с окнами Символа OFDM применяется, как это было бы для последовательных символов OFDM в пакете.

  • Если IdleTime является ненулевым, расширенный оконный фрагмент первого символа OFDM в packet_1 (от –TTR/2 до 0–TS), включен в конце формы волны. Этот расширенный оконный фрагмент применяется для цикличного выполнения при вычислении Работы с окнами Символа OFDM между последним символом OFDM packet_N и первым символом OFDM packet_1. T S является шагом расчета.

Цикличное выполнение формы волны формата DMG

Для форм волны формата DMG существует три сценария цикличного выполнения,

  • Поведение цикличного выполнения для формы волны, состоявшей из пакетов DMG OFDM-PHY без учебных подполей, подобно общему случаю, обрисованному в общих чертах в Цикличном выполнении Формы волны, но первый символ формы волны (и каждый пакет) не является оконным.

    • Если IdleTime является нулем для формы волны, оконный фрагмент (от T до T + T TR/2) последних символов данных добавляется к запуску поля STF.

    • Если IdleTime является ненулевым для формы волны, IdleTime добавлен в конце оконного фрагмента (после T + T TR/2) последнего символа OFDM.

  • То, когда форма волны, состоявшая из пакетов DMG OFDM-PHY, включает учебные подполя, никакая работа с окнами не применяется к одному поставщику услуг, модулировало символы конец формы волны. Последняя выборка последнего учебного подполя сопровождается первой выборкой STF первого пакета в форме волны.

    • Если IdleTime является нулем для формы волны, нет никакого перекрытия.

    • Если IdleTime является ненулевым для формы волны, значение задает задержку между последней выборкой packet_N и первой выборкой в packet_1.

  • Когда форма волны состоит из DMG-SC или DMG-управления пакеты PHY, конец формы волны является одним модулируемым поставщиком услуг, таким образом, никакая работа с окнами не применяется к последнему символу формы волны. Последняя выборка последнего учебного подполя сопровождается первой выборкой STF первого пакета в форме волны.

    • Если IdleTime является нулем для формы волны, нет никакого перекрытия.

    • Если IdleTime является ненулевым для формы волны, значение задает задержку между последней выборкой packet_N и первой выборкой в packet_1.

    Примечание

    То же поведение цикличного выполнения запрашивает форму волны, состоявшую из пакетов DMG OFDM-PHY с учебными подполями, пакетов DMG-SC PHY или DMG-управления пакеты PHY.

Инициализация скремблера

Инициализация скремблера, используемая на данных о передаче, следует за процессом, описанным в Станд. IEEE 802.11-2012, Раздел 18.3.5.5 и Станд. IEEE 802.11ad-2012, Раздел 21.3.9. Заголовок и поля данных, которые следуют за полем инициализации скремблера (включая дополнительные биты данных) скремблированы XORing каждый бит с длиной 127 периодических последовательностей, сгенерированных полиномиальным S(x) = x 7+x4+1. Октеты PSDU (Модуль Эксплуатационных данных Физического уровня) помещаются в небольшой поток, и в каждом октете, бит 0 (LSB) является первыми и битными 7 (MSB), является последним. Генерацию последовательности и операцию "исключающее ИЛИ" показывают в этой фигуре:

Преобразование из целого числа вдребезги использует ориентацию лево-MSB. Для инициализации скремблера с десятичным 1 биты сопоставлены с показанными элементами.

ЭлементX7X6X5X4X3X2 X1
Битовое значение0000001

Чтобы сгенерировать поток битов, эквивалентный десятичному числу, используйте de2bi. Например, для десятичного 1:

de2bi(1,7,'left-msb')
ans =

     0     0     0     0     0     0     1

Ссылки

[1] Станд. IEEE Черновой Стандарт P802.11ax™/D2.0 для Информационных технологий — Телекоммуникаций и обмена информацией между системами — Локальными сетями и городскими компьютерными сетями — Конкретными требованиями — Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации — Поправка 6: Улучшения для Высокой эффективности WLAN.

[2] Станд. IEEE 802.11™-2016 Стандарт IEEE для Информационных технологий — Телекоммуникаций и обмена информацией между системами — Локальными сетями и городскими компьютерными сетями — Конкретными требованиями — Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации.

[3] Станд. IEEE 802.11™-2012 Стандарт IEEE для Информационных технологий — Телекоммуникаций и обмена информацией между системами — Локальными сетями и городскими компьютерными сетями — Конкретными требованиями — Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации.

[4] Станд. IEEE 802.11ad™-2012 Стандарт IEEE для Информационных технологий — Телекоммуникаций и обмена информацией между системами — Локальными сетями и городскими компьютерными сетями — Конкретными требованиями — Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации — Поправка 3: Улучшения для Очень Высокой Пропускной способности в Полосе на 60 ГГц.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2015b


[1]  Станд. IEEE 802.11-2016 Адаптированных и переизданные с разрешением от IEEE. Авторское право IEEE 2016. Все права защищены.