Генератор последовательности PN

Сгенерируйте псевдошумовую последовательность

Библиотека

Подбиблиотека Sequence Generators Источников Коммуникации

Описание

Блок PN Sequence Generator генерирует последовательность псевдослучайных двоичных чисел с помощью сдвигового регистра линейной обратной связи (LFSR). Этот блок реализует LFSR использование простого генератора сдвигового регистра (SSRG или Фибоначчи) настройка. Псевдошумовая последовательность может использоваться в псевдослучайном скремблере и дескремблере. Это может также использоваться в системе спектра распространения прямой последовательности.

Этот блок может вывести последовательности, которые отличаются по длине во время симуляции. Для получения дополнительной информации о сигналах переменного размера, смотрите Основы Сигнала Переменного Размера (Simulink).

Блок PN Sequence Generator использует сдвиговый регистр, чтобы сгенерировать последовательности, как показано ниже.

Все регистры r в генераторе обновляют свои значения на каждом временном шаге, согласно значению входящей стрелки к сдвиговому регистру. Сумматоры выполняют сложение по модулю 2. Сдвиговый регистр описан параметром Generator Polynomial, который является примитивным бинарным полиномом в z, grzr+gr-1zr-1+gr-2zr-2 +... +g0. Содействующий GK равняется 1, если существует связь от регистра kth, как маркировано в предыдущей схеме, к сумматору. Ведущий термин gr и постоянный термин g0 параметра Generator Polynomial должны быть 1, потому что полином должен быть примитивным.

Можно задать параметр Generator polynomial с помощью этих форматов:

  • Полиномиальный вектор символов, который включает номер 1, например, 'z^4 + z + 1'.

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

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

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

Параметр Initial states является вектором, задающим начальные значения регистров. Параметр Initial states должен удовлетворить эти критерии:

  • Все элементы вектора Initial states должны быть двоичными числами.

  • Длина вектора Initial states должна равняться степени полинома генератора.

    Примечание

    По крайней мере один элемент вектора Initial states должен быть ненулевым для блока, чтобы сгенерировать ненулевую последовательность. Таким образом, начальное состояние по крайней мере одного из регистров должно быть ненулевым.

Например, следующая таблица указывает на два набора значений параметров, которые соответствуют полиному генератора p (z) = z8 + z2 + 1.

КоличествоПример 1Пример 2
Generator polynomial   g1 = [1 0 0 0 0 0 1 0 1]   g2 = [8 2 0]
Степень полинома генератора 8, который является length(g1)-1 8
Initial states [1 0 0 0 0 0 1 0]  [1 0 0 0 0 0 1 0] 

Output mask vector (or scalar shift value) переключает отправную точку выходной последовательности. С настройкой по умолчанию для этого параметра приезжает единственная связь, стрелка маркировала m0, который соответствует сдвигу 0. Параметр описан более подробно ниже.

Можно переключить отправную точку последовательности PN с Output mask vector (or scalar shift value). Можно задать параметр любым из двух способов:

  • Целое число, представляющее длину сдвига

  • Бинарный вектор, названный вектором маски, длина которого равна степени полинома генератора

Различие между выводом блока, когда вы устанавливаете Output mask vector (or scalar shift value) на 0, по сравнению с положительным целым числом d, показывают в следующей таблице.

T = 0 T = 1 T = 2 ... T = d T = d+1
Shift = 0 x0 x1 x2 ... xd xd+1
Shift = d xd xd+1 xd+2 ... x2d x2d+1

Также можно установить Output mask vector (or scalar shift value) на бинарный вектор, соответствуя полиному в z, mr-1zr-1 + mr-2zr-2 +... + m1z + m0, степени в большей части r-1. Соответствие вектора маски сдвигу d является вектором, который представляет m (z) = zd g по модулю (z), где g (z) является полиномом генератора. Например, если степень полинома генератора равняется 4, то вектором маски, соответствующим d = 2, является [0 1 0 0], который представляет полином m (z) = z2. Предыдущая принципиальная схема показывает, как Output mask vector (or scalar shift value) реализован, когда вы задаете его как вектор маски. Настройкой по умолчанию для Output mask vector (or scalar shift value) является 0. Можно вычислить вектор маски использование функции Communications Toolbox™ shift2mask.

Можно использовать внешний сигнал сбросить значения внутреннего сдвигового регистра к начальному состоянию путем выбора Reset on nonzero input. Это создает входной порт для внешнего сигнала в блоке PN Sequence Generator.

Пример: сброс сигнала

