Создайте объект генератора последовательности PN
h = commsrc.pn
h = commsrc.pn(property1,value1,...)
h = commsrc.pn
создает объект генератора последовательности PN по умолчанию h и эквивалентен следующему:
H = commsrc.pn('GenPoly', [1 0 0 0 0 1 1], ... 'InitialStates', [0 0 0 0 0 1], ... 'CurrentStates', [0 0 0 0 0 1], ... 'Mask', [0 0 0 0 0 1], ... 'NumBitsOut', 1)
или
H = commsrc.pn('GenPoly', [1 0 0 0 0 1 1], ... 'InitialStates', [0 0 0 0 0 1], ... 'CurrentStates', [0 0 0 0 0 1], ... 'Shift', 0, ... 'NumBitsOut', 1)
h = commsrc.pn(property1,value1,...)
создает объект генератора последовательности PN, h, со свойствами, которые вы задаете как пары свойства/значения.
Генератору последовательности PN показали свойства на следующей таблице. Все свойства перезаписываемы за исключением тех явным образом отмеченных в противном случае.
Свойство | Описание |
---|---|
GenPoly | Векторный массив полинома генератора битов; должен быть порядок убывания |
InitialStates | Векторный массив (с продолжительностью порядка полинома генератора) начальных значений сдвигового регистра (в битах) |
CurrentStates | Векторный массив (с продолжительностью порядка полинома генератора) существующих значений сдвигового регистра (в битах) |
NumBitsOut | Количество битов, чтобы вывести при каждом вызове метода generate |
Mask или Shift | Вектор маски двоичного файла, который 0 и 1 значение используется, чтобы задать, какие биты состояния сдвигового регистра являются XORed, чтобы произвести получившееся выходное битовое значение. Также скалярное значение сдвига может использоваться, чтобы задать эквивалентный сдвиг (или задержка или усовершенствование) в выходной последовательности. |
Значения свойств 'GenPoly'
задают связи сдвигового регистра. Введите эти значения или как бинарный вектор или как вектор экспонент ненулевых условий полинома генератора в порядке убывания степеней. Для бинарного векторного представления первые и последние элементы вектора должны быть 1. Для упорядоченного убыванию полиномиального представления последний элемент вектора должен быть 0. Для получения дополнительной информации и примеры, смотрите раздел LFSR SSRG Details этой страницы.
Генератор последовательности PN оборудован следующими методами.
Сгенерируйте [NumBitsOut x 1] значения генератора последовательности PN
Установите значения CurrentStates
к значениям InitialStates
Получите фактическое или эквивалентное значение свойства Shift
Получите фактическое или эквивалентное значение свойства Mask
Сделайте независимую копию объекта commsrc.pn
Отобразите свойства объекта генератора последовательности PN
Каждый раз, когда это свойство установлено, оно сбросит целый объект. В дополнение к изменению полиномиальных значений 'CurrentStates'
, 'InitialStates'
и 'Mask'
будут установлены в их значения по умолчанию ('NumBitsOut'
останется то же самое), и никакие предупреждения не будут выданы.
Каждый раз, когда это свойство установлено, оно также установит 'CurrentStates'
на новую установку 'InitialStates'
.
Метод generate
производит последовательность псевдослучайного шума (PN) с помощью линейного сдвигового регистра обратной связи (LFSR). LFSR реализован с помощью простого генератора сдвигового регистра (SSRG или Фибоначчи) настройка, как показано ниже.
Все регистры r в генераторе обновляют свои значения на каждом временном шаге согласно значению входящей стрелки к сдвиговому регистру. Сумматоры выполняют сложение по модулю 2. Сдвиговый регистр описан свойством 'GenPoly'
(полином генератора), который является примитивным бинарным полиномом в z, grzr+gr-1zr-1+gr-2zr-2 +... +g0. Содействующий GK равняется 1, если существует связь от регистра kth, как маркировано в предыдущей схеме, к сумматору. Ведущий термин gr и постоянный термин g0 свойства 'GenPoly'
должны быть 1, потому что полином должен быть примитивным.
Можно задать параметр Generator polynomial с помощью любого из этих форматов:
Вектор, который перечисляет коэффициенты полинома в порядке убывания степеней. Первые и последние записи должны быть 1. Обратите внимание на то, что длина этого вектора является еще одним, чем степень полинома генератора.
Вектор, содержащий экспоненты z для ненулевых условий полинома в порядке убывания степеней. Последней записью должен быть 0
.
Например, [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
.
Если вы хотите сгенерировать последовательность максимальной возможной длины для фиксированной степени, r, полинома генератора, можно установить Generator polynomial на значение из следующей таблицы. См. Proakis, Джона Г., Цифровую связь, Третий выпуск, Нью-Йорк, Макгроу Хилла, 1995 для получения дополнительной информации о настройках сдвигового регистра, которые представляют эти полиномы.
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] |