serdes.CDR

Выполняет функцию восстановления данных синхроимпульса

Описание

The serdes.CDR Системная object™ обеспечивает время дискретизации синхроимпульса и оценивает символы данных в приемник с помощью модели CDR отслеживания фазы первого порядка. Для получения дополнительной информации смотрите Часы и Восстановление данных в системе SerDes.

Для обеспечения местоположения синхроимпульса данных:

  1. Создайте serdes.CDR Объекту и установите его свойства.

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

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

Создание

Описание

cdr = serdes.CDR возвращает объект CDR, который определяет время дискретизации синхроимпульса и оценивает символ данных согласно алгоритму Bang-Bang CDR. Он не возвращает и не изменяет входящий сигнал.

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

Пример: cdr = serdes.CDR('Count',8) возвращает объект CDR с ранним или поздним порогом отсчета CDR 8.

Свойства

расширить все

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

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

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

Главный

Ранний или поздний порог отсчета CDR для запуска обновления фазы, заданный как бесчисленное действительное положительное целое число ≥ 4. Увеличение значения Count обеспечивает более стабильную выходную фазу синхроимпульса за счет скорости сходимости. Поскольку решения по битам принимаются на выходе фазы синхроимпульса, более стабильная фаза синхроимпульса имеет лучшую частоту битовой ошибки (BER).

Count также управляет шириной полосы CDR, которая приблизительно вычисляется с помощью уравнения:

Bandwidth=1Время символа  · Количество ранних/поздних порогов  · Шаг

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

Разрешение фазы синхроимпульса, заданное как действительный скаляр в доле символьного времени. Step - обратное число регулировок фазы в CDR.

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

Смещение фазы синхроимпульса, заданное как действительный скаляр в области значений [-0,5,0,5] в доле символьного времени. PhaseOffset используется для ручного сдвига функции распределения вероятностей синхроимпульса (PDF) для улучшения частоты битовой ошибки (BER).

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

Ссылка смещения синхроимпульса, заданное как действительный скаляр ≤ 300 в частях на миллион (ppm). ReferenceOffset - отклонение между частотой генератора передатчика и частотой генератора приемника.

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

Мета-устойчивое напряжение защелки дискретизации, заданное как действительный скаляр в вольтах. Если выборка данных находится внутри области (+/- Sensitivity), существует 50% вероятность битовой ошибки..

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

Расширенный

Время одной длительности символа, заданное как действительный скаляр в s.

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

Равномерный временной шаг формы волны, заданный как действительный скаляр в s.

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

Схема модуляции, заданная как 2, 3 или 4.

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

Примечание

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

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

Форма типа входной волны:

  • 'Sample' - входной сигнал дискретизации по дискретизации.

  • 'Impulse' - входной сигнал импульсной характеристики.

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

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

Синтаксис

Описание

y = cdr(x)

Входные параметры

расширить все

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

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

расширить все

Относительная восстановленная фаза синхроимпульса, возвращенная как модули измерения SymbolTime в области значений [0,1].

AMI тактовая шина, возвращенная как структура, состоящая из:

  • ClockTime - время, затрачиваемое на выборку сигнала данных.

  • clockValidOnRising - действительное значение времени на переднем ребре сигнала

Шина, содержащая дополнительные внутренние сигналы CDR, возвращаемая как структура, состоящая из:

  • clockPhase - Относительная фаза синхроимпульса в единицах SymbolTime в области значений [0,1].

  • symbolRecovered - Символ, восстановленный из сигнала данных в ClockTime.

  • voltageSample - Напряжение, наблюдаемое из сигнала данных в ClockTime.

  • PAM4Threshold - Предполагаемый верхний глаз при PAM4 пороге.

  • CDRedgeVoltage - Напряжение, наблюдаемое из сигнала данных в ClockTime - SymbolTime/2.

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

  • CDREarlyLateCounter - сигнал bang-bang CDR, накопленный (или отфильтрованный), используемый для запуска обновления до фазы CDR.

  • PAM4SymbolMiddleVoltage - оцененное PAM4 напряжение символа внешней огибающей внутреннего глаза для оценки PAM4 порога.

  • PAM4OuterVoltage - Оценочное PAM4 напряжение внешней огибающей для оценки PAM4 порога.

  • EyeHeightAbsAve - Оценка высоты глаза.

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

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

release(obj)

расширить все

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

Примеры

свернуть все

В этом примере показано, как восстановить распределение синхроимпульсов с помощью serdes.CDR системный object™.

Используйте время символа 100 ps и 16 выборок на символ. Канал имеет 5 потеря дБ.

SymbolTime = 100e-12;
SamplesPerSymbol = 16;
dt = SymbolTime/SamplesPerSymbol;
loss = 5;
chan = serdes.ChannelLoss('Loss',loss,'dt',dt,...
       'TargetFrequency',1/SymbolTime/2,'RiseTime',SamplesPerSymbol/4*dt);

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

ord = 10;                       %PRBS order
nrz=prbs(ord,2^ord-1);
nrzPattern = nrz(:)' - 0.5;     %[0,1] --> [-0.5,0.5];
ChannelPulseResponse = impulse2pulse(chan.impulse, SamplesPerSymbol, dt);
waveprbs = pulse2wave(ChannelPulseResponse(:,1),nrzPattern,SamplesPerSymbol);
wave2 = [waveprbs; waveprbs];

Создайте объект CDR, который использует схему модуляции NRZ.

CDR1 = serdes.CDR('Modulation',2,'Count',8,'Step',1/64,...
       'SymbolTime',SymbolTime,'SampleInterval',dt);

Инициализируйте выходы.

phase = zeros(1,length(wave2));
CDRearlyLateCount = zeros(1,length(wave2));

Передайте форму волны по одной выборке за раз через объект CDR.

for ii = 1:length(wave2)
      [phase(ii), ~, optional] = CDR1(wave2(ii));
      CDRearlyLateCount(ii) = optional.CDRearlyLateCount;
end

Постройте график глазковой диаграммы с восстановленным распределением синхроимпульса, фазой синхроимпульса по времени и порогом раннего/позднего отсчета по времени.

t = (0:length(wave2)-1)/SamplesPerSymbol;
teye = (0:SamplesPerSymbol-1)/SamplesPerSymbol;
eyed = reshape(wave2,SamplesPerSymbol,[]);
 figure,
subplot(2,2,[1,3]), yyaxis left, plot(teye,eyed, '-b'),
title('Eye Diagram with Recovered Clock Distribution')
xlabel('Symbol Time'), ylabel('Voltage')
yyaxis right,
histogram(phase,SamplesPerSymbol/2)
set(gca,'YTick',[])
subplot(2,2,2), plot(t,phase)
xlabel('Number of Symbols'), ylabel('Symbol Time');
title('Clock Phase vs. Time')
subplot(224), plot(t,CDRearlyLateCount)
xlabel('Number of Symbols'), ylabel('Count')
title('Early/Late Count Threshold vs. Time')

Figure contains 3 axes. Axes 1 with title Eye Diagram with Recovered Clock Distribution contains an object of type histogram. Axes 2 with title Clock Phase vs. Time contains an object of type line. Axes 3 with title Early/Late Count Threshold vs. Time contains an object of type line.

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

.
Введенный в R2019a