Есть разные способы, это и трансформатор гальванической развязки (ТГР), и различные драйвера типа IR2110, оптодрайвера, типа HCPL3180 и им подобные. Можно сделать и на рассыпухе, но этот метод устарел, когда есть куча драйверов.
Есть различные способы формирования мертвого времен: переключение транзисторов идет по алгоритму, к примеру: отключается верхний ключ, период dT(мертвое время), для того, что бы не было сквозняков, т.к. есть время выключения, которое обычно значительно больше времени включения, и dT обычно выбирают не менее 400нСек. Есть адаптационные драйвера, которые следят за напряжением средней точки, и не включат другой драйвер, пока не закроется ключ. У меня на одной схеме стоит такой, то проверено, задержка у адаптационных драйверов получается 350-360нСек. Т.е. поставить типа такого формирователя dT из прямоугольных импульсов, и настроить на 400нСек. Такая схема проверена в железе. Оптодрайвера желательно по входу шунтировать обратно включенным диодом, иначе за счет паразитной емкости может попасть импульс обратной полярности на светодиод и вылететь светодиод. Хотя, схемы работают у меня и без него. А на выходе или поставить по затвору стабилитрон, или так включить диод, тогда при переключении не будет бросков напряжения, помним, мах допустимое напряжение на затворе - +-20в, а паразитные емкости значительны.
Это пример управления оптодрайвером отрицательным напряжением. Т.е. лог 1 оптодрайвер запирает, лог 0 драйвер отпирает.