serdes.Stimulus

Установите псевдослучайную двоичную последовательность (PRBS) шаблон и количество символов симулировать в модели SerDes

Описание

serdes.Stimulus Система object™ устанавливает шаблон PRBS и количество символов симулировать в модели SerDes Toolbox™.

Установить шаблон PRBS и количество символов:

  1. Создайте serdes.Stimulus объект и набор его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

пример

stimulus = serdes.Stimulus возвращает Stimulus возразите что выходные параметры PRBS или пользовательская форма волны шаблона данных.

stimulus = serdes.Stimulus(Name,Value) свойства наборов с помощью одних или нескольких аргументов name-value. Заключите каждое имя свойства в кавычки. Незаданные свойства имеют значения по умолчанию.

Пример: stimulus = serdes.Stimulus('Modulation',4,'Delay',10e-12) возвращает Stimulus возразите, что использует четырехуровневую импульсную амплитудную модуляцию (PAM4) схема модуляции и имеет задержку 10e-12 секунды.

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

Время односимвольной длительности в виде действительной положительной скалярной величины.

Настраиваемый: нет

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

Универсальный временной шаг формы волны в виде положительного действительного скаляра.

Настраиваемый: нет

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

Метод создания формы волны в виде одного из этих значений.

  • 'PRBS' — сгенерируйте псевдослучайную двоичную последовательность (PRBS) на основе Seed

  • 'Data Pattern' — задайте шаблон данных, чтобы модулировать

  • 'Sampled Voltage' — задайте произведенную последовательность напряжения, чтобы модулировать

  • 'PAMn' — сгенерируйте сигнал импульсной амплитуды модулируется (PAM) на основе PAMn Seed

Настраиваемый: нет

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

Значение модуляции, которое задает схему модуляции, количество логических уровней в кодируемом сообщении в виде целого числа в области значений [2, 16].

Значение модуляцииСхема модуляции
2Невозврат к нулю (NRZ)
3Трехуровневая импульсная амплитудная модуляция (PAM3)
4Четырехуровневая импульсная амплитудная модуляция (PAM4)

Примечание

IBIS не поддерживает схему модуляции PAM3. Вы не можете экспортировать в модель IBIS-AMI, если схема модуляции является PAM3.

Настраиваемый: нет

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

Задержите смещение шаблона данных в виде действительного неотрицательного скаляра. Прикладное смещение является модулем SymbolTime.

Настраиваемый: нет

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

PRBS заказывают в виде числового скаляра или числового вектора из положительных целых чисел меньше чем 100. Задайте Order как числовой вектор, когда значение Modulation больше 2. Для модуляции высшего порядка, первого Order запись задает поток PRBS для младшего значащего бита (LSB) и последнего Order запись задает поток PRBS для старшего значащего бита (MSB).

Настраиваемый: нет

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

PRBS отбирают в виде массива ячеек массива ячеек числовых бинарных векторов, которые не являются всем нулем. Длина каждого бинарного вектора является той же длиной как соответствующий Order.

Настраиваемый: нет

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

PRBS, сопоставляющий от бинарного потока (потоков) до напряжений в виде вектора. Длина MapToVoltage потребности совпасть с количеством логических уровней, заданных Modulation свойство. LSB поток PRBS, p1, и MSB поток PRBS, pn, индексируйте MapToVoltage можно следующим образом: Index = p1 + 2^1*p2 + 2^2*p3 + ... + 2^(n-1)*pn.

Настраиваемый: нет

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

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

Настраиваемый: нет

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

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

Настраиваемый: нет

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

Отберите для генератора шаблона PAMn в виде неотрицательного номера между 2 и 2^31 - 1.

Настраиваемый: нет

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

Детерминированное дрожание или некоррелированое ограниченное универсальное дрожание в виде неотрицательного номера. Значение Dj указывает на половину пика, чтобы достигнуть максимума изменение детерминированного дрожания.

Настраиваемый: нет

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

Детерминированный модуль дрожания в виде 'Seconds' в течение многих секунд или 'UI' для единичного интервала.

Настраиваемый: нет

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

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

Настраиваемый: нет

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

Случайный модуль дрожания в виде 'Seconds' в течение многих секунд или 'UI' для единичного интервала.

Настраиваемый: нет

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

Искажение рабочего цикла в виде неотрицательного номера. Значение DCD указывает на половину от пика к пику DCD, где DCD задан как половина различия в длительности символа между одним символом и следующим.

Настраиваемый: нет

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

Модуль DCD в виде 'Seconds' в течение многих секунд или 'UI' для единичного интервала.

Настраиваемый: нет

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

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

Настраиваемый: нет

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

Синусоидальный или периодический модуль дрожания в виде 'Seconds' в течение многих секунд или 'UI' для единичного интервала.

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

Синусоидальная или периодическая частота дрожания в виде неотрицательного числового скаляра в Гц.

Настраиваемый: нет

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

Случайный seed для Dj и Rj пары дрожания в виде неотрицательного номера.

Настраиваемый: нет

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

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

Синтаксис

