Series termination
Вы когда-нибудь видели последовательные резисторы в цепи каких-нибудь интерфейсов, в том числе низкоскоростных типа UART, I2C, SPI? Их сигналы можно подключать напрямую, но некоторые разработчики ставят в линию резистор. Объясняется это тем, чтобы меньше было электро-магнитного излучения или для улучшения целостности сигнала. Но иногда значение этих резисторов отличаются: то 22 Ом, то 33 Ом, то еще что-то. От чего оно зависит? Это случайный выбор или всё-таки есть какая-то ощутимая разница в эти 11 Ом?

Разница всё-таки есть
Последовательное сопротивление ставится для согласования (кто бы мог подумать?) импеданса!
Как я писал в одном из своих постов, главная идея согласований в том, чтобы среда распространения сигнала везде имела один и тот же импеданс. Если при переходе из среды с одним значением импеданса в среду с другим значением импеданса, происходят отражения сигнала от этой границы сред. В данном случае, "средами" распространения сигнала является:
- Драйвер (источник сигнала)
- Линия передачи (дорожка на плате)
- Нагрузка (приемник сигнала)

Чем неприятны отражения?
Отраженная волна может войти в интерференцию с набегающей волной и вызвать overshoot или undershoot при считывании уровня сигнала. Если предположить, что импеданс драйвера Zs равен импедансу линии передачи Z0, то формула определяющая отражение волны будет:

Соответственно:
- ZL = Z0 - Нет отражения
- ZL > Z0 - Overshoot
- ZL < Z0 - Undershoot
Сколько импеданс нагрузки?
На рисунке чуть выше указано, что импеданс нагрузки ZL может быть порядка кило или Мега Омов. В то время как импеданс драйвер Zs - порядка дециОмов.
Очень большой разброс получается. При таком соотношении импедансов, выровнять их - это гарантированно иметь большие потери сигнала.
Решение, которое используют в таком случае, выглядит для меня неочевидным, контринтуитивным и что-то из разряда "черной магии".
Последовательный резистор
Если рядом с драйвером поставить резистор Rt такого номинала, чтобы Zs + Rt = 50 Ом (Z0), то получится что импеданс драйвера будет равен импедансу дорожки.

Согласно волновой теории, если мы имеем дело с длинной линией, то передаваемый сигнал видит эту линию передачи (дорожку на печатной плате) как эквивалентное сопротивление Z0, подключенное к земле.
И таким образом получается делитель напряжения! Сверху 50 Ом (импеданс драйвера + последовательный резистор), снизу 50 Ом (импеданс дорожки). А по середине между ними половина сигнала V.

- Эта половина сигнала V/2 достигает конца линии передачи и бьется о значительно больший импеданс приемника
- Согласно формуле из Рисунка 3, почти вся волна отражается обратно
- Отраженная волна сталкивается с набегающей (следующей) волной, которая тоже имеет амплитуду V/2
- Вместе для приемника они выглядят как V/2 + V/2 = V. Другими словами, с точки зрения приемника они складываются, поэтому он считывает сигнал c полноценной амплитудой V
- Отраженная волна бежит дальше по линии передачи, сталкивается с импедансом драйвера
- Поскольку импеданс драйвера вместе с терминирующим резистором (Zs + RT) равны импедансу линии передачи (Z0), то согласно формуле из Рисунка 3, отражение будет равно нулю
- Как итог, на приемник мы передали приличный красивый сигнал и всё благодаря одному резистору + непонятной волновой теории
Где его ставить?
Отдельно хочется подчеркнуть, что вся идея этой терминации в том, чтобы резистор стоял как можно ближе к источнику. То есть со стороны Tx. Если же используется SPI, то SCK, MOSI со стороны мастера, а MISO - со стороны слейва.
Действительно ли они нужны?
Очевидно, что series termination имеет смысл только в том случае, если мы работаем с высокоскоростным сигналом. Но, например, в современных Ethernet приемо-передатчиках терминирующие резисторы уже встроены внутри микросхемы.
Что же касается низкоскоростных интерфейсов, я всё равно видел 22 Ом или 33 Ом в схемах у опытных инженеров, которые объясняли это тем "чтобы линия не звенела и не фонила".
Лично я стараюсь всегда ставить 0 Ом, но это больше для удобства дебага и на тот случай, если всё-таки действительно понадобится поставить терминирующий резистор.
А у вас в практике хотя бы раз были проблемы с низкоскоростными интерфейсами из-за отсутствия series termination?
Источники
[1] Series Termination Basics - Phil's Lab #121
[2] Termination - Blog mbedded.ninja
[3] Termination - Practical EE
[4] ChatGPT об эквивалентном сопротивлении линии передачи