exponenta event banner

коммуникация. PNSequence

Формирование псевдошумовой (PN) последовательности

Описание

PNSequence объект генерирует последовательность псевдослучайных двоичных чисел с использованием сдвигового регистра с линейной обратной связью (LFSR). Этот объект реализует LFSR, используя простую конфигурацию генератора сдвиговых регистров (SSRG, или Фибоначчи). Псевдошумовые последовательности обычно используются для псевдослучайного скремблирования и в системах с расширенным спектром прямой последовательности.

Для генерации последовательности PN:

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

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

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

Создание

Описание

pnSequence = comm.PNSequence создает генератор псевдошумовой (PN) последовательности System object™. Этот объект генерирует последовательность псевдослучайных двоичных чисел с использованием сдвигового регистра с линейной обратной связью (LFSR).

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

Свойства

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

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

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

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

Генераторный полином, определяющий соединения обратной связи сдвигового регистра, указанные как одно из следующих:

  • Вектор многочлена, включающий число 1.

  • Двоичный вектор строки, который представляет коэффициенты полинома генератора в порядке степени убывания. Первая и последняя записи должны быть 1. Длина этого вектора равна N + 1, где N - степень полинома генератора.

  • Вектор, содержащий экспоненты z для ненулевых членов многочлена в порядке убывания степеней. Последняя запись должна быть 0.

Дополнительные сведения см. в разделе Символьное представление многочленов.

Пример: 'z^8 + z^2 + 1', [1 0 0 0 0 0 1 0 1], и [8 2 0] представляют один и тот же многочлен, p (z) = z8 + z2 + 1.

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

Источник исходных условий, определяющих начало последовательности PN, указанных как одно из следующих:

  • 'Property' - Укажите начальные условия генератора ПШ-последовательности как двоичный скалярный или двоичный вектор, используя InitialConditions собственность.

  • 'Input port' - Задание начальных условий генератора ПШ-последовательностей с помощью дополнительного входного аргумента при вызове объекта. Объект принимает двоичный скалярный или двоичный векторный ввод. Длина входного сигнала должна быть равна степени полинома генератора, Polynomial указывает свойство.

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

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

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

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

Зависимости

Это свойство доступно, когда InitialConditionsSource имеет значение 'Property'.

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

Источник маски, определяющей сдвиг последовательности PN, определяемый как одно из следующих значений:

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

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

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

Маска, определяющая смещение ПШ-последовательности от ее начальной точки, определяемой как целочисленный скаляр или двоичный вектор.

Если для этого свойства задано значение целочисленного скаляра, то значением будет длина сдвига. Скалярный сдвиг может быть положительным или отрицательным. Когда ПШ последовательность имеет период N = 2n-1, где n - степень полинома генератора, что Polynomial указывает, объект переносит значения сдвига, отрицательные или превышающие N.

При установке для этого свойства двоичного вектора его длина должна быть равна степени полинома генератора, Polynomial указывает. Дополнительные сведения см. в разделе Смещение начальной точки последовательности PN.

Вектор маски можно вычислить с помощью shift2mask функция.

Зависимости

Это свойство доступно, когда MaskSource имеет значение 'Property'.

Установить для этого свойства значение true включение выходов переменного размера с помощью дополнительного входного аргумента при вызове объекта. Разрешенный входной сигнал определяет размер выходного сигнала последовательности PN. Входное значение должно быть меньше или равно значению MaximumOutputSize собственность.

При установке для этого свойства значения false, SamplesPerFrame указывает количество выходных выборок.

Максимальный выходной размер, заданный как положительный целочисленный двухэлементный вектор строки, который обозначает максимальный выходной размер ПШ-последовательности. Второй элемент вектора должен быть 1.

Пример: [10 1] дает 10около-1 максимальный размер выходного сигнала.

Зависимости

Это свойство доступно, когда VariableSizeOutput имеет значение true.

Число выборок, выводимых на кадр объектом последовательности PN, указанное как положительное целое число. Если для этого свойства задано значение M, то объект выводит M выборок ПШ последовательности, которая имеет период N = 2n-1, где n представляет степень полинома генератора, что Polynomial указывает.

Если установить BitPackedOutput свойство для falseвыборки представляют собой биты из ПШ последовательности. Если установить BitPackedOutput свойство для true, то выходной сигнал соответствует SamplesPerFrame группы битовых упакованных выборок.

Установить для этого свойства значение true включение сброса генератора PN-последовательностей с помощью дополнительного входного аргумента при вызове объекта. Этот вход сбрасывает состояние генератора последовательности PN в исходное состояние, указанное в InitialConditions собственность. Дополнительные сведения см. в разделе Сброс сигнала.

Зависимости

Это свойство доступно, когда InitialConditionsSource имеет значение 'Property'.

