exponenta event banner

Преобразование сетевого списка SPICE в блоки Simscape

Компоненты SPICE можно преобразовать в Simscape™ эквиваленты с помощью мастера преобразования SPICE. Часто такое преобразование выполняется автоматически. Однако, поскольку SPICE является богатым языком, не всегда возможно выполнить полное преобразование без какого-либо ручного вмешательства.

Чтобы преобразовать подконтуры SPICE в эквивалентные компоненты Simscape, выполните следующие действия.

  1. Используйте subcircuit2ssc для создания файлов компонентов языка Simscape из файла списка соединений SPICE. Вы можете использовать дополнительный subcircuit1,…,subcircuitN введите аргументы, чтобы указать, какие подконтуры следует преобразовать.

  2. Выполните все необходимые преобразования вручную в созданные файлы компонентов Simscape. Чтобы определить необходимые преобразования вручную, проверьте комментарии в начале созданных файлов компонентов Simscape. Вы можете использовать дополнительный unsupportedCommands выходной аргумент для создания struct массив, в котором перечислены неподдерживаемые команды SPICE для каждой подкарты.

  3. Построение библиотеки с помощью ssc_build или добавьте отдельные компоненты в модель с помощью блоков компонента Simscape.

Существует множество различных симуляторов SPICE с вариациями синтаксиса и синтаксической интерпретации. Помощник по преобразованию использует тот же синтаксис, что и Cadence ® PSpice, и, если такие различия существуют, соответствует PSpice.

Команды

Помощник по преобразованию SPICE поддерживает следующие команды:

  • .FUNC - Многократно используемая функция

  • .PARAM - Определяемый параметр

  • .MODEL - Набор многоразовых параметров компонента

  • .SUBCKT - Подсхема

  • .LIB - Директива о включении моделей из внешнего списка соединений

  • .INC - Директива о включении содержимого внешнего списка соединений

Помощник по преобразованию реализует .FUNC Команды SPICE с использованием функций Simscape. Эти функции помещаются в поддиапазон пакетов с именем +subcircuit_name_simscape_functions, где subcircuit_name - имя преобразуемой подкарты.

Укажите .MODEL синтаксис для резисторов, конденсаторов и индукторов, как

.MODEL <model name> res(r=<value>)
.MODEL <model name> cap(c=<value>)
.MODEL <model name> ind(l=<value>)
где r, c, и l значения - это коэффициенты масштабирования для значения, указанного в объявлении компонента. Это поведение соответствует PSpice, но не согласовано для всех симуляторов.

Помощник по преобразованию не выполняет автоматическое преобразование начальных условий, указанных с помощью .IC заявление. Однако можно задать начальные условия для конденсаторов и индукторов с помощью синтаксиса IC=<value>. Кроме того, можно вручную преобразовать любой .IC из созданных файлов компонентов Simscape.

Поскольку назначение помощника по преобразованию состоит в том, чтобы помочь преобразовать подкарты SPICE в блоки Simscape, команды моделирования, такие как .TRAN, игнорируются.

Числовые суффиксы

Помощник по преобразованию поддерживает следующие числовые суффиксы SPICE:

СуффиксИмяМасштаб
TTera1e12
GGiga1e9
MEGМега1e6
KКилограмм1e3
MМилли1e-3
MIL--25.4e-6
UМикро1e-6
NНано1e-9
PPico1e-12
FFemto1e-15

Математические функции

Помощник по преобразованию поддерживает эти основные математические функции, используемые в SPICE и MATLAB.

Элементарная математика

ИмяФункция SPICEФункция MATLAB
Абсолютное значениеabsabs
Наименьший элементminmin
Наибольший элементmaxmax
Функция знакаsgnsign

Тригонометрия

ИмяФункция SPICEФункция MATLAB
Синусsinsin
Обратный синусasinasin
Гиперболический синусsinhsinh
Косинусcoscos
Обратный косинусacosacos
Гиперболический косинусcoshcosh
Тангенсtantan
Обратная касательнаяatanatan
Четырехквадрантная обратная касательнаяatan2atan2
Гиперболическая касательнаяtanhtanh

Показатели и логарифмы

ИмяФункция SPICEФункция MATLAB
Власть** или pwr^ или power
Показательныйexpexp
Натуральный логарифмln или loglog
Base-10 логарифмlog10log10
Квадратный кореньsqrtsqrt

