Series termination

Series termination


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

Рисунок 1. Пример использования терминирующих резисторов разного номинала

Разница всё-таки есть

Последовательное сопротивление ставится для согласования (кто бы мог подумать?) импеданса!

Как я писал в одном из своих постов, главная идея согласований в том, чтобы среда распространения сигнала везде имела один и тот же импеданс. Если при переходе из среды с одним значением импеданса в среду с другим значением импеданса, происходят отражения сигнала от этой границы сред. В данном случае, "средами" распространения сигнала является:

  • Драйвер (источник сигнала)
  • Линия передачи (дорожка на плате)
  • Нагрузка (приемник сигнала)
Рисунок 2. Среды распространения сигнала и их импедансы

Чем неприятны отражения?

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

Рисунок 3. Формула отражения волны

Соответственно:

  • ZL = Z0 - Нет отражения
  • ZL > Z0 - Overshoot
  • ZL < Z0 - Undershoot

Сколько импеданс нагрузки?

На рисунке чуть выше указано, что импеданс нагрузки ZL может быть порядка кило или Мега Омов. В то время как импеданс драйвер Zs - порядка дециОмов.

Очень большой разброс получается. При таком соотношении импедансов, выровнять их - это гарантированно иметь большие потери сигнала.

Решение, которое используют в таком случае, выглядит для меня неочевидным, контринтуитивным и что-то из разряда "черной магии".

Последовательный резистор

Если рядом с драйвером поставить резистор Rt такого номинала, чтобы Zs + Rt = 50 Ом (Z0), то получится что импеданс драйвера будет равен импедансу дорожки.

Рисунок 4. Пример использования терминирующего резистора

Согласно волновой теории, если мы имеем дело с длинной линией, то передаваемый сигнал видит эту линию передачи (дорожку на печатной плате) как эквивалентное сопротивление Z0, подключенное к земле.

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

Рисунок 5. Эквивалентная схема делителя напряжения
  • Эта половина сигнала 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 об эквивалентном сопротивлении линии передачи

Report Page