Параметр для вывода упакованных в биты слов, указанный как false или true. Установить для этого свойства значение true обеспечение возможности формирования битовых выходных сигналов.

Когда BitPackedOutput является true, объект выводит вектор столбца длиной M, который содержит первое целое представление битовых слов длиной P. M - количество выборок на кадр, указанное в SamplesPerFrame собственность. P - размер упакованных в биты слов, указанных в NumPackedBits собственность.

Примечание

Первый бит слева в упакованном в биты слове содержит старший бит для целочисленного представления.

Число битов, упакованных в каждое выходное слово данных, указанное как целое число в диапазоне [1, 32].

Зависимости

Это свойство доступно, когда BitPackedOutput имеет значение true.

Установить для этого свойства значение true для получения подписанных, битовых, выходных слов. В этом случае a 1 в старшем разряде (знаковом разряде) указывает отрицательное значение. Свойство указывает отрицательные числа в формате дополнения.

Зависимости

Это свойство доступно, когда BitPackedOutput имеет значение true.

Тип выходных данных, указанный как один из следующих:

  • Когда BitPackedOutput имеет значение false, OutputDataType может быть 'double', 'logical', или 'Smallest unsigned integer'.

  • Когда BitPackedOutput имеет значение true, OutputDataType может быть 'double' или 'Smallest integer'.

Примечание

Для использования этого свойства в необходимо иметь лицензию пользователя Fixed-Point Designer™ 'Smallest unsigned integer' или 'Smallest integer' режим.

Зависимости

Допустимые параметры для OutputDataType зависит от настройки BitPackedOutput.

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

Описание

пример

outSequence = pnSequence() выводит кадр последовательности PN. Укажите длину кадра с помощью SamplesPerFrame собственность. ПШ-последовательность имеет период N = 2n-1, где n - степень полинома генератора, указанная в Polynomial собственность.

При установке их разрешающих свойств можно комбинировать необязательные входные аргументы. Дополнительные входные данные должны быть перечислены в том же порядке, что и разрешающие свойства.

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

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

outSequence = pnSequence(maskVec) предоставляет дополнительный ввод, определяющий вектор маски, который определяет, как PN-последовательность смещается от ее начальной точки.

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

outSequence = pnSequence(outputSize) предоставляет дополнительный ввод, определяющий размер выходного сигнала последовательности PN.

Этот синтаксис применяется при установке VariableSizeOutput свойства объекта для true.

outSequence = pnSequence(reset) обеспечивает дополнительный вход, указывающий, следует ли сбросить генератор ПШ-последовательности.

Этот синтаксис применяется при установке InitialConditionsSource кому 'Property' и ResetInputPort кому true.

outSequence = pnSequence(initCond,maskVec,outputSize)

outSequence = pnSequence(maskVec,outputSize,reset)

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

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

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

Начальные условия сдвигового регистра при запуске моделирования, заданные как двоичный скалярный или двоичный вектор. При установке initCond для двоичного вектора длина вектора должна равняться степени Polynomial собственность. Скаляр или, по крайней мере, один элемент initCond, для создания ненулевой последовательности объект должен быть ненулевым.

Пример: outSequence = pnSequence([1 1 0]) соответствует возможным начальным состояниям регистра для генератора ПШ последовательности, заданного генераторным полиномом степени 3.

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

Маска, определяющая смещение ПШ-последовательности от ее начальной точки, определяемой как двоичный вектор. Длина вектора должна равняться степени Polynomial собственность.

Выходной размер ПШ-последовательности, определяемый как скалярный или двухэлементный вектор строки. При установке outputSize для двухэлементного вектора строки второй элемент должен быть равен 1.

При указании reset в качестве скаляра объект сбрасывается до начальных условий, указанных в InitialConditions и генерирует новый выходной кадр.

При указании reset в качестве вектора столбца длина вектора должна равняться количеству выборок на кадр, указанному в SamplesPerFrame. Ввод вектора столбца позволяет выполнить несколько сбросов в пределах выходного кадра. Ненулевое значение в i-м элементе вектора вызовет сброс в i-ом элементе генерируемой ПШ-последовательности.

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

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

PN-последовательность, генерируемая объектом, возвращается в виде вектора столбца.

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

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

release(obj)

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

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

Примеры

свернуть все

Создайте кадр из 14 выборок ПШ-последовательности максимальной длины, заданной генераторным полиномом, x3 + x2 + 1.

Создание данных последовательности PN с помощью comm.PNSequence объект. Последовательность повторяется, поскольку она содержит 14 выборок, в то время как максимальная длина последовательности составляет только 7 выборок (23-1).

pnSequence = comm.PNSequence('Polynomial',[3 2 0], ...
    'SamplesPerFrame',14,'InitialConditions',[0 0 1]);
