2 votos

LTspice: elementos de modelado de comportamiento para el retardo de propagación

Estoy tratando de crear un subcircuito en SPICE (actualmente usando LTspice pero quiero un modelo bastante agnóstico) para una compuerta AND que retrasa una entrada por alguna cantidad TPD.

Actualmente sólo estoy introduciendo 2 señales de reloj offest en el siguiente subcircuito:

.SUBCKT AND_GATE_TEST A B OUT VCC VEE
    XOUTLOGIC A B OUT_LOGIC VCC VEE LOGIC_FUNCTION
    XOUTPD OUT_LOGIC OUT VCC VEE PD_FUNCTION
.ENDS

************************************************************

.SUBCKT LOGIC_FUNCTION  A B OUT VCC VEE

    GAND VEE N1 VALUE = {V(A,VEE)*V(B,VEE)} 
    RN1 N1 VEE 1    
    EOUT1 OUT VEE N1 VEE 1

.ENDS

************************************************************

.SUBCKT PD_FUNCTION IN OUT VCC VEE

    GDEL VEE N1 VALUE = {V(IN,VEE)}
    RN1 N1 VEE 1
    EDEL = OUT VEE DELAY N1 VEE TD=10ns

.ENDS 

La primera función lógica funciona bien y produce la lógica AND esperada dadas las entradas A y B pero me tropiezo con la función de retardo de propagación.

El error que produce LTspice dice Missing gain value pero no importa cómo utilice el elemento E (o cualquier elemento de comportamiento para el caso) como una función de retardo no puedo conseguir que funcione correctamente.

Creo que me falta algo fundamental en la sintaxis de los elementos de comportamiento

Cualquier ayuda sobre la mejor manera de abordar esto sería muy apreciada.

1voto

dumfries Puntos 1

Lo que tienes ahí no es exactamente un AND porque si las entradas no tienen niveles lógicos de [0:1] estás en problemas. Y esa sintaxis no es amigable con SPICE, así que debe ser alguna forma propietaria de definir un retardo.

Para un modelo agnóstico se podría utilizar una fuente de comportamiento y una línea de transmisión con:

B1 0 1 I = V(a) & V(b)
T1 1 0 out 0 Td={td} Z0=1
R1 out 0 1

donde utilicé & para la lógica AND . Según recuerdo, ngspice utiliza && Otros pueden tener también sus anotaciones, pero la fuente de comportamiento debe ser compatible con SPICE. Si no es así, a expensas de ajustar manualmente los niveles de salida, usted podría utilizar:

I = Vlow + (Vhigh - Vlow) * ( ( u(V(a) - (Vhigh + Vlow) / 2) ) * (u(v(b) - (Vhigh + Vlow) / 2 ) ) )

Creo que u() es compatible con SPICE. También he evitado el uso de la función delay() (o absdelay() ) porque 1) podría ser particular de LTspice (o sólo de algunos), y 2) el tline es compatible con SPICE (y se comporta mejor para retrasos fijos). La resistencia de salida puede ser cambiada para tener otros valores, en cuyo caso la expresión en la fuente de corriente tendría que ser cambiada a (<expression>)/R y la impedancia de la línea de transmisión a Z0={R} .

Por otra parte, si puedes tolerar una solución sólo de LTspice, te recomiendo encarecidamente el dispositivo A incorporado [Digital]/and con td={td} (también puede utilizar tau y tripdt o vhigh , vlow etc, ver más en la ayuda).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X