Сгенерируйте псевдошумовую последовательность
Подбиблиотека 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 Sequence Generator
путем сравнения выходной последовательности от блока библиотеки со сгенерированным от примитивных блоков Simulink.
Чтобы открыть модель, введите doc_pnseq2
в командной строке MATLAB®.
Для выбранного полинома генератора, , модель генерирует последовательность PN периода 63, с помощью и блока библиотеки и соответствующих блоков Simulink. Это показывает, как эти два параметра, Initial states и Output mask vector (or scalar shift value), интерпретированы в схематичном последнем.
Можно экспериментировать с различными начальными состояниями путем изменения значения Initial states до выполнения симуляции. Для всех значений две сгенерированных последовательности являются тем же самым.
Используя PN Sequence Generator блок позволяет вам легко генерировать последовательности PN больших периодов.
Полином, заданный как вектор символов или вектор, который определяет связи обратной связи сдвигового регистра.
Вектор начальных состояний сдвиговых регистров.
Задает, как выходная информация о маске дана блоку.
Когда вы устанавливаете этот параметр на Dialog parameter
, поле Output mask vector (or scalar shift value) включено для ввода данных пользователем.
Когда установлено этот параметр на Input port
, входной порт Mask
появляется на значке блока. Входной порт Mask
только принимает векторы маски.
Это поле доступно только, когда Output mask source установлен в Dialog parameter
.
Целочисленный скаляр или бинарный вектор, который определяет задержку последовательности PN с начального времени. Если вы задаете сдвиг как бинарный вектор, длина вектора должна равняться степени полинома генератора.
Установите этот флажок, если вы хотите, чтобы выходные последовательности отличались по длине во время симуляции. Выбор по умолчанию выходные сигналы фиксированной длины.
Задайте, как блок задает максимальный выходной размер для сигнала.
Когда вы выбираете Dialog parameter
, значение, которое вы вводите в параметр Maximum output size, задает максимальный размер вывода. Когда вы делаете этот выбор, входной порт oSiz
задает текущий размер выходного сигнала, и блок вывод наследовал шаг расчета от входного сигнала. Входное значение должно быть меньше чем или равно параметру Maximum output size.
Когда вы выбираете Inherit from reference port
, блок вывод наследовал шаг расчета, максимальный размер и текущий размер от сигнала переменного размера в Касательно входного порта.
Этот параметр только появляется, когда вы выбираете Output variable-size signals. Выбором по умолчанию является Dialog parameter
.
Задайте двухэлементный вектор - строку, обозначающий максимальный выходной размер для блока. Вторым элементом вектора должен быть 1
, Например, [10 1] дает максимальный размерный выходной сигнал 10 на 1. Этот параметр только появляется, когда вы выбираете Output variable-size signals.
Время между каждой выборкой столбца выходного сигнала.
Количество выборок на кадр в одном канале выходного сигнала.
Время между выходными обновлениями равно продукту Samples per frame и Sample time. Например, если Sample time и Samples per frame равняются один, блок выводит выборку каждую секунду. Если Samples per frame увеличен до 10, то вектор 10 на 1 выводится каждые 10 секунд. Это гарантирует, что эквивалентная норма выработки не зависит от параметра Samples per frame.
Когда выбрано, можно задать входной сигнал, который сбрасывает внутренние сдвиговые регистры к исходным значениям параметра Initial states.
Когда выбрано, поле Number of packed bits и опция Interpret bit-packed values as signed включен.
Указывает, сколько битов, чтобы упаковать в каждое слово выходных данных (допустимая область значений равняется 1 - 32).
Указывает, обработаны ли упакованные биты как значения данных беззнаковых целых чисел или целое число со знаком. Когда выбрано, 1 в старшем значащем бите (знаковый бит) указывает на отрицательную величину.
По умолчанию это установлено в 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_sequence_block_example1
modelname = 'pn_sequence_block_example1';
open_system(modelname);
sim(modelname);
В этом случае для трех каналов пути, существуют усиления из-за объединения разнообразия. Это сделано возможным идеальными свойствами автокорреляции используемых последовательностей PN.
Чтобы экспериментировать с этой моделью далее, измените параметры блоков Генератора Последовательности PN. Дополнительно для тех же последовательностей, выберите другие задержки пути, чтобы видеть изменения производительности.
close_system(modelname, 0);
Эта модель рассматривает псевдослучайное распространение для объединенной 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.