Convertir un bloque de subcircuito en una función de transferencia para una simulación más rápida en SPICE

¿Hay alguna manera de tomar una definición de subcircuito (.subckt) y hacer que SPICE (o en mi caso LTSpice) tome la función de transferencia? Luego, haga que SPICE se refiera a esta función de transferencia cada vez que se inserte un componente con esta definición .subckt en cualquier esquema, se usa la función de transferencia.

Hasta donde yo sé, un .subckt solo se puede definir como una lista de conexiones, no como una función de transferencia.

El verdadero problema es que tengo algunos problemas para que mis circuitos converjan lo suficientemente rápido (la simulación puede tardar decenas de minutos en finalizar). Probablemente sea porque estoy empezando a usar más y más fuentes de corriente constante.

¿Algun consejo?

Espero que sepa que su sugerencia solo tiene sentido si el subcircuito que desea definir por su función de transferencia es un sistema LTI (al menos un sistema lineal). Sin embargo, si este es el caso, dudo que SPICE tarde mucho en converger ... En otras palabras: si SPICE tarda mucho en converger, dudo que sea debido a un subcircuito que puede ser descrito por una función de transferencia . Probablemente se deba a una parte (altamente no lineal) que no puede reemplazar con una función de transferencia.

Respuestas (1)

Ese es un buen paso usando fuentes de corriente sobre las de voltaje. Puede usar funciones de transferencia en forma de Laplaceexpresiones, luciendo así:

Laplace=(s + 1)/(s^2 + 2);

Esto, como se ve, se ingresaría como el valor de una Gfuente, por ejemplo. LTspice sabrá transformarse sen el complejo exponencial. También puede funcionar en una fuente conductual.

PERO mientras que las Laplaceexpresiones funcionarán perfectamente en el dominio de la frecuencia, pueden dar como resultado basura en el dominio del tiempo, algo que se menciona en el manual.

Esta es la razón por la que, a menos que se trate de funciones de transferencia exóticas que tengan sqrt(s), o similares, que no sean múltiplos de s, es mejor derivar sus funciones de transferencia usando los RLCelementos básicos. Por ejemplo:

bloques de construcción básicos

Estos se pueden combinar en expresiones de función de transferencia de tamaño completo, pero deben ser funciones de transferencia adecuadas; para los incorrectos, tendrás que hacer malabarismos con los bloques de construcción básicos anteriores, de alguna manera. Para problemas de estabilidad, también es una buena idea dividir las expresiones más largas en expresiones de segundo orden. Aquí hay un ejemplo:

bloque de segundo orden

También podría usar S-paramarchivos, pero, IIRC, se basan en archivos Laplace. Estos son solo ejemplos de cómo hacerlo y, recuerde, es solo para evitar el mal desempeño en el dominio del tiempo de las Laplaceexpresiones. En última instancia, la elección está en tus manos.


La función de transferencia genérica para el bloque de segundo orden es esta:

H ( s ) = a 2 s 2 + a 1 s + a 0 s 2 + b 1 s + b 0

dónde a norte y b norte son los de la imagen, mientras que s se expresa como 1 2 π F (ya que, como se ve en la 1ra imagen, G+Csignifica 1 / s ).

Como recordatorio, la función de transferencia debe ser correcta: el orden del numerador es menor o igual que el del denominador.

¿Podría proporcionar la ecuación para el ejemplo de segundo orden? Me ayudaría a comprobar mi comprensión. Gracias.