CDR — восстановление тактов и данных
Последовательная оптическая линия не несёт отдельного тактового сигнала: приёмник должен восстановить такт из самого потока данных и затем пересэмплировать («ретаймить») биты по нему. Схема, которая это делает, — CDR (clock and data recovery). Где стоит CDR — в хосте или внутри модуля — одно из определяющих различий форм-факторов, а его биты управления входят в память, которую CodingBox читает и кодирует.
Что делает CDR
- Извлекает такт из фронтов входящих бит с помощью петли ФАПЧ.
- Ретаймит данные — пересэмплирует каждый бит по фронту восстановленного такта, убирая накопленный по пути временной шум (джиттер).
- Регенерирует чистые фронты к следующей ступени (драйвер лазера на стороне Tx, SerDes хоста на стороне Rx).
Таким образом CDR — точка сброса джиттера. У каждой линии есть бюджет джиттера, разделяемый между дорожкой платы хоста, разъёмом и модулем; ретаймер в модуле позволяет хосту тратить свою долю свободнее.
На хосте или в модуле
| Форм-фактор | Где CDR | Следствие |
|---|---|---|
| XFP | в модуле (интерфейс XFI) | простой хост, протоколонезависимый модуль; модуль крупнее и горячее |
| SFP+ | на хосте (интерфейс SFI) | маленький, холодный, дешёвый модуль; хосту нужны CDR/EDC; возможны linear-модули (LRM) |
| SFP28 | обычно в модуле | бюджет джиттера 25G слишком тесен для хоста в одиночку |
| QSFP+ 40G | в модуле часто нет | хост ретаймит 4×10G |
| QSFP28 100G | CDR Tx и Rx в модуле (типично) | поканальное включение/выключение; объявляются биты CDR present |
| Модули PAM4 (QSFP56 / QSFP-DD / OSFP) | DSP — CDR с эквализацией и знанием о FEC | высокая мощность; LPO снова его убирает |
Именно поэтому SFP+ обошёл XFP в плотной коммутации 10G, а модули 100G горячее, чем 40G.
Где это в памяти модуля
SFF-8636 (QSFP+/QSFP28) — см. SFF-8636:
| Байт | Поле | Смысл |
|---|---|---|
| 129 (верхняя страница 00h) | Extended Identifier, биты 3 / 2 | CDR present в Tx / в Rx |
| 98 (нижняя страница) | CDR control | биты 7–4 включают Tx CDR по каналам, биты 3–0 — Rx CDR по каналам |
| 5 (нижняя страница) | флаги LOL | биты 7–4 Tx loss of lock по каналам, биты 3–0 Rx LOL по каналам |
| 194 (верхняя страница 00h) | Options | реализованы ли управление CDR и флаги LOL |
CMIS (QSFP-DD, OSFP, QSFP112) — Page 01h объявляет поддержку Tx/Rx CDR и возможность управлять bypass; на Page 10h — поканальные включение/обход Tx/Rx CDR, а автомат состояний data-path не дойдёт до activated, если требуемый CDR не захватится (Проблемы CMIS).
SFF-8472 (SFP/SFP+/SFP28) — стандартного управления CDR нет; CDR модуля (если есть) управляется внутренне. Родственный видимый хосту механизм — выбор скорости, переключающий полосу приёмника между группами скоростей.
Почему это важно на практике
- Многоскоростные модули. CDR захватывается в диапазоне скоростей. Модуль 25G на 10G или 100G QSFP28 в breakout 4×10G должны иметь CDR с поддержкой низкой скорости — либо хост должен его обойти (байт 98 / CMIS). «Работает на 25G, мёртв на 10G» — обычно это.
- Loss of lock как диагностика. Флаги LOL означают, что CDR не может восстановить такт: сигнал слишком деградировал, неверная скорость или сигнала нет — проверьте мощность Rx и настройки скорости, прежде чем подозревать модуль (уровни DDM).
- Мощность и задержка. Каждый ретаймер стоит мощности (десятки–сотни мВт на 25G; ватты для DSP PAM4) и добавляет задержку. Короткие DAC и чувствительные к задержке фабрики часто работают с обходом CDR.
- Согласованность при кодировании. При перекодировке QSFP28 биты CDR present (байт 129) должны соответствовать железу: хост, считающий, что CDR есть, может оставить их включёнными на скорости, которую отсутствующий/другой CDR не потянет. См. Аппаратные спецификации семейства QSFP.
В CodingBox
Редактор EEPROM подписывает эти поля при наведении — CDR present, CDR control, флаги LOL, Options — по SFF-8636 или CMIS, так что можно прочитать конфигурацию CDR модуля, увидеть потерю захвата на канале и сохранить биты CDR согласованными с железом при кодировании идентификации.