//Эта страница доступна также на следующих языках:// [[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**.