Представим, вы спроектировали многоплатную систему. Для надежности вы добавили резервирование и возможность замены модулей. В процессе работы один из модулей вышел из строя. Вы извлекайте его из шасси, устанавливайте на его место аналогичный, и.... вся система отключается. Что же произошло? Давайте разбираться как вставлять платы правильно.
Зачем нужна горячая замена?
Горячая замена - механизм, позволяющий устанавливать или менять компонент системы во время ее функционирования. Реализация горячей замены - требование многих систем, ее наличие упрощает обслуживание и увеличивает надежность. Требования предъявляются в СХД, специвычислителях, телеком оборудовании. Для начала рассмотрим составные части подсистемы питания этих устройств:
PDB - Плата питания. На входе обычно сетевые 220В, на выходе - 48В/12В;
Backplane - Чаще всего пассивная плата, в которую вставляются другие платы;
Plug-in board - Плата, вставляемая в слот бэкплейна.
Архитектурные отличия
Построение системы питания сильно розниться от устройства к устройству. Рассмотрим самые популярные конфигурации.
Для СХД и спецвычислителей важна надежность. В таких устройствах PDB резервируется и является заменяемым блоком. После формирования постоянного напряжения на PDB оно расходится по всем компонентам через backplane.

В крейтовой системе PDB может быть не съемной. PDB и бэкплейн иногда объединены.

Для телекома все немного проще: например, для BBU на входе есть уже готовые -48В. В этом случае в необходимость в формировании постоянного напряжения отпадает. Соответственно, PDB не нужна и может быть объединена с бэкплейном.

Теория
Но в чем же сложность в реализации горячей замены? Независимо от архитектурных различий, физика работает для всех. Для начала вспомним формулу заряда емкости:
- входная емкость вставляемой платы;
- скорость нарастания входного напряжения для вставляемой платы;
- ток во входную емкость вставляемой платы.
Начнем с простого, предположим, что мы вставляем модуль с входной емкостью 1мФ в бэкплейн. Контакты замыкаются за 1мс. Рассчитаем, каким будет скачок тока при напряжении шины питания 12В:
Более интуитивное объяснение: в разряженном состоянии сопротивление конденсатора очень мало и равно его внутреннему последовательному сопротивлению (сопротивление выводов, обкладок). В момент возникновения электрического контакта между бэкплейном и вставляемым модулем, входное напряжение прикладывается к около-нулевому сопротивлению конденсатора, создавая большой скачок тока. Теперь посмотрим, к чему это может привести.
Моделирование
Начнем с простейшей модели. Источник представляет связку бэкплейна с платой питания. Поскольку бэкплейн у нас пассивный, на данном этапе предполагаем, что он не вносит никакого влияния.
- входная емкость вставляемого модуля,
- эквивалентное внутреннее сопротивление
.

При заданном времени нарастания напряжения в 1мс ток через будет выглядеть следующим образом:

Синяя трасса - ток через
;
Красная трасса - напряжение на
.
Чем же плох такой скачок тока? Есть несколько пунктов, оказывающих негативное влияние на систему:
Из - за скачка тока выходные конденсаторы источника питания на PDB быстро разрядятся, просаживая напряжение шины 12В. Величина просадки будет зависеть от емкости, которая стоит на выходе источника, от его выходного сопротивления, скорости отклика его обратной связи;
Подобный скачок может спровоцировать срабатывание защиты источника питания на PDB. В этом случае вся система будет выключена (если не предусмотрено резервирование источников питания);
Подобный скачок тока с резким фронтом обладает высокой энергией, которая перейдет в электромагнитную помеху.
Рассмотрим первый пункт. Смоделируем ситуацию, когда выходная емкость источника на PDB() составляет 3мФ. Временно отключим выход источника 12В и оставим только его выходные конденсаторы. Вместо источника напряжения у нас теперь ключ
, более корректно отражающий суть процесса. С помощью данной схемы мы сможем проанализировать, какой будет картина при бесконечно долгом отклике обратной связи источника питания:

Результаты моделирования:

