![](https://habrastorage.org/getpro/habr/upload_files/15e/ed0/253/15eed0253ec79c5dddf4afc8e5054507.png)
В этом тексте написал о забытом понятии: блок-схемы для разработки электроники. В ГОСТ(е) их называли Э1 (схема структурная). Блок-схем это хороший уровень абстракции при анализе электронного устройства или PCB. В этом опусе я представил несколько атрибутов, которые сформировались при создании блок-схем. Привел примеры образцовых блок-схем.
Как часто говорил университетский лектор: “Инженеры - это про схемы”. Также существует отличная английская пословица: “Картинка стоит тысячи слов”.
У генералов есть карты, значит у инженеров должны быть схемы.
Почему важно создавать блок-схемы?
1--> Чтобы быстро ввести в курс дела новых людей. Грубо говоря, чтобы понять с какой стороны следует подходить к этой электронной плате.
2--> Чтобы увидеть потенциальные ошибки дизайна на ранней фазе разработки продукта.
3--> Блок-схемы это, как говорит старинная американская народная поговорка, “helicopter view”. Глядя на схему можно увидеть архитектуру платы с высоты птичьего полета. Не все понимают эти навороченные принципиальные схемы на 19-100+ страниц. Нужны, как говорят американцы, "уровни абстракции" (abstraction levels).
3--> Чтобы упростить навигацию по сложной схемотехнике (Э3). Найти нужный токен. Например, для разъёма программатора или отладочного интерфейса.
4--> Инспекция аппаратного дизайна это требование международного автомобильного стандарта функциональной безопасности продукта ISO26262-5
![](https://habrastorage.org/getpro/habr/upload_files/67d/2ac/4f4/67d2ac4f41fc185f00af70543c083067.png)
Это как в метро. Вы же войдя в метро незнакомого города не открываете спутниковые фотографии города или раскладную на полу карту автодорог, чтобы понять, где же надо делать пересадки. Это было бы просто смешно. Вы как нормальный человек подходите к аккуратно скомпонованной схеме метро, быстро изучаете её и вам всё мгновенно становится ясно. Так же и тут в электронике, только вместо города - PCB, вместо схемы метро - блок-схема архитектуры платы. Вот и всё...
Если проводить еще одну аналогию, то блок-схема это как загрузчик u-boot. Цель блок-схемы быстро загрузить в мозг разработчика большую и сложную систему.
У меня была схема электрическая(Э3) на 101 страницу. Э3 на 30-42 страниц - это вообще сейчас норма жизни. Нужно, например, понять какой designator у JTAG разъема. Прежде чем искать его в электрической схеме я за пару секунд найду его токен-имя из блок-схемы. Далее одним поиском нахожу разъём на 70-страничной Э3 по имени токена (designator(а)). Easy!
4> Блок-схема нужна чтобы определить на что вообще способна аппаратная платформа прибора.
На блок схеме сразу видно какие есть датчики, интерфейсы, сколько памяти, какие процессоры (мозги) и какие исполнительные механизмы. Все это понятно просто просмотрев блок-схему по диагонали.
5> Блок-схема позволит верифицировать принципиальную схему. Увидеть косяки в дизайне.
Проще говоря, если по Э3 никак не составить Э1 (в Э3 не указано куда идут некоторые провода), то Э3 следует отправить на доработку.
6> Блок-схема поможет составить firmware. Глядя на блок-схему сразу понятно какие программные компоненты надо подключать к сборке. Как говорил наш университетский профессор по курсу операционных систем: “Hardware первично - Software вторично”.
7> Блок-схема поможет интеграторам в установке устройства. Поможет им найти нужный разъём и они поймут с какой стороны подходить к плате. И это всё благодаря блок-схеме.
Почему не достаточно электрической принципиальной схемы?
Главная проблема электрический принципиальных схем (Э3) это “летающие фрагменты”.
![пример "летающего" фрагмента пример "летающего" фрагмента](https://habrastorage.org/getpro/habr/upload_files/539/e83/f3a/539e83f3acef99a74a94ec7b50017a0b.png)
Надо постоянно пользоваться поиском, чтобы проследить куда идет конкретный провод(например 3V3 или VBUS). Хорошо когда Э3 в *.pdf. Однако зачастую в российских компаниях электрические принципиальные схемы Э3 до сих пор распространяется внутри организации в виде, внимание..., фотографии! (*.JPG файле или даже *.PNG или *.TIF) и там, естественно, нет никакого поиска Ctrl+F. Это же картинка! Поэтому крайне желательно делать блок-схемы PCB в векторном формате (*.svg, *.pdf, *.dxf).
Проблема еще в том, что большинство схемотехников в РФ не составляет блок-схемы банально потому, что они не знают как это делать! Их этому не учили в ВУЗ(е) или ТУЗ(е). А если они и пытаются накропать блок-схему, то получается так, что лучше бы они этого вообще не делали. Они добавляют сеточку, градиенты, затенения, размытости, насыпают много-много стразиков. Иной раз смотришь на их блок-схемы и думаешь:
Ну, это точно рисовала женщина. Пойду познакомлюсь с ней.
Потом оказывается это рисовал бородатый парень, но его схема выглядит как у женщины. Начинаешь спрашивать как так вышло-то. Он отвечает, что хотел, чтобы было "Дорохо-Бохато", а по факту получилась просто пыль в глаза!
Как же создавать, редактировать и распространять блок-схемы?
Для блок схем идеально подходит векторная графика и *.svg файлы. Есть бесплатная и мощная программа Inkscape. Inkscape это редактор векторной графики и *.svg файлов. Простой как Paint, только для векторной графики, а не для растровой. В отличии от пресловутого draw.io (где надо зачем-то авторизироваться) в Inkscape ставится в 2 минуты. И самое главное, в Inkscape есть слои! Можно уменьшать сложность схем путем отключения, например, слоя с распределением питания и рассматривать только system design. В Inkscape множество интуитивно понятных инструментов и никакой авторизации. Также Inkscape выигрывает по сравнению с MS Visio так как Inkscape бесплатный. Inkscape еще хорош тем, что в нём чертить можно. Бесплатная альтернатива AutoCAD(у).
Понятно, что блок схемы следует рассматривать на мониторе в специальном софте со слоями и с увеличением нужных мест из *.pdf или *.svg файла через редактор или браузер. Отличительная особенность векторной графики как раз в том, что качество изображения ни разу не ухудшается при бесконечном увеличении изображения как это повсеместно в растровой графике(фотографиях). Очень редко, когда блок-схемы надо печатать на бумаге так как они очень информативны.
Все известные западные вендоры уже давно предоставляют качественные и подробные блок схемы своих чипов, плат, систем. Впереди всех в вопросе предоставления высококачественных блок-схем конечно же STMicroelectronics. Их блок схемы SoC(ов) просто шедевры. Видимо там над ними работает настоящий профессиональный графический дизайнер.
Атрибуты хорошей блок-схемы для PCB:
Далее следует простенькая методичка по составлению блок-схем. Правила сформировались как обычно из реальных многолетних инцидентов при создании блок-схем. Итак, поехали...
1) Блок-схема должна умещаться на одном листе. В этом весь её смысл. Минимум площади - максимум информации.
2–Показываться непрерывными стрелками куда идут данные и питание.
3–использовать разные цвета для обозначения разных шин данных и рельсов напряжения.
![](https://habrastorage.org/getpro/habr/upload_files/45c/8b2/ec0/45c8b2ec0efd2adb78c51955a3dc48b9.png)
4–Показывать разрядность шин данных: UART, SPI, I2S,I2C,PCI, VR12, SDIO, SWD, CAN, MII, MDIO, USB, 100BaseT1, SpaceWire и пр.
5–Показывать сколько pin(ов) на каждом чипе и разъеме (и сколько свободных Pin(ов))
Это позволит найти соответствие между схемой и реальным физическим устройством при Bring-up(е) гаджета.
![](https://habrastorage.org/getpro/habr/upload_files/30f/8e7/36d/30f8e736d5af68ebcd11caf1c356a98a.png)
6–Желтым цветом показать кварцевые резонаторы/генераторы и указывать какими частотами тактируются чипы.
![](https://habrastorage.org/getpro/habr/upload_files/754/71d/ebe/75471debe484a71fbe97ef7d1b04fca7.png)
7–Показывать названия интерфейсов: I2C, MDIO, I2S, SPI, JTAG, SWD, SWI и их максимальные битовые скорости в данном устройстве.
8–Показывать сверху интерфейсы, которые работают в обе стороны CAN, RS232, 100BaseTX, 100BaseT1.
![](https://habrastorage.org/getpro/habr/upload_files/6a4/61a/bb4/6a461abb4edd8e24c440f25bd7d7ce7f.png)
9-Снизу показывать память PCB.
![](https://habrastorage.org/getpro/habr/upload_files/137/7d0/d98/1377d0d9846ca34d8387da32ddcbe181.png)
10–Слева показывать делители напряжения. Обязательно указать коэффициент деления.
![](https://habrastorage.org/getpro/habr/upload_files/e9a/cbd/a6a/e9acbda6a45aff4ed1987d96fce28898.png)
11–Показать каким напряжением запитана каждая микросхема
12–Зелёным цветом показывать аналоговые фильтры
![](https://habrastorage.org/getpro/habr/upload_files/97c/07d/df5/97c07ddf5d940c016f46e9be1b8b7952.png)
13–Если у микросхемы есть внутренние регистры, то указывать количество регистров и их разрядность. Это позволит оценить трудозатраты на написание драйвера для этой умной навороченной микросхемы. В среднем при написании кода драйвера надо 1 минута на бит.
![](https://habrastorage.org/getpro/habr/upload_files/dab/487/5ef/dab4875ef8ae17a5b677ef1bbb9118ad.png)
14–подписать имена основных проводов.
15--То что на входе устройства (sensitivity): кварцевые генераторы, датчики, кнопки то, очевидно, показываем слева. Ибо читаем мы слева направо -->.
![](https://habrastorage.org/getpro/habr/upload_files/cbd/fff/36c/cbdfff36ccbd81d184da684e61c1a100.png)
16–То что на выходе устройства (control): светодиоды, экраны, цифро-аналоговые преобразователи DAC, реле, моторы, аудио кодеки. отражать в правой части схемы. Ибо опять таки, читаем мы слева направо (-->).
![](https://habrastorage.org/getpro/habr/upload_files/1a5/80f/273/1a580f2737d92b1f7c4cddb3271d221a.png)
Человеку естественно анализировать информацию в направлении слева-направо (-->) и сверху-вниз ( \/ ). Разработчик блок-схемы должен всегда иметь это в виду.
17–Отражать по краям разъемы. Благодаря этому пройдя взглядом по периметру блок-схемы (по часовой стрелке или против) можно перечислить все разъёмы на PCB.
29--Если в устройстве есть I2C микросхемы, то на блок-схеме надо обязательно указывать 7-ми битные I2C адреса каждой микросхемы. Это сильно поможет при отладке гаджета. Аналогично с другими интерфейсами, где есть адреса: 1Wire, PCI, DALI, PMBus, SMBus, LIN и пр.
![](https://habrastorage.org/getpro/habr/upload_files/f9c/60c/0dd/f9c60c0ddb3436b89e5e3a939ed4debe.png)
18–цветом показать какая микросхема в каком слое.
19–Отражать дескрипторы микросхем U1...Un
20–Отражать дескрипторы разъемов (X1...Xn) и
21–Отражать названия микросхем и их назначение
22–Отражать теоретическое и практическое значение потребляемой мощности. Можно выявить короткое замыкание, если реальное значение мощности превышает теоретическое значение из блок-схемы.
23– Показывать стрелками как распространяется питание на плате. Желательно в отдельном слое.
30-- Во возможности избавляться от лишних пересечений и изломов линий там, где этого можно избежать. Так схема будет легче читаться.(*)
32-- Все фигуры должны быть выровнены относительно соседних фигур. Так схема будет легче читаться.
31-- Сохранять и распространять релиз блок-схемы в *.pdf файле. Это позволит пользоваться поиском Ctrl+F для навигации по схеме. Исходник схемы распространять с векторном *.svg файле для случаев создания новых версий схемы. (*)
29-- Указывать версию блок схемы. (*)
Дополнительные атрибуты блок схемы
24-показать стоимость каждого чипа
25-показать количество слоев PCB
26–показать разрядность чипов DAC/ADC
27--показать тип корпуса каждой микросхемы
28--показать температурный диапазон чипов
Считаю, что главное в блок-схемах - это сгруппировать элементы так, чтобы выдержать направление движение информации слева направо, ну или сверху вниз. Вот универсальный шаблон для любой блок схемы:
![](https://habrastorage.org/getpro/habr/upload_files/639/cc1/1d3/639cc11d34bef3ebdbf4777a169d276f.png)
Show Room образцовых блок-схем
![](https://habrastorage.org/getpro/habr/upload_files/685/4bc/11d/6854bc11dcb08e051c9914a962c024a3.png)
![](https://habrastorage.org/getpro/habr/upload_files/3d3/ef8/0d4/3d3ef80d4c1fcb48a63bdad8f4029356.png)
![](https://habrastorage.org/getpro/habr/upload_files/807/5ee/273/8075ee27333a1a921489479a01dce28d.png)
![](https://habrastorage.org/getpro/habr/upload_files/106/b09/217/106b09217224c9775f786ca3ee79fd93.png)
![](https://habrastorage.org/getpro/habr/upload_files/bdb/c67/470/bdbc67470a2c6222980a98e7e9d80355.png)
![](https://habrastorage.org/getpro/habr/upload_files/a17/ad9/f0f/a17ad9f0f5338b6bc7446bde0a609980.png)
![](https://habrastorage.org/getpro/habr/upload_files/c56/6aa/ff7/c566aaff781785caf273aa75e19482be.png)
![](https://habrastorage.org/getpro/habr/upload_files/760/602/5f5/7606025f53dc557adf443e8f857efc7e.png)
![](https://habrastorage.org/getpro/habr/upload_files/7c1/891/8f2/7c18918f28230b7ad471905c527ae4b0.png)
Вывод:
Блок-схемы это мощный инструмент визуализации и абстракции архитектуры электронного изделия. Существует программный инструмент Inkscape и специальные формат файла *.svg для редактирования векторной графики и создания высококачественных добротных блок-схем. Качественная блок-схема является отличным дополнением паспорта устройства и залогом успешного проекта.
Текст может быть полезен техническим писателям, программистам микроконтроллеров, тестировщикам, схемотехникам, конструкторам, топологам, интеграторам и графическим дизайнерам.
Ссылки на статьи по теме
Схемы электрические. Типы схем https://habr.com/ru/post/451158/
https://habr.com/ru/post/541478/
https://habr.com/ru/post/317172/
https://habr.com/ru/post/337078/
Если у вас есть замечания, что еще следует указывать на блок-схемах или как их вообще создавать, то укажите это в комментариях