//Эта страница доступна также на следующих языках://
[[ngspice_and_gschem|English]]
====== Обзор ======
**gschem** можно использовать для создания таких электрических схем, работу
которых можно затем промоделировать с помощью **ngspice**. Это удобно тем,
что прежде чем отдать свой проект в производство, его можно шаг за шагом
улучшать и каждый раз проверять моделированием. Цель настоящего руководства
не в том, чтобы научить вас премудростям [[geda:glossary.ru#SPICE]], а в
том, чтобы на очень простом примере объяснить нужные для работы шаги. Более
подробную документацию по SPICE и gEDA можно найти на страницах:
* [[http://ngspice.sourceforge.net/index.html|ngspice]]
* [[gEDA:csygas.ru|gEDA и SPICE]]
Может быть полезен и [[geda:faq-simulation.ru|FAQ по моделированию]] в Wiki.
Этот учебник основывается на //''TwoStageAmp.sch''//, одном из примеров в
документации gEDA, и в нём шаг за шагом воспроизводится первая половина
этого примера.
====== Настройка ======
Допустим, вы уже умеете создавать схемы в **gschem**. Если вы не знаете, как
это делается, посмотрите [[gsch2pcb_tutorial.ru|Учебник по gsch2pcb]]. Итак,
начнём с создания каталога проекта //''simpleSPICE''// и файла схемы
//''simplespice.sch''// в этом каталоге.
Сделайте в **gschem** примерно такую схему:
{{geda:simple1.png}}
Заметьте, что здесь созданы три именованных
[[geda:glossary.ru#Соединение|соединения]]: //Vin//, //Vout// и
//Vbase//. Хотя так делать и не обязательно, но таким образом легче
отслеживать важные точки схемы. Чтобы создать именованное соединение, надо
либо щёлкнуть правой кнопкой, либо нажать ee, когда
соединение выделено, а затем в окне редактирования атрибутов добавить
атрибут ''netname'' и в качестве значения для него задать нужное имя
соединения. Хотя теперь у нас уже есть схема для моделирования, чтобы
получить какие-либо результаты, нам надо ещё добавить некоторую информацию
специально для SPICE.
====== Добавим кое-что для SPICE ======
Чтобы схема была пригодна для моделирования, нам нужно сделать четыре вещи.
Нужно подключить входной сигнал, описать свойства транзистора, явно
определить //Vcc// и добавить несколько строк в файл SPICE. Когда всё это
будет сделано, схема будет выглядеть так:
{{geda:schematicfinished2.png|}}
Чтобы добавить входной сигнал, нужно выбрать его символ в меню компонентов
**SPICE simulation elements** -> **vac-1.sym**, и после вставки в схему
отредактировать его свойства вот так:
{{geda:dialogvac.png|}}
Отметьте себе, что в атрибуте ''value'' --- строка для SPICE. Больше о
синтаксисе SPICE можно узнать, перейдя по вышеприведённым ссылкам.
//Vcc// настраивается в целом так же, только в меню компонентов нужно
выбрать **SPICE simulation elements** -> //''vdc-1.sym''//. Свойства этого
символа нужно отредактировать вот так:
{{geda:dialogvdc1.png|}}
Настройка транзистора немного сложнее. Сначала нам нужна SPICE-модель для
интересующего нас транзистора. Обычно модели можно найти на веб-сайтах
производителей или в спецификации компонента, но для работы со своей любимой
программой моделирования их может быть придётся изменить. Самый лёгкий путь
--- взять модель из библиотеки
[[http://www.h-renrew.de/h/spicelib/doc/index.html | spicelib]]. В данном
примере мы рассмотрим вездесущий 2N3904. Вот его модель:
.model 2N3904 NPN(Is=6.734f Xti=3 Eg=1.11 Vaf=74.03 Bf=416.4 Ne=1.259
+ Ise=6.734f Ikf=66.78m Xtb=1.5 Br=.7371 Nc=2 Isc=0 Ikr=0 Rc=1
+ Cjc=3.638p Mjc=.3085 Vjc=.75 Fc=.5 Cje=4.493p Mje=.2593 Vje=.75
+ Tr=239.5n Tf=301.2p Itf=.4 Vtf=4 Xtf=2 Rb=10)
* Fairchild pid=23 case=TO92
* 88-09-08 bam creation
В каталоге проекта //''simpleSPICE''// создайте подкаталог //''models''//, а
в нём файл //''2N3904.mod''//, содержащий вышеуказанный текст. Обязательно
добавьте пустую строку в конце файла, так как очень важно, чтобы в итоговом
файле SPICE всё задавалось в виде отдельных строк. Хорошо, теперь, когда у
нас есть модель транзистора, нам надо её подключить. Отредактируйте свойства
транзистора вот так:
{{geda:dialogtrans.png|}}
Теперь нам нужно ещё сообщить о созданной нами модели программе **gschem**.
Это производится добавлением в схему символа //''spice-model-1.sym''//.
Отредактируйте его свойства так:
{{geda:dialogmodel.png|}}
Хорошо, нужно добавить ещё два символа. Первый --- это
//''spice-include-1.sym''//, подключающий текстовый файл с описанием нужного
вам вида SPICE-моделирования, а второй --- //''spice-directive-1.sym''//,
позволяющий добавлять дополнительные строки к этому файлу SPICE. Свойства
этих символов можно настроить следующим образом:
{{geda:dialoginclude.png}}
{{geda:dialogdirective.png}}
Поздравляем! Теперь наша схема готова для моделирования.
====== Моделирование ======
Хотя схема уже на месте, нам всё же надо описать, как будет производиться
моделирование. Эта информация должна быть записана в
//''./Simulation.cmd''//, на который ссылается символ включения, добавленный
нами в предыдущем разделе. Итак, создайте файл //''./Simulation.cmd''// вот
с таким содержимым:
.OP
.AC DEC 20 1Hz 100MegHz
* .DC VINPUT 0 5 .01
* .DC VINPUT 1 2 .01
.plot ac v(Vout) v(Vin)
.print ac v(Vout) v(Vin)
Здесь задаётся [[geda:glossary.ru#частотный анализ]] (''.AC''), в то время
как строки для [[geda:glossary.ru#Расчёт статического режима|расчёта режима
по постоянному току]] (''.DC'') закомментированы. Затем идёт вывод графиков
//Vout// и //Vin//, а также печать их числовых значений. Как отмечено ранее,
узнать о SPICE можно, перейдя по вышеприведённым ссылкам.
Теперь, когда мы описали желаемый вид моделирования, откройте терминал,
перейдите в каталог //''simpleSPICE''// и наберите команду:
gnetlist -g spice-sdb -o spice.net simplespice.sch
которая выдаст файл //''spice.net''// для SPICE. Теперь моделирование можно
запустить в режиме пакетной обработки, набрав:
ngspice -b spice.net > result.txt
что выдаст в //''result.txt''// большое количество текста. В этом файле
должен быть как запрошенный нами числовой вывод, так и грубый график
результатов в текстовом виде. Заметьте, что входной сигнал //10 мВ//
усилился примерно до //-280 мВ// в широком диапазоне частот. Если вы хотите
увидеть графическое представление графиков, **ngspice** можно заставить
работать в интерактивном режиме, удалив ключ ''-b''. Более подробно это
описано на веб-сайте **ngspice**. Так или иначе, теперь для построения
графиков и анализа у нас есть результаты моделирования в замечательном
текстовом формате, который хорошо подходит для дальнейшей обработки
скриптами на чём-то вроде **python** или **octave**.