exponenta event banner

коммуникация. Шифратор

Входной сигнал скремблирования

Описание

Объект comm.Scrambler скремблирует входной сигнал скалярного вектора или вектора столбца.

На этой схеме показана работа скремблера. Сумматоры работают по модулю N, где N - значение, заданное свойством CalculationBase.

На каждом временном шаге ввод вызывает последовательное смещение содержимого регистров. С помощью свойства «Полином» можно задать состояние включения или выключения для каждого переключателя скремблера.

Для скремблирования входного сигнала:

  1. Создать comm.Scrambler и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

scrambler = comm.Scrambler создает системный object™ скремблера. Этот объект скремблирует входные данные с помощью регистра сдвига с линейной обратной связью, заданного свойством Полином.

пример

scrambler = comm.Scrambler(base,poly,cond) создает объект скремблера со свойством CalculationBase, имеющим значение base, свойство Polynomial имеет значение polyи свойство InitityConditions имеет значение cond.

Пример: comm.Scrambler(8,'1 + z^-2 + z^-3 + z^-5 + z^-7',[0 3 2 2 5 1 7]) задает для базы расчета значение 8и многочлен скремблера и исходные условия, как указано.

пример

scrambler = comm.Scrambler(___,Name,Value) задает свойства, используя одну или несколько пар имя-значение и любой из предыдущих синтаксисов. Заключите каждое имя свойства в отдельные кавычки.

Пример: comm.Scrambler('CalculationBase',2)

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Диапазон входных данных, используемых скремблером для операций по модулю, определяемый как неотрицательное целое число. Входные и выходные значения этого объекта являются целыми числами из 0 кому CalculationBase1.

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

Соединения для регистров сдвига с линейной обратной связью в скремблере, заданные как символьный вектор, целочисленный вектор или двоичный вектор. Polynomial свойство определяет, включен или выключен каждый переключатель скремблера. Укажите многочлен как:

  • Вектор символов, например, '1 + z^-6 + z^-8'. Дополнительные сведения об указании многочленов таким образом см. в разделе Символьное представление многочленов.

  • Целочисленный вектор, например [0 -6 -8], перечисляя коэффициенты скремблера в порядке убывания степеней z-1, где p (z-1) = 1 + p1z-1 + p2z-2 +...

  • Двоичный вектор, например [1 0 0 0 0 0 1 0 1], перечисляя степени z, которые появляются в многочлене, которые имеют коэффициент 1. В этом случае порядок многочлена скремблирования на единицу меньше длины двоичного вектора.

Пример: '1 + z^-6 + z^-8', [0 -6 -8], и [1 0 0 0 0 0 1 0 1] все представляют этот многочлен:

p (z-1) = 1 + z-6 + z-8

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

  • 'Property' - Укажите начальные условия скремблера с помощью свойства InitityConditions.

  • 'Input port' - Задание начальных условий скремблера с помощью дополнительного входного аргумента initcond при вызове объекта.

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

Начальные условия скремблера регистрируются при запуске моделирования, определяемого как неотрицательный целочисленный вектор. Длина InitialConditions должен равняться порядку свойства Polynomial. Значения векторных элементов должны быть целыми числами от 0 в CalculationBase - 1.

Зависимости

Это свойство доступно, если для InitityConditureSource установлено значение 'Property'.

Порт сброса состояния скремблера, указанный как false или true. Если ResetInputPort является true, объект scrambler можно сбросить с помощью дополнительного входного аргумента, reset, при вызове объекта.

Зависимости

Это свойство доступно, если для InitityConditureSource установлено значение 'Property'.

Использование

Описание

пример

scrambledOut = scrambler(signal) скремблирует входной сигнал. Выходные данные имеют тот же тип данных и ту же длину, что и входной вектор.

пример

scrambledOut = scrambler(signal,initcond) обеспечивает дополнительный вход со значениями, задающими начальные условия регистра сдвига с линейной обратной связью.

