Quiero hacer el paso de tiempo y el tiempo de parada en una escala de simulación transient automáticamente usando los valores de los parámetros (líneas .PARAM) en la lista de redes. Aquí hay una lista de ngspice mínima para demostrar mi caso de uso.
How to access parameter values in transient simulation and interactive interpreter
.PARAM R = 1kOhm
.PARAM C = 1nF
.PARAM pi = 3.14159265359
.PARAM fb = {1/(2*pi*R*C)} ; Q1. Why does pi need to be defined above?
.PARAM amplitude = 5V
.PARAM pointsPerCyle = 20
.PARAM numCycles = 1.5
VDD 1 0 SIN(0V {amplitude} {fb})
R1 1 2 {R}
C1 2 0 {C}
.TRAN {1/159kHz/20} {1.5/159kHz}
* .TRAN {1/{fb}/{pointsPerCyle}} {numCycles/fb} ; Q2. How to access the parameter values defined above in tran sim?
.PLOT TRAN V(1) V(2)
.CONTROL
run
plot V(1) V(2)
* plot {V(1)/{amplitude}} {V(2)/{amplitude}} Q3. How to access the parameter values defined above in interactive interpreter and/or ngspice scripts?
* print $fb
* echo $R
.ENDC
.end
La lista de redes se ejecutará como está, produciendo un gráfico de simulación transitoria. Las líneas comentadas son donde ocurren los errores. Así que tengo 3 preguntas aquí.
- ¿Por qué necesito definir pi para calcular algunos parámetros? Si ya está definido, no puedo acceder a él en este punto en la lista de redes (líneas .PARAM)? ¿Por qué?
- ¿Cómo accedo a los valores .PARAM para definir el intervalo de tiempo y el tiempo de detención en una simulación transitoria?
- ¿Cómo accedo a los valores .PARAM en los intérpretes interactivos y / o los scripts ngspice?
¡Gracias!