WARNING: the gEDA project is not actively developed anymore. You may want to switch to the Ringdove EDA project which is similar in spirit but is active.

User Tools

Site Tools

search

geda:spice_polys.ru

Эта страница доступна также на следующих языках: English

Конструкции SPICE POLY

Это набросок того, что я узнал о POLY. Я не уверен, что всё абсолютно точно, поэтому не стесняйтесь и исправляйте.

Различные версии SPICE используют разные методы моделирования нелинейных зависимых источников, например ASRC, Bxxxx, Exxxx, Gxxxx, Fxxxx, Hxxxx и т. д.

Некоторые, например NGspice, используют произвольные выражения с блоками условий, другие, например GNUcap, используют полиномы и аппроксимацию кривых. Функции POLY, видимо, являются здесь наименьшим общим знаменателем, однако в SPICE3 они не поддерживаются. Полиномы были первым средством, используемым для аппроксимации нелинейных зависимостей, потому что эти функции работают хорошо, и SPICE может легко найти производную в какой-либо точке, используемой в числовых методах решения. Отрицательная сторона здесь — необходимость кое-какой дополнительной работы в других программах для получения коэффициентов своего полиномиального выражения.

Вот несколько общих проблем с полиномиальными аппроксимациями:

  1. Они быстро становятся бесполезными вне ограниченной области. Действительно, поскольку модели BSIM используют полиномиальные приближения в некоторых расчётах, они склонны к нефизическому поведению в рабочих точках вне области их аппроксимации.
  2. Чтобы получить приличную аппроксимацию функции, форма которой «не очень похожа на полином», в полиноме должно быть много членов.

Другой метод – использование произвольных выражений с чем-то вроде функциональности if-then-else или кусочно-линейных функций. Их проще формулировать, но в этом случае существует риск потери непрерывности, что может вызвать серьёзные проблемы со сходимостью. Однако они гораздо более удобны для того, чтобы наспех что-нибудь скомпоновать.

Большие усилия потрачены на получение лучшего из обеих сфер. Функции кусочно-линейной аппроксимации PWL (piecewise linear functions) часто используют маленькие кривые для сглаживания переходов от одной производной к следующей. И выражения, в которых используются функции if-then-else, строятся таким образом, чтобы получались плавные переходы между разными значениями. Вообще, в библиотеках полиномиальные аппроксимации используются там, где это можно сделать, и ограничиваются теми областями, где они полезны. Примерами этого в Gnucap являются операторы fit и table.

Однако, если вы хотите попробовать свои модели в других версиях SPICE, вам, вероятно, придётся дополнительно потрудиться, чтобы описать их поведение в элементах оператора POLY, который, к сожалению, (на момент данного написания) недостаточно хорошо документирован ни в Ngspice, ни в Gnucap. Приведу здесь одно место, где есть документация:

http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/secC.html

Я думаю, для аппроксимации кривых можно использовать такие программы, как Gnuplot, Grace или Simfit.

Учтите, чтобы конструкция POLY поддерживалась в программе Ngspice, при её сборке нужно установить некоторые ключи. Смотрите https://web.archive.org/web/20150520130840/http://www.brorson.com/gEDA/SPICE/x496.html.

Clif Eugene 2010/11/23 01:31

geda/spice_polys.ru.txt · Last modified: 2014/04/17 07:04 by vzh