serdes.CDR

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

Описание

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

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

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

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

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

Создание

Описание

cdr = serdes.CDR возвращает объект CDR, который определяет время выборки часов и оценивает символ данных согласно алгоритму 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

Схема Modulation в виде 2 или 4.

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

Типы данных: 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 — Накопленный 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')

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

Введенный в R2019a