Циклы восстановления тактового сигнала модели в SerDes Toolbox

В этом примере показано, как создать подробные модели различных типов последовательных циклов восстановления тактового сигнала канала, такие как Александр (скорострельное оружие), Меуллер-Мюллер и Hogg & Chu.

Синхронизированный блок сэмплера

Чтобы смоделировать цикл восстановления тактового сигнала точно, представление времен фронта синхроимпульса и связанная выборка сигнала данных должны быть максимально точными. Этот пример демонстрирует метод для выполнения этого в модели, которая использует фиксированный шаг дискретный шаг расчета. Этот метод упакован в блоке Clocked Sampler, который фиксируют модели и генератор синхросигналов и выборка данных.

Поведение генератора синхросигналов и фиксатора выборки данных очень похоже для различных типов циклов восстановления тактового сигнала. Но поведение и реализация детектора фазы и контурного фильтра могут намного больше значительно различаться. Например, для цикла восстановления тактового сигнала Александра, обнаружение фазы является boased на сравнении логических значений, которые фиксируют при повышении и падающих ребрах часов. Обнаружение фазы In contrast, Hogg & Chu сравнивает синхронизацию часов, падающих ребро с пороговым временем пересечения данных, и обнаружение фазы Меуллер-Мюллера зависит только от выборки напряжения на скорости в бодах. Структура модели цикла восстановления тактового сигнала делает, максимально легко вместить эти различия.

Откройте модель SerDesClockRecovery, присоединенную к этому примеру.

open('SerDesClockRecovery.slx');

Чтобы сгенерировать сигнал данных для восстановления тактового сигнала, эта модель использует генератор данных, управляющий аналоговым каналом с потерями. Дополнительная задержка вставляется, чтобы ввести смещение задержки относительно стимула. Задержанный сигнал данных управляет одним блоком Clocked Sampler, который предоставляет часы и выборки данных о данных к трем различным контурным фильтрам: контурный фильтр Александра, контурный фильтр Меуллер-Миллера и контурный фильтр Hogg & Chu. Вы можете slect выход любого из этих трех контурных фильтров как сигнал обратной связи управлять Синхронизированным Сэмплером с помощью обеспеченных переключателей. Вставьте одну демонстрационную задержку, чтобы избежать алгебраического цикла.

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

Синхронизированный Сэмплер, Контурный фильтр Александра, Контурный фильтр Меуллер-Мюллера и Hogg & Chu Loop Filter все реализованы как системные объекты. Пример содержит исходный код для этих классов системного объекта. Эта структура кода была выбрана, чтобы представить алгоритмическое отношение между Синхронизированным Сэмплером и контурным фильтром максимально ясно. Чтобы реализовать эту функциональность в приемнике SerDes Toolbox, необходимо объединить алгоритмическое содержимое в класс отдельного объекта, который более тесно напоминает класс serdes.cdr object.

В Синхронизированном Сэмплере повышение и падающие времена фронта синхроимпульса представлено как числа с плавающей точкой, которые вычисляются, чтобы включать эффекты шума фазы и частоты смещения часов, а также управляющего сигнала смещения периода. Когда время фронта синхроимпульса больше предыдущего шага расчета, но меньше, чем текущий шаг расчета, сигнал данных во время фронта синхроимпульса производится с помощью линейной интерполяции между текущими и предыдущими значениями сигналов данных. Возрастающее демонстрационное значение ребра, падающее демонстрационное значение ребра, значение сигналов часов и зарегистрированный показывают время, все обновляются в шаге расчета после каждого фронта синхроимпульса. Синхронизация в контурном фильтре не очень важна, и обработка контурного фильтра может быть выполнена в шаге расчета, когда контурный фильтр получает переход часов.

Александр (скорострельное оружие) восстановление тактового сигнала