x1 = pnSequence();
[x1(1:7) x1(8:14)]
ans = 7×2

     1     1
     0     0
     0     0
     1     1
     1     1
     1     1
     0     0

Создайте другую последовательность максимальной длины на основе полинома генератора, x4 + x + 1. Поскольку это полином четвертого порядка, последовательность повторяется после 15 выборок (24-1).

pnSequence2 = comm.PNSequence('Polynomial','x^4+x+1', ...
    'InitialConditions',[0 0 0 1],'SamplesPerFrame',30);
x2 = pnSequence2();
[x2(1:15) x2(16:30)]
ans = 15×2

     1     1
     0     0
     0     0
     0     0
     1     1
     0     0
     0     0
     1     1
     1     1
     0     0
      ⋮

comm.PNSequence системный объект реализует регистр сдвига с линейной обратной связью (LFSR), используя простой генератор регистра сдвига (SSRG, или конфигурацию Фибоначчи). Эта конфигурация отличается от модульного генератора сдвиговых регистров (MSRG, или конфигурации Галуа) разницей фаз, которая может быть определена эмпирически из объекта системы.

Эта разность фаз может быть указана как Mask для параметра comm.PNSequence системный объект для создания эквивалентных выходных данных конфигурации MSRG. Блок-схема представляет реализацию 5-битного LFSR в конфигурации Galois (MSRG).

Загрузить файл GaloisLFSR. Файл содержит следующие переменные, которые определяют свойства и выходную PN-последовательность 5-битного Galois LFSR:

  • polyVec: Полином генератора

  • polySizeСтепень полинома генератора

  • initStatesНачальные условия сдвигового регистра

  • maskVar: Маска для сдвига последовательности PN

  • pn_msrg: Вывод ПШ последовательности максимальной длины из 5-разрядного LFSR Галуа

load GaloisLFSR

Создание данных последовательности PN с помощью comm.PNSequence объект с тем же набором свойств, который используется для реализации 5-битного LFSR Galois. Сравните эту последовательность PN с выходом 5-разрядного LFSR Галуа. Две последовательности отличаются фазовым сдвигом.

pnSequence = comm.PNSequence('Polynomial',polyVec,'InitialConditions',initStates,...
    'Mask',maskVar,'SamplesPerFrame',2^polySize-1);

pn = pnSequence();

isequal(pn,pn_msrg)
ans = logical
   0

Вычислите фазовый сдвиг между двумя конфигурациями. Установка значения Mask на основе этого фазового сдвига.

for i = 1:length(pn)
    exp_pn = [pn(i:end);pn(1:(i-1))];
    if isequal(exp_pn,pn_msrg)
        break
    end
end

maskVar = i-1;

Создание данных последовательности PN с помощью comm.PNSequence системный объект с измененным Mask значение свойства. Сравните эту последовательность с выводом 5-разрядного LFSR Галуа. Две последовательности теперь равны.

pnSequence_mod = comm.PNSequence('Polynomial',polyVec,'InitialConditions',initStates,...
    'Mask',maskVar,'SamplesPerFrame',2^polySize-1);

pn_mod = pnSequence_mod();

isequal(pn_mod,pn_msrg)
ans = logical
   1

Этот рисунок определяет генератор ПШ последовательности с генераторным полиномом p (z) = z6 + z + 1. Можно настроить генератор последовательности PN, введя в командной строке MATLAB следующее.

h1 = comm.PNSequence('Polynomial', [1 0 0 0 0 1 1], 'InitialConditions', [1 1 0 1 0 1]);
h2 = comm.PNSequence('Polynomial', [1 0 0 0 0 1 1], 'Mask', 22);
mask2shift ([1 0 0 0 0 1 1],[1 1 0 1 0 1])
ans = 22

Можно также ввести полиномиальные экспоненты z для ненулевых членов многочлена в порядке убывания степеней.

h = comm.PNSequence('Polynomial', [6 1 0], 'InitialConditions', [1 1 0 1 0 1])
h = 
  comm.PNSequence with properties:

                 Polynomial: [6 1 0]
    InitialConditionsSource: 'Property'
          InitialConditions: [1 1 0 1 0 1]
                 MaskSource: 'Property'
                       Mask: 0
         VariableSizeOutput: false
            SamplesPerFrame: 1
             ResetInputPort: false
            BitPackedOutput: false
             OutputDataType: 'double'

Алгоритмы

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

Ссылки

[1] Проакис, Джон Г. Digital Communications. 3-й ред. Нью-Йорк: Макгроу Хилл, 1995.

[2] Ли, J. S. и Л. Э. Миллер. Руководство по проектированию систем CDMA. Бостон и Лондон. Artech House, 1998.

[3] Последовательности сдвиговых регистров Golomb, S.W. Лагуна-Хиллз. Эгейский парк Пресс, 1967.

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

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