This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Last revision Both sides next revision | ||
geda:ngspice_and_gschem.ru [2013/05/08 04:15] vzh formatting, spelling |
geda:ngspice_and_gschem.ru [2014/04/23 03:50] vzh Updated using po4a |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | //Эта страница доступна также на следующих языках:// | ||
+ | [[ngspice_and_gschem|English]] | ||
+ | |||
====== Обзор ====== | ====== Обзор ====== | ||
**gschem** можно использовать для создания таких электрических схем, работу | **gschem** можно использовать для создания таких электрических схем, работу | ||
- | которых можно затем промоделировать с помощью **ngspice**. Это удобно | + | которых можно затем промоделировать с помощью **ngspice**. Это удобно тем, |
- | тем, что прежде чем отдать свой проект в производство, его | + | что прежде чем отдать свой проект в производство, его можно шаг за шагом |
- | можно шаг за шагом улучшать и каждый раз проверять моделированием. | + | улучшать и каждый раз проверять моделированием. Цель настоящего руководства |
- | Цель настоящего руководства не в том, чтобы научить вас премудростям | + | не в том, чтобы научить вас премудростям [[geda:glossary.ru#SPICE]], а в |
- | [[geda:glossary.ru#SPICE]], а в том, чтобы на очень простом примере объяснить | + | том, чтобы на очень простом примере объяснить нужные для работы шаги. Более |
- | нужные для работы шаги. Более подробную документацию по SPICE и gEDA можно | + | подробную документацию по SPICE и gEDA можно найти на страницах: |
- | найти на страницах: | + | |
* [[http://ngspice.sourceforge.net/index.html|ngspice]] | * [[http://ngspice.sourceforge.net/index.html|ngspice]] | ||
* [[gEDA:csygas.ru|gEDA и SPICE]] | * [[gEDA:csygas.ru|gEDA и SPICE]] | ||
+ | |||
+ | |||
Может быть полезен и [[geda:faq-simulation.ru|FAQ по моделированию]] в Wiki. | Может быть полезен и [[geda:faq-simulation.ru|FAQ по моделированию]] в Wiki. | ||
+ | |||
Этот учебник основывается на //''TwoStageAmp.sch''//, одном из примеров в | Этот учебник основывается на //''TwoStageAmp.sch''//, одном из примеров в | ||
- | документации gEDA, и в нём шаг за шагом воспроизводится первая половина этого | + | документации gEDA, и в нём шаг за шагом воспроизводится первая половина |
- | примера. | + | этого примера. |
+ | |||
====== Настройка ====== | ====== Настройка ====== | ||
+ | |||
Допустим, вы уже умеете создавать схемы в **gschem**. Если вы не знаете, как | Допустим, вы уже умеете создавать схемы в **gschem**. Если вы не знаете, как | ||
это делается, посмотрите [[gsch2pcb_tutorial.ru|Учебник по gsch2pcb]]. Итак, | это делается, посмотрите [[gsch2pcb_tutorial.ru|Учебник по gsch2pcb]]. Итак, | ||
Line 31: | Line 40: | ||
Заметьте, что здесь созданы три именованных | Заметьте, что здесь созданы три именованных | ||
[[geda:glossary.ru#Соединение|соединения]]: //Vin//, //Vout// и | [[geda:glossary.ru#Соединение|соединения]]: //Vin//, //Vout// и | ||
- | //Vbase//. Хотя так делать и не обязательно, но таким образом легче отслеживать | + | //Vbase//. Хотя так делать и не обязательно, но таким образом легче |
- | важные точки схемы. Чтобы создать именованное соединение, надо либо щёлкнуть | + | отслеживать важные точки схемы. Чтобы создать именованное соединение, надо |
- | правой кнопкой, либо нажать <key>e</key><key>e</key>, когда соединение выделено, а затем в окне | + | либо щёлкнуть правой кнопкой, либо нажать <key>e</key><key>e</key>, когда |
- | редактирования атрибутов добавить атрибут ''netname'' и в качестве значения | + | соединение выделено, а затем в окне редактирования атрибутов добавить |
- | для него задать нужное имя соединения. Хотя теперь у нас уже есть схема | + | атрибут ''netname'' и в качестве значения для него задать нужное имя |
- | для моделирования, чтобы получить какие-либо результаты, нам надо ещё | + | соединения. Хотя теперь у нас уже есть схема для моделирования, чтобы |
- | добавить некоторую информацию специально для SPICE. | + | получить какие-либо результаты, нам надо ещё добавить некоторую информацию |
+ | специально для SPICE. | ||
====== Добавим кое-что для SPICE ====== | ====== Добавим кое-что для SPICE ====== | ||
+ | |||
Чтобы схема была пригодна для моделирования, нам нужно сделать четыре вещи. | Чтобы схема была пригодна для моделирования, нам нужно сделать четыре вещи. | ||
- | Нужно подключить входной сигнал, описать свойства | + | Нужно подключить входной сигнал, описать свойства транзистора, явно |
- | транзистора, явно определить //Vcc// и добавить несколько строк в файл SPICE. | + | определить //Vcc// и добавить несколько строк в файл SPICE. Когда всё это |
- | Когда всё это будет сделано, схема будет выглядеть так: | + | будет сделано, схема будет выглядеть так: |
{{geda:schematicfinished2.png|}} | {{geda:schematicfinished2.png|}} | ||
Line 54: | Line 64: | ||
{{geda:dialogvac.png|}} | {{geda:dialogvac.png|}} | ||
- | Отметьте себе, что в атрибуте ''value'' --- строка для SPICE. Больше о синтаксисе | + | Отметьте себе, что в атрибуте ''value'' --- строка для SPICE. Больше о |
- | SPICE можно узнать, перейдя по вышеприведённым ссылкам. | + | синтаксисе SPICE можно узнать, перейдя по вышеприведённым ссылкам. |
//Vcc// настраивается в целом так же, только в меню компонентов нужно | //Vcc// настраивается в целом так же, только в меню компонентов нужно | ||
- | выбрать **SPICE simulation elements** -> //''vdc-1.sym''//. Свойства этого символа | + | выбрать **SPICE simulation elements** -> //''vdc-1.sym''//. Свойства этого |
- | нужно отредактировать вот так: | + | символа нужно отредактировать вот так: |
{{geda:dialogvdc1.png|}} | {{geda:dialogvdc1.png|}} | ||
Line 70: | Line 80: | ||
[[http://www.h-renrew.de/h/spicelib/doc/index.html | spicelib]]. В данном | [[http://www.h-renrew.de/h/spicelib/doc/index.html | spicelib]]. В данном | ||
примере мы рассмотрим вездесущий 2N3904. Вот его модель: | примере мы рассмотрим вездесущий 2N3904. Вот его модель: | ||
+ | |||
+ | |||
.model 2N3904 NPN(Is=6.734f Xti=3 Eg=1.11 Vaf=74.03 Bf=416.4 Ne=1.259 | .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 | + Ise=6.734f Ikf=66.78m Xtb=1.5 Br=.7371 Nc=2 Isc=0 Ikr=0 Rc=1 | ||
Line 77: | Line 89: | ||
* 88-09-08 bam creation | * 88-09-08 bam creation | ||
- | В каталоге проекта //''simpleSPICE''// создайте подкаталог //''models''//, а в | + | |
- | нём файл //''2N3904.mod''//, содержащий вышеуказанный текст. Обязательно добавьте | + | В каталоге проекта //''simpleSPICE''// создайте подкаталог //''models''//, а |
- | пустую строку в конце файла, так как очень важно, чтобы в итоговом файле SPICE | + | в нём файл //''2N3904.mod''//, содержащий вышеуказанный текст. Обязательно |
- | всё задавалось в виде отдельных строк. Хорошо, теперь, когда у нас есть модель | + | добавьте пустую строку в конце файла, так как очень важно, чтобы в итоговом |
- | транзистора, нам надо её подключить. Отредактируйте свойства транзистора вот | + | файле SPICE всё задавалось в виде отдельных строк. Хорошо, теперь, когда у |
- | так: | + | нас есть модель транзистора, нам надо её подключить. Отредактируйте свойства |
+ | транзистора вот так: | ||
{{geda:dialogtrans.png|}} | {{geda:dialogtrans.png|}} | ||
Line 93: | Line 106: | ||
Хорошо, нужно добавить ещё два символа. Первый --- это | Хорошо, нужно добавить ещё два символа. Первый --- это | ||
- | //''spice-include-1.sym''//, подключающий текстовый файл с описанием | + | //''spice-include-1.sym''//, подключающий текстовый файл с описанием нужного |
- | нужного вам вида SPICE-моделирования, а второй --- | + | вам вида SPICE-моделирования, а второй --- //''spice-directive-1.sym''//, |
- | //''spice-directive-1.sym''//, позволяющий добавлять дополнительные строки | + | позволяющий добавлять дополнительные строки к этому файлу SPICE. Свойства |
- | к этому файлу SPICE. | + | этих символов можно настроить следующим образом: |
- | Свойства этих символов можно настроить следующим образом: | + | |
{{geda:dialoginclude.png}} | {{geda:dialoginclude.png}} | ||
Line 108: | Line 120: | ||
====== Моделирование ====== | ====== Моделирование ====== | ||
+ | |||
Хотя схема уже на месте, нам всё же надо описать, как будет производиться | Хотя схема уже на месте, нам всё же надо описать, как будет производиться | ||
- | моделирование. Эта информация должна быть записана в //''./Simulation.cmd''//, | + | моделирование. Эта информация должна быть записана в |
- | на который ссылается символ включения, добавленный нами в предыдущем разделе. | + | //''./Simulation.cmd''//, на который ссылается символ включения, добавленный |
- | Итак, создайте файл //''./Simulation.cmd''// вот с таким содержимым: | + | нами в предыдущем разделе. Итак, создайте файл //''./Simulation.cmd''// вот |
+ | с таким содержимым: | ||
+ | |||
.OP | .OP | ||
.AC DEC 20 1Hz 100MegHz | .AC DEC 20 1Hz 100MegHz | ||
Line 120: | Line 136: | ||
- | Здесь задаётся [[geda:glossary.ru#частотный анализ]] (''.AC''), в то время как строки для | + | Здесь задаётся [[geda:glossary.ru#частотный анализ]] (''.AC''), в то время |
- | [[geda:glossary.ru#Расчёт статического режима|расчёта режима по | + | как строки для [[geda:glossary.ru#Расчёт статического режима|расчёта режима |
- | постоянному току]] (''.DC'') закомментированы. Затем идёт вывод графиков | + | по постоянному току]] (''.DC'') закомментированы. Затем идёт вывод графиков |
//Vout// и //Vin//, а также печать их числовых значений. Как отмечено ранее, | //Vout// и //Vin//, а также печать их числовых значений. Как отмечено ранее, | ||
узнать о SPICE можно, перейдя по вышеприведённым ссылкам. | узнать о SPICE можно, перейдя по вышеприведённым ссылкам. | ||
Line 128: | Line 144: | ||
Теперь, когда мы описали желаемый вид моделирования, откройте терминал, | Теперь, когда мы описали желаемый вид моделирования, откройте терминал, | ||
перейдите в каталог //''simpleSPICE''// и наберите команду: | перейдите в каталог //''simpleSPICE''// и наберите команду: | ||
+ | |||
gnetlist -g spice-sdb -o spice.net simplespice.sch | gnetlist -g spice-sdb -o spice.net simplespice.sch | ||
которая выдаст файл //''spice.net''// для SPICE. Теперь моделирование можно | которая выдаст файл //''spice.net''// для SPICE. Теперь моделирование можно | ||
запустить в режиме пакетной обработки, набрав: | запустить в режиме пакетной обработки, набрав: | ||
+ | |||
ngspice -b spice.net > result.txt | ngspice -b spice.net > result.txt | ||
- | что выдаст в //''result.txt''// большое количество текста. В этом файле должен | + | что выдаст в //''result.txt''// большое количество текста. В этом файле |
- | быть как запрошенный нами числовой вывод, так и грубый график результатов в | + | должен быть как запрошенный нами числовой вывод, так и грубый график |
- | текстовом виде. Заметьте, что входной сигнал //10 мВ// усилился примерно до | + | результатов в текстовом виде. Заметьте, что входной сигнал //10 мВ// |
- | //-280 мВ// в широком диапазоне частот. Если вы хотите увидеть графическое | + | усилился примерно до //-280 мВ// в широком диапазоне частот. Если вы хотите |
- | представление графиков, **ngspice** можно заставить работать в интерактивном | + | увидеть графическое представление графиков, **ngspice** можно заставить |
- | режиме, удалив ключ ''-b''. Более подробно это описано на веб-сайте | + | работать в интерактивном режиме, удалив ключ ''-b''. Более подробно это |
- | **ngspice**. Так или иначе, теперь для построения графиков и анализа у нас | + | описано на веб-сайте **ngspice**. Так или иначе, теперь для построения |
- | есть результаты моделирования в замечательном текстовом формате, который | + | графиков и анализа у нас есть результаты моделирования в замечательном |
- | хорошо подходит для дальнейшей обработки скриптами на чём-то вроде **python** | + | текстовом формате, который хорошо подходит для дальнейшей обработки |
- | или **octave**. | + | скриптами на чём-то вроде **python** или **octave**. |