Если вкраце, то SPICE это "нетлист", который даёт список элементов (без привязки к координатам), у которых ногам приписываются номера цепей - если выход одного элемента подцеплен ко входу другого, то у них будет один и тот же номер - очевидно, что этот номер уникальным образом идентифицирует цепь (в общем случае это может быть не номер, а имя, например VCC и GND), а Logisim просто описывает все элементы схемы (включая отрезки проводов) с привязкой к координатной сетке:
Code: Select all
<project version="1.0" source="2.2.0">
этот тэг описывает проект - он один на файл .circ
это либы, их можно пропустить, также в файл .circ затолканы всякие настройки, например внешний вид меню (по мне так это вообще лишнее)
непосредственно схемы находятся в тэгах circuit (и их как правило больше одого):
далее вплоть до закрывающего тэга circuit могут идти:
- тэги wire (прямой отрезок сигнального провода без указания его ширины, т.е. 1-проводные и многопроводные сигналы на уровне проводов описываются совершенно одинаково):
Code: Select all
<wire from="(150,130)" to="(270,130)" />
<wire from="(270,170)" to="(270,200)" />
<wire from="(160,120)" to="(180,120)" />
from и to это координаты концов отрезка в плоской системе координат (0,0 это левый верхний угол) - очевидно, что при чтении .circ файла Logisim "в уме" подцепляет такие отрезки друг к другу, составляя цепь, и уже потом определяет сколькипроводные они (по тому к сколькипроводному выходу они подключены) - причём если отрезки идут "внахлёст", то считаются, что они не пересекаются, а если концами заканчиваются в одной точке, то пересекаются (а если там концами стыкуются больше двух таких отрезков, то логисим ставит там жирную точку)
- тэги comp (компонент), внутри которого могут быть параметры, самый распостранённый из которых это name:
Code: Select all
<comp lib="1" name="NOR Gate" loc="(240,200)">
<a name="facing" val="east" />
<a name="width" val="1" />
<a name="size" val="50" />
<a name="inputs" val="2" />
</comp>
где-то внутри логисима (в либах?) есть понятие какие параметры являются параметрами по умолчанию, и если компонент все параметры использует по умолчанию, то тэг comp вообще в одну строку записывается:
Code: Select all
<comp lib="1" loc="(1150,1530)" name="NAND Gate"/>
без закрывающего тэга comp (по XML стандарту в этом случае перед последней закрывающей треугольной скобкой надо писать слэш) - этот пример я взял из своего проекта NEDONAND (возможно в старых версиях логисима понятие параметра по умолчанию отсутствовало)
координата loc компонента как правило соответствует его первому выходу (это так, наблюдение)
вот собственно и всё