Помощник по преобразованию интерпретирует log() в качестве натурального логарифма, а не базового-10 логарифма. Не все симуляторы SPICE согласованы в этом отношении, поэтому убедитесь, что эта интерпретация согласуется с вашей моделью SPICE.

Другое

Кроме того, помощник по преобразованию поддерживает следующие функции SPICE:

ИмяФункция SPICE
Если условиеif
Насыщенностьlimit
Ток через устройствоi
Напряжение на устройствеv
Ступенчатая функцияstp
Производная (см. Ограничения)ddt
Столtable

Символы

Помощник по преобразованию распознает следующие символы SPICE:

  • + в начале строки указывает на продолжение строки от предыдущей строки

  • * в начале строки указывает, что вся строка является комментарием

  • ; в строке указывает начало встроенного комментария

Компоненты

Обозначения команд SPICE в этом разделе соответствуют следующим правилам:

  • <argument> ссылается на обязательный элемент в командной строке

  • <argument>* ссылается на обязательный элемент в командной строке, который возникает один или несколько раз

  • [argument] ссылается на дополнительный элемент в командной строке

  • [argument]* ссылается на необязательный элемент в командной строке, который встречается ноль или более раз

В этом списке представлен полный набор поддерживаемых компонентов SPICE и поддерживаемые ими обозначения списков соединений SPICE. Можно указать только .MODEL параметры, отличающиеся от значений по умолчанию SPICE.

Источники

  • Независимый источник напряжения

    V<name> <+ node> <- node> [DC] <value>
    V<name> <+ node> <- node> exp(<v1> <v2> <td1> <tc1> <td2> <tc2>)
    V<name> <+ node> <- node> pulse(<v1> <v2> <td> <tr> <tf> <pw> <per>)
    V<name> <+ node> <- node> pwl(<<tj> <vj>>*)
    V<name> <+ node> <- node> sffm(<voff> <vampl> <fc> <mod> <fm>)
    V<name> <+ node> <- node> sin(<voff> <vampl> <freq> <td> <df>)
    
  • Независимый источник тока

    I<name> <+ node> <- node> [DC] <value>
    I<name> <+ node> <- node> exp(<i1> <i2> <td1> <tc1> <td2> <tc2>)
    I<name> <+ node> <- node> pulse(<i1> <i2> <td> <tr> <tf> <pw> <per>)
    I<name> <+ node> <- node> pwl(<<tj> <ij>>*)
    I<name> <+ node> <- node> sffm(<ioff> <iampl> <fc> <mod> <fm>)
    I<name> <+ node> <- node> sin(<ioff> <iampl> <freq> <td> <df>)
    
  • Источник напряжения, управляемый током

    H<name> <+ node> <- node> <voltage source name> <gain>
    H<name> <+ node> <- node> VALUE={<expression>}
    H<name> <+ node> <- node> POLY(<value>) <voltage source name>* <coefficient>*
    H<name> <+ node> <- node> TABLE {<expression>}=< <input value>, <output value> >*
    H<name> <+ node> <- node> <voltage source name> TABLE=< <input value>, <output value> >*
    
  • Источник напряжения, управляемый напряжением

    E<name> <+ node> <- node> <+ control node> <- control node> <gain>
    E<name> <+ node> <- node> VALUE={<expression>}
    E<name> <+ node> <- node> POLY(<value>) <<+ control node> <- control node>>* <coefficient>*
    E<name> <+ node> <- node> TABLE {<expression>}=< <input value>, <output value> >*
    E<name> <+ node> <- node> <+ control node> <- control node> TABLE=< <input value>, <output value> >*
    
  • Источник тока, управляемый током

    F<name> <+ node> <- node> <voltage source name> <gain>
    F<name> <+ node> <- node> VALUE={<expression>}
    F<name> <+ node> <- node> POLY(<value>) <voltage source name>* <coefficient>*
    F<name> <+ node> <- node> TABLE {<expression>}=< <input value>, <output value> >*
    F<name> <+ node> <- node> <voltage source name> TABLE=< <input value>, <output value> >*
    
  • Источник тока, управляемый напряжением

    G<name> <+ node> <- node> <+ control node> <- control node> <gain>
    G<name> <+ node> <- node> VALUE={<expression>}
    G<name> <+ node> <- node> POLY(<value>) <<+ control node> <- control node>>* <coefficient>*
    G<name> <+ node> <- node> TABLE {<expression>}=< <input value>, <output value> >*
    G<name> <+ node> <- node> <+ control node> <- control node> TABLE=< <input value>, <output value> >*
    
  • Поведенческий источник (< выражение > не обязательно должно отображаться в фигурных скобках {})

    B<name> <+ node> <- node> V=<expression>
    B<name> <+ node> <- node> I=<expression>
    