Синяя трасса - напряжение на выходе бэкплейна (Верхний вывод
);
Зеленая трасса - напряжение на входе вставляемой платы (Верхний вывод
);
Красная трасса - напряжение на ключе
, по сути, разность потенциалов между платами.
На графиках видно, что образовался конденсаторный делитель из и
. Заряд, накопленный в
частично перетек в
, в соответствии с балансом энергии. В реальности, конечно, напряжение на выходе бэкплейна не останется на уровне 9В, поскольку источник, стоящий на плате питания, отработает данный скачок потребления. Как быстро это произойдет - зависит от полосы пропускания обратной связи преобразователя.
Так давайте дополним схему источником питания с регулятором. Обратная связь реальных источников более комплексная, однако для демонстрации эффекта упрощенной модели будет достаточно. - выходное сопротивление источника.
,
,
- простейшая цепочка обратной связи с задержкой.
- регулятор (источник напряжения, управляемый напряжением). Модель очень приближенная и с множеством допущений, но для нашей задачи подойдет.

Результаты моделирования:

Синяя трасса - напряжение на входе бэкплейна (правый вывод
);
Зеленая трасса - напряжение на входе вставляемой платы (намеренно сдвинута вниз на 1В для наглядности);
Красная трасса - напряжение на ключе
.
На графиках видно просадку до 9.1В, далее уже начинает отрабатывать обратная связь источника питания. Опасность просадки в том, что если VUVLO на других платах в шасси ниже 9.1В - все они будут отключены.
Однако и это еще не все. Вспомним, что у вставляемой платы также имеется свой источник питания, у которого, помимо входной емкости, присутствует и выходная. В случае появления минимально требуемого напряжения на входе источника - он стартует. Если в источнике отсутствует режим плавного пуска, данный источник резко начнет потреблять ток из входных конденсаторов вставляемой платы. Изобразим этот блок также в виде условной емкости с ключом. Ключ открывается на 50мкС позже
.На самом деле задержка зависит от архитектуры преобразователя, но для наглядности будет использовать это значение. Также добавим небольшую постоянную нагрузку в 10Ом(
). Не стоит забывать про паразитные параметры:
,
учитывают индуктивность и сопротивление полигонов, разъемов и соединения на стороне бэкплейна и PDB.
,
учитывают аналогичные параметры для вставляемой платы.

Результаты моделирования:

Синяя трасса - напряжение на входе бэкплейна (правый вывод
);
Зеленая трасса - напряжение на входе вставляемой платы (намеренно сдвинута вниз на 1В для наглядности);
Красная трасса - напряжение на выходе преобразователя вставляемой платы (намеренно сдвинута вниз на 2В для наглядности);
Бирюзовая трасса - напряжение на ключе
;
Розовая трасса - напряжение на ключе
.
Итого: имеем просадку до 8.5В с двумя провалами напряжения и скачком тока. А что с этим можно сделать? Для решения подобных проблемы были придуманы микросхемы горячей замены (hotplug/hotswap controller).
Принцип работы hotswap - контроллера
Hotswap controller - микросхема, решающая проблему горячей замены. В примере со вставляемой платой микросхему располагают до большой входной емкости.
Принцип работы довольно простой: внутренняя логика микросхемы управляет силовыми ключами, которые, работая в линейном режиме, постепенно открываются, заряжая выходную емкость заданным током. После полного заряда емкости транзисторы переключаются в ключевой режим для снижения потерь. Посмотрим, как выглядит базовая схема с контролером на примере ADM1177:

После появления входного напряжения, от которого питается контролер, начинает работать источник тока, заряжающий емкость (участок 1-2). Когда время, определяемое
(участок 2-4) пройдет, контроллер начинает повышать потенциал затвора транзистора (вывод GATE) (участок 4-5). Входная емкость
заряжается током, текущем через транзистор
. Контроллер будет удерживать напряжение
транзистора
таким, чтобы падение напряжения на
не превышало 100мВ, после полного заряда емкости напряжение затвора
станет больше
приблизительно на 10В (участок 5-6).