Этот синтаксис применяется при установке для свойства InitityConditureSource объекта значения 'Input port'.

scrambledOut = scrambler(signal,reset) обеспечивает дополнительный вход, указывающий, следует ли сбросить состояние скремблера.

Этот синтаксис применяется, если для InitityConditionSource задано значение 'Property' и ResetInputPort в true.

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

развернуть все

Входной сигнал, заданный как вектор столбца.

Пример: scrambledOut = scrambler([0 1 1 0 1])

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

Начальный скремблер регистрирует условия при запуске моделирования, определяемые как неотрицательный вектор целочисленного столбца. Длина initcond должен равняться порядку свойства Polynomial. Значения векторных элементов должны быть целыми числами от 0 в CalculationBase - 1.

Пример: scrambledOut = scrambler(signal,[0 1 1 0]) соответствует возможным начальным состояниям регистра для скремблера с полиномиальным порядком 4 и расчетная база 2 или выше.

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

Сброс начального состояния скремблера при запуске моделирования, заданного как скаляр. Когда значение reset имеет ненулевое значение, объект сбрасывается перед вызовом.

Пример: scrambledOut = scrambler(signal,0) скремблирует входной сигнал без сброса состояния скремблера.

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

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

развернуть все

Скремблированный выходной сигнал, возвращаемый в виде вектора столбца с тем же типом данных и длиной, что и сигнал.

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Скремблировать и дескремблировать 8-кратные данные с помощью comm.Scrambler и comm.Descrambler Система objects™ с базой расчета 8.

Создайте объекты скремблера и дескремблера, задав базу вычисления, полином и начальные условия с помощью входных аргументов. Многочлены скремблера и дескремблера задаются с различными, но эквивалентными форматами данных.

N = 8;
scrambler = comm.Scrambler(N,'1 + z^-2 + z^-3 + z^-5 + z^-7', ...
    [0 3 2 2 5 1 7]);
descrambler = comm.Descrambler(N,[1 0 1 1 0 1 0 1], ...
    [0 3 2 2 5 1 7]);

Скремблировать и дескремблировать случайные целые числа. Отображение исходных данных, скремблированных данных и дескремблированных последовательностей данных.

data = randi([0 N-1],5,1);
scrData = scrambler(data);
deScrData = descrambler(scrData);
[data scrData deScrData]
ans = 5×3

     6     7     6
     7     5     7
     1     7     1
     7     0     7
     5     3     5

Убедитесь, что дескремблированные данные соответствуют исходным данным.

isequal(data,deScrData)
ans = logical
   1

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

Создайте скремблер и дескремблер Системные объекты, имеющие базу вычислений 4. Установите InitialConditionsSource свойство для 'Input port' таким образом, можно задать начальные условия в качестве аргумента для объекта.

N = 4;
scrambler = comm.Scrambler(N,'1 + z^-3','InitialConditionsSource','Input port');
descrambler = comm.Descrambler(N,'1 + z^-3','InitialConditionsSource','Input port');

Предварительное выделение памяти для вектора ошибок, который будет использоваться для хранения ошибок, выводимых symerr функция.

errVec = zeros(10,1);

Скремблировать и дескремблировать случайные целые числа при изменении начальных условий, initCondкаждый раз при выполнении цикла. Используйте symerr функция для определения, приводят ли операции скремблирования и дескремблирования к ошибкам символов.

for k = 1:10
    initCond = randperm(3)';
    data = randi([0 N-1],5,1);
    scrData = scrambler(data,initCond);
    deScrData = descrambler(scrData,initCond);
    errVec(k) = symerr(data,deScrData);
end

Исследовать errVec для проверки соответствия выходных данных дескремблера исходным данным.

errVec
errVec = 10×1

     0
     0
     0
     0
     0
     0
     0
     0
     0
     0

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

.

См. также

Объекты

Блоки

Представлен в R2012a