Пассивные устройства

  • Резистор

    R<name> <+ node> <- node> [model name] <value>
    .MODEL <model name> res(r=<value>)
  • Конденсатор

    C<name> <+ node> <- node> [model name] <value> [IC=<value>]
    .MODEL <model name> cap(c=<value>)
  • Катушка индуктивности

    L<name> <+ node> <- node> [model name] <value> [IC=<value>]
    .MODEL <model name> ind(l=<value>)
    
  • Индукторная муфта

    K<name> <inductor name> <inductor name>* <value>
    

Выключатели

  • Выключатель, управляемый напряжением

    S<name> <+ node> <- node> <+ control node> <- control node> <model name>
    .MODEL <model name> sw(ron=<value>, roff=<value>, vt=<value>, vh=<value>)
    
  • Токоведущий переключатель

    W<name> <+ node> <- node> <voltage source name> <model name>
    .MODEL <model name> csw(ron=<value>, roff=<value>, it=<value>, ih=<value>)
    

Полупроводниковые приборы

  • Диод

    D<name> <+ node> <- node> <model name> [area]
    .MODEL <model name> d(is=<value>, rs=<value>, n=<value>, cjo=<value>, vj=<value>,
    	+m=<value>, fc=<value>, tt=<value>, revbrk=<value>, bv=<value>, ibv=<value>,
    	+xti=<value>, eg=<value>)
    
  • Биполярный транзистор перехода (BJT)

    N-P-N-СТРУКТУРА

    Q<name> <collector node> <base node> <emitter node> [substrate node] <model name> <area>
    .MODEL <model name> npn(bf=<value>, br=<value>, cjc=<value>, cje=<value>, cjs=<value>,
    	+eg=<value>, fc=<value>, ikf=<value>, ikr=<value>, irb=<value>, is=<value>, isc=<value>,
    	+ise=<value>, itf=<value>, mjc=<value>, mje=<value>, mjs=<value>, nc=<value>, ne=<value>,
    	+nf=<value>, nr=<value>, rb=<value>, rbm=<value>, rc=<value>, re=<value>, tf=<value>, 
    	+tr=<value>, vaf=<value>, var=<value>, vjc=<value>, vje=<value>, vjs=<value>, vtf=<value>,
    	+xcjc=<value>, xtb=<value>, xtf=<value>, xti=<value>)
    

    PNP

    Q<name> <collector node> <base node> <emitter node> [substrate node] <model name> <area>
    .MODEL <model name> pnp(bf=<value>, br=<value>, cjc=<value>, cje=<value>, cjs=<value>,
    	+eg=<value>, fc=<value>, ikf=<value>, ikr=<value>, irb=<value>, is=<value>, isc=<value>,
    	+ise=<value>, itf=<value>, mjc=<value>, mje=<value>, mjs=<value>, nc=<value>, ne=<value>,
    	+nf=<value>, nr=<value>, rb=<value>, rbm=<value>, rc=<value>, re=<value>, tf=<value>, 
    	+tr=<value>, vaf=<value>, var=<value>, vjc=<value>, vje=<value>, vjs=<value>, vtf=<value>,
    	+xcjc=<value>, xtb=<value>, xtf=<value>, xti=<value>)
    

  • Полевой транзистор перехода (JFET)

    N-канал

    J<name> <drain node> <gate node> <source node> <model name> [area]
    .MODEL <model name> njf(beta=<value>, cgd=<value>, cgs=<value>, fc=<value>, is=<value>,
    	+lambda=<value>, m=<value>, n=<value>, rd=<value>, rs=<value>, vto=<value>, xti=<value>)
    

    P-канал

    J<name> <drain node> <gate node> <source node> <model name> [area]
    .MODEL <model name> pjf(beta=<value>, cgd=<value>, cgs=<value>, fc=<value>, is=<value>,
    	+lambda=<value>, m=<value>, n=<value>, rd=<value>, rs=<value>, vto=<value>, xti=<value>)
    

  • Полевой транзистор металл-оксид-полупроводник (МОП)

    N-канал (поддерживаются только уровни 1 и 3)

    M<name> <drain node> <gate node> <source node> <bulk node> <model name>
    	+[L=<value>] [W=<value>] [AD=<value>] [AS=<value>] [PD=<value>] [PS=<value>] [NRD=<value>]
    	+[NRS=<value>] [M=<value>]
    .MODEL <model name> nmos(cbd=<value>, cbs=<value>, cgbo=<value>, cgdo=<value>,
    	+cgso=<value>, cj=<value>, cjsw=<value>, delta=<value>, eta=<value>, fc=<value>, 
    	+gamma=<value>, is=<value>, js=<value>, kappa=<value>, kp=<value>, lambda=<value>, 
    	+ld=<value>, level=<value>, mj=<value>, mjsw=<value>, n=<value>, neff=<value>, nfs=<value>,
    	+nss=<value>, nsub=<value>, nrd=<value>, nrs=<value>, pb=<value>, phi=<value>, rd=<value>,
    	+rs=<value>, rsh=<value>, theta=<value>, tox=<value>, tpg=<value>, ucrit=<value>, 
    	+uexp=<value>, uo=<value>, vmax=<value>, vto=<value>, xj=<value>)
    

    P-канал (поддерживаются только уровни 1 и 3)

    M<name> <drain node> <gate node> <source node> <bulk node> <model name>
    	+[L=<value>] [W=<value>] [AD=<value>] [AS=<value>] [PD=<value>] [PS=<value>] [NRD=<value>]
    	+[NRS=<value>] [M=<value>]
    .MODEL <model name> pmos(cbd=<value>, cbs=<value>, cgbo=<value>, cgdo=<value>,
    	+cgso=<value>, cj=<value>, cjsw=<value>, delta=<value>, eta=<value>, fc=<value>, 
    	+gamma=<value>, is=<value>, js=<value>, kappa=<value>, kp=<value>, lambda=<value>, 
    	+ld=<value>, level=<value>, mj=<value>, mjsw=<value>, n=<value>, neff=<value>, nfs=<value>,
    	+nss=<value>, nsub=<value>, nrd=<value>, nrs=<value>, pb=<value>, phi=<value>, rd=<value>,
    	+rs=<value>, rsh=<value>, theta=<value>, tox=<value>, tpg=<value>, ucrit=<value>, 
    	+uexp=<value>, uo=<value>, vmax=<value>, vto=<value>, xj=<value>)
    