Hotswap контроллеры также часто выполняют и защитную функцию. Например, в случае КЗ контроллер практически моментально разряжает емкость затвора силового транзистора, отключая нагрузку.
Другие функции, которые могут выполнять микросхемы hotswap:
Работа в строго заданном входном диапазоне (OV, UV);
Измерение температуры, мощности;
Ограничение SOA (безопасной рабочей области транзисторов);
Цифровой интерфейс управления;
Таймеры по превышению тока/напряжения;
Измерение мощности.
Контроллеры могут быть со встроенными ил�� внешними ключами. Для малых мощностей внутренние ключи сохраняют место на плате, но при выходе из строя приходится менять контроллер целиком. Внешние ключи используют в системах с большим потреблением. Из-за работы в линейном режиме транзисторы должны рассеивать большую мощность, которую не выдерживает корпус микросхемы.
Добавляем контроллер в систему
Расположим контроллер между вставляемой платой и источником питания (PDB). Сама микросхема может находиться на PDB, на бэкплейне или на вставляемой плате. В качестве контроллера используем LT4231.

Контроллер довольно простенький и отлично подходит для объяснения. В него встроено детектирование OV, UV, один таймер, сигнал статуса. Измерение тока происходит на шунте, который располагают между IN и SENSE. Пороговое напряжение срабатывания - 80мВ. Это значит, что максимальный допустимый ток будет определяться шунтом.
Внутри LT4231 компактная, но хорошо продуманная архитектура. Контроллер умеет определять обратное протекание тока, имеет несколько порогов UV (при включении и отключении). Также при старте сигнальная земля (GNDSW) не подключается мгновенно. Это происходит через несколько миллисекунд за счет внутреннего таймера. Он срабатывает каждые 10мс, подключаю землю к измерительным цепям.

Внедрим LT4231 в нашу модель. Ограничим ток заряда до 8А, максимальное время заряда 12мс (). Этого должно хватить с большим запасом для заряда всех наших входных емкостей.

Результаты моделирования:

Зеленая трасса - напряжение на входе бэкплейна (правый вывод
);
Красная трасса - напряжение на выходе hotswap контроллера (намеренно сдвинута вниз на 1В для наглядности);
Синяя трасса - напряжение на выходе преобразователя вставляемой платы (намеренно сдвинута вниз на 2В для наглядности);
Розовая трасса - ток через шунт
.
При подключении вставляемой платы контроллер отрабатывает идеально. Напряжение нарастает постепенно, без провалов и скачков тока. Но через некоторое время после того, как напряжение появилось на входе вставляемой платы, ее локальный источник начинает заряжать свою выходную емкость. А поскольку ток через контроллер ограничен 8А, он не дает источнику на PDB превысить этот ток. В данном случае я несколько преувеличил негативный эффект. В реальной системе локальный источник не сможет так быстро нарастить ток через свою входную емкость (из-за дросселя на выходе). Однако такая модель отлично иллюстрирует последствия неправильно спроектированной схемы.
Как я писал ранее, емкость 470нФ для таймера контроллера выбрана с большим запасом. Если же вы четко рассчитали длительность переходного процесса и оставляете запас около 10-15%, может быть заменен на 70нФ. В этом случае произойдет следующее:

Зеленая трасса - напряжение на входе бэкплейна (правый вывод
);
Синяя трасса - напряжение на выходе hotswap контроллера (намеренно сдвинута вниз на 1В для наглядности);
Красная трасса - напряжение на выходе преобразователя вставляемой платы (намеренно сдвинута вниз на 2В для наглядности);
Розовая трасса - ток через шунт
;
Бирюзовая трасса - напряжение на конденсаторе
.
был рассчитан исключительно под переходной процесс. Во время старта источника на вставляемой плате время заряда выходной емкости заняло больше 1.7мс, заданных
. Это привело к срабатыванию hotswap контроллера по таймеру. Он моментально разрядил входную емкость силовых ключей и отключил источник на PDB от вставляемой платы. Далее, если контроллер уходит в защиту до полного снятия входного питания, потребуется обесточивать всю систему, чтобы по новой запитать вставляемую плату. А потом все повториться снова.
Что же с этим делать? У некоторых контроллеров есть два таймера. Один рассчитан на переходной процесс и заряд емкости. Второй же таймер срабатывает во время нормального режима, когда ключи уже полностью открыты. Можно было бы настроить один таймер на переходной процесс (1.3мс), а второй - на заряд выходной емкости (например, 3мс). Еще один вариант - контроллеры с двумя лимитами по току. Первый лимит рассчитан на переходной процесс, второй - на работу после переходного режима. Однако стоит понимать, что если чересчур задрать лимит по току во время номинального режима, контроллер может не среагировать на КЗ. Как выйти из положения, если вы решили использовать простейший контролер без этих наворотов?
Решение кроется не в контроллере, а в преобразователе напряжения. У большинства современных источников есть волшебный вывод SS. Внутри PWM контроллера к этому выводу подключен источник тока. Повесив туда емкость определенного номинала, можно линейно наращивать выходное напряжение до номинала.

Вспоминаем нашу прекрасную формулу из начала статьи:
Регулируя время линейного нарастания выходного напряжения, мы можем управлять входным током в емкость. Если время мягкого пуска задано равным, тогда при выходной емкости
и напряжении, например,
, максимальный ток в емкость будет:
В реальных системах стандартные значения лежат в районе 0.5мс - 2мс, что приведет к меньшему скачку тока. Напомню, что в моей модели я использую обычный ключ в качестве эмуляции локального источника на вставляемой плате. На входе у источника будет 12В, а на выходе 3.3В, там и висит заряжаемая ёмкость. Требуется привести полученный ток в выходной конденсатор к входному. Поскольку баланс энергии () применим ко всем преобразователем, получаем, что входной скачок тока для 12В равен:
Доработаем нашу модель с учетом того, что в нагрузку могут поступать максимально 5А. Для этого добавим активную нагрузку. Она будет служить эквивалентом мягкого пуска.

Результаты моделирования:

Зеленая трасса - напряжение на входе бэкплейна (правый вывод
);
Синяя трасса - напряжение на выходе hotswap контроллера (намеренно сдвинута вниз на 1В для наглядности);
Красная трасса - напряжение на выходе преобразователя вставляемой платы (намеренно сдвинута вниз на 2В для наглядности);
Розовая трасса - ток через шунт
;
Серая трасса - ток через выходной конденсатор локального источника (сдвинута вверх на 1А для наглядности);
Бирюзовая трасса - напряжение на конденсаторе
.
Как видим, ток при старте источника ограничен 5А, что приводит к времени заряда ~2.5мс. Hotswap никак не реагирует на это событие (5A<8A), а просадка на шине минимальна.
Если же переместить hotswap на вставляемую плату, ничего с точки зрения физики не изменится. Разница будет лишь в том, что на входе контроллера должна присутствовать минимальная емкость - пару десятков мкФ будет вполне достаточно.

Результаты моделирования:

Зеленая трасса - напряжение на входе бэкплейна (правый вывод
);
Синяя трасса - напряжение на выходе hotswap контроллера (намеренно сдвинута вниз на 1В для наглядности);
Красная трасса - напряжение на выходе преобразователя вставляемой платы (намеренно сдвинута вниз на 2В для наглядности);
Розовая трасса - ток через шунт
;
Серая трасса - ток через выходной конденсатор локального источника (сдвинута вверх на 1А для наглядности);
Бирюзовая трасса - напряжение на конденсаторе
.
Как видим, разницы практически никакой, контроллер и мягкий пуск делают свою работу. Главное правило - основная емкостная нагрузка должна стоять за контроллером.
Eсть ли варианты кроме контроллера?
Еще немного поэкспериментируем и добавим вторую PDB, которую вставляют в систему на горячую. Выходное напряжение у обоих PDB объединено с целью резервирования:

Результаты моделирования:

Зеленая трасса - напряжение на выходе бэкплейна (правый вывод
);
Синяя трасса - напряжение на выходе PDB2, правый вывод
(намеренно сдвинута вниз на 1В для наглядности);
Красная трасса - напряжение на выходной емкости PDB2, правый вывод
(намеренно сдвинута вниз на 2В для наглядности);
Розовая трасса - ток через шунт
;
Серая трасса - ток через выходной конденсатор
PDB1.
Думаю, многим было итак очевидно, что это приведет к просадке до 6В без hotswap контроллера на PDB2. Остальные цепи чувствуют себя прекрасно. Но есть ли альтернатива контроллеру? Нашу проблему может решить обычный советский резистор . Для того чтобы при вставлении платы не было просадки, ее выходная емкости уже должна быть заряжена. Чем меньше разница с присутствующим в системе напряжением, тем меньше ток в конденсатор, а значит, и меньше просадка. Для этого придумали цепь предзаряда (Pre-charge). При подключении устройства/платы эта цепь вместе с землей соединяется в первую очередь. Реализация зависит только от вашей фантазии.
Популярным решением является использование ловителей. Это длинные штыри, которые входят в ответную часть на неподвижной плате. Они могут служить для предзаряда цепей питания, т.к. сочленяются в первую очередь.

В тех же SSD немного другая реализация. Есть отдельные выводы под предзаряд (12V Pre-charge). Эти пины, как вы видите, соединяются в первую очередь. Таким образом, при подключении значительно снижается или полностью устраняется просадка по питанию.

В CRPS некоторые силовые контакты длиннее сигнальных, что необходимо для корректной горячей замены источников.

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

Результаты моделирования:

Зеленая трасса - напряжение на выходе бэкплейна (правый вывод
);
Синяя трасса - напряжение на выходе PDB2, правый вывод
(намеренно сдвинута вниз на 1В для наглядности);
Красная трасса - напряжение на выходной емкости PDB2, правый вывод
(намеренно сдвинута вниз на 2В для наглядности);
Розовая трасса - ток через шунт
;
Бирюзовая трасса - ток через выходной конденсатор
PDB2.
Идеально! Главное - подобрать резистор так, чтобы он успел зарядить емкость до номинального напряжения. По опыту, время вставления платы составляет не меньше ~20мс. Естественно, его можно увеличить за счет модернизации механики устройства. Есть и другие решения, основанные на дискретных компонентах (NTC, P-mos). Они менее популярны за счет меньшей предсказуемости и надежности и не рассматриваются в рамках данной статьи.
Также стоит помнить о важности снижения паразитной индуктивности и сопротивления полигонов входного питания.
А как же цифровые сигналы?
С питанием разобрались, но ведь цифровые сигналы также подключаются "на горячую". Что насчет них? Во-первых, обычно не так много сигналов являются общими для вставляемых плат. Одно из решений для общих сигналов - буфер с высокоимпедансным выходом.

HiZ буфер позволяет изолировать сигнал на вставляемой плате. Сигнал подключается на выход только после заряда всех ёмкостей и установки нужных уровней на входе. Для этого используется вывод OE. Управлять им можно с помощью контроллера, ПЛИС или стандартной логикой.
Способ в основном используется для интерфейсов точка-точка. Вот пример из спецификации OCP NIC 3.0. Интерфейс RBT (NC-SI) и некоторые другие линии изолированы через подобный буфер и активируются только после появления указанных сигналов. Это гара��тирует корректную работу системы.

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

Как видим, все включение начинается именно с сигналов PRSNT:

В PCIe картах применяют такой же механизм с коротким PRSNT:

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

Проведем моделирование для разных значений ,
:

Зеленая трасса - напряжение на шине I2C (нижний вывод
);
Красная трасса - напряжение на I2C вставляемой платы, нижний вывод
(намеренно сдвинута вниз на 1В для наглядности);
Серая трасса - ток через линию (в конденсатор
).
Видим, что независимо от паразитной ёмкостипроисходит просадка до 1.65В. Это связано со старым добрым емкостным делителем (у нижней и верхней платы емкость одинаковая). Единственное на что влияет номинал емкости - ток, что соответствует формуле.

