<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title></title> <link rel="stylesheet" media="screen" type="text/css" href="./style.css" /> <link rel="stylesheet" media="screen" type="text/css" href="./design.css" /> <link rel="stylesheet" media="print" type="text/css" href="./print.css" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <h1 class="sectionedit1506"><a name="обзор" id="обзор">Обзор</a></h1> <div class="level1"> <p> <strong>gschem</strong> можно использовать для создания таких электрических схем, работу которых можно затем промоделировать с помощью <strong>ngspice</strong>. Это удобно тем, что прежде чем отдать свой проект в производство, его можно шаг за шагом улучшать и каждый раз проверять моделированием. Цель настоящего руководства не в том, чтобы научить вас премудростям <a href="geda-glossary.ru.html#spice" class="wikilink1" title="geda-glossary.ru.html">SPICE</a>, а в том, чтобы на очень простом примере объяснить нужные для работы шаги. Более подробную документацию по SPICE и gEDA можно найти на страницах: </p> <ul> <li class="level1"><div class="li"> <a href="http://ngspice.sourceforge.net/index.html" class="urlextern" title="http://ngspice.sourceforge.net/index.html" rel="nofollow">ngspice</a></div> </li> <li class="level1"><div class="li"> <a href="geda-csygas.ru.html" class="wikilink1" title="geda-csygas.ru.html">gEDA и SPICE</a></div> </li> </ul> <p> Может быть полезен и <a href="geda-faq-simulation.ru.html" class="wikilink1" title="geda-faq-simulation.ru.html">FAQ по моделированию</a> в Wiki. </p> <p> Этот учебник основывается на <em><code>TwoStageAmp.sch</code></em>, одном из примеров в документации gEDA, и в нём шаг за шагом воспроизводится первая половина этого примера. </p> </div> <!-- EDIT1506 SECTION "Обзор" [1-1394] --> <h1 class="sectionedit1507"><a name="настройка" id="настройка">Настройка</a></h1> <div class="level1"> <p> Допустим, вы уже умеете создавать схемы в <strong>gschem</strong>. Если вы не знаете, как это делается, посмотрите <a href="geda-gsch2pcb_tutorial.ru.html" class="wikilink1" title="geda-gsch2pcb_tutorial.ru.html">Учебник по gsch2pcb</a>. Итак, начнём с создания каталога проекта <em><code>simpleSPICE</code></em> и файла схемы <em><code>simplespice.sch</code></em> в этом каталоге. </p> <p> Сделайте в <strong>gschem</strong> примерно такую схему: </p> <p> <a href="media/geda/simple1.png" class="media" target="_blank" title="geda:simple1.png"><img src="media/geda/simple1.png" class="media" alt="" /></a> </p> <p> Заметьте, что здесь созданы три именованных <a href="geda-glossary.ru.html#соединение" class="wikilink1" title="geda-glossary.ru.html">соединения</a>: <em>Vin</em>, <em>Vout</em> и <em>Vbase</em>. Хотя так делать и не обязательно, но таким образом легче отслеживать важные точки схемы. Чтобы создать именованное соединение, надо либо щёлкнуть правой кнопкой, либо нажать [<strong>e</strong>][<strong>e</strong>], когда соединение выделено, а затем в окне редактирования атрибутов добавить атрибут <code>netname</code> и в качестве значения для него задать нужное имя соединения. Хотя теперь у нас уже есть схема для моделирования, чтобы получить какие-либо результаты, нам надо ещё добавить некоторую информацию специально для SPICE. </p> </div> <!-- EDIT1507 SECTION "Настройка" [1395-2997] --> <h1 class="sectionedit1508"><a name="добавим_кое-что_для_spice" id="добавим_кое-что_для_spice">Добавим кое-что для SPICE</a></h1> <div class="level1"> <p> Чтобы схема была пригодна для моделирования, нам нужно сделать четыре вещи. Нужно подключить входной сигнал, описать свойства транзистора, явно определить <em>Vcc</em> и добавить несколько строк в файл SPICE. Когда всё это будет сделано, схема будет выглядеть так: </p> <p> <a href="media/geda/schematicfinished2.png" class="media" target="_blank" title="geda:schematicfinished2.png"><img src="media/geda/schematicfinished2.png" class="media" title="" alt="" /></a> </p> <p> Чтобы добавить входной сигнал, нужно выбрать его символ в меню компонентов <strong>SPICE simulation elements</strong> → <strong>vac-1.sym</strong>, и после вставки в схему отредактировать его свойства вот так: </p> <p> <a href="media/geda/dialogvac.png" class="media" target="_blank" title="geda:dialogvac.png"><img src="media/geda/dialogvac.png" class="media" title="" alt="" /></a> </p> <p> Отметьте себе, что в атрибуте <code>value</code> — строка для SPICE. Больше о синтаксисе SPICE можно узнать, перейдя по вышеприведённым ссылкам. </p> <p> <em>Vcc</em> настраивается в целом также, только в меню компонентов нужно выбрать <strong>SPICE simulation elements</strong> → <em><code>vdc-1.sym</code></em>. Свойства этого символа нужно отредактировать вот так: </p> <p> <a href="media/geda/dialogvdc1.png" class="media" target="_blank" title="geda:dialogvdc1.png"><img src="media/geda/dialogvdc1.png" class="media" title="" alt="" /></a> </p> <p> Настройка транзистора немного сложнее. Сначала нам нужна SPICE-модель для интересующего нас транзистора. Обычно модели можно найти на веб-сайтах производителей или в спецификации компонента, но для работы со своей любимой программой моделирования их может быть придётся изменить. Самый лёгкий путь — взять модель из библиотеки <a href="http://www.h-renrew.de/h/spicelib/doc/index.html" class="urlextern" title="http://www.h-renrew.de/h/spicelib/doc/index.html" rel="nofollow"> spicelib</a>. В данном примере мы рассмотрим вездесущий 2N3904. Вот его модель: </p> <pre class="code">.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</pre> <p> В каталоге проекта <em><code>simpleSPICE</code></em> создайте подкаталог <em><code>models</code></em>, а в нём файл <em><code>2N3904.mod</code></em>, содержащий вышеуказанный текст. Обязательно добавьте пустую строку в конце файла, так как очень важно, чтобы в итоговом файле SPICE всё задавалось в виде отдельных строк. Хорошо, теперь, когда у нас есть модель транзистора, нам надо её подключить. Отредактируйте свойства транзистора вот так: </p> <p> <a href="media/geda/dialogtrans.png" class="media" target="_blank" title="geda:dialogtrans.png"><img src="media/geda/dialogtrans.png" class="media" title="" alt="" /></a> </p> <p> Теперь нам нужно ещё сообщить о созданной нами модели программе <strong>gschem</strong>. Это производится добавлением в схему символа <em><code>spice-model-1.sym</code></em>. Отредактируйте его свойства так: </p> <p> <a href="media/geda/dialogmodel.png" class="media" target="_blank" title="geda:dialogmodel.png"><img src="media/geda/dialogmodel.png" class="media" title="" alt="" /></a> </p> <p> Хорошо, нужно добавить ещё два символа. Первый — это <em><code>spice-include-1.sym</code></em>, подключающий текстовый файл с описанием нужного вам вида SPICE-моделирования, а второй — <em><code>spice-directive-1.sym</code></em>, позволяющий добавлять дополнительные строки к этому файлу SPICE. Свойства этих символов можно настроить следующим образом: </p> <p> <a href="media/geda/dialoginclude.png" class="media" target="_blank" title="geda:dialoginclude.png"><img src="media/geda/dialoginclude.png" class="media" alt="" /></a> </p> <p> <a href="media/geda/dialogdirective.png" class="media" target="_blank" title="geda:dialogdirective.png"><img src="media/geda/dialogdirective.png" class="media" alt="" /></a> </p> <p> Поздравляем! Теперь наша схема готова для моделирования. </p> </div> <!-- EDIT1508 SECTION "Добавим кое-что для SPICE" [2998-7351] --> <h1 class="sectionedit1509"><a name="моделирование" id="моделирование">Моделирование</a></h1> <div class="level1"> <p> Хотя схема уже на месте, нам всё же надо описать, как будет производиться моделирование. Эта информация должна быть записана в <em><code>./Simulation.cmd</code></em>, на который ссылается символ включения, добавленный нами в предыдущем разделе. Итак, создайте файл <em><code>./Simulation.cmd</code></em> вот с таким содержимым: </p> <pre class="code">.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)</pre> <p> Здесь задаётся <a href="geda-glossary.ru.html#частотный_анализ" class="wikilink1" title="geda-glossary.ru.html">частотный анализ</a> (<code>.AC</code>), в то время как строки для <a href="geda-glossary.ru.html#расчёт_статического_режима" class="wikilink1" title="geda-glossary.ru.html">расчёта режима по постоянному току</a> (<code>.DC</code>) закомментированы. Затем идёт вывод графиков <em>Vout</em> и <em>Vin</em>, а также печать их числовых значений. Как отмечено ранее, узнать о SPICE можно, перейдя по вышеприведённым ссылкам. </p> <p> Теперь, когда мы описали желаемый вид моделирования, откройте терминал, перейдите в каталог <em><code>simpleSPICE</code></em> и наберите команду: </p> <pre class="code">gnetlist -g spice-sdb -o spice.net simplespice.sch</pre> <p> которая выдаст файл <em><code>spice.net</code></em> для SPICE. Теперь моделирование можно запустить в режиме пакетной обработки, набрав: </p> <pre class="code">ngspice -b spice.net > result.txt</pre> <p> что выдаст в <em><code>result.txt</code></em> большое количество текста. В этом файле должен быть как запрошенный нами числовой вывод, так и грубый график результатов в текстовом виде. Заметьте, что входной сигнал <em>10 мВ</em> усилился примерно до <em>-280 мВ</em> в широком диапазоне частот. Если вы хотите увидеть графическое представление графиков, <strong>ngspice</strong> можно заставить работать в интерактивном режиме, удалив ключ <code>-b</code>. Более подробно это описано на веб-сайте <strong>ngspice</strong>. Так или иначе, теперь для построения графиков и анализа у нас есть результаты моделирования в замечательном текстовом формате, который хорошо подходит для дальнейшей обработки скриптами на чём-то вроде <strong>python</strong> или <strong>octave</strong>. </p> </div> <!-- EDIT1509 SECTION "Моделирование" [7352-] --></body> </html>