This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
geda:csygas.ru [2014/04/28 08:54] vzh Update |
geda:csygas.ru [2014/07/28 08:49] vzh Updated |
||
---|---|---|---|
Line 420: | Line 420: | ||
==== Нуллор ==== | ==== Нуллор ==== | ||
- | [[wp>nullor|Нуллор]] является теоретическим представлением идеального | + | [[wp>nullor|Нуллор]] - это идеальный элемент, состоящий из //нуллатора// и |
- | операционного усилителя с бесконечными коэффициентами усиления по току и | + | //норатора//, имеющий нулевое входное и бесконечное выходное сопротивление, |
- | напряжению, бесконечными проходной проводимостью и передаточным | + | бесконечные коэффициенты усиления по току и напряжению, бесконечные |
- | сопротивлением и с параметрами передачи равными нулю. Фактически в | + | проходную проводимость и передаточное сопротивление и параметры передачи |
- | **gnet-spice-sdb** для представления нуллора используется источник | + | равные нулю. Нуллор является универсальным активным элементом, то есть в |
- | напряжения, управляемый напряжением (ИНУН). Поэтому для этого источника | + | идеале с его помощью можно реализовать любые линейные или нелинейные функции |
- | необходимо установить коэффициент усиления по напряжению. | + | при наличии подходящего набора линейных и нелинейных пассивных элементов. В |
+ | частности с помощью нуллора, резисторов и конденсаторов формируется полный | ||
+ | набор линейных схем. | ||
+ | |||
+ | Нуллор в зависимости от схемы включения может использоваться для анализа или | ||
+ | синтеза реальных схем, что достигается заменой реальных операционных | ||
+ | усилителей, токовых конвейеров, усилительных триодов (ламп или транзисторов) | ||
+ | нуллорами и небольшим набором пассивных элементов, отражающих их параметры. | ||
+ | Идеальные транзисторы на основе нуллора успешно используются в моделировании | ||
+ | по переменному току для синтеза различных составных транзисторных схем и | ||
+ | составных транзисторов. Схемы с операционными усилителями на базе нуллора | ||
+ | используются для реализаций фильтров. Существуют также методики для | ||
+ | верификации, автоматической диагностики ошибок, автоматической настройки | ||
+ | смещения в аналоговых схемах и т. д. | ||
+ | |||
+ | === Нуллор в SPICE === | ||
+ | При отсутствии модели нуллора в программе моделирования общего назначения | ||
+ | нуллор можно смоделировать с помощью [[#зависимые источники|зависимого | ||
+ | источника]] с большим значением коэффициента усиления, например | ||
+ | 10<sup>9</sup>. Тип зависимого источника (ИНУН, ИТУН, ИНУТ или ИТУТ) | ||
+ | выбирается в зависимости от оцениваемого входного сигнала, напряжения или | ||
+ | тока и нужного выходного сигнала. Управляемый источник с бесконечным | ||
+ | усилением любого из указанных четырёх типов зависимых источников | ||
+ | представляет собой эквивалент нуллора. | ||
+ | |||
+ | Трёх-выводной нуллор может использоваться для моделирования по переменному | ||
+ | току //идеальных транзисторов// и других //триодов//. //Идеальный | ||
+ | операционный усилитель// реализуется с помощью источника напряжения, | ||
+ | управляемого напряжением, с бесконечным (фактически, достаточно большим) | ||
+ | коэффициентом усиления. Токовый конвейер (CCII) является эквивалентом | ||
+ | трёх-выводного нуллора. | ||
+ | |||
+ | Обычно нуллор используется для моделирования в малосигнальном частотном | ||
+ | анализе (в частотном домене). При наличии отрицательной обратной связи | ||
+ | нуллор может использоваться как идеальный операционный усилитель даже для | ||
+ | выполнения временного анализа (см. [[#пример схемы - сумматор|пример]] | ||
+ | ниже). | ||
+ | |||
+ | === Нуллор в gEDA === | ||
+ | В **ngspice** и **gnucap** специальной модели для нуллора нет. | ||
+ | Поэтому в качестве нуллора в spice-sdb используется ИНУН с | ||
+ | высоким коэффициентом усиления. | ||
Для включения нуллора в список соединений SPICE нужно сделать следующее: | Для включения нуллора в список соединений SPICE нужно сделать следующее: | ||
Line 432: | Line 473: | ||
- Дважды щёлкнуть по блоку и добавить/отредактировать следующие атрибуты: | - Дважды щёлкнуть по блоку и добавить/отредактировать следующие атрибуты: | ||
* ''refdes'': N? | * ''refdes'': N? | ||
- | * ''value'': задаётся коэффициент усиления нуллора по напряжению. | + | * ''value'': задаётся коэффициент усиления нуллора по напряжению, обычно 1000Meg (необязателен с версии geda-gaf 1.9.2). |
+ | |||
+ | == Пример: нуллор == | ||
+ | * ''refdes=N1'' | ||
+ | * ''value=1000Meg'' | ||
+ | |||
+ | Результирующие строки SPICE: | ||
+ | E_N1 1 2 3 4 1000Meg | ||
+ | IMeasure_N1 3 4 dc 0 | ||
+ | IOut_N1 1 2 dc 0 | ||
+ | |||
+ | Этот код содержит: | ||
+ | * управляемый источник напряжения E_N1; | ||
+ | * источник тока, измеряющий напряжение IMeasure_N1; | ||
+ | * выходной источник тока IOut_N1. | ||
+ | |||
+ | Таким образом код нуллора в **gnet-spice-sdb** --- это просто зависимый от | ||
+ | напряжения источник напряжения, на входе и на выходе которого стоят нулевые | ||
+ | источники тока для предотвращения отказа в работе программы моделирования, | ||
+ | когда вход или выход нуллора ни к чему не подключены. | ||
+ | |||
+ | Примечание: в результате экспериментов я (vzh) обнаружил, что наличие или | ||
+ | отсутствие этих источников никак не влияет на моделирование и не решает | ||
+ | поставленной задачи для современной версии **ngspice**. В случае, когда вход | ||
+ | или выход нуллора является плавающим, то есть не имеет какого-либо | ||
+ | соединения с землёй, **ngspice** всё же выдаст ошибку. Для устранения | ||
+ | ошибки можно подключить одну из этих входных или выходных точек к земле | ||
+ | через высокоомный резистор. **gnucap** всегда правильно обсчитывает нуллор, | ||
+ | но в таком случае на не связанных с землёй узлах будет произвольно | ||
+ | меняющееся большое напряжение, так что измерять необходимо не потенциал | ||
+ | отдельных узлов относительно земли, а именно напряжение на входе или выходе | ||
+ | нуллора. | ||
+ | |||
+ | Если нужен нуллор с другим типом чувствительности, его можно сделать на | ||
+ | основе символа любого из управляемых источников (одного из | ||
+ | //''vcvs-1.sym''//, //''vccs-1.sym''//, //''cccs-1.sym''//, | ||
+ | //''ccvs-1.sym''//), просто установив достаточно большое значение атрибута | ||
+ | ''value'', скажем, «1000Meg». | ||
+ | |||
+ | === Пример схемы - сумматор === | ||
+ | В данном примере нуллор используется в качестве модели идеального | ||
+ | операционного усилителя. | ||
+ | |||
+ | {{ :geda:summing.png }} | ||
+ | |||
+ | Файл схемы для **gschem**: {{ :geda:summing.sch }} | ||
+ | |||
+ | Командный файл для моделирования в **gnucap** и/или **ngspice**: | ||
+ | <file spice summing.cmd> | ||
+ | .print tran v(nodes) | ||
+ | .tran .0001 1 0 >summing.dat | ||
+ | </file> | ||
+ | |||
+ | Обратите внимание на часть строки ''>summing.dat'' в командном файле. Она | ||
+ | игнорируется программой **ngspice**, в то время как **gnucap** использует её | ||
+ | для вывода данных в указанный файл в пакетном режиме (при использовании | ||
+ | перенаправления командной оболочки выходные данные были бы выведены вместе | ||
+ | со строками приглашения **gnucap**, что нам не нужно. | ||
+ | |||
+ | Команда для создания списка соединений (обратите внимание на ключ ''sort_mode'', он необходим, | ||
+ | чтобы программа **gnucap** работала правильно): | ||
+ | gnetlist -g spice-sdb -O sort_mode -o summing.net summing.sch | ||
+ | |||
+ | Команда для моделирования с помощью **ngspice**: | ||
+ | ngspice -b -r summing.dat summing.net | ||
+ | |||
+ | Команда для моделирования с помощью **gnucap**: | ||
+ | gnucap -b summing.net | ||
+ | |||
+ | Команда для просмотра полученных сигналов: | ||
+ | gwave summing.dat | ||
==== Компоненты SPICE ==== | ==== Компоненты SPICE ==== | ||
Line 731: | Line 843: | ||
облегчить написание скриптов для расчётов SPICE. Это очень мощное средство: | облегчить написание скриптов для расчётов SPICE. Это очень мощное средство: | ||
для **tclspice** можно написать скрипт на Tcl, который запустит цикл, | для **tclspice** можно написать скрипт на Tcl, который запустит цикл, | ||
- | подстроит значения компонентов, запустит анализ, а затем оценит | + | подстроит значения компонентов, запустит анализ, а затем рассчитает |
характеристики схемы с подстроенными компонентами, прежде чем запускать | характеристики схемы с подстроенными компонентами, прежде чем запускать | ||
новый цикл. Очевидно, эту возможность можно использовать для выполнения | новый цикл. Очевидно, эту возможность можно использовать для выполнения | ||
Line 901: | Line 1013: | ||
|**SPICE-vcvs**| **E?** | **(5)** | - | - | - | - | Источник напряжения,\\ управляемый напряжением | | |**SPICE-vcvs**| **E?** | **(5)** | - | - | - | - | Источник напряжения,\\ управляемый напряжением | | ||
|**SPICE-vccs**| **G?** | **(5)** | - | - | - | - | Источник тока,\\ управляемый напряжением | | |**SPICE-vccs**| **G?** | **(5)** | - | - | - | - | Источник тока,\\ управляемый напряжением | | ||
- | |**SPICE-nullor**| **E?** | **(5)** | - | - | - | - | | | + | |**SPICE-nullor**| **N?** | **(15)** | - | - | - | - | | |
|**DIODE**| **D?** | Тип прибора | Однострочная SPICE-модель | Имя файла модели | **Название модели** | - | (12) | | |**DIODE**| **D?** | Тип прибора | Однострочная SPICE-модель | Имя файла модели | **Название модели** | - | (12) | | ||
|**PMOS_TRANSISTOR**| **M?** | Тип прибора | Однострочная SPICE-модель | Имя файла модели | **Название модели** | - | (12) | | |**PMOS_TRANSISTOR**| **M?** | Тип прибора | Однострочная SPICE-модель | Имя файла модели | **Название модели** | - | (12) | | ||
Line 931: | Line 1043: | ||
(12) Для моделирования нужно включить или модель, или файл\\ | (12) Для моделирования нужно включить или модель, или файл\\ | ||
(13) Помещает директиву ''.INCLUDE'' в список соединений SPICE\\ | (13) Помещает директиву ''.INCLUDE'' в список соединений SPICE\\ | ||
- | (14) Помещает директиву ''.OPTIONS'' в список соединений SPICE | + | (14) Помещает директиву ''.OPTIONS'' в список соединений SPICE\\ |
+ | (15) Достаточно высокий коэффициент усиления, например, 1000Meg; не обязательно задавать в последних версиях geda-gaf (с версии 1.9.2) | ||
Выражение «поддерживаемый генератором списка соединений» означает, что | Выражение «поддерживаемый генератором списка соединений» означает, что |