Цикл восстановления тактового сигнала Александра обнаруживает фазу часов путем определения, совпадает ли знак сигнала данных в падающем ребре часов со знаком сигнала данных во фронте, который произошел или прежде или после падающего ребра. Если знак в падающем ребре совпадает со знаком в предыдущем возрастающем ребре, но не последующем возрастающем ребре, то часы являются ранними. С другой стороны, если знак в падающем ребре совпадает со знаком в последующем возрастающем ребре, но не знаком в предыдущем возрастающем ребре, то часы являются поздними. Контурный фильтр является реверсивным счетчиком, который производит или положительный (ранний) или отрицательный (последний) импульс, когда он переполняется. Для подробного объяснения цикла восстановления тактового сигнала Александра смотрите Часы и Восстановление данных в Системе SerDes.

Начальная настройка модели SerDesClockRecovery выбирает выход контурного фильтра Александра, чтобы управлять фазой часов в Синхронизированном Сэмплере.

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

simout = sim(gcs);
ctBB = plotClockTimes(simout);

Восстановление тактового сигнала Меуллер-Мюллера

Алгоритм восстановления тактового сигнала Меуллер-Мюллера принимает, что изменения формы волны данных, самые быстрые, когда существует переход между значениями символа данных, такими как переход от одного до нуля для сигнала данных NRZ. Это предположение позволяет циклу восстановления тактового сигнала использовать одно количественное напряжение на символ, который является преимуществом на высоких скоростях передачи данных. Ошибочная оценка времени для Контурного фильтра Меуллер-Мюллера примера чертится от, СИНХРОНИЗИРУЮТ ВОССТАНОВЛЕНИЕ ДАННЫХ AND FOR ВЫСОКОСКОРОСТНЫЕ ПРИЕМНИКИ ADC-BASED, разделяют 2.3.1

$$\tau_A = \left(y_{i-1}\hat{y}_i\right) -
\left(y_i\hat{y}_{i-1}\right)$$

где$y_{i-1}$ предыдущее напряжение является демонстрационным,$y_i$ действительно ли текущее напряжение является демонстрационным,$\hat{y}_{i-1}$ предыдущим является фиксируемое значение символа, и$\hat{y}_i$ ток является фиксируемым значением символа.

Чтобы оценить ответ цикла восстановления тактового сигнала Меуллер-Мюллера, переместите переключатель Filter Select 1 в его второй входной порт. Запустите симуляцию и добавьте историю времени восстановленной фазы часов и синхронизируйте гистограмму фазы фигурам, которые были уже созданы для цикла восстановления тактового сигнала Александра. Сохраните историю времени фазы часов к базовому рабочему пространству так, чтобы можно было анализировать его позже.

set_param([gcs '/Filter Select 1'],'sw','0');
simout = sim(gcs);
ctMM = plotClockTimes(simout);

Hogg & Chu Clock Recovery

Алгоритм восстановления тактового сигнала Hogg & Chu выполняет относительно прямое измерение фазы часов путем измерения времени между пороговым пересечением сигнала данных и падающим ребром восстановленных часов. В то время как блоки могли быть добавлены к модели в качестве примера, чтобы измерить пороговое время пересечения сигнала данных непосредственно, Hogg & Chu Loop Filter в этом примере использует приближение упрощения, что наклон сигнала данных в пороговой области пересечения является постоянным. Как оценено, если пороговое пересечение было подтверждено выборка в следующем фронте синхроимпульса, ошибка времени

$$\tau_A = \frac{\hat{y}_{i-1}v_{f,i}}{v_{max}}$$

то, где$\hat{y}_{i-1}$ ранее обнаруженное значение символа данных,$v_{f,i}$ напряжение, зарегистрировано на предыдущем фронте синхроимпульса, и$v_{max}$ действительно ли максимальный сигнал данных является амплитудой.

Чтобы оценить reponse цикла восстановления тактового сигнала Hogg & Chu, переместите переключатель Fiter Select 2 в его второй входной порт. Запустите симуляцию, и добавьте историю времени восстановленной фазы часов и синхронизируйте гистограмму фазы фигурам, которые были уже созданы для циклов восстановления тактового сигнала Александра и Меуллер-Мюллера. Сохраните историю времени фазы часов к базовому рабочему пространству так, чтобы можно было анализировать его позже.

set_param([gcs '/Filter Select 2'],'sw','0');
simout = sim(gcs);
ctHC = plotClockTimes(simout);