¿LTSpice admite una función de "Resto" o "Módulo"?

2

Estoy tratando de cambiar un parámetro en LT Spice con sentencias if y hacer que cambie si un valor diferente es par o impar.

Matemáticamente, esto sería fácil con un resto o una función modulada porque XR2 o X% 2 = 0 significa que es uniforme y XR2 o X% 2 = 1 significa que es impar. Sin embargo, he revisado la documentación de .param de LTSpice y no pude encontrar ningún soporte para este tipo de función. ¿Alguien sabe otra forma de realizar esta operación o si esta función tiene un nombre diferente?

    
pregunta user1207381

3 respuestas

0

LTspice admite la función de módulo: "Mod", por ejemplo, MOD (2,2) = 0, MOD (3,2) = 1.

    
respondido por el user20066
1

Como comentario general: la mayoría de los modelos en SPICE son cuidadosos con las discontinuidades, especialmente en la conductancia. Esto se debe a que el algoritmo de Newton-Raphson puede tener problemas con la discontinuidad y perder la convergencia.

No dice qué tipo de dispositivo está intentando cambiar o si está cambiando dinámicamente el dispositivo (durante el simulador) o en .IC, por lo que solo puedo darle una línea de guía general.

No ejecuto LTSpice, por lo que mi sugerencia puede no ser aplicable.

Utilizaría una fuente de entrada múltiple controlada y definiría los parámetros para derivar un voltaje de control que luego modula una fuente de voltaje controlada, una fuente de corriente, etc.

La fuente de entrada múltiple controlada toma los parámetros de \ $ k_0 + k_1V_1 + k_2V_2 + \ $ ... y términos cruzados. Así que estás construyendo un modelo macro que emula la función necesaria. .IC se puede definir en una ejecución por ejecución si eso es lo que está haciendo.

la definición es E + node -node POLY (valor) etc. etc.

    
respondido por el placeholder
0

Esta no es la solución más limpia, pero funciona. Pude calcular el resto yo mismo. Esto puede extenderse a cualquier función modulada y usaré Y como mi variable modulada.

Suponiendo que X es un entero, puede tomar X / Y, redondear hacia abajo al entero más cercano, multiplicarlo por Y y restarlo del valor original. En general, se ve algo como esto.

.param A1 {X - piso (X / Y) * Y}

Como mi código ya usa un ceil () y una división para calcular X, ya es un desperdicio por encima de este extenso cálculo. Si alguien puede encontrar una forma más eficiente de hacerlo, lo apreciaría.

    
respondido por el user1207381

Lea otras preguntas en las etiquetas