//Эта страница доступна также на следующих языках:// [[na_howto|English]] ====== Мини-HOWTO по атрибуту net= ====== Автор: //Ales Hvezda// Настоящий документ распространяется под лицензией [[http://www.gnu.org/copyleft/fdl.html|GFDL]] 2 октября 2003 г. Информация в данном документе актуальна по состоянию на 11.10.1999 г. ===== Зачем нужен атрибут net=? ===== Атрибут ''net='' используется в системе gEDA для описания [[geda:glossary.ru#соединение|соединений]] питания и специальных соединений.\\ Он используется вместо иных способов определения выводов питания (таких как наличие выводов питания на символах компонентов или блоков питания). В некоторых устройствах выводов питания очень много, и их вычерчивание увеличило бы размер символа и сделало бы его трудно поддающимся обработке. Атрибут ''net='' выбран в системе gEDA для определения соединений питания из-за своей простоты и универсальности. После всего вышесказанного добавим, что выводы питания можно изображать и на символе, но **gnetlist**, скорее всего, не сможет понять, что соединения, подключенные к этим выводам, это особая группа питающих соединений. Имейте это в виду, когда чертите символы. ===== Каков формат атрибута net=? ===== Атрибуты в gEDA --- это простые текстовые элементы вида ''имя_атрибута=значение''. Каждый атрибут должен иметь такую форму. Для имён атрибутов всегда используется нижний регистр. **gnetlist** сотоварищи --- регистрозависимы. Для имён соединений/сигналов обычно используется верхний регистр.\\ Атрибут может быть прикреплён к объекту или, в некоторых случаях (как в случае атрибута ''net=''), может быть свободным (не прикреплённым к чему-либо). Свободные атрибуты также называются атрибутами верхнего уровня.\\ Атрибут ''net='' --- это текстовый элемент следующего вида: net=signalname:pinname,pinname,pinname,... где: | ''net='' |имя данного атрибута (неизменяемое, в нижнем регистре) | | ''signalname'' |имя сигнала или соединения, устанавливаемое в нём (например, +5V, GND, и т. д.) | | ''pinname'' |название (или номер) вывода, установленное для этого сигнала/соединения (или несколько названий/номеров выводов) | ''signalname'' не должно содержать символа <<'':''>> (поскольку он является разделителем). pinname --- это название вывода (A1, P2, D1, и т. д.) или его номер (1, 2, 5, 13, и т. д.). pinname не должно содержать символа <<'',''>> (так как это тоже разделитель). Названия выводов обычно представлены номерами/названиями в том же роде, что и для атрибута ''pin#=#'' (если вам известен этот атрибут).\\ В одном атрибуте ''net='' может быть указано только ОДНО имя сигнала ''signalname'', но названий/номеров выводов может быть сколько угодно. ===== Как на самом деле используется атрибут net=? ===== Атрибут ''net='' может располагаться в разных местах. Вот варианты: * Внутри символа как прикреплённый атрибут или как неприкреплённый атрибут (атрибут верхнего уровня). Вот примеры создания соединений питания: ''net=GND:7'' или ''net=+5V:14'' * Вне символа (экземпляр которого имеется в схеме) атрибут может прикрепляться для переопределения существующего соединения/сигнала, созданного с помощью ''net=''. Предположим, что внутри символа уже есть ''net=GND:7''; прикрепление к символу атрибута ''net=AGND:7'' переопределит соединение GND (на выводе 7), назвав его AGND, и соединит/ассоциирует его с выводом 7. * Вне или внутри символа для автоматического подключения соединения к видимому выводу. Это пока ещё не проверено и может иметь какие-нибудь нежелательные (отрицательные) побочные эффекты. Используйте с осторожностью. * Если прикрепить атрибут к одному из специальных символов питания/земли (как, например, vcc/gnd/vdd), то можно изменить назначение символа. Можно изменить символ заземления для создания соединения с названием DIGITAL GND, не редактируя данный символ (просто прикрепить ''net=DIGITAL_GND:1'').\\ В текущей библиотеке (19991011) имеются символы с названиями //''vdd-1.sym''//, //''vcc-1.sym''//, //''vee-1.sym''// и прочие, в которых нет внутри атрибута ''net='', так что вам придётся добавлять его самостоятельно (в схеме).\\ Также там есть символы с названиями //''5V-minus-1.sym''//, //''12V-plus-1.sym''//, //''9V-plus-1.sym''//, и т. д., уже содержащие соответствующий атрибут ''net='' (хотя его можно переопределить). Можете использовать эти символы как примеры применения атрибута ''net=''.\\ Атрибутов ''net='' может быть сколько угодно. Просто запомните, что атрибуты ''net='', прикреплённые вне символа замещают любые эквивалентные внутренние атрибуты ''net='' (внутри этого же символа). Если вы наткнётесь на случай, когда это не работает, пожалуйста, [[howto report bugs.ru|сообщите об ошибке]]. ===== Предостережения / Ошибки ===== Атрибут/механизм ''net='' безусловно нов, поэтому непременно должны быть ошибки (много ошибок). Здесь приводятся некоторые из найденных проблем: * На 11.10.1999 г. почти все символы стандартной библиотеки не имеют ни атрибута ''net='', ни любого другого признака питания. Надеюсь, когда-нибудь это будет исправлено (есть добровольцы?). * Прикрепление специального питающего символа (vcc/gnd) к соединению, уже имеющему имя, задаст для него псевдоним с именем сигнала, указанным в атрибуте ''net='' (который находится внутри этого символа vcc/gnd или прикреплён к нему), то есть фактически переименует это соединение. Такое поведение можно изменить (так что станет верным обратное), если поиграться с «net-naming-priority». Будьте осторожны с этим. Могут быть и другие, пока ещё не обнаруженные, проблемы именования. * Создание атрибута ''net='', связывающего имя сигнала с уже видимым на символе выводом, --- это, скорее всего, плохая идея. Работать это будет, но все возможные последствия ещё не исследованы. * Плохой идеей будет, вероятно, и прикрепление одного и того же атрибута ''net='' несколько раз. //Ales// не формализовал, что должно происходить в таком случае. Просто запомните, что атрибут ''net='' вне символа замещает внутренний. ===== Пример ===== Здесь приводится схема, использующая стандартные символы (примечание: символ для 7400 всё ещё не содержит атрибута ''net='' внутри). Данная схема содержит компонент 7400 с прикреплёнными атрибутами ''net='' для выводов питания. Один из входных выводов подключен к общему проводу с помощью символа GND, а другой установлен в логическую единицу с помощью символа Vcc (с прикреплённым атрибутом ''net=''). Одно из входных соединений имеет имя, но, как вы увидите, имя соединения замещается именем сигнала, указанным в ''net='' символа питания (см. выше подробную информацию по этому поводу). Выход подключен к подтягивающему резистору, питание которого задаётся с помощью символа +5V. | {{:geda:net.jpg}} | v 19991011 C 38700 58100 1 0 0 7400-1.sym { T 39000 59000 5 10 1 1 0 uref=U100 T 38900 59500 5 10 1 1 0 net=GND:7 T 38900 59300 5 10 1 1 0 net=+5V:14 } N 38700 58800 37400 58800 4 { T 37600 58900 5 10 1 1 0 netname=NETLABEL } N 37400 58800 37400 59200 4 N 38700 58400 37400 58400 4 N 37400 58000 37400 58400 4 C 37300 57700 1 0 0 gnd-1.sym C 37200 59200 1 0 0 vcc-1.sym { T 36800 59200 5 10 1 1 0 net=+5V:1 } N 40000 58600 41600 58600 4 { T 41200 58700 5 10 1 1 0 netname=OUTPUT } C 40700 58800 1 90 0 resistor-1.sym { T 40800 59200 5 10 1 1 0 uref=R1 } N 40600 58800 40600 58600 4 N 40600 59900 40600 59700 4 C 40400 59900 1 0 0 5V-plus-1.sym Запуск **gnetlist** для данного примера (в котором в качестве формата списка соединений задаётся ''geda'') выдаст следующее: START header gEDA's netlist format Created specifically for testing of gnetlist END header START components R1 device=RESISTOR U100 device=7400 END components START renamed-nets NETLABEL -> +5V END renamed-nets START nets +5V : R1 2, U100 14, U100 1 GND : U100 7, U100 2 OUTPUT : R1 1, U100 3 END nets Заметьте, как переименовано соединение ''NETLABEL'' (получило псевдоним +5V). ===== Заключение ===== Если вы нашли какую-либо ошибку, [[howto report bugs.ru|дайте нам знать]].