Подсистемы

  • Подсхема

    X<name> [node]* <subcircuit name> [PARAMS: < <name>=<value> >*]
    

Выполнение преобразования вручную

После создания файлов компонентов Simscape проверьте каждый заголовок файла на наличие сообщений о неподдерживаемых командах SPICE. Например, помощник по преобразованию не поддерживает реализацию температурных коэффициентов для резисторов:

R1 p n 1k TC=0.01,-0.002

Созданный файл компонента Simscape содержит все поддерживаемые преобразования, и этот заголовок определяет температурные коэффициенты резистора для ручного преобразования:

component test
% test
% Component automatically generated from a SPICE netlist (11-Dec-2018 09:34:57).
% Users should manually implement the following SPICE commands in order to
% achieve a complete implementation:
%    R1: tc 0.01 -0.002
Для завершения преобразования измените файл компонента Simscape, чтобы реализовать отсутствующие компоненты. Для получения дополнительной информации о выполнении преобразований вручную и этом конкретном сценарии см. subcircuit2ssc.

Значения паразитов

Для пассивных устройств, таких как конденсаторы и индукторы, чтобы ввести паразитные значения в создаваемые файлы компонентов Simscape, установите для параметра Указать паразитные значения значение Да. Затем задайте значение паразитного последовательного сопротивления конденсатора или параметры параллельной проводимости индуктора.

Ограничения

  • Список соединений должен быть написан в формате PSpice и быть синтаксически корректным. Помощник по преобразованию не проверяет правильность синтаксиса PSpice.

  • Поддерживается только подмножество языка списка соединений PSpice. Однако неподдерживаемые команды PSpice определяются в верхней части соответствующего файла компонента Simscape для облегчения преобразования вручную.

  • Чтобы создать сгенерированные компоненты Simscape в блоках Simscape, значения параметров должны соответствовать ограничениям Simscape. Например, емкость основного конденсатора и индуктивность основного индуктора должны быть ненулевыми.

  • Помощник по преобразованию не поддерживает использование производной функции SPICE, ddt, внутри вызова функции.

См. также

|

Связанные темы