serdes. CDR

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

Описание

Система serdes.CDR object™ обеспечивает время выборки часов и оценивает символы данных в получателе с помощью часов Скорострельного оружия и модели (CDR) восстановления данных.

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

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

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

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

Создание

Синтаксис

cdr = serdes.CDR
cdr = serdes.CDR (Name,Value)

Описание

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

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

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

Свойства

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

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

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

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

Основной

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

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

Синхронизируйте разрешение фазы, заданное как действительный скаляр в части единичного интервала (UI). Step является инверсией количества корректировок фазы в CDR.

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

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

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

Ссылочные часы сместили нарушение, заданное как действительный скаляр в области значений [-3e-4,3e-4] в частях на миллион (ppm). ReferenceOffset является отклонением между частотой осциллятора передатчика и частотой осциллятора получателя.

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

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

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

Усовершенствованный

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

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

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

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

Схема Modulation, заданная как 2 или 4.

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

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

Введите форму типа волны, заданную как:

  • 'Sample' - Входной сигнал выборки выборкой.

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

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

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

Синтаксис

y = cdr(x)

Описание

y = cdr(x)

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

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

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

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

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

release(obj)

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

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

Примеры

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

Этот пример показывает, как восстановить распределение часов с помощью системы serdes.CDR object™.

Используйте время символа PS 100 и выборок 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