Предположим, что блок PN Sequence Generator выходные параметры [1 0 0 1 1 0 1 1], когда не будет никакого сброса. Вы затем выбираете Reset on nonzero input и вводите сигнал сброса [0 0 0 1]. Следующая таблица показывает эффект сигнала сброса на блоке PN Sequence Generator.

Сбросьте свойства сигналаБлок PN Sequence Generator Сбросьте сигнал, выходной сигнал

Sample time = 1

Sample time = 1

Последовательность PN сбрасывается на уровне четвертого бита, потому что четвертый бит сигнала сброса является 1, и Sample time равняется 1.

Последовательности максимальной длины

Чтобы сгенерировать максимальную последовательность длины для полинома генератора, имеющего степень, r, устанавливает Generator polynomial на значение из следующей таблицы. Максимальная длина последовательности 2r – 1. См. [1] для получения дополнительной информации о настройках сдвигового регистра, которые представляют эти полиномы.

rПолином генератораrПолином генератора
2 [2 1 0] 21 [21 19 0]
3 [3 2 0] 22 [22 21 0]
4 [4 3 0] 23 [23 18 0]
5 [5 3 0] 24 [24 23 22 17 0]
6 [6 5 0] 25 [25 22 0]
7 [7 6 0] 26 [26 25 24 20 0]
8 [8 6 5 4 0] 27 [27 26 25 22 0]
9 [9 5 0] 28 [28 25 0]
10 [10 7 0] 29 [29 27 0]
11 [11 9 0] 30 [30 29 28 7 0]
12 [12 11 8 6 0] 31 [31 28 0]
13 [13 12 10 9 0] 32 [32 31 30 10 0]
14 [14 13 8 4 0] 33 [33 20 0]
15 [15 14 0] 34 [34 15 14 1 0]
16 [16 15 13 4 0] 35 [35 2 0]
17 [17 14 0] 36 [36 11 0]
18 [18 11 0] 37 [37 12 10 2 0]
19 [19 18 17 14 0] 38 [38 6 5 1 0]
20 [20 17 0] 39 [39 8 0]
40 [40 5 4 3 0] 47 [47 14 0]
41 [41 3 0] 48 [48 28 27 1 0]
42 [42 23 22 1 0] 49 [49 9 0]
43 [43 6 4 3 0] 50 [50 4 3 2 0]
44 [44 6 5 2 0] 51 [51 6 3 1 0]
45 [45 4 3 1 0] 52 [52 3 0]
46 [46 21 10 1 0] 53 [53 6 2 1 0]

Пример генерации последовательности PN

Этот пример разъясняет операцию блока PN Sequence Generator путем сравнения выходной последовательности от блока библиотеки со сгенерированным от примитивных блоков Simulink.

Чтобы открыть модель, введите doc_pnseq2 в командной строке MATLAB®.

Для выбранного полинома генератора, p(z)=z6+z+1, модель генерирует последовательность PN периода 63, с помощью и блока библиотеки и соответствующих блоков Simulink. Это показывает, как эти два параметра, Initial states и Output mask vector (or scalar shift value), интерпретированы в схематичном последнем.

Можно экспериментировать с различными начальными состояниями путем изменения значения Initial states до выполнения симуляции. Для всех значений две сгенерированных последовательности являются тем же самым.

Используя PN Sequence Generator блок позволяет вам легко генерировать последовательности PN больших периодов.

Параметры

Generator polynomial

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

Initial states

Вектор начальных состояний сдвиговых регистров.

Output mask source

Задает, как выходная информация о маске дана блоку.

  • Когда вы устанавливаете этот параметр на Dialog parameter, поле Output mask vector (or scalar shift value) включено для ввода данных пользователем.

  • Когда установлено этот параметр на Input port, входной порт Mask появляется на значке блока. Входной порт Mask только принимает векторы маски.

Output mask vector (or scalar shift value)

Это поле доступно только, когда Output mask source установлен в Dialog parameter.

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

Output variable-size signals

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

Maximum output size source

Задайте, как блок задает максимальный выходной размер для сигнала.

  • Когда вы выбираете Dialog parameter, значение, которое вы вводите в параметр Maximum output size, задает максимальный размер вывода. Когда вы делаете этот выбор, входной порт oSiz задает текущий размер выходного сигнала, и блок вывод наследовал шаг расчета от входного сигнала. Входное значение должно быть меньше чем или равно параметру Maximum output size.

  • Когда вы выбираете Inherit from reference port, блок вывод наследовал шаг расчета, максимальный размер и текущий размер от сигнала переменного размера в Касательно входного порта.

