Разбираем чужие схемы ч.1
Регулярно в процессе разработки возникают вопросы: "А как правильно? А так можно? Будет ли это работать?". Особенно часто они возникают у молодых разработчиков. В связи с этим предлагаю посмотреть: а как же проектируют свои устройства передовые технологические компании?
Macbook Pro 15'' на Intel i7
Компания Apple довольно популярна, у многих вызывает доверие ее продукты. Поэтому сегодня разберем схему материнской платы Macbook Pro 15'' на Intel i7. Схема 2017 года, понятно что на текущий момент есть более передовые решения, однако интересно посмотреть на подход Apple, поучиться полезным приемам и немного покритиковать).
Материнская плата Macbook Pro 15''
Разбирать мы будем именно материнскую плату, поскольку 90% электроники сосредоточенно именно там. У макбуков есть огромное количество конфигураций, отличаются они диагональю экрана, процессорами, количеством памяти, дополнительным функциями по типу touchbar. Поискав в интернете нашел плату, которая максимально соответствует схеме:
Как видно, плата довольно плотная, уверен перед разработчиками стояла задача оптимизации занимаемого пространства. Большинство компонентов BGA, нет ни одного компонента со сквозными выводам, даже корпусов SOP не видно.
Принципиальная схема материнской платы
Ну что же, самое время перейти к схеме, разобрать ее полностью за один раз тяжело, поэтому я разобью эту задачу на несколько частей. Начнем мы, конечно же, с самой важной и любимой мною части - питания платы.
В схеме 131 страниц, около 10 служебных страниц, итого 120 страниц чистых схем. Я выделил красным те страницы, которые я буду разбирать сегодня. Идти буду не по порядку, а исходя из логики работы платы.
Разбирать я планирую на более менее продвинутом уровне, т.е без разъяснений, что именно такое импульсный источник питания, линейный регулятор, цепи компенсации, обратная связь итд. Буду выделять в основном интересные моменты, неочевидные нюансы или хорошие решения.
Начнем мы со страницы 73, которую рисовал Silu. На этой странице формируются системные питания 5В и 3.3В.
Для формирования этих питаний используется двухфазный PWM контроллер с драйвером от TI - TPS51980A. Спецификацию на конкретно этот контролер я не нашел, однако у TI есть контроллер практически 1 в 1 - TPS51220A.
В качестве ключей используются так называемые power block, стойка ключей, оптимизированные под работу в понижающих преобразователях. В схеме используется CSD58779Q3D, на который также нет документации, но он практически аналогичен CSD86356Q5D. Нижний ключ оптимизирован под большой ток, но имеет большую входную емкость. Верхний - оптимизирован под быстрое переключение, но имеет большее сопротивление канала.
Погрузимся в подробности работы контроллера на примере питания 3.3В. Заметим, что у контроллера есть два режима работы: обратная связь по напряжению с запатентованной модуляцией D-CAP от TI или управление по току. Конечно, предпочтительной будет обратная связь по току, поскольку она гораздо быстрее реагирует на изменения выходной нагрузки, что важно при резких скачках потребления. Из классических решений - демпферный резистор в затворе верхнего ключа, он несколько увеличивает потери, но, видимо, Силу посчитал, что снижение излучаемых помех в данном случае важнее. Еще бы я отметил хорошее решение с резистивным делителем R7692, R7693, это сделано для того, чтобы уложиться в границы измерения внутреннего усилителя внутри PWM контроллера без добавления внешнего шунта. Однако тут есть один нюанс, в такие моменты важно соблюдать постоянную времени. В схеме значения постоянных:
L7660/Rdcr << (R7693||R7692)*C7693. Это значит, что при переходном процессе переменная составляющая тока будет ослаблена, что может привести к случайному срабатыванию порога OCP.
С доменом 5В все тоже самое, никаких новых откровений, поэтому переходим к следующей странице.
На этой странице особо ничего интересного - двухфазный BGA источник со встроенными ключами для формирования 3.3В в состоянии G3. На входе совсем маленькие полимерные танталы в корпусе B3(3.5x2.8мм). В обратной связи источника - дополнительный резистор для регулировки выходного напряжения.
С 75 страницы у нас начинается PMIC - большая BGA микросхема с кучей встроенных импульсных ключей, LDO, аналоговых измерителей напряжения, тока, цифровыми интерфейсами. К сожалению, документации на нее я не нашел, но функции у подобных микросхем одинаковые: формирование напряжений и мониторинг питаний. Посмотрим поближе на область, выделенную черным прямоугольником:
Для питания доменов процессора требуется довольно много тока, разработчики применили тут довольное интересное решение. К внутренним ключам PMIC подключены 4 катушки разного номинала, размера и с разным током насыщения. Догадываюсь, что таким образом, разработчики решают несколько проблем:
- Унифицируют позиции в схеме;
- Распределяют нагрузку на ключи в PMIC;
- Снижают выходные пульсации за счет задействования дополнительных фаз;
- Добавляют возможность управление режимами работы PMIC (микросхема может отключать/включать нужные фазы в моменты роста или падения потребления).
Замечу, что все катушки довольно маленькие по габаритам. Гораздо проще разместить несколько маленьких катушек, чем одну большую.
На этой странице также ничего интересного: LDO от PMICa и некоторые цифровые выводы. Единственное, позабавил очень маленький ключик с регулированием времени нарастания - U7901.
Страница с аналоговой частью PMIC и интерфейсом управления. Догадываюсь, что выводы с припиской AMUX_* приходят на аналоговый мультиплексор, который последовательно подключает цепи напряжений и токов к АЦП внутри чипа. Отдельный кварцевый резонатор для PMIC напоминает о том, что внутри этого чипа присутствует довольно мощное цифровое вычислительное ядро, управляющее всеми режимами работы. Предполагаю, что чип разработан на заказ исключительно для Apple, слишком уж идеально распиновка ложится на существующие сигналы.
Переходим к отдельным источникам питания для низковольтных доменов. U8110 - очередной PWM контроллер (теперь от Renesas) со встроенным драйвером и измерительными цепями. В роли power block уже другое наименование от TI, возможно более оптимизированный под бОльшую частоту и меньший период заполнения. Если в случае 3.3В ток измерялся на DCR силового индуктора, (я тоже всегда стараюсь так делать) тут Силу почему то сделал по другому. Из схемы видно, что DCR L8102 составляет 7.2мОм, сопротивление шунта 2мОм, соответственно возможно было поставить делитель на измерение тока по аналогии с питанием 3.3В. Кто то может возразить, что DCR индуктора наверняка будет гулять в диапазоне 20%, но уверяю вас - это не так критично, поскольку можно рассчитать делитель под самых худший случай. Единственное на что повлияют эти 20% - это срабатывание защиты по току, но 20% в рамках OCP приемлемая цифра.
На выводе SW стоят демпферы, не утверждаю что они бесполезные, но интересно посмотреть отчеты, форму сигнала с ними и без них.
Оранжевым выделил дополнительные резисторы в цепи затворов, суммарно получается 3.3Ома. Опять таки не буду утверждать, но для нижнего ключа с учетом достаточного низкого DC (0.95В/12В) должны быть довольно резкие фронты, чтобы снизить потери, что критично для таких устройств как ноутбуки. Возможно, у нижнего транзистора очень маленькая входная емкость, нужно смотреть результаты валидации.
Можно заметить, что на положительной и отрицательной цепях sense присутствуют делители, даже несмотря на то, что отрицательная, по сути, является землей процессора (и всей платы). Хорошее решение, поскольку важна именно разница потенциалов, а не абсолютные значения, а земля у процессора может быть на пару десятков мВ выше земли контроллера.
Ниже видим цепь управления EN контроллера R8158, C8190 небольшой RC фильтр с частотой среза ~120кГц. Далее идет С8192, который, наоборот, ускоряет срабатывание сигнала. Таким образом, получаем помехозащищенный сигнал включения с быстрым временем срабатывания (еще и второй триггер Шмидта добавили).
Вот мы и подошли к самым нагруженным доменам CPU. Архитектура таких доменов обычно складывается из 3х частей:
- Продвинутый PWM контроллер с несколькими каналами, датчиками тока, напряжения, мощности, температуры и цифровым интерфейсом;
- Умные ключи, они похожи на power block, которые мы встречали выше, однако, в них встроен драйвер и некоторые измерительные цепи. Обычно их называют DrMos или SPS;
- Цепи измерителей тока, напряжения, мощности. Поскольку у PWM контроллера обычно ограничено количество масштабирующих коэффициентов (из мВ в А), приходится приводить измеренные токи к этим значениям. Для этого могут использоваться как обычные делители, так и ОУ.
На данной странице расположен PWM контроллер и некоторые масштабирующие цепи с фильтрами. Посмотрим подробнее на контроллер: он принадлежит к семейству VR12, это можно видеть по характерным выводам PROG1-PROG5. У контроллера есть функция измерения общей мощности (PSYS), сигнал уведомления процессора о том, что ключи слишком горячие и пора бы снижать потребление (VR_HOT*). В качестве управления используется проприетарный протокол от Intel похожий на I2C.
У контроллера есть 3 канала ШИМа: A, B, C. Канал А рассчитан на 3 фазы, канал В - на 2, канал С - на 1. К каждому каналу прилагается измерение тока отдельной фазы, общего тока на канал, напряжения, температуры. Также для каждого канала доступна индивидуальная компенсация с помощью выводов COMP.
Документации на представленную микросхему я на нашел, но ISL95831 не сильно отличается. Посмотрим на его начинку. За исключением внутренних драйверов, никаких отличий у этих микросхем практически нет.
- FB, RTN - Используется для удаленного измерения напряжения прям с пинов процессора;
- COMP - Компенсация и подстройка преобразователи под ваши нужды;
- ISUMP, ISUMN - цепь измерения суммарного тока на весь канал;
- ISENx - Индивидуальные измерение тока с каждой фазы;
- VSEN - Измерение напряжения (какого именно - на усмотрение разработчика);
- PWMx - Сигнал ШИМ для силовых фаз;
- NTC - Удаленное измерение температуры, для этого необходимо установить NTC определенного номинала у ключей.
На этой странице у нас 3 фазы с общим током 128А. Опять присутствуют снабберы, но в данном случае не установлены на плате. Цепи CPUCORE_ISNSx_P/N отвечают за измерение тока на каждой фазе, далее они суммируются на ОУ (на другой странице) и идут к PMIC на странице 77.
CPUCORE_ISUMN/P отвечают за суммарный ток на всех 3х фазах и суммируются в равных пропорциях по аналогии с диаграммой из даташита:
Также в U7210, U7220, U7230 доступно включение режима FCCM, в этом режиме снижаются выходные пульсации, но повышаются потери в ключах, об этом расскажу чуть позже.
Синем я выделил не до конца понятное мне решение, цепи измерения тока первой фазы подключены через 400кОм в цепи измерения тока фаз 2, 3 и наоборот (на 2 фазу подключены 1, 3 итд). Возможно, это сделано для того, чтобы дополнительно сбалансировать нагрузку между фазами, либо устранить ошибку измерения.
Я не стал напоминать про возможность измерения тока на DCR индуктора, поскольку тут уже ограничения тока +20% могут быть критичными ввиду того, что в PWM контроллере есть четкие требования по максимальному потреблению
Еще одна фаза (От Vishay). Функционал 1 в 1, но меньший ток. Также присутствует режим ZCD/FCCM. В режиме FCCM на малых нагрузках ток в индукторе может опускаться ниже 0. Поскольку источник работает в синхронном режиме, весь отрицательный ток выделяется в тепло на нижнем ключе, снижая эффективность. В режиме же ZCD источник эмулирует работу диода. Таким образом, как только ток пересекает 0, драйвер отключает нижний ключ повышая КПД системы.
Ничего нового, такие же фазы, как и на странице 71, единственное отличие - меньшая индуктивность за счет двух фаз.
На этой странице расположились источники питания для DDR4. U7700 очередной маленький источник со встроенными ключами от TI. Из интересного можно отметить его функцию повышения выходного напряжения на 5%(которой не воспользовались) для компенсации падения на шине питания.
U7701 - PWM контроллер со встроенным LDO для питания терминации DDR (VTT). Внутренний модулятор работает в режиме D-CAP. Это значит, что источник управляется по напряжению, что увеличивает время отклика цепей управления. Помимо этого, режим D-CAP требует относительно высокий ESR.
Цепи измерение тока источников идут в дифференциальный усилитель (на другой странице). Еще тут можно отметить интересные 3х выводные конденсаторы. Скоро к ним вернемся
Переходим к питанию периферии, на очереди у нас SSD. U9000 - очередной PMIC, опять видим решение с дросселями разного номинала. Кроме того, в PMIC встроена разрядная цепь, что довольно полезно, особенно учитывая, что разрядные резисторы не ставят в портативных устройствах.
U9080 - импульсный двухфазный BGA источник от TI. Внутри микросхемы уже присутствует внутренняя компенсация, и она стабильная с выходной емкостью, которая присутствует на схеме. Однако в Apple решили добавить ускоряющий конденсатор C9085, который вступает в дело на частоте ~15кГц. Возможно, это уже протестированное решение, если же нет, такой конденсатор может привести к неравномерности передаточной характеристики системы управления.
Аналогична предыдущей странице, но для питания SSD1
Тут у нас питание ядра GPU, максимальный ток до 64А. Под это дело, конечно, потребовался новый PWM контроллер. PWM контроллер по структуре практически 1 в 1 с тем, что был на странице 69. Главные отличия - количество каналов, два встроенных драйвера и управление выходным напряжением через выводы SVC, SVD, SVT. Power block тоже новый, от IRF. Максимальный рабочий ток для каждого - 60А. Ток фаз измеряется и суммируется по аналогии со страницей 70. Сигналы управления 3-ей фазой, которой не хватило драйвера, уходят на страницу 98.
На этой странице у нас питание памяти для GPU. И опять новые PWM контроллеры и power block от Vishay. У PWM контроллера очень удобный способ установки защиты по превышению тока. Для этого используется источник тока в 8.5мкА и сопротивление RA315. Выходное напряжение выставляется цифровым способом, для этого используются выводы SET0/1, VID0/1 (подробнее об этом позже).
Также на этой странице расположена оставшаяся 3-я фаза питания ядра GPU. Для переключения QA340 используется отдельный драйвер. Вы спросите: "Почему бы не использовать те же SIC535CD/FDMF5808A с листов 70-71?" В таком случае можно было бы избавиться от драйвера. Возможно, это связанно с тем, что их характеристики слишком отличаются.
Завершает череду питания GPU импульсный источник от TI. Никаких новых решений тут не наблюдается. Присутствует классический прием с небольшим номиналом RA901 к VOS, который позволяет немного поднять выходное напряжение.
Переходим к второстепенным питаниям и тут нас ожидает новый power block от Onsemi. В очередной раз повторюсь, что можно было бы измерять ток на DCR индуктора. Кроме того, в данном случае при максимальном токе 6.6А я бы вообще использовал источник со встроенными ключами, это сильно дешевле и занимает меньше места.
Абсолютно идентичная странице 34 схемы преобразователя. Кстати, если подробнее посмотреть на схему формирования выходного напряжения, то окажется, что она довольно интересно работает. С помощью VID0/1 выбирается какие ключи будут замкнуты. Комбинируя состояния, можно получить широкий диапазон выходного напряжения с большой точностью.
На этом источники питания закончились. Теперь переходим к потребителям.
Абсолютно ничего примечательного, цифровой интерфейс для управления источниками и парочку конденсаторов.
Страница исключительно с земляными контактами CPU
Предлагаю рассмотреть эти две страницы вместе, поскольку элементы на них одинаковые. Наибольший интерес тут представляют трехвыводные конденсаторы, которые мы встречали и ранее. В чем же их особенность?
За счет наличия третьего вывода значительно снижается последовательная индуктивность (ESL). Такие конденсаторы хорошо подходят для доменов питания с высоким dI/dt.
Страница исключительно с выводами питания PCH, разбирать нечего.
Разработчики Apple используют LC фильтры или фильтры с ферритовыми бусинами для питания аналоговых доменов PCH (XTALL, PLL). Абсолютно правильный подход, не всегда чистых конденсаторов достаточно, иногда полезно ввести контролируемые потери на высоких частотах (в ферритовых бусинах) чтобы тот же PLL не защелкнулся при провале напряжения.
На данных страницах нас встречают проходные конденсаторы - еще один способ снизить последовательную индуктивность (ESL). К сожалению, такие конденсаторы обычно дороже и имеют меньшую удельную емкость поэтому их используют в цепях с высокими di/dt.
Тут мое внимание привлек фильтр с ферритовой бусиной, причем еще и демпфированный резистором. Прекрасное решение, особенно если учитывая, что LC фильтр может уйти в резонанс и усилить шумы.
На странице расположены конденсаторы, аналогичные тем, которые мы обсуждали ранее.
Страницы, которые относятся к питанию, но смысловой нагрузки не несут.
На трех этих листах расположено огромное количество конденсаторов в корпусах 0201 номиналом от 3пФ до 12пФ. Лично я никогда не применял такие технические решения, но подобные номиналы используются для улучшения ЭМС платы в целом, снижение наводок с RF части схемы, и возможно, тонкая подстройка PDN доменов.
Выводы
Могу сказать, что впечатления от схемы у меня положительные. Конечно, в некоторых местах нарисована она ужасно, но большинство зарубежных компаний рисуют именно так. Безусловно, очень раздута компонентная база. Это видно уже на этапе анализа питания по зоопарку различных контроллеров, ключей и прочего. Однако, есть и очень грамотные технические решения, которые стоит добавить в свой арсенал.
Отдельно хочется упомянуть, что, судя по схеме, она относится к EVT стадии проекта, поэтому наличие каких то вещей допускается. Тем более критических ошибок, ограничивающих функционал платы, я не обнаружил.