В спецификации I2C минимально допустимое напряжение для логической "1" - . Наша просадка до 1.65В значительно ниже. Это может привести к некорректной работе шины, т.к. логика I2C была нарушена.

В данном случае решений может быть несколько. Начнем со специальных hotplug контроллеров.

LTC4300A-1 максимально стандартный I2C hotplug контроллер от LT. У других производителей есть аналогичные микросхемы с таким же функционалом. При вставлении платы он изолирует входные и выходные линии I2C. Таким образом, мы исключаем просадки на общей шине.
У контроллера также есть несколько полезных функций. Например, предзаряд линий до 1В (помните прошлое обсуждение?). Это приводит к меньшим скачкам тока через емкость.


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

Обратим внимание на то, что первым подключается земля, потом питания для локального источника, потом I2C и потом сигнал включения источника. В этом случае питание 3.3В придет на контроллер позже, чем подключатся линии I2C.
Добавим контроллер в нашу модель. Задержим включение напряжения 3.3В на 100мкс относительно подключения I2C. Такой вариант возможен, когда 3.3В формируются локально на плате.

Проведем моделирование для разных значений ,
:

Фиолетовая трасса - напряжение на SCLOUT
на Plugin board 2;
Синяя трасса - напряжение на SCLIN
Plugin board 2 (намеренно сдвинута вниз на 1В для наглядности);
Красная трасса - напряжение на SCLIN
Plugin board 1 (намеренно сдвинута вниз на 2В для наглядности);
Бирюзовая трасса - напряжение SCLOUT
на Plugin board 2 (намеренно сдвинута вниз на 3В для наглядности);
Зеленая трасса - ток через
.
Работает? Похоже, что да. Просадка на общей линии практически отсутствует при любой емкости и любом номинале подтяжки. Однако есть небольшая просадка на выходе , которая достигает 2.6В при подтяжке в 50кОм. В целом не так критично, но лучше будет уменьшить номинал подтяжки. 10кОм, которые указаны в даташите - хороший выбор. В этом случае просадка будет до 3.1В.
Теперь рассмотрим второй вариант, когда источник 3.3В подключается до лин��й I2C. Такое возможно, когда контроллер питается от единой шины 3.3В, которая проходит через бэкплейн. Проведем моделирование для разных значений ,
:

Фиолетовая трасса - напряжение на SCLOUT
на Plugin board 2;
Синяя трасса - напряжение на SCLIN
Plugin board 2 (намеренно сдвинута вниз на 1В для наглядности);
Красная трасса - напряжение на SCLIN
Plugin board 1 (намеренно сдвинута вниз на 2В для наглядности);
Бирюзовая трасса - напряжение SCLOUT
на Plugin board 2 (намеренно сдвинута вниз на 3В для наглядности);
На диаграммах отлично виден тот самый precharge до 1В. Просадка на I2C действительно уменьшилась, но т.к. она, итак, была в допустимом диапазоне эффект не так заметен.

Кстати, для реализации сценария, когда 3.3В приходят на плату раньше, чем линии I2C, необходимо соблюдать последовательность подключения выводов. Например, это можно сделать, удлинив контакт питания относительно SCL/SDA.
Наконец, если вы по каким любо причинам не хотите ставить контроллер, выход есть. Основное правило: сильная подтяжка должна стоять на неподвижной плате. Она должна быть минимум в 4-5 раз меньше подтяжки вставляемой платы. В нашем случае неподвижная плата - бэкплейн. Расположен на ней подтяжку в 1кОм.

Проведем моделирование для разных значений ,
:

Зеленая трасса - напряжение на шине I2C (нижний вывод
);
Красная трасса - напряжение на I2C вставляемой платы, нижний вывод
(намеренно сдвинута вниз на 1В для наглядности);
Серая трасса - ток через линию (в конденсатор
).
Видно, что процесс подключения не идеален, но в допустимых пределах. Оставим , проведем еще один прогон:

Зеленая трасса - напряжение на шине I2C (нижний вывод
);
Синяя трасса - напряжение на I2C вставляемой платы, нижний вывод
(намеренно сдвинута вниз на 1В для наглядности);
Красная трасса - ток через линию (в конденсатор
).
Что мы тут видим? Просадка на шине достигает 2.6В, продолжительность - 560нс. Мы находимся выше. И даже если нет, скорее всего, контроллер I2C не распознает такой короткий импульс. Чем больше будет паразитная емкость относительно бэкплейна, тем ниже будет просадка. Это большой минус при использовании решения с сильной подтяжкой. Также помните, чем меньше номинал подтяжки, тем больше тока требуется. Обратите внимания на значения
вашего I2C устройства при заданном токе.
Резюмируя, можно сказать следующее: hotplug контроллеры являются более надежным решением, которое гарантировано сработает. Большой минус, что контроллер стоит денег и занимает место на плате. Поэтому многие разработчики, тщательно оценив риски, выбирают второй вариант с сильной подтяжкой. Выбор за вами, но в любом случае советую протестировать любое из решений в реальной системе.
Заключение
Горячая замена - необходимость для критических систем с большой надежностью. Для ее реализации требуется тщательная проработка решений, а неумело спроектирована, она может стать вашей болью. В статье мы познакомились с самими популярными и действенными методами реализации горячей замены. Важно понимать все риски и выгоды от выбранного пути. Будь то отдельная микросхема, конструктивное решение или простая подтяжка. А кому интересно больше про проектирование электроники, можете заглянуть в мой канал.
Комментарии (14)

REPISOT
14.01.2026 06:23Что-то у вас не то с зарядкой конденсатора
Скрытый текст

Должно быть так:
Скрытый текст

А у вас как будто уже есть стабилизатор тока в схеме.

Anzorik_228
14.01.2026 06:23У него похоже симулятор такой. Суть показана: в начальный момент по сути на конденсаторе КЗ. Остальное уже лирика в данном вопросе

anovichkov Автор
14.01.2026 06:23Это связано с тем, что в самом начале я привожу простейшую модель. Ток постоянен из за линейного нарастания напряжения (dU/dt постоянно и составляет 1мс). В реальной форма будет немного отличаться, далее модель усложняется и приближается к реальности.

REPISOT
14.01.2026 06:23Ваша модель с ограниченным временем нарастания 1ms - это уже применение скрытого hotswap. А вы ее приводите как "без hotswap" . Вводите в заблуждение. Реальный ток будет зависеть от сопротивления цепи, а не от времени "замыкания контакта". И в момент включения он будет =V/R.

anovichkov Автор
14.01.2026 06:23Да, тут согласен. В реальности напряжение не будет линейным. Дальше уже используются ключи, которые соответствуют действительности.
Поправил в статье.

hardegor
14.01.2026 06:23Ох уж эти студенты, что-то там себе пишут-рисуют им понятное)
Долго искал в чем различие двух первых картинок и нашел - 48В пунктиром нарисовано)
И второе, сначала не написана главная проблема - провал(возможно и до нуля в зависимости от индуктивности) напряжения питания системы при подключении платы.

anovichkov Автор
14.01.2026 06:23Долго искал в чем различие двух первых картинок и нашел - 48В пунктиром нарисовано)
Если внимательно прочитать описание до картинки, там все написано. В первой случае плата питания съемная, во втором - нет. Это сильно влияет на систему питания
И второе, сначала не написана главная проблема - провал(возможно и до нуля в зависимости от индуктивности) напряжения питания системы при подключении платы.
Основной провал происходит не из за индуктивности, а из за емкости. Наличие индуктивности никак не влияет на систему без емкости. Но наличие емкости будет влиять на систему без индуктивности. Так что очевидно, что емкость - основная проблема, что и написано в статье.

hardegor
14.01.2026 06:23Конечно из-за емкости, всё правильно вы пишите,. Но, я имел ввиду, что и индуктивность тут не последнюю роль может играть(токи-то обычно там не маленькие), особенно если провод до 48 В длинный. А по-факту источник питания 48В, увидев падение напряжения, начинает пытаться компенсировать и происходит перерегулирование и в конце процесса заряда конденсатора, напряжение немного подскакивает.

