//Эта страница доступна также на следующих языках:// [[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='' --- это текстовый элемент следующего
вида:
<code>net=signalname:pinname,pinname,pinname,...</code>

где:
| ''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}} |

<code>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</code>

Запуск **gnetlist** для данного примера (в котором в качестве формата списка соединений задаётся ''geda'') выдаст следующее:
<code>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</code>

Заметьте, как переименовано соединение ''NETLABEL'' (получило псевдоним
+5V).

===== Заключение =====
Если вы нашли какую-либо ошибку, [[howto report bugs.ru|дайте нам знать]].
