This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
geda:spice_polys.ru [2011/09/29 08:36] vzh Translation of spice_polys into Russian |
geda:spice_polys.ru [2014/04/17 07:04] vzh Update (using po4a) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | //Эта страница доступна также на следующих языках:// [[spice_polys|English]] | ||
+ | |||
+ | ====== Конструкции SPICE POLY ====== | ||
+ | |||
+ | Это набросок того, что я узнал о POLY. Я не уверен, что всё абсолютно точно, | ||
+ | поэтому не стесняйтесь и исправляйте. | ||
+ | |||
+ | Различные версии SPICE используют разные методы моделирования нелинейных | ||
+ | зависимых источников, например ASRC, Bxxxx, Exxxx, Gxxxx, Fxxxx, Hxxxx и | ||
+ | т. д. | ||
+ | |||
+ | Некоторые, например NGspice, используют произвольные выражения с блоками | ||
+ | условий, другие, например GNUcap, используют полиномы и аппроксимацию | ||
+ | кривых. Функции POLY, видимо, являются здесь наименьшим общим знаменателем, | ||
+ | однако в SPICE3 они не поддерживаются. Полиномы были первым средством, | ||
+ | используемым для аппроксимации нелинейных зависимостей, потому что эти | ||
+ | функции работают хорошо, и SPICE может легко найти производную в какой-либо | ||
+ | точке, используемой в числовых методах решения. Отрицательная сторона здесь | ||
+ | --- необходимость кое-какой дополнительной работы в других программах для | ||
+ | получения коэффициентов своего полиномиального выражения. | ||
+ | |||
+ | Вот несколько общих проблем с полиномиальными аппроксимациями: | ||
+ | |||
+ | - Они быстро становятся бесполезными вне ограниченной области. Действительно, поскольку модели BSIM используют полиномиальные приближения в некоторых расчётах, они склонны к нефизическому поведению в рабочих точках вне области их аппроксимации. | ||
+ | - Чтобы получить приличную аппроксимацию функции, форма которой «не очень похожа на полином», в полиноме должно быть много членов. | ||
+ | |||
+ | Другой метод -- использование произвольных выражений с чем-то вроде | ||
+ | функциональности //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 | ||
+ | |||
+ | Я думаю, для аппроксимации кривых можно использовать такие программы, как | ||
+ | [[http://www.gnuplot.info|Gnuplot]], | ||
+ | [[http://plasma-gate.weizmann.ac.il/Grace|Grace]] или | ||
+ | [[http://www.simfit.man.ac.uk|Simfit]]. | ||
+ | |||
+ | Учтите, чтобы конструкция POLY поддерживалась в программе Ngspice, при её | ||
+ | сборке нужно установить некоторые ключи. Смотрите | ||
+ | [[http://www.brorson.com/gEDA/SPICE/x496.html]]. | ||
+ | |||
+ | |||
+ | --- //[[clif@eugeneweb.com|Clif Eugene]] 2010/11/23 01:31// | ||