Описание

val = stimulus()

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

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

Одна выходная выборка PRBS каждый раз стимул называется. Эквивалентный вызову step(stimulus).

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

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

release(obj)

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

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

Примеры

свернуть все

В этом примере показано, как использовать serdes.Stimulus object, чтобы сгенерировать псевдослучайную двоичную последовательность (PRBS) и также модулировать пользовательские выборки.

Во-первых, задайте параметры последовательностей. Используйте время символа 80 пикосекунд с 8 выборками на символ. Отправьте 15 символов и используйте 0.1 в качестве детерминированного дрожания.

SymbolTime = 80e-12;
SamplesPerSymbol = 8;
NumberOfSymbols = 15;
Dj = 0.1;

Вычислите демонстрационный интервал.

dt = SymbolTime/SamplesPerSymbol;

Создайте объект Stimulus по умолчанию, который генерирует PRBS и использует схему модуляции NRZ.

stimulus1 = serdes.Stimulus(...
    'SampleInterval',dt,...
    'SymbolTime',SymbolTime,...
    'Dj',Dj);

Создайте объект Stimulus, который генерирует PRBS с порядком 8.

stimulus2 = serdes.Stimulus(...
    'SampleInterval',dt,...
    'SymbolTime',SymbolTime,...
    'Delay',dt*4,...
    'Specification','PRBS',...
    'Order',8,...
    'Seed',{[0 1 0 0 0 0 0 0]},...
    'Dj',Dj);

Создайте объект Stimulus, который генерирует PRBS и использует схему модуляции PAM4.

stimulus3 = serdes.Stimulus(...
    'SampleInterval',dt,...
    'SymbolTime',SymbolTime,...
    'Modulation',4,...
    'Delay',dt*4,...
    'Order',[6 8],...
    'MapToVoltage',2*[-1/2, 1/6, -1/6, 1/2],...
    'Dj',Dj);

Создайте объект Stimulus, который модулирует пользовательский шаблон данных.

stimulus4 = serdes.Stimulus(...
    'SampleInterval',dt,...
    'SymbolTime',SymbolTime,...
    'Specification','Data Pattern',...
    'DataPattern',(-2:2)/2,...
    'Dj',Dj);

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

stimulus5 = serdes.Stimulus(...
    'SampleInterval',dt,...
    'SymbolTime',SymbolTime,...
    'Specification','Sampled Voltage',...
    'SampledVoltage',[-1.5:0.25:1.5,1.25:-0.25:-1.25]);

Инициализируйте переменные для графического вывода, где N является количеством отсчетов, waveOut содержит все выборки, и t является вектором со временем, сопоставленным с каждой выборкой.

N = SamplesPerSymbol*NumberOfSymbols;
waveOut = zeros(N,5);
t = (0:N-1)*dt;

Затем используйте шаг каждого объекта Stimulus произвести сгенерированные сигналы.

for ii = 1:N
    waveOut(ii,1) = step(stimulus1);
    waveOut(ii,2) = step(stimulus2);
    waveOut(ii,3) = step(stimulus3);
    waveOut(ii,4) = step(stimulus4);
    waveOut(ii,5) = step(stimulus5);
end

Наконец, постройте waveOut с легендой и метками на осях.

figure
plot(t,waveOut)
xlabel('time [s]')
ylabel('V')
grid on
legend('Default Stimulus','PRBS 8 Stimulus','PAM4 Stimulus',...
    'Custom Stimulus','Sampled Voltage')

Figure contains an axes object. The axes object contains 5 objects of type line. These objects represent Default Stimulus, PRBS 8 Stimulus, PAM4 Stimulus, Custom Stimulus, Sampled Voltage.

Советы

  • Если определение спецификации формы волны PRBS будет неполным, то расширенные значения по умолчанию будут применены. Например, если Модуляция будет равняться 4, но Seed является неполным или неправильным, допустимое Начальное значение будет находиться и использоваться.

  • Спецификация формы волны PAMn создает сигналы импульсной амплитудной модуляции (PAM) для 2 - 16 уровней. Этот случайный целочисленный генератор выбирает 16 битов из потока данных PRBS31, чтобы сформировать целое число между 0 и 2^16-1. Это целое число затем линейно сопоставлено с областью значений [0.501, N + 0.499], который затем округлен до целого числа в области значений 1 к N, где N является желаемым количеством уровней PAM. Это универсальное целое число затем выбирает соответствующее напряжение символа из MapToVoltage свойство.

  • Введенное дрожание накапливается можно следующим образом:

    DJ: jitter = 2*Dj* (rand (1)-0.5);

    Rj: jitter = Rj*randn (1);

    DCD: дрожите = DCD/2* (-1.0), ^N, где N является индексом символа

    Sj: дрожите = pSj*sin (N*T*2*pi*SjFrequency), где N является индексом символа, T является временем символа.

    Дрожание введено в символе к преобразованию формы волны, и поэтому дрожание не может быть введено, когда Спецификацией является 'Выбранное Напряжение'.

Смотрите также

|

Введенный в R2021b