<!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="sectionedit544"><a name="конструкции_spice_poly" id="конструкции_spice_poly">Конструкции SPICE POLY</a></h1> <div class="level1"> <p> Это набросок того, что я узнал о POLY. Я не уверен, что всё абсолютно точно, поэтому не стесняйтесь и исправляйте. </p> <p> Различные версии SPICE используют разные методы моделирования нелинейных зависимых источников, например ASRC, Bxxxx, Exxxx, Gxxxx, Fxxxx, Hxxxx и т. д. </p> <p> Некоторые, например NGspice, используют произвольные выражения с блоками условий, другие, например GNUcap, используют полиномы и аппроксимацию кривых. Функции POLY, видимо, являются здесь наименьшим общим знаменателем, однако в SPICE3 они не поддерживаются. Полиномы были первым средством, используемым для аппроксимации нелинейных зависимостей, потому что эти функции работают хорошо, и SPICE может легко найти производную в какой-либо точке, используемой в числовых методах решения. Отрицательная сторона здесь — необходимость кое-какой дополнительной работы в других программах для получения коэффициентов своего полиномиального выражения. </p> <p> Вот несколько общих проблем с полиномиальными аппроксимациями: </p> <ol> <li class="level1"><div class="li"> Они быстро становятся бесполезными вне ограниченной области. Действительно, поскольку модели BSIM используют полиномиальные приближения в некоторых расчётах, они склонны к нефизическому поведению в рабочих точках вне области их аппроксимации.</div> </li> <li class="level1"><div class="li"> Чтобы получить приличную аппроксимацию функции, форма которой “не очень похожа на полином”, в полиноме должно быть много членов.</div> </li> </ol> <p> Другой метод – использование произвольных выражений с чем-то вроде функциональности <em>if-then-else</em> или кусочно-линейных функций. Их проще формулировать, но в этом случае существует риск потери непрерывности, что может вызвать серьёзные проблемы со сходимостью. Однако они гораздо более удобны для того, чтобы наспех что-нибудь скомпоновать. </p> <p> Большие усилия потрачены на получение лучшего из обеих сфер. Функции кусочно-линейной аппроксимации PWL (piecewise linear functions) часто используют маленькие кривые для сглаживания переходов от одной производной к следующей. И выражения, в которых используются функции <em>if-then-else</em>, строятся таким образом, чтобы получались плавные переходы между разными значениями. Вообще, в библиотеках полиномиальные аппроксимации используются там, где это можно сделать, и ограничиваются теми областями, где они полезны. Примерами этого в Gnucap являются операторы <code>fit</code> и <code>table</code>. </p> <p> Однако, если вы хотите попробовать свои модели в других версиях SPICE, вам, вероятно, придётся дополнительно потрудиться, чтобы описать их поведение в элементах оператора POLY, который, к сожалению, (на момент данного написания) недостаточно хорошо документирован ни в Ngspice, ни в Gnucap. Приведу здесь одно место, где есть документация: </p> <p> <a href="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/secC.html" class="urlextern" title="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/secC.html" rel="nofollow">http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/secC.html</a> </p> <p> Я думаю, для аппроксимации кривых можно использовать такие программы, как <a href="http://www.gnuplot.info" class="urlextern" title="http://www.gnuplot.info" rel="nofollow">Gnuplot</a>, <a href="http://plasma-gate.weizmann.ac.il/Grace" class="urlextern" title="http://plasma-gate.weizmann.ac.il/Grace" rel="nofollow">Grace</a> или <a href="http://www.simfit.man.ac.uk" class="urlextern" title="http://www.simfit.man.ac.uk" rel="nofollow">Simfit</a>. </p> <p> Учтите, чтобы конструкция POLY поддерживалась в программе Ngspice, при её сборке нужно установить некоторые ключи. Смотрите <a href="http://www.brorson.com/gEDA/SPICE/x496.html" class="urlextern" title="http://www.brorson.com/gEDA/SPICE/x496.html" rel="nofollow">http://www.brorson.com/gEDA/SPICE/x496.html</a>. </p> <p> — <em><a href="mailto:clif@eugeneweb.com" class="mail" title="clif@eugeneweb.com">Clif Eugene</a> 2010/11/23 01:31</em> </p> </div> </body> </html>