Этот параметр только появляется, когда вы выбираете Output variable-size signals. Выбором по умолчанию является Dialog parameter.

Maximum output size

Задайте двухэлементный вектор - строку, обозначающий максимальный выходной размер для блока. Вторым элементом вектора должен быть 1, Например, [10 1] дает максимальный размерный выходной сигнал 10 на 1. Этот параметр только появляется, когда вы выбираете Output variable-size signals.

Sample time

Время между каждой выборкой столбца выходного сигнала.

Samples per frame

Количество выборок на кадр в одном канале выходного сигнала.

Примечание

Время между выходными обновлениями равно продукту Samples per frame и Sample time. Например, если Sample time и Samples per frame равняются один, блок выводит выборку каждую секунду. Если Samples per frame увеличен до 10, то вектор 10 на 1 выводится каждые 10 секунд. Это гарантирует, что эквивалентная норма выработки не зависит от параметра Samples per frame.

Reset on nonzero input

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

Enable bit-packed outputs

Когда выбрано, поле Number of packed bits и опция Interpret bit-packed values as signed включен.

Number of packed bits

Указывает, сколько битов, чтобы упаковать в каждое слово выходных данных (допустимая область значений равняется 1 - 32).

Interpret bit-packed values as signed

Указывает, обработаны ли упакованные биты как значения данных беззнаковых целых чисел или целое число со знаком. Когда выбрано, 1 в старшем значащем бите (знаковый бит) указывает на отрицательную величину.

Output data type

По умолчанию это установлено в double.

Когда Enable bit-packed outputs не выбран, тип выходных данных может быть задан как double, boolean или Smallest unsigned integer. Когда параметр устанавливается на Smallest unsigned integer, тип выходных данных выбран на основе настроек, используемых в панели Hardware Implementation диалогового окна Configuration Parameters модели. Если ASIC/FPGA выбран в панели Hardware Implementation, тип выходных данных является идеальным минимальным однобитным размером, т.е. ufix(1). Для всех других выборов это - беззнаковое целое с самым маленьким доступным размером слова, достаточно большим, чтобы соответствовать одному биту, обычно соответствуя размеру char (например, uint8).

Когда Enable bit-packed outputs выбран, тип выходных данных может быть задан как double или Smallest integer. Когда параметр устанавливается на Smallest integer, тип выходных данных выбран на основе Interpret bit-packed values as signed, Number of packed bits и настроек, используемых в панели Hardware Implementation диалогового окна Configuration Parameters модели. Если ASIC/FPGA выбран в панели Hardware Implementation, типом выходных данных является идеальный минимальный n битный размер, т.е. sfix(n) или ufix(n), на основе Interpret bit-packed values as signed. Для всех других выборов это - целое число со знаком или беззнаковое целое с самым маленьким доступным размером слова, достаточно большим, чтобы соответствовать битам n.

Примеры

PN, распространяющийся с многопутевым

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

Откройте модель здесь: pn_sequence_block_example1

modelname = 'pn_sequence_block_example1';
open_system(modelname);
sim(modelname);

В этом случае для трех каналов пути, существуют усиления из-за объединения разнообразия. Это сделано возможным идеальными свойствами автокорреляции используемых последовательностей PN.

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

close_system(modelname, 0);

PN, распространяющийся с двумя пользователями и многопутевой

Эта модель рассматривает псевдослучайное распространение для объединенной 2D пользовательской передачи в лучевой среде.

Откройте модель здесь: pn_sequence_block_example2

modelname = 'pn_sequence_block_example2';
open_system(modelname);
sim(modelname);

Для двух отличных последовательностей PN, используемых для распространения, обратите внимание, что производительность отдельного пользователя теперь ухудшилась для тех же условий канала (сравните 139 ошибок с 41 сверху). Это происходит, в основном, из-за более высоких значений взаимной корреляции между двумя последовательностями, которые предотвращают идеальное разделение. Отметьте, существуют все еще преимущества для объединения, как коэффициент ошибок для многопутевого плюс канал AWGN с объединением RAKE почти как хороший что касается AWGN-единственного случая.

close_system(modelname, 0);

Ссылки

[1] Proakis, Джон Г., Цифровая связь, Третий выпуск, Нью-Йорк, Макгроу Хилл, 1995.

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

[3] Golomb, S.W., последовательности сдвигового регистра, эгейский парк Press, 1967.

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

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

Представлено до R2006a