serdes.CDR

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

Описание

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

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

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

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

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

Создание

Описание

cdr = serdes.CDR возвращает объект CDR, который определяет время выборки часов и оценивает символ данных согласно алгоритму CDR Скорострельного оружия. Это не возвращает или изменяет входящую форму волны.

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

Пример: cdr = serdes.CDR('Count',8)

Свойства

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

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

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

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

Основной

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

Early/late count threshold также управляет пропускной способностью CDR, который приблизительно вычисляется при помощи уравнения:

Типы данных: 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 должен быть применен как одна выборка за один раз и не как вектор.

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

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием 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

Для просмотра документации необходимо авторизоваться на сайте