Почему SMARC?
Итак, после разработки одноплатного компьютера на RK3568, писал тут, возникла следующая задача – создать процессорный модуль на том же SoC. Модульная архитектура предполагает разделение устройства на две части: вычислительный модуль с процессором, оперативной памятью и необходимыми цепями питания, а также плату-носитель (Carrier Board), которая обеспечивает подключение периферии и внешних интерфейсов. На первый взгляд, такое решение дает некоторое преимущество: вычислительный модуль можно заменить другим совместимым по форм-фактору и интерфейсам и при этом не перерабатывая всю плату устройства. А в действительности все ли так просто? Давайте разбираться! Поскольку стояла задача сделать модуль на процессоре ARM рассматривались варианты исполнения:
-COM Express,
-SMARC,
-Qseven.
COM Express исторически широко применялся в системах на базе Intel и AMD, имеет применение под ARM. Различные типы модулей Mini 84×55 мм, Compact 95×95 мм, Basic 125×95 мм, Extended 155×110 мм. COM Express в версии Mini, где имеет один разъем на 220 контактов ограничивает RK3568, а в исполнении Compact где используются два разъема по 220 контактов избыточен. Сам стандарт мне нравится своей строгостью.
Qseven размер платы 70x70mm, имеет краевой разъем на 230-контактов. Он включает меньший набор доступных интерфейсов и ограниченное количество контактов по сравнению с рассматриваемыми вариантами. Для поставленной задачи с RK3568 это потребовало бы отказаться от части периферии.
Стандарт SMARC разработан в основных версиях SMARC1.0, SMARC2.0, SMARC2.1. За основу взята версия SMARC2.1, габаритные размеры платы модуля, могут быть в двух вариантах 82×50 мм и 82×80 мм, а для подключения имеет краевой разъем на 314 контактов.
Важный момент стандарта SMARC2.1
За основу взят модуль 82×50 мм в соответствии с предложенным вариантом из SMARC 2.1 Specification sget.org:

В спецификации описаны номера контактов и сигналов. И тут условно можно поделить контакты стандарта на некую базовую составляющую, которая используется однозначно и не предполагает других вариантов реализации — это VDD, GND, GBE0, GBE1, USB0-для отладки, SER0-консоль, GPIO и т.д, и контакты, которые в рамках стандарта могут иметь разное исполнение. Например, на контактах S125-S126 можно реализовать как линии LVDS0, так и линии eDP0, так и линии MIPI_DSI0 и таких моментов несколько.




Стандарт SMARC 2.1 предусматривает различные варианты назначения отдельных контактов. Поэтому формальное соответствие модуля стандарту ещё не гарантирует полной функциональной совместимости с любой платой-носителем. Перед разработкой необходимо согласовать используемые интерфейсы, варианты назначения контактов и дополнительные электрические требования. В таких случаях если ведется разработка модуля, она должна быть привязана к конкретной плате расширения для их совместимости иначе можно столкнуться с ограничением устройства или вовсе его отказом работы. Вот так и получается, что модули сделаны по одному стандарту, но их совместимость условна. Также на площадке «Алиэкспресс» представлены некоторые изделия заявленные как имеющие исполнения SMARC2.1, но от стандарта у них только форма разъема, а сигналы выведены проприетарные, так же есть варианты близкие к стандарту. Тут можно сделать вывод, что при разработке модуля нужно заранее определиться с платой расширения, если она будет покупной, то какого, производителя и есть ли аналоги, либо с разработкой модуля еще и разрабатывать свою плату расширения. И вот когда на руках есть стандарт SMARC2.1 и есть распиновка платы расширения куда будет устанавливаться модуль приступаем к разработке структурной схемы, чтобы на уровне квадратиков отобразить как будет выглядеть будущий модуль.
Структурная схема и важные моменты при разработке Э3.

При разработке схемы электрической можно выделить следующие важные этапы:
1)Назначение сигналов на краевой разъём по двум документам это сам стандарт и документация на плату расширения
Например:


2) Такие сигнальные линии как UART, GPIOи так далее имеют уровень 1,8В, что не является проблемой так как в RK3568 домены питания для GPIO VCCIO1- VCCIO7, PMUIO0, PMUIO1 можно запитать как 1,8В так 3,3В, зависит от ограничений соответствующих выводов, что дает гибкость исполнения на этом процессоре, там где это не возможно нужно применить преобразователь уровней.

Также некоторые цепи выводимые на краевой разъем по стандарту должны иметь подтяжку, при проектировании необходимо проверить требования спецификации и фактическую реализации соответствующих сигналов платы расширения, так как могут быть и тут отличия, так что этот момент стоит учесть.
3) Микросхемы ethernet должны быть установлены на модуле, при проектировании необходимо учитывать требования к разводке дифференциальных пар, согласованию и подключению магнитных компонентов, расположенных на плате расширения.
После проработки каждого участка схемы переходим в трассировку.
Трассировка платы SMARC2.1 на RK3568.
При трассировке платы процессорного модуля важно учесть высоты располагаемых компонентов.

Создать контур самой печатной платы по размерам из спецификации

И на самой плате разместить краевой разъем, я его сделал отдельно в виде библиотеки.

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

Стек платы был сделан на основе предыдущего проекта «одноплатника».

Трассировку оперативной памяти я выполняю самостоятельно, ориентируясь на рекомендации стандарта производителя процессора и требования к целостности сигналов. Размещаю компоненты максимально оптимально, используя пространство самой печатной платы. Для меня важно, чтобы плата была не только работоспособной, но и сам проект был удобным для сопровождения.

На разработку платы ушло 4 месяца, со всеми доработками и отправка «герберов» на производство, тут нужно учесть, что библиотеки и некоторые схемотехнические решения, не касающиеся краевого разъема были позаимствованы с моего проекта «одноплатника».
Ошибки.
Самая главная ошибка именно технического плана — толщина платы модуля, поскольку за основу взял стек от «одноплатника», я не уследил толщину платы и вместо плюс/минус 1.2 мм плата получилась толщиной около 1.6 мм. Это была досадная ошибка, но не критическая, все таки с молотком и силой даже такую плату можно установить в разъем и отладить.
Заключение.
При разработке модуля процессора по стандарту SMARC2.1 нужно в начале решить в какую плату расширения планируется его устанавливать. Это можно сказать идеологический вопрос разработки по этому стандарту. Модули, разработанные по нему, могут иметь различия в рамках самого стандарта и не подходить друг к другу. Готовые модули, продаваемые производителями, могу иметь отличия как в рамках стандарта, так и выходя за них, а некоторые решения просто проприетарные и из стандарта имеют только форму краевого разъема. Модуль, разработанный по стандарту SMARC2.1 удачно раскрывает функционал процессора RK3568.
Источник: habr.com