В предыдущей статье мы не только познакомились с редактором схем, но и подготовили полноценную, пусть и очень простую, схему симметричного мультивибратора. И это очень важный и большой шаг, причем практический. Эта схема, хоть мы и не сделали этого, пройдет и контроль корректности (ERC). И на основе этой схемы можно сделать полноценную печатную плату.
Однако, эта же простота схемы позволила нам рассмотреть лишь некоторые средства редактора схем KiCad. И сегодня мы
- рассмотрим работу со скрытыми выводами
- познакомимся с символами питания
- поговорим более подробно о цепях и шинах
- узнаем, зачем нужен PWR_FALG
- Кроме того, немного поговорим о стилях рисования схем (очень субъективно)
А вот до иерархических схем опять не доберемся, они будут темой отдельной статьи, уже после знакомства с редактором печатных плат.
Но сначала я хочу исправить небольшое упущение, которое допустил в предыдущей статье
KiCad для начинающих §6. Знакомимся с редактором схем
По прежнему, статья не является копированием документации или ее фрагментов. Она написана на основе собственного опыта, весьма немалого. И не заменяет документацию. Читать документацию обязательно!
Если вы используете статьи, или части статей в собственных публикациях, хотя бы указывайте ссылки на оригиналы статей на данном канале!
Еще раз про инструменты "Переместить" (М) и "Перетащить" (G). Выделение блока
Как работают эти инструменты мы уже видели в предыдущей статье. Иллюстрации с перемещением и перетаскиванием компонентов повторять не буду. Кроме того, мы использовали инструмент "Переместить" для перемещения обозначений и значений компонентов схемы.
Почему для перемещения обозначений не использовался инструмент "Перетащить"? Ответ простой, он не применим для текстовых полей компонентов. В чем то, это логично. Ведь перетаскивание должно сохранять связи перемещаемого элемента. Но передвигать компонент вслед за полями обозначения и значения как то неправильно.
Но есть и нелогичное. Инструмент "Перетащить" применим к обычным текстовым полям (элементам). Именно такими полями я оформил надписи у выводов разъема на схеме мультивибратора в предыдущей статье. Поэтому они и синего цвета. В равной степени для этого применим и инструмент "Переместить". Причем его действие полностью аналогично инструменту "Перетащить". Действительно, у элемента "Текстовое поле" ведь нет связей.
Но самое главное, я не сказал, что инструмент "Перетащить" (горячая клавиша G) применим к проводникам! Просто забыл об этом рассказать и показать. А тут есть некоторые тонкости.
Давайте снова откроем наш проект из предыдущей статьи и запустим редактор схем. Наведите курсор на левый нижний конец проводника соединяющего эмиттеры транзисторов и нажмите клавишу G
Вы увидите, что проводник стал более светлым. Это соответствует его выделению. Теперь можно перемещать проводник двигая мышь.
Что бы зафиксировать результат перемещения нажмите левую клавишу мыши. Точно так же можно перемещать и точки соединения проводников. Можете попробовать перетащить точку соединения проводников в цепи эмиттера VT2.
Можно перетаскивать концы проводника. Собственно говоря, это мы и делали. А можно перетаскивать проводник в целом, если нажать клавишу G когда курсор находится над серединой проводника. При этом проводник может перемещаться и вместе с компонентом, если между ними нет точек соединения проводников или точек перегиба проводника
Можно перемещать и перетаскивать целые блоки (фрагменты схемы). Выделить блок можно стандартным способом, перемещая курсор мыши с зажатой левой кнопкой.
При этом блок будет перемещаться сразу после отпускания левой кнопки мыши. По умолчанию выполняется команда "Переместить"
Что бы выбрать не перемещение, а перетаскивание, нужно не перемещать мышь после отпускания левой кнопки, а нажать (и отпустить) правую кнопку
Вы увидите меню выбора других действий с блоком. Что бы зафиксировать блок после перемещения/перетаскивания щелкните левой кнопкой мыши. Или нажмите клавише Enter на клавиатуре.
Однако, нельзя не сказать об одном небольшой затруднении связанном с выделением проводников. Дело в том, что курсор может остановиться только в узлах сетки. Промежуточные положения он просто проскакивает. И это может привести к невозможности "зацепить" проводник в нужном месте. Я специально увеличил видимость сетки в настройках редактора схем
Видно, что в этом месте никак не получиться "зацепить" проводник. Просто курсор на него не установить. И изменение масштаба тут не поможет. Только выбрать более мелкий шаг сетки. Но не забудьте после завершения перемещения вернуться к стандартному шагу сетки 1.27 мм!
Работа со скрытыми выводами
Не смотря на то, что ранее я уже говорил, что не рекомендуется использовать скрытые выводы, рассмотреть работу с ними все таки придется. Так как вам могут встретиться библиотеки с компонентами со скрытыми выводами. И в качествен примера давайте возьмем библиотеку 74xx_IEEE, которая входит в число стандартных. Нас будет интересовать компонент 7400 (классический 4х2И-НЕ, или 155ЛА3)
В данной библиотеке этот компонент состоит из 4 частей, причем выводы питания сделаны скрытыми (и общими для всех частей). Обратите внимание на название выводов питания - Vcc и GND. А теперь, для интереса, загляните в библиотеку 4xxx_IEEE. Найдите там компонент 4016. Я не буду приводить иллюстрацию. Вы увидите, что у него выводы питания называются Vdd и Vss. И это реальная проблема!
Скрытые выводы, исторически, обычно используются именно для цепей питания. Чаще всего для цифровых микросхем. И, как мы уже знаем, скрытые выводы объединяются исходя из названия. Просто автоматически создается цепь с именем совпадающим с именем вывода. Что бы выводы не только соединились между собой, но и оказались соединенными с другими компонентами схемы, нужно создать на схеме цепь с таким же именем, но уже в явном виде. Проблема в том, что имена выводов, как мы уже видели, могут быть разными.
Вот некоторые часто используемые названия выводов питания:
- Vcc - вывод питания коллекторных цепей. Поскольку может различаться и полярность, могут добавляться знаки + и -
- Vdd - вывод питания цепей стоков. Может добавляться знак полярности
- Vee - вывод питания эмиттерных цепей. Может добавляться знак полярности
- Vss - вывод питания истоковых цепей. Может добавляться знак полярности
- Gnd, GND - вывод земли, точнее, общий вывод. Полярность обычно не указывается.
- AGnd, AGND - вывод аналоговой земли
И множество иных обозначений. Например, V+ и V-, +5V, и т.д. Причем на схеме могут использоваться компоненты у которых "земля" обозначена и Vss, и GND. Что бы показать, в чем именно заключается проблема, давайте создадим новый пустой проект и запустим редактор схем. После чего добавим на схему два компонента 7400 (причем две именно первых части) и два компонента 4016 (тоже именно две первых части). Никаких соединений делать не будем.
Обратите внимание, что элементы имеют небольшие кружочки на верхней и нижней гранях, причем никаких обозначений у них нет. Это скриншот для версии KiCad 5.1.11. Эти кружочки предупреждают нас, что за ними прячутся скрытые поля. В старых версиях KiCad такого предупреждения не было. С какой точно версии они появились, не скажу, так как сам скрытыми выводами не пользуюсь, поэтому не отслеживал.
А теперь посмотрим, как это будет выглядеть на печатной плате
Я не буду сейчас рассказывать, как перейти к редактору печатных плат, это будет в последующих статьях. Нас сейчас интересует небольшой промежуточный результат.
Обратите внимание, что у нас оказались попарно соединены (воздушными линиями, белого цвета) выводы питания микросхем. Не смотря на то, что мы в явном виде их не соединяли. Причем цепи питания 7400 и 4016 оказались раздельными. У них ведь разные имена выводов!
Иногда, для больших схем, заметить такое можно уже тогда, когда значительная часть платы разведена. И приходится переделывать работу. Точнее, это было более актуально для старых версий KiCad, но сохраняет актуальность и сегодня.
На левой панели инструментов редактора схем есть переключатель "Показать скрытые выводы". Он соответствует небольшому значку операционного усилителя с выводами питания серого цвета. Когда то этот переключатель позволял увидеть скрытые выводы. Но сегодня он просто включает отображение их имен и номеров. И меняет цвет кружочков на серый
Так что пользы от него не очень много. Соединить скрытые выводы можно и без этого переключателя. Давайте сделаем это, но только для двух элементов U1.1 и U2.1
Кружочки обозначающие вывод пропали, как и должно быть с подключенными к схеме выводами. А теперь посмотрим, что изменилось на печатной плате
Как хорошо видно, теперь общие выводы всех четырех микросхем оказались соединены. Но мы ведь не соединяли земли U3 и U4! Все верно, в явном виде не соединяли. Но соединив земли U1 и U2 мы соединили не выводы, а цепи! Ведь выводы подключены к цепям. Такой вот побочный эффект. И, в данном случаем, мы не сможем никак разделить земли пары U1/U2 и пары U3/U4. Кроме того, такое явное соединение противоречит самой идее использования скрытых выводов.
Более правильным решением является использование символов питания из библиотеки power. Во всяком случае, это будет именно явное соединение цепей, а не выводов. Что при соединении скрытых выводов как минимум, не всегда очевидно. Однако, и здесь все не так просто. Смотрите сами
Мы, в явном виде, соединили цепи VDD и VCC, а так же, GND и VSS. Но если посмотреть на печатную плату, то можно убедиться, что никакого соединения не получилось! В чем же дело? А дело в том, что имена цепей зависимы от регистра букв. Строчные и прописные буквы различаются!
При этом в стандартных библиотеках символов питания Vdd и Vcc нет, только VDD и VCC. У меня есть своя библиотека с нужными символами, я ей воспользуюсь
А вот и результат, именно такой, какой нужен
Поскольку мы соединили в явном виде только Vcc и Vdd, цепи земли остались раздельными.
Поэтому в одной из предыдущих статей
KiCad для начинающих. §4 Создаем свой компонент. Часть 3
я и не рекомендовал делать выводы питания скрытыми. Лучше добавить еще одну часть в компонент, с явными выводами питания.
Скрытые выводы не являются злом. Просто их не всегда нужно использовать. Например, в компоненте транзистора IRLMS2002PbF они нам здорово помогли.
Символы питания
Пришло время поближе познакомиться с символами питания. Я уже пару раз упоминал их ранее, а сейчас мы ими воспользовались уже в явном виде. Что же это за символы такие?
Символы питания это виртуальные символы. Они собраны в специальной библиотеке power, но это сделано лишь для удобства. Просто доступ к этой библиотеке можно получить не только стандартно, через "Разместить компонент", но и через инструмент "Разместить порт питания" на правой панели инструментов редактора.
Вы можете создать, и очень легко, свои символы питания и разместить их в любой библиотеке. Давайте посмотрим, как выглядит, например, символ VDD из стандартной библиотеки
Прежде всего видно, что символ питания состоит из всего одно вывода, причем скрытого. Да, повторюсь, скрытые выводы не всегда зло. Кроме собственно вывода (скрытого и нулевой длины) есть и графические элементы, которые как раз и видно.
Поскольку имя скрытого вывода определяет и имя автоматически создаваемой цепи, оно в данном случае, должно обязательно быть VDD. Как и имя собственно символа. Показанное цветом морской волны текстовое поле VDD является просто отображаемым текстом, ведь вывод скрытый. Номер вывода значения не имеет и обычно задается 1. А тип вывода должен быть "Вход питания".
С выводом мы разобрались, теперь посмотрим на параметры символа в целом
Обязательно должна стоять отметка "Создать как символ питания". Ведь мы и создаем символ питания. А вот поле "Обозначение" содержит весьма странное, на первый взгляд, значение #PWR...
На самом деле, здесь важен только первый символ, собственно #. Он и определяет, что компонент является виртуальным! Виртуальный компонент не имеет посадочного места, так как не размещается на печатной плате. При этом в схеме он будет отображаться.
Вот, собственно, и все хитрости. Символ питания это скрытый вывод, который позволяет задать имя цепи питания и наглядно показать подключение к этой цепи. Например, так
Специальный символ питания PWR_FLAG
Это, пожалуй, самый часто упоминаемый (и даже проклинаемый!) символ питания. О нем спорят. Он вызывает непонимание со стороны новичков. Зачем он вообще нужен?
На самом деле все очень просто. Как вы знаете, есть тип выводов "Вход питания". Например, на приведенной выше иллюстрации такими являются выводы VSS (4) и VCC (8). А так же, символ питания Vdd. Но при проверке соблюдения электрических правил (ERC) проверяется, что каждый вход питания соединен с каким-либо выходом питания.
Другими словами, цепи питания компонентов должны быть подключены к источнику питания, выводу имеющему тип "Выход питания". Если вход питания не подключен к выходу питания, возникает ошибка. Эту ошибку можно просто игнорировать, например, если питание все таки подается, но через контакт разъема. Или можно подключить тот самый PWR_FLAG из библиотеки power
И ошибка исчезнет. Кстати, два выхода питания нельзя соединять между собой. Поэтому два, даже случайно, в разных местах схемы, подключенных к одной цепи символа PWR_FLAG тоже приведут к ошибке.
В самом символе PWR_FLAG нет никакой мистики. Это точно такой же символ питания, как мы рассматривали ранее. Только его вывод имеет тип "Выход питания", а не "Вход питания". Вот и вся разница.
В дальнейшем, все может измениться. Но на данный момент использование PWR_FLAG именно такое.
Цепи это не только проводники
В предыдущей статье я уже говорил, что все цепи имеют имена. Даже, если они не заданы явно. И подключение выводов к цепям осуществляется именно на основании имен цепей. А имя цепи на схеме задается меткой, которая создается инструментом "Создать локальную метку" на правой панели инструментов. Причем метку можно задать не только для проводника, но и для вывода. Например, вот так
В данном случае у нас оказываются соединены выводы SDA (5) компонента DD5 и GP5 (2) компонента DD10. Они не соединены проводниками в явном виде, как мы это делали в предыдущей статье. Но они соединены на основании имен цепей. Аналогично и выводы SCL (6) компонента DD5 и GP2 (5) компонента DD10.
Каждая метка цепи имеет точку подключения, небольшой квадратик. Вы можете легко его увидеть при создании метки. Если эта точка подключения размещается поверх точки подключения вывода, как у выводов 5DD5 и 5DD10, вывод считается подключенным и кружок у него пропадает.
Точка подключения метки к проводнику от вывода 2DD10 не совпадает с окончанием проводника. Поэтому и окончание проводника помечается квадратиком (не подключен). А вот у проводника от вывода 6DD5 точка подключения метки совпала с окончанием проводника. И он стал отображаться как подключенный.
Как именно размещается метка не имеет значения. Все четыре метки на последней иллюстрации корректно задают имена цепей. Не будет никаких ошибок при проверке электрических правил. И все корректно отобразится на печатной плате.
То есть, как я и говорил в предыдущей статье, проводники на самом деле являются лишь графическим изображением подключения вывода к цепи. И, теоретически, можно обойтись без рисования проводников. Но не нужно делать, например, вот так
Да, при создании печатной платы это не мешает. Но такая схема равноценна тому, что схемы практически нет. Если вам доведется поработать с большими схемами выполненными вот в таком стиле, вы это прочувствуете сами. Впрочем, это лишь мое личное мнение насчет стиля рисования схем. И оно, безусловно, субъективное.
Метка, задающая имя цепи, по умолчанию имеет точку подключения в левом нижнем углу текстового поля. Но метку, как и любой (почти любой) другой элемент схемы, можно вращать с помощью горячей клавиши R. Попробуйте это сделать самостоятельно и вы поймете, как мне удалось разместить метки прямо у выводов и избежать наложения текста и изображения.
Шины
Шина это логическое объединение нескольких цепей. Например, шина адреса может логически объединять 16 линий адреса с А0 по А15. Системная шина ЭВМ может объединять, например, подшины данных и адреса, сигналы управления. Шина может представлять и физически объединенные, например, в одном жгуте, проводники. Это если говорить о шинах в целом.
Однако, в KiCad шины, по большей части, используются лишь как декоративный инструмент. Во всяком случае, в настоящее время. Поэтому польза от них большей частью заключается в более наглядном изображении схемы. Но давайте по порядку
В документации на KiCad шинам уделяется мало внимания. Что вполне понятно из-за их небольшой функциональности (в рамках KiCad конечно). Более того, информация в документации не совсем точная.
Например в параграфе 6.4.2.1 документации на eeshema говорится следующее
С точки зрения схемы, шина — это совокупность проводников, метки которых имеют одинаковый префикс и заканчиваются порядковым номером. Например, PCA0, PCA1 и PCA2 являются сигналами шины PCA.
Законченная шина обозначается как PCA[N..m], где N и m — номера первого и последнего проводника этой шины. Таким образом, если шина PCA имеет 20 сигналов от 0 до 19, то, в итоге, шина будет обозначена как PCA[0..19]. Совокупность сигналов типа PCA0, PCA1, PCA2, WRITE, READ нельзя соединить в одну шину
А это не совсем так. И сейчас вы это увидите.
Использование шин как чисто графического элемента
В целом, при таком использовании можно рассматривать шину как простую графическую линию. И не более того. Давайте рассмотрим это не примере подключения микросхемы памяти 25LC256 к микроконтроллеру PIC16F630.
Я воспользуюсь своими библиотеками. Вы можете использовать стандартные или создать свои компоненты. Рассматривайте данный пример лишь как пример последовательности действий. Причем большая часть действий вам уже хорошо известна. Поэтому я буду краток.
После размещения компонентов микроконтроллера и памяти на схеме я создам 6 элементов "Ввод проводника в шину". Это можно сделать с помощью одноименного инструмента на правой панели инструментов. Почему 6? Таково количество сигнальных выводов микросхемы памяти.
Элемент "Ввод проводника в шину" является просто коротким отрезком проводника идущим под углом 45 градусов. Как у любого отрезка проводника, у него есть две точки подключения по конца. Причем эти точки равнозначны. А сами отрезки можно и перемещать и вращать.
Теперь нужно нарисовать отрезки проводников подключенные к выводам микросхемы памяти и микроконтроллера. И присвоить им имена цепей с помощью меток. Как вы уже знаете, этого достаточно для того, что бы выводы оказались соединены (на основании имен цепей). Но мы продолжим работу, теперь уже чисто декоративную.
Переместим наши "Вводы в шину" к проводникам идущим от выводов так, что бы точки подключения совпали. Остается нарисовать собственно линию шины с помощью соответствующего инструмента "Разместить шину" на правой панели инструментов. Шина прокладывается точно так, как мы ранее прокладывали проводник. Только она должна проходить и через оставшиеся не подключенными точки подключения вводов в шину. Вот так у меня получилось
По моему, вполне неплохо и довольно наглядно. На ответвлениях шины вниз, в ее середине, автоматически проставились точки соединения. Но я просто удалил их. Вы можете точки оставить, если это кажется вам более правильным.
В данном случае и вводы в шину, и собственно шины, являются чисто декоративными элементами. Они абсолютно ни на что не влияют, кроме наглядности. И их можно даже спокойно удалить. И проверка электрических правил тоже пройдет без ошибок.
Но что получилось на печатной плате? Может там действительно сплошные ошибки... Нет, там тоже все отлично
Да иначе и быть не могло. Вы ведь помните, что выводы и цепи соединяются на основе имен, а не графических элементов. Просто документация не совсем точна. И вы в этом сами убедились.
Однако надо учитывать, что имена цепей в таком случае должны быть уникальными. Если где либо еще, для совсем другой шины, появится цепь с именем, например, SO, то это будет не другая цепь, а эта же самая. И выводы окажутся соединенными, даже если пользователь этого не подразумевал.
Причина в том, что шина никак не привязана к цепям, она всего лишь графическая линия. Мы указываем не имя сигнала в пределах шины, а имя цепи в пределах всей схемы! И это важный момент, который требует отдельного внимания.
Впрочем, есть "обходной маневр". Имена цепей, которые "подключаются" к шине, можно задавать просто как "номера вводов шины". Как "в старые добрые времена". И имена не надо придумывать, и уникальность числовых имен вводов в шину соблюсти гораздо проще. Но нужно учитывать, что имена цепей отображаются на дорожках платы в редакторе печатных плат. И осознанные имена помогают при трассировке.
И еще один момент, тоже связанный со стилем рисования схем. Во времена СССР было модным вот такое, например
Сплошные шины с пронумерованными вводами. И по степени читабельности это ничуть не лучше того, что я приводил ранее в качестве примера плохого стиля. А ведь так выполнялись, в том числе, схемы больших ЭВМ, весьма сложные. И приходилось их разрисовывать вручную в более "человеческом" виде, что бы разобраться с отдельными узлами.
Это, опять таки, только мое личное мнение. Но все хорошо в меру. И шины здесь не являются исключением.
Использование шин не только в качестве графических объектов
Я не случайно сказал, что документация "не совсем точна", а не "в документации ошибка". Просто мы использовали "облегченный", графический, вариант применения шин. А ведь шины можно использовать и для установления попарного соединения сигналов!
И вот в этом случае документация совершенно верна. В этом случае в шину можно объединить только сигналы состоящие из имени и последующего номера. Например, линии адреса А0-А15. Сам пример описан в документе "Начало работы с Kicad" в параграфе 4.2 "Шинные соединения в KiCad". Речь идет о соединении шин a[1..4] и b[1..4]. И я не буду его сейчас повторять, загляните в документацию.
Но давайте разберемся, почему в одном случае можно объединять разнородные сигналы, а в другом нельзя. Все просто, в нашем примере на самом то деле не было никакого объединения! Ведь мы не присвоили имя собственно шине с помощью метки. Точно так же, как даются имена цепям. Поэтому и шина была лишь графическим элементом.
Если шинам присвоить имена, а после этого соединить их, то и сигналы шин окажутся попарно соединенными. Как это и описывает документация. Но при этом на имена цепей в шинах накладываются определенные ограничения. Просто что бы избежать возможного хаоса.
Я не считаю, что такое вот попарное объединение цепей является правильным. Все таки, сигнал в шине не должен менять название. Меня так обучали, еще во времена СССР (задолго до всяких перестроек). Поэтому я использую шины лишь как чисто графический элемент схем. Увы, в настоящее время в KiCad это единственный вариант, который меня устраивает.
Заключение
Сегодня мы почти закончили изучение редактора схем. Остались лишь иерархические схемы. Сейчас вы уже достаточно хорошо знаете Kicad, что бы использовать его для рисования даже довольно сложных схем. Особенно, любительских.
Иерархические схемы мы, на время, оставим в стороне. А в следующий раз займемся подготовкой к созданию печатной платы на основе схемы.