Anzorik_228
14.01.2026 06:23В статье неплохо описана теория процесса и всё действительно так работает. Однако при всей изложенной информации статья далека от реальности.
Не объяснён принцип дребезга между вставляемой единицы и объединительной платой. В реальности даже при наличии специальной рельсы, дабы пользователь не промахнулся. Мы имеем окисленные контакты, неуверенность пользователя при вставке платы "Блин, вставил я или нет, надавлю сильнее. Ох ты ж ё! Так она у меня не попала в направляющие и елозит по контактам" Если кому покажется смешным, к огромному сожалению с этим приходится сталкиваться. Т.е. конечно, чтобы выглядело правдоподобно нужно предоставить графики и дребезгом. А после этого проанализировать реакцию на переходные процессы различных микросхем, например буферов уровня, входных транзисторов, те микросхемы, которые наиболее часто встречаются на входе различных плат.
Касательно реакции различных интерфейсов, вы хорошо показали, но есть несколько но. Когда подключаешь что-нибудь, что общается по шине I2C на горячую, действительно можно использовать LTC4300A-1. Но вот есть микросхемы, например любой микроконтроллер STM32 семейства F1, который не допускает ни малейшей просадки по линиям данных, тактирования и питания. В любом случае он уйдёт в стазис и выйдет из него только тогда, когда пользователь отрубит питание платы. Тоже самое работает с некоторыми микросхемами от AD (analog devices) и TI (texas instruments).
Есть параграф про влияние цифровые сигналы. А как же аналоговые? В мире аналоговой схемотехники сейчас дефицит и как никогда хотелось бы услышать, что там происходит, почему всегда надо отключать питание, почему нельзя подключать на горячую и почему ещё не придумали того, что могло бы это вылечить

anovichkov Автор
14.01.2026 06:23Спасибо. В статье я попытался изложить самые важные моменты, чтобы чересчур не раздувать итак приличный объем.
Дребезг контактов имеет место, согласен. Однако все hotswap контролеры спроектированы как раз с расчетом на этот эффект.
STM32 семейства F1, который не допускает ни малейшей просадки по линиям данных, тактирования и питания.
У всех микросхем есть нижняя граница, когда они «увидят» эту просадку. Это определяется документацией на микросхему. Обычно это 0.7 от питания (3.3В * 0,7 = 2.31В). Если бы все было, как вы описываете, микросхемы впадали в стазис и без горячей замены. На плате ведь присутствуют шумы, наводки.
В мире аналоговой схемотехники сейчас дефицит и как никогда хотелось бы услышать, что там происходит
Упор сделан на цифровые цепи, поскольку общих аналоговых шин (больше 2х устройств) практически не существует. Те, что существуют, обычно интегрированы глубоко в устройство и не требует дополнительных манипуляций.
Anzorik_228
Добавьте расшифровку аббревиатур, перед любыми сокращениями пишите сперва полное название аббревиатуры. СХД я полагаю это системы хранения данных. PDB - power delivery board. Потом появляется аббревиатура BBU, что не понятно, что за оно для человека, который не так близок к этому. Из-за таких нюансов тяжело читать статью.
"бэкплейн" в простонародье - корзина или материнская плата. Возможно я слишком упёртый, но люблю говорить по-русски, так красивее, чем пародия на англоязычные слова, которые коверкают на русский.
anovichkov Автор
По тексту расшифрованы практически все определения. Чтобы посмотреть определения, необходимо нажать на голубое выделение вокруг аббревиатуры. Про BBU и СХД добавил отдельно, спасибо.
Бэкплейн - это обычно объединительная плата. В кругах разработчиков слышу слово бэкплейн гораздо чаще. Опять же привел расшифровку этого слова в самом начале статьи.
zatim
Действительно, обилие англицизмов сбивают с толку, мешают воспринимать текст. Тем более, у них у всех есть русскоязычный аналог: PDB - блок (модуль) питания, бэкплейн - кросс-плата и т. д. При общении в кругах разработчиков жаргонизмы можно использовать, но при выводе информации на неподготовленную аудиторию, лучше использовать общеупотребительные термины.