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

Estoy tratando de cambiar un parámetro en LT Spice con declaraciones 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 modular porque XR2 o X%2= 0 significa que es par y XR2 o X%2= 1 significa que es impar. Sin embargo, revisé la documentación de LTSpice .param 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?

Estoy cambiando el voltaje utilizado para sesgar un grupo de FET en un amplificador complejo. Quería ejecutar un factorial completo de posibles opciones para encontrar un buen resultado. Así que usé una función .step para pasar del 1 al 16 y usando la operación param y dependiendo de si es o no divisible por 8, 4, 2 o 1 y si es par o impar, establezca el voltaje en consecuencia.

Respuestas (3)

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

¿Puede proporcionar una referencia? Encontré que existe el operador % para módulo, aquí
¿Cómo se seleccionó esta respuesta? No hay ninguna mod()función en LTspice. Hay un idtmod(), puede haber una definición personalizada .func , pero no hay ninguna mod(x,y)función en la instalación predeterminada de LTspice, ya sea IV o XVII.

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 convergencia.

No dice qué tipo de dispositivo está tratando de cambiar o si está cambiando dinámicamente el dispositivo (durante la simulación) o en .IC, por lo que solo puedo darle una guía general.

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

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

La fuente controlada de entrada múltiple toma los parámetros de k 0 + k 1 V 1 + k 2 V 2 + ... y términos cruzados. Entonces, está construyendo un modelo macro que emula la función necesaria. .IC se puede definir ejecución por ejecución si eso es lo que está haciendo.

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

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

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

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

Dado que mi código ya usa un ceil() y una división para calcular X, ya es un desperdicio además de este cálculo extenso. Si alguien puede encontrar una manera más eficiente de hacer esto, se lo agradecería.

Esta debería haber sido la respuesta. Funciona un poco más rápido con int().