You are on page 1of 47

DISEO DE CIRCUITOS Y SISTEMAS INTEGRADOS

Mster en Ingeniera de Telecomunicacin


Curso 2015/16

INTRODUCCIN A

Introduccin a

NDICE
1

INTRODUCCIN ....................................................................................................................... 4
1.1

Origen ............................................................................................................................. 4

1.2

Qu es NGSPICE? .......................................................................................................... 4

1.3

Dnde obtener el software e informacin sobre l? ................................................... 5

PRIMEROS PASOS CON NGSPICE ............................................................................................. 5


2.1

Lnea de comandos ........................................................................................................ 6

2.2

Componentes bsicos .................................................................................................... 7

2.3

Modos de ejecucin ....................................................................................................... 7

2.3.1

Batch mode (procesamiento por lotes) ................................................................. 7

2.3.2

Interactive mode (interactive interpreter) ............................................................ 7

2.3.3

Control mode (Interactive mode with control file or control section) .................. 8

2.4

Descripcin bsica de un circuito en un fichero netlist ................................................. 8

2.5

Modelos ......................................................................................................................... 9

2.5.1

Modelo de diodo .................................................................................................. 10

2.5.2

Modelo BJT ........................................................................................................... 11

2.5.3

Modelo MOSFET .................................................................................................. 13

2.6

Comandos Bsicos de Simulacin ................................................................................ 14

INTERFAZ GRFICA DE USUARIO ........................................................................................... 15

BIBLIOTECA COMPARTIDA Y USO DINMICO ....................................................................... 18

4.1

Enlazar la librera compartida ...................................................................................... 18

4.2

API compartida ............................................................................................................. 18

4.3

Paralelismo ................................................................................................................... 18

ANLISIS BSICO ................................................................................................................... 19


5.1

Anlisis AC .................................................................................................................... 19

5.2

Anlisis de distorsin (.DISTO) ..................................................................................... 22

5.3

Anlisis de punto de operacin (.OP) .......................................................................... 25

5.4

Anlisis de sensibilidad (.SENS) .................................................................................... 26

5.5

Anlisis transitorio .TRAN ............................................................................................ 30

5.6

Anlisis de funcin de transferencia (.DC) ................................................................... 31

5.7

Anlisis de ruido (.NOISE)............................................................................................. 32

5.8

Anlisis de ceros y polos (.PZ) ...................................................................................... 37

Introduccin a

5.9
6

Anlisis de funcin de transferencia (.TZ) .................................................................... 39

SUBCIRCUITOS ....................................................................................................................... 41
6.1

Definicin de un subcircuito ........................................................................................ 41

6.2

Llamada a un subcircuito ............................................................................................. 42

6.3

EJEMPLO 1. Divisor resistivo ........................................................................................ 43

6.4

EJEMPLO 2: INVERSOR CMOS ...................................................................................... 44

6.5

Consideraciones ........................................................................................................... 45

REFERENCIAS ......................................................................................................................... 46

LISTA DE CAMBIOS................................................................................................................. 47

Introduccin a

1 INTRODUCCIN
1.1 Origen
El proyecto Spice (Simulation Program with Integrated Circuit Emphasis) fue
desarrollado en el laboratorio de investigacin electrnica (Electronics Research
Laboratory) de la Universidad de California, Berkeley, por Larry Nagel bajo la direccin
de su asesor de investigacin Donald Pederson en 1973 (SPICE1). Hasta ese momento
varios simuladores de circuitos elctricos haban sido desarrollados por el
departamento de defensa de los Estados Unidos pero no haban sido puestos a
disposicin del pblico. Cuando el profesor Pederson asumi la direccin del
laboratorio consigui que el programa Spice fuera reescrito a partir de su antecesor, el
cual era un programa con licencia privativa, para poder poner esta nueva versin del
programa bajo dominio pblico.
Debido a esta caracterstica de cdigo abierto, Spice fue ampliamente utilizado
como base para el desarrollo de otros programas de simulacin tanto en las
universidades como en la industria en general. Esto nos permite encontrar en el
mercado un gran nmero de versiones derivadas del Spice original tanto libres como
comerciales. En la siguiente tabla recogemos algunas de las versiones disponibles
actualmente:

Versiones comerciales

Versiones software libre

PSpice/OrCAD
HSpice
MicroCad
Dr. Spice
Proteus
Intusoft
Spice-It!
SIMetric Intro
TopSPICE

ASCO tool
GEDA
MacSpice
NGspice
Oregano
Qucs
TclSpice

1.2 Qu es NGSPICE?
NGSpice es un simulador de circuitos. NGSpice se basa en tres componentes software de
cdigo abierto: Spice3f5, Xspice y Cider1b1

SPICE es el origen de todos los simuladores de circuitos. Sus sucesores son


ampliamente usados en la comunidad electrnica.

Xspice es una extensin de Spice3 que proporciona modelos de cdigo de lenguaje C


adicionales para apoyar el modelado de comportamiento analgico y co-simulacin de
componentes digitales, todo ello gracias a un modelo basado en eventos.

Introduccin a

Cider aade un simulador numrico a ngspice. Se acopla el simulador de nivel de


circuito al simulador de dispositivo para proporcionar una mayor precisin de la
simulacin (a expensas de un mayor tiempo de simulacin).

Se puede entender a partir de su nombre como el Spice de Nueva Generacin (Next


Generation Spice). El objetivo del proyecto NGSpice es el de proporcionar una herramienta
que nos permita simular circuitos de una manera fiable, rpida y amigable. De la misma
manera que los proyectos sobre los que se basa, consiste en un simulador por lnea de
comandos. El software proporciona tanto el simulador como el front-end para el anlisis y
representacin de los resultados.
Actualmente el software permite realizar tres tipos de anlisis: anlisis no lineal DC,
anlisis no lineal transitorio y anlisis lineal AC. Proporciona la posibilidad de incluir un gran
grupo de elementos circuitales tales como resistencias, condensadores, bobinas, lneas de
transmisin, diodos, transistores bjt, mosfets, mesfets, jfet, etc.

1.3 Dnde obtener el software e informacin sobre l?


Desde el siguiente enlace podemos acceder a la ltima versin disponible del software:
http://ngspice.sourceforge.net/ donde la versin disponible a fecha de realizacin del presente
manual corresponde a ngspice-26 (liberada el 12/01/2014).
Aqu encontraremos dos versiones distintas: la versin estable, pensada para
usuarios finales y el repositorio de cdigo (git) para poder contribuir a mejorar el
cdigo. La versin estable puede descargarse de dos maneras distintas:

Descargar el cdigo fuente para poder compilarlo uno mismo bajo varios
sistemas operativos, como GNU/Linux, MS Windows, Mac OS, BSD,
Solaris, y tal vez algn otro ms.
Descargar los archivos binarios distribuidos para MS Windows y Mac OS
X.

Esta versin no contiene los ltimos cambios ni las funcionalidades que estn en
fase de pruebas, ya que va destinada para usuarios finales que desean una versin
estable.

2 PRIMEROS PASOS CON NGSPICE


Para trabajar con el simulador nicamente es necesario especificar nuestro circuito en un
fichero Netlist. Generalmente estos ficheros estarn organizados en diferentes partes. La
primera lnea siempre es ignorada por el simulador y puede ser usada para establecer el ttulo
de la simulacin. En el resto de lneas hay que respetar las diferentes convenciones
establecidas. Tendremos sentencias referidas a comandos que deben comenzar con un .
(punto) y sentencias referidas a componentes que comenzarn con una letra que representa el
tipo de componente (por ejemplo R para una resistencia). Cuando una de estas sentencias

Introduccin a

continua en varias lneas se insertar un + al principio de cada lnea mltiple. Cada lnea que
comience con * ser ignorada ya que es el smbolo para identificar comentarios.

2.1 Lnea de comandos


Sintxis:
ngspice [-o logfile] [-r
ngnutmeg [] [datafile ]

rawfile]

[-b]

[-i]

[input

file]

Introduccin a

2.2 Componentes bsicos


La sintaxis para declarar cada uno de los componentes bsicos en el fichero netlist es la
siguiente :

Resistencia: RXXXXXXX N1 N2 <VALUE> <MNAME> <L=LENGTH> <W=WIDTH> <TEMP=T>


Ej.: RHOT n1 n2 10k TEMP=500
Condensador: CXXXXXXX N+ N- VALUE <IC=INCOND>
Bobina: LYYYYYYY N+ N- VALUE <IC=INCOND>
Diodo: DXXXXXXX N+ N- MNAME <AREA> <OFF> <IC=VD> <TEMP=T>
Transistor BJT: QXXXXXXX NC NB NE <NS> MNAME <AREA> <OFF> <IC=VBE, VCE> <TEMP=T>
Transistor MOSFET: MXXXXXXX ND NG NS NB MNAME <L=VAL> <W=VAL> <AD=VAL>
+<AS=VAL> <PD=VAL> <PS=VAL> <NRD=VAL> <NRS=VAL> <OFF> <IC=VDS, VGS, VBS> <TEMP=T >
Fuente de Tensin: VXXXXXXX N+ N- <<DC> DC/TRAN VALUE> <AC <ACMAG <ACPHASE>>>
+<DISTOF1 <F1MAG <F1PHASE>>> <DISTOF2 <F2MAG <F2PHASE>>>
Fuente de Corriente: IXXXXXXX N+ N- <<DC> DC/TRAN VALUE> <AC <ACMAG <ACPHASE>>>
+ <DISTOF1 <F1MAG <F1PHASE>>> <DISTOF2 <F2MAG <F2PHASE>>>

Se pueden generar diferentes seales de fuente con las siguientes funciones:

Pulso: PULSE(V1 V2 <TD> <TR> <TF> <PW> <PER>)


Sinusoide: SIN(V0 VA FREQ <TD> <THETA>)
Exponencial: EXP(V1 V2 <TD1> <TAU1> <TD> <TAU2>)
Piece-Wise: PWL(T1 V1 <T2 V2 <T3 V3 <T4 V4 ...>>>)

2.3 Modos de ejecucin


2.3.1

Batch mode (procesamiento por lotes)

Este modo de ejecucin se basa en la creacin de ficheros de descripcin de circuitos para ser
posteriormente ejecutados, mediante la opcin [-b].
ngspice b r rawfile.raw circuitfile.cir
En el modo bach el anlisis descrito por las lneas de control del archivo de entrada son
inmediatamente ejecutadas. Si se activa la opcin [-r] entonces todos los datos generados se
escriben en un archivo rawfile de ngspice. El archivo raw (datos en crudo) puede ser ledo
posteriormente a travs del modo interactivo de ngspice usando el comando load. Si por el
contrario no se especifica ningn archivo de tipo raw la salida se muestra en formato de lnea
de comandos y las tablas pueden ser impresas segn los archivos de control .print, .plot y
.four.
2.3.2

Interactive mode (interactive interpreter)

El flujo de simulacin en ngspice (entrada, simulacin, salida) puede ser controlado por
comandos . en el modo bach. Existe, sin embargo, una forma mucho ms potente de control
disponible en ngspice, tradicionalmente denominada modo interactivo.

Introduccin a

Se pueden escribir expresiones, funciones o comandos en la consola de entrada para la


elaboracin de los datos ya obtenidos a partir de la sesin de simulacin interactiva.
Las secuencias de comandos, funciones y estructuras de control pueden ensamblarse como un
script en un archivo, y luego ejecutarse con solo teclear el nombre del archivo en la entrada de
la consola de una sesin ngspice interactiva.
Por ltimo, y ms lo til, es aadir un script al archivo de entrada, adems de los comandos de
listas de conexiones y de puntos

Ejemplo bsico
Es posible ejecutar a travs de la lnea de comandos el modo interactivo aadiendo un archivo
de circuito como parmetro.
ngspice circuit_example.cir
De esta forma se ejecutar el programa y se cargar el circuito (ejecutndose los comandos
precedidos por el carcter .) y ngspice esperar a que se ejecuten comandos.

2.3.3

Control mode (Interactive mode with control file or control section)

Si a un archivo que contiene la descripcin de un circuito se le aade una seccin de control,


cuando se ejecute desde la lnea de comandos, tras cargar el circuito se ejecutarn los
comandos de forma inmediata.
Dentro de las estructuras de control encontramos las siguientes:

While End
Repeat End
Dowhile End

Foreach - End
If Then Else
Label

Goto
Continue
Break

Nota: Para ms informacin sobre las estructuras de control consultar el apartado 17.6 del
manual oficial.

2.4 Descripcin bsica de un circuito en un fichero netlist


Un circuito completo est formado por componentes, como los descritos en el anterior
apartado. Un componente est incluido entre 2 o ms nodos. Una resistencia tendr un nodo
de entrada y otro de salida. Un transistor MOSFET tiene 4 nodos (Puerta, Drenador, Fuente y
Body. Cada componente puede modelizarse con unas caractersticas.

Introduccin a

Esta es la forma en la que spice interpretar y situar el componente para su posterior


simulacin. Esto se puede ver de manera ms sencilla en el siguiente ejemplo de un circuito de
un divisor resistivo.

Netlist
*Divisor de Tensin
V1 in 0 sin(0 1 1e3)
R1 in out 50k
R2 out 0 50k
.TRAN 10n 2m
.end

En el circuito anterior hay tres componentes (una fuente de tensin que llamamos V1 y
2 resistencias R1 y R2. A cada entrada y salida de cada componente le asignamos un nmero
de nodo. Despus se indican los valores y caractersticas de los componentes. As tenemos el
fichero que describe el circuito:

La primera lnea describe fuente V1 que est incluida entre el nodo IN y el nodo
0 masa -. Se trata de una seal sinosuidal de 1 V de amplitud y 1 KHz. (ver
manual de ngspice, apartado 4.1.2).
La segunda lnea describe la resistencia R1, que est entre el nodo IN Y EL nodo
OUT, con valor de 50K.
La tercera lnea describe la resistencia R2, que est entre el nodo OUT y el nodo
0 masa- y tiene un valor de 50K.

El circuito ya est descrito para que SPICE lo interprete y se hagan posteriores anlisis y
simulaciones. As la cuarta lnea efecta un anlisis transitorio del circuito. Estos anlisis se
describen en posteriores apartados

2.5 Modelos
La mayora de los elementos circuitales solo requieren de unos pocos parmetros de
configuracin. Sin embargo, algunos dispositivos como los semiconductores necesitan que se
les sea especificado un gran nmero de ellos para definir correctamente su comportamiento.
Por este motivo, se puede definir bajo un mismo nombre y modelo (.model) a un grupo de
dispositivos mediante una lnea adicional.
Modelo genrico: .model MNAME TYPE(PNAME1=PVAL1 PNAME2=PVAL2 ... )

10

Introduccin a

2.5.1

Modelo de diodo

.model MNAME D(PNAME1=PVAL1 PNAME2=PVAL2 ... )

PARMETROS DC

PARMETROS CAPACITIVOS

11

Introduccin a

PARMETROS TRMICOS

PARMETROS RUIDO

Ejemplo: D1 1 2 Da1N4004
.model Da1N4004 D (IS=18.8n RS=0 BV=400 IBV=5.00u
+ CJO=30 M=0.333 N=2)
Ejemplo: D1 1 2 D1N4148
.model D1N4148 D (IS=0.1PA, RS=16 CJO=2PF TT=12N BV=100
+ IBV=0.1PA)

2.5.2

Modelo BJT

.model MNAME NPN/PNP(PNAME1=PVAL1 PNAME2=PVAL2 ... )

12

Introduccin a

Ejemplo: 1N2222A NPN Transistor


.model Q2N2222A NPN (IS=14.34F XTI=3 EG=1.11 VAF= 74.03
+ BF=255.9 NE=1.307 ISE=14.34F IKF=.2847 XTB=1.5 BR=6.092
+ NC=2 ISC=0 IKR=0 RC=1 CJC=7.306P MJC=.3416 VJC=.75
+ FC=.5 CJE=22.01P MJE.377 VJE=.75 TR=46.91N TF=411.1P
+ ITF=.6 VTF=1.7 XTF=3 RB=10)

Ejemplo: 2N696 NPN Transistor


.model Q2N696 NPN (IS=14.34F XTI=3 EG=1.11 VAF= 74.03
+ BF=65.62 NE=1.208 ISE=19.48F IKF=.2385 XTB=1.5 BR=9.715 + NC=2 ISC=0
IKR=0 RC=1 CJC=9.393P MJC=.3416 VJC=.75 FC=.5

13

Introduccin a

+ CJE=22.01P MJE=.377 VJE=.75 TR=58.98N TF=408.8P ITF=.6


+ VTF=1.7 XTF=3 RB = 10)

2.5.3

Modelo MOSFET

.model MNAME NMOS/PMOS(PNAME1=PVAL1 PNAME2=PVAL2 ... )

14

Introduccin a

Ejemplo: CMOSN (NMOS)


.MODEL CMOSN NMOS LEVEL=3 PHI=0.600000 TOX=2.1200E-08
+ XJ=0.200000U TPG=1 VTO=0.7860 DELTA=6.9670E-01
+ LD=1.6470E-07 KP=9.6379E-05 UO=591.7 THETA=8.1220E-02
+ RSH=8.5450E+01 GAMMA=0.5863 NSUB=2.7470E+16 NFS=1.98E+12
+ VMAX=1.7330E+05 ETA=4.3680E-02 KAPPA=1.3960E-01
+ CGDO=4.0241E-10 CGSO=4.0241E-10 CGBO=3.6144E-10 CJ=3.8541E-04
+ MJ=1.1854 CJSW=1.3940E-10 MJSW=0.125195 PB=0.800000

Ejemplo: CMOSP (PMOS)


.MODEL CMOSP PMOS LEVEL=3 PHI=0.600000 TOX=2.1200E-08
+ XJ=0.200000U TPG=-1 VTO=-0.9056 DELTA=1.5200E+00 LD=2.2000E-08
+ KP=2.9352E-05 UO=180.2 THETA=1.2480E-01 RSH=1.0470E+02
+ GAMMA=0.4863 NSUB=1.8900E+16 NFS=3.46E+12 VMAX=3.7320E+05
+ ETA=1.6410E-01 KAPPA=9.6940E+00 CGDO=5.3752E-11
+ CGSO=5.3752E-11 CGBO=3.3650E-10 CJ=4.8447E-04 MJ=0.5027
+ CJSW=1.6457E-10 MJSW=0.217168 PB=0.850000

2.6 Comandos Bsicos de Simulacin

Condiciones iniciales (.IC): permite establecer las condiciones iniciales de un nodo o de


un circuito con memoria.
Uso: .ic V(NODNUM)=VAL V(NODNUM)=VAL ...

Anlisis del estado estable (.OP): encuentra las condiciones de estado estable en
todos los dispositivos y nodos.
Uso: .op

Anlisis de ganancia de pequea seal (.TF): proporciona la ganancia en estado


estable dadas una seal de entrada y una de salida.
Uso: .tf OUTVAR INSRC

Anlisis de estado estable (.DC): calcula las condiciones de los dispositivos y nodos
para una serie de condiciones de entrada.
Uso: .dc SRCNAM VSTART VSTOP VINCR [SRC2 START2 STOP2 INCR2]

Anlisis AC de pequea seal (.AC): calcula como los dispositivos se comportan en el


dominio frecuencial en un determinado estado estable.
Uso: .ac STYPE ND FSTART FSTOP

Anlisis transitorio (.TRAN): monitoriza el estado de un circuito en el dominio


temporal para una determinada entrada.

15

Introduccin a

Uso: .tran TSTEP TSTOP <TSTART <TMAX>>

Fin de la simulacin (.END): a partir de este comando cualquier lnea ser ignorada y la
simulacin ser ejecutada.
Uso: .end

Imprimir por pantalla (.PRINT): permite imprimir por pantalla el valor de las
magnitudes deseadas.
Uso: .print var1 var2

Visualizar resultados (.PLOT): permite representar por pantalla un grfico con las
evoluciones de las diferentes magnitudes.
Uso: .plot var1 var2

3 INTERFAZ GRFICA DE USUARIO


NGSpice ofrece una gran variedad de interfaces. Este factor muestra el potencial que
representa ngspice y su ecosistema.
A continuacin se muestran algunos ejemplos de esta variedad de interfaces para diversos
sistemas operativos.

Figura: ngspice on KDE (Linux)

16

Introduccin a

Figura: ngspice running on Windows XP compiled with MinGW

Figura: ngspice on Sun-Solaris compiled with gcc

Figura: ngspice running on MacOSX (nedit is the external editor)

17

Introduccin a

Figura: ngspice running on Windows XP within Cygwin

Figura: ngspice on KDE (Linux) with gschem in background

18

Introduccin a

4 BIBLIOTECA COMPARTIDA Y USO DINMICO


Ngspice puede ser compilada como una librera compartida y de esta forma permitir a una
aplicacin externa controlar la simulacin.
El mdulo compartido ofrece una interfaz que exporta funciones para para poder controlar el
simulador y funciones de devolucin de llamada (callback functions) para obtener la
retroalimentacin.
De esta forma se puede controlar la simulacin que se ejecutar en otro hilo de ejecucin e
informar a la aplicacin anfitriona en forma de evento cuando se produzca la tarea X.

4.1 Enlazar la librera compartida


Bsicamente existen dos mtodos (con archivos *.so y *.dll):

Enlazar durante la compilacin: cuando se crea una librera compartida de ngspice no


slo se crean los archivos *.so (*.dll), sino que adems se crea un pequeo archivo que
incluye las referencias a las funciones exportadas.
Enlazar durante la ejecucin: dlopen (GNU/Linux) o LoadLibrary (MS Windows) cargar
la librera libngspice.so/ngspice.dll dentro del espacio de direcciones reservado a la
ejecucin del programa anfitrin. Las funciones devolvern un manejador que podr
ser usado para adquirir los punteros a las funciones exportadas por la librera
libngspice.so.

4.2 API compartida


Los fuentes de la API de ngspice estn contenidos dentro de un nico archivo C (sharedspice.c)
y su correspondiente fichero de cabecera (sharedspice.h). Las declaraciones de tipos y
funciones estn contenidas en el fichero sharedspice.h, que puede ser aadido directamente
en la aplicacin que quiera hacer uso de ellas si est escrita en C o C.

4.3 Paralelismo
Gracias a la creacin de bibliotecas compartidas de ngspice se introduce la capacidad de
ejecucin de varias invocaciones a ngspice en paralelo, en hilos de ejecucin individuales de
manera sincronizada, permitiendo el intercambio de datos entre los diferentes hilos.
Un programa principal se encarga de cargar varias instancias de la librera ngspice y ejecutar
hilos de ejecucin individuales en cada instancia. Hay que dividir el circuito en particiones y
definir sus interconexiones. Cada hilo de ejecucin de ngspice carga una particin distinta y
ejecuta la simulacin. El progreso de simulacin se sincroniza a travs de una funcin de

19

Introduccin a

devolucin de llamada (callback), mientras que los datos (o voltaje) son compartidos de
acuerdo a la interfaz definida en otra funcin de devolucin de llamada.

5 ANLISIS BSICO
A continuacin presentamos los tipos de anlisis realizable con el software.

5.1 Anlisis AC
Mediante este anlisis podemos determinar la respuesta del circuito ante una seal senoidal
de determinada frecuencia a partir de los modelos de pequea seal de los elementos. Este
anlisis es similar al anlisis de corriente continua en el cual esto representa el
comportamiento fijo del sistema descrito.
Para la realizacin del anlisis, el programa primero calcula el .dc del circuito y determina
modelos de pequea seal para todos los dispositivos no lineales en el circuito. El resultado
obtenido es analizado sobre un rango especificado de frecuencias. La salida de este tipo de
anlisis es por lo general una funcin de transferencia.
Las instrucciones que nos permite realizar este tipo de anlisis son:
Instrucciones
.AC
.AC
.AC

DEC
OCT
LIN

ND
NO
NP

FSTART
FSTART
FSTART

Ejemplos
FSTOP
FSTOP
FSTOP

.AC DEC 10 1 10K


.AC OCT 10 1K 100MEG
.AC LIN 100 1 100HZ

Donde cada parmetro tiene el siguiente significado:

DEC variacin de dcada.


o

ND nmero de puntos por dcada.

OCT variacin de octava.


o

NO nmero de puntos por octava.

LIN variacin lineal.


o

NP nmero de puntos.

Mediante los parmetros fstart y fstop podemos marcar la frecuencia de inicio y la frecuencia
final del barrido de frecuencias.

20

Introduccin a

Nota: para este anlisis al menos un la fuente independiente debe haber sido especificada con
un valor de .ac.
A continuacin podemos visualizar un ejemplo prctico correspondiente con el siguiente
esquemtico, figura X:
El circuito elegido en este caso es un RLC paralelo que presenta una resonancia alrededor de la
frecuencia. Se utilizar un generador de corriente para excitar la impedancia equivalente del
circuito.

Figura X: Esquemtico del circuito de ejemplo.


El circuito definido en NGSPICE es el siguiente:
Analisis en alterna
*CIRCUITO RLC
II 0 1
L1 1
C1 1
R1 1

ac
0
0
0

0.1
1m
1n
10k

*EJECUTAMOS
.control
*ANALISIS EN FRECUENCIA
*Instruccion: .AC [DEC/OCT/LIN] [ND/NO/NP]
ac dec 25 1.0e5 1e6
plot V(1) xlimit 100k 300k ylog
print V(1) > ac.txt
display > ac.var
asciiplot V(1)> ac.plt
.endc
.end

FSTART

FSTOP

21

Introduccin a

El valor de la tensin en los extremos de la impedancia resonante equivalente se presenta en


la figura X. La resonancia est cerca de la frecuencia 160 KHz.

Figura X: Representacin de la tensin frente a la frecuencia.


Mediante el comando print V(1) podemos visualizar una tabla X con los valores de la tensin
en funcin de la frecuencia:
analisis en alterna
------------------------------------------------------------------------------Index
frequency
v(1)
------------------------------------------------------------------------------0
1.000000e+005
1.066310e+001
1.027103e+002
1
1.096478e+005
1.690568e+001, 1.289181e+002
2
1.202264e+005
3.002416e+001, 1.706538e+002
3
1.318257e+005
6.507762e+001, 2.466628e+002
4
1.445440e+005
2.118409e+002, 4.086127e+002
5
1.584893e+005
9.930232e+002, 8.323560e+001
6
1.737801e+005
2.439377e+002, -4.29456e+002
7
1.905461e+005
7.090741e+001, -2.56670e+002
8
2.089296e+005
3.188989e+001, -1.75707e+002
9
2.290868e+005
1.771430e+001, -1.31911e+002
10
2.511886e+005
1.108183e+001, -1.04685e+002
11
2.754229e+005
7.470142e+000, -8.61066e+001
12
3.019952e+005
5.296005e+000, -7.25807e+001
13
3.311311e+005
3.891448e+000,
-6.22600e+001

22

Introduccin a

14
15
16
17
18
19
20
21
22
23
24
25

3.630781e+005
2.935634e+000, -5.41019e+001
3.981072e+005
2.259003e+000, -4.74753e+001
4.365158e+005
1.765103e+000, -4.19760e+001
4.786301e+005
1.395760e+000, -3.73338e+001
5.248075e+005
1.114178e+000, -3.33607e+001
5.754399e+005
8.961353e-001
-2.99221e+001
6.309573e+005
7.251491e-001,
-2.69188e+001
6.918310e+005
5.896754e-001,
-2.42761e+001
7.585776e+005
4.814294e-001,
-2.19362e+001
8.317638e+005
3.943372e-001,
-1.98540e+001
9.120108e+005
3.238639e-001,
-1.79933e+001
1.000000e+006
2.665689e-001,
-1.63248e+001
Tabla X: Valores de la tensin en funcin de la frecuencia.

5.2 Anlisis de distorsin (.DISTO)


El siguiente anlisis corresponde con el anlisis de distorsin. Este tipo de anlisis calcula el
armnico fijo y los armnicos de segundo y tercer orden de la seal de entrada, realizando de
esta manera una estimacin de la distorsin del circuito.
La generacin de ruido blanco por parte de las resistencias y de los dispositivos
semiconductores es simulado en este tipo de anlisis. Adems de caracterizar la distorsin
utilizando dos seales de frecuencia diferente como excitacin del circuito.
Si por ejemplo, tenemos una sea de una sola frecuencia como entrada al circuito, los
armnicos de segunda y tercera son determinados en cada punto en el circuito. Por el
contrario, si a la entrada tenemos dos seales de diferente frecuencia, el anlisis calcula los
valores de las variables del circuito tanto para la suma (f2+f1) como para la diferencia (f2-f1)
de las frecuencias de entrada.
Este tipo de anlisis se puede dar para dispositivos no lineales como: Diodos, BJT, JFET,
MOSFETs, MESFET.
NOTA: Si un modelo de dispositivo no permite el anlisis de distorsin directo es necesario
usar un anlisis de Fourier.
Las instrucciones que nos permite realizar este tipo de anlisis son:
Instrucciones
.DISTO DEC
.DISTO OCT
.DISTO LIN

ND
NO
NP

FSTART FSTOP < F2OVERF1 >


FSTART FSTOP < F2OVERF1 >
FSTART FSTOP < F2OVERF1 >

Ejemplos
.DISTO DEC

10

1kHz

100Mhz

.DISTO DEC

10

1kHz

100Mhz 0.9

23

Introduccin a

La lnea .disto hace un anlisis de distorsin de seal pequea del circuito. Como en el anlisis
.AC el resto de comandos realizan las mismas funciones, principio y fin del barrido de
frecuencia, variaciones y nmero de puntos. El parmetro opcional para este anlisis es
f2overf1, este analiza la distorsin en el circuito para una sola frecuencia de entrada F1,
especificando el barrido. Este parmetro debe ser un nmero real entre [0 - 1]; considerando
el circuito con entradas sinusoidales en dos frecuencias diferentes F1 y F2.
Dnde:
F1 es la frecuencia segn la lnea de control.
F2 es fija en una frecuencia sola.
El anlisis calcula la informacin sobre los valores de de los voltajes en los nodos y en las
frecuencias armnicas 2F1.
Cada fuente independiente en el circuito puede tener dos entradas sinusoidales para la
distorsin, las frecuencias F1 y F2. La magnitud y la fase del componente F1 son especificadas
en el argumento distof1 en la lnea de entrada de la fuente y lo mismo para para F2 (distof2).
Si el distof1/ distof2 no se determinan en la descripcin entonces la fuente no posee ninguna
entrada especifica en frecuencia. Por lo que los valores de magnitud y fase son 1 y 0
respectivamente.
Existe un subconjunto de dispositivos no lineal en NGSPICE que modela el anlisis de
distorsin. Estos son: Diodos, BJT, JFET, MOSFETs,MESFET.
Para una mayor compresin, se plantear un ejemplo: el circuito escogido para el anlisis de
distorsin utiliza un dispositivo pasivo no lineal como generador, un diodo D1 que se polariza
mediante la alimentacin de la fuente VCC.
El circuito a analizar se presenta en la figura X.

24

Introduccin a

Figura X: Esquemtico utilizado para el anlisis de distorsin.

El circuito definido en NGSPICE es el siguiente:


Analisis Distorsion
R1 2 0 1k
D1 1 2 diodo
VCC 1 3 5v ac 0.001 sin(5 0.01 1000) distof1 0.01 distof2 0.01
VCC2 3 0 0v
*ANPLITUD DISTORSION
.model diodo D is=1.0e-14

tt=0.1n cjo=2p

.control
*ANALISIS DE DISTORSION
*Instruccion: .DISTO [DEC/OCT/LIN]
<F2OVERF1>
disto dec 1 1000 1000
rusage everything > disto.ope
display > disto. var

[ND/NO/NP]

FSTART

*setplot
*setplot disto20
*print all
.endc
.end

Para poder visualizar el resultado del anlisis NSPICE dispone de diferentes formas, una de
ellas es seleccionando mediante el comando

.setplot

NUM_PLOT el armnico que

queremos visualizar. Eligiendo de esta manera entre el estudio del segundo y tercer armnico
de la seal excitadora de 1KHz de la fuente de seal VCC.
A continuacin mostramos una captura de esta representacin, figura X:

FSTOP

25

Introduccin a

Figura X: Representacin de los resultados de los armnicos.

5.3 Anlisis de punto de operacin (.OP)


Calcular el punto de trabajo en continua o tambin denominado punto de operacin, viene
especificado por la sentencia .OP en el fichero netlist. Este tipo de anlisis es el encargado de
calcula los valores de tensin en todos los nodos del circuito y los muestra en el fichero de
salida.
A continuacin se presenta un breve ejemplo, figura X:

26

Introduccin a

Figura X: Esquemtico para el anlisis de punto de operacin.


El circuito elegido para el anlisis de punto de operacin est compuesto por transistor bipolar
en configuracin de emisor comn, adems de un par de resistencias y una fuente de tensin.
El fichero netlist correspondiente para la realizacin del ejemplo es:

Analisis en punto de operacion


Q1 2 1 0 QMOD
R1 1 3 200k
R2 2 3 1k
VCC 3 0 5
.MODEL QMOD NPN
.control
*VOLCADO FICHERO .CIR ANALIZADO SINTACTICAMENTE
listing > bjt.lst
*ANALISIS PUNTO DE OPERACION}
op
rusage everything > op.ope
print V(3) V(2) V(1) > op.txt
display > op.var
.endc
.end

Tras realizar la simulacin hemos almacenado el valor de cada variable del circuito en un
fichero .txt mediante el comando print V(3) V(2) V(1) > op.txt . Los valores obtenidos son
los siguientes:
v(3) = 5.000000e+000
v(2) = 2.896719e+000
v(1) = 7.934391e-001

5.4 Anlisis de sensibilidad (.SENS)


Continuando con los tipos de anlisis, NGSPICE nos permite calcular la sensibilidad de la seal
de corriente alterna de una variable. Es decir, NGSPICE nos entrega un listado de la sensibilidad
de las tensiones o corrientes que se especifiquen a variaciones de los parmetros de cada uno
de los componentes del circuito.
Ya que el mtodo es una aproximacin numrica, los resultados pueden manifestarse cuando
se realiza el anlisis por segunda vez, o pueden fallar al mostrar la sensibilidad muy baja.

27

Introduccin a

Las instrucciones que nos permite realizar este tipo de anlisis son:
Instrucciones
.
.
.
.

SENS
SENS
SENS
SENS

OUTVAR
OUTVAR AC DEC ND FSTART FSTOP
OUTVAR AC OCT NO FSTART FSTOP
OUTVAR AC LIN NP FSTART FSTOP

Ejemplos
. SENS V( 1 ,OUT)
. SENS V(OUT) AC DEC 10 100 100k
. SENS I (VTEST)

Donde cada parmetro tiene el siguiente significado:

OUTVAR variable de circuito que corresponde con el voltaje de nodo o la corriente


de rama de la fuente de voltaje.
Fijndonos en los ejemplos, la primera instruccin es la encargada de calcular la sensibilidad
del valor de corriente continua de OUTVAR. La ltima forma calcula la sensibilidad de los
valores de corriente alterna de OUTVAR.
Los parmetros catalogados para la sensibilidad de corriente alterna son los mismos como en
un anlisis de corriente alterna (observar el anlisis .AC).
A continuacin podemos visualizar un ejemplo prctico correspondiente con el siguiente
esquemtico, figura X:

Figura X: Esquemtico utilizado para el anlisis de sensibilidad.


El circuito elegido para realizar el anlisis de sensibilidad est compuesto por una fuente
VMEAS, una resistencia y dos transistores NPN. Este tipo de anlisis se realiza en dos fases:

28

Introduccin a

1 Fase se calcula la sensibilidad en DC.


2 Fase se calcula la sensibilidad en AC.

Tras realizar las dos fases se obtiene el resultado. El resultado genera los valores de variacin
de la salida frente a cambios de la entrada. El fichero netlist correspondiente es el siguiente:

Analisis de sensibilidad
Rref 3 2 4.3k
Q1 2 2 0 QMOD
Q2 1 2 0 QMOD
VMEAS 3 1
VCC 3 0 5v
*MODELOS
.MODEL QMOD NPN BF=100 VA=50}
*EJECUCION
.control
*ANALISIS SENSIBILIDAD}
sens i(vmeas)
print all > sens.txt
rusage everything > sens.ope
.endc
.end
Una vez realizado el anlisis se obtienen los siguientes resultados. Estos resultados se han
almacenado en el archivo sens.txt. Una muestra de este archivo es:

q1:bf = 1.017945e-007
q1:br = 2.195014e-012
q1:eg = 1.980335e-012
q1:fc = 4.396343e-012
q1:is = -1.02812e+013
q1:nc = 1.099086e-012
q1:ne = 1.465448e-012
q1:nf = 3.073697e-002
q1:nkf = 4.396343e-012
q1:nr = 2.195014e-012
q1:ns = 2.198172e-012
q1:tnom = 1.572806e-004
q1:vaf = 4.396343e-014
q1:vbc_max = 2.198172e-111
q1:vbe_max = 2.198172e-111
q1:vce_max = 2.198172e-111
q1:xti = 7.327238e-013
q1_area = -1.02812e-003
q1_areab = 2.198172e-012

29

Introduccin a

q1_areac = 2.198172e-012
q1_m = -1.02812e-003
q1_temp = -5.48740e-005
q2:bf = 1.017945e-007
q2:br = 3.038355e-015
q2:eg = 2.737257e-015
q2:fc = 6.076710e-015
q2:is = 1.034977e+013
q2:nc = 1.519177e-015
q2:ne = 2.025570e-015
q2:nf = -3.09418e-002
q2:nkf = 6.076710e-015
q2:nr = 3.038355e-015
q2:ns = 3.038355e-015
q2:tnom = -1.58329e-004
q2:vaf = -1.62931e-006
q2:vbc_max = 3.038355e-114
q2:vbe_max = 3.038355e-114
q2:vce_max = 3.038355e-114
q2:xti = 1.012785e-015
q2_area = 1.034977e-003
q2_areab = 3.038355e-015
q2_areac = 3.038355e-015
q2_m = 1.034977e-003
q2_temp = 5.523972e-005
rref = -2.41466e-007
rref:bv_max = -0.000000e+000
rref_bv_max = -0.000000e+000
rref_l = -0.000000e+000
rref_m = 1.038304e-003
rref_scale = -1.03830e-003
rref_w = -0.000000e+000
vcc = 2.649248e-004
vmeas = -1.92740e-005
Como se puede observar, este anlisis nos da informacin de los parmetros de cada
componente del circuito.

NOTA: para ms informacin sobre cada parmetro visitar el manual de NGSPCE


http://ngspice.sourceforge.net/docs/ngspice-manual.pdf

30

Introduccin a

5.5 Anlisis transitorio .TRAN


El anlisis transitorio permite estudiar la evolucin en el tiempo de las variables del circuito
independiente de la excitacin que se utilice. Para poder realizar este tipo de anlisis, SPICE
realiza primero un anlisis DC para calcular el punto de operacin del circuito y determina el
modelo linealizado de todos los dispositivos no-lineales del circuito. Para finalizar, calcula las
variables de salida del circuito en funcin del tiempo dentro del intervalo marcado.
La instruccin que nos permite realizar este tipo de anlisis es:
Instrucciones
.TRAN TSTEP TSTOP <TSTART <TMAX>> <UIC >

Ejemplos
.TRAN 1ns
.TRAN 1ns
.TRAN 10ns

100ns
1000ns 500ns
1us

Donde cada parmetro se especifica de la siguiente manera:

tstep es el incremento de planificacin para la salida. Para el empleo con el


postprocesador, tstep es el incremento sugerido.

tstop es el tiempo final, y tstart es el tiempo inicial. Si tstart se omite, NGSPICE asume
que es cero. En el intervalo <0, tstop>, el circuito alcanzar un estado estable, pero
ningunas salidas son almacenadas. Por el contrario, si marcamos un intervalo <tstart,
tstop>, el circuito es analizado y las salidas son almacenadas.

tmax es el tiempo mximo, tmax es til cuando uno desea garantizar un intervalo
calculado que es ms pequeo que el incremento tstep.

uic, indica que se usen las condiciones iniciales indicadas con la sentencia .IC para los
componentes del circuito. Esto en ocasiones facilita el clculo del punto de operacin
necesario para los anlisis de AC y de transitorio.

NOTA: lnea de control de .ic para su interpretacin cuando uic no es especificado.


Instrucciones

Ejemplos

31

Introduccin a

.IC V(NODMUN)=VAL V(NODNUM)=VAL

.IC V(11)=5 V(4)=5 V(2)=2.2

La lnea .IC es para poner condiciones transitorias iniciales. Esto tiene dos interpretaciones
diferentes, dependiendo si el parmetro uic es especificado sobre la lnea de control de .tran y
cuando no.
Las dos interpretaciones de esta lnea son as:
1. Cuando el parmetro uic es especificado sobre la lnea .tran, entonces los voltajes
especificados sobre la lnea de control de .ic son usados para calcular el condensador,
el diodo, BJT, JFET, y MOSFET condiciones iniciales. Esto es equivalente a la
especificacin del (ic = ...) el parmetro sobre cada lnea de dispositivo.

2. Cuando el parmetro uic no es especificado sobre la lnea de control de .tran, se


realiza antes del anlisis transitorio un anlisis de la tendencia de dc. En este caso,
fuerzan los voltajes de nodo especificados sobre la lnea de control de .ic a los valores
deseados iniciales durante la solucin de tendencia. Esto es el mtodo adecuado ya
que esto permite a NGSPICE para calcular una solucin constante dc.

5.6 Anlisis de funcin de transferencia (.DC)


Forma general:

.dc srcname vstart vstop vincr [src2 start2 stop2 incr2]

Define la curva de transferencia de la fuente (variable independiente).


srcname define la fuente a analizar

vstart lmite inferior de los valores del barrido

vstop lmite superior de los valores del barrido


vincr incremento de los valores del barrido

32

Introduccin a

5.7 Anlisis de ruido (.NOISE)


Forma general:

.noise v (output <,ref>) src (dec|lin|oct) pts fstart


fstop +<pts_per_summary>

Ejemplos:

.noise v(5) VIN dec 10 1kHZ 100Mhz


.noise v (5,3) V1 oct 8 1.0 1.0e6 1

output define el nodo sobre el que se quiere calcular el ruido total de salida

ref (opcional) su valor se resta al voltaje del ruido de salida. Por defecto se asume que
ref es tierra.

El ruido de entrada est referido a la fuente independiente especificada mediante src

pts, fstart y fstop son parmetros del tipo .ac y especifican el rango de frecuencias que
se desea plotear.

pts_per_summary es un entero opcional. Cuando se especifica, define cada cuantos


puntos de frecuencia los generadores de ruido contribuyen.
Se puede especificar si se prefiere variacin en la representacin por dcadas, por octavas o
lineal con dec, oct o lin respectivamente.
Este tipo de anlisis produce dos representaciones.
-

Curvas de densidad espectral (en V2/Hz o A2/Hz)

Ruido total integrado en el rango de frecuencias especificado (en V2 o A2)

EJEMPLO:
Fuente: http://vision.lakeheadu.ca/eng4136/spice/noise_analysis.html
El circuito implementado para el ejemplo de uso es el siguiente:

33

Introduccin a

Este es un circuito de switch de RF. En funcin de la polarizacin del diodo la seal de radio
frecuencia pasa o no pasa. Para implementarlo en NGSpice en primer lugar se han definido los
nodos de la siguiente manera.

La descripcin es la siguiente:

*** Circuito switch de RF ***


*____________COMPONENTES________________________________
_____
* Fuente de entrada
vs 1 0 dc 0V ac 1V sin(0V 1V 100MegHz 20ns 0)

34

Introduccin a

Rs in 1 50ohm
* Switch
Ci in 4 1.6nF
Rb 4 3 2.1k
Lc1 3 2 100uH
D1 4 50 1N4148
vmeter 50 5 dc 0
Lc2 5 0 100uH
cout 5 out 1.6n
* Carga
Rload out 0 1k
* Polarizacin DC
vcc 2 0 5V
*___________COMANDOS____________________________________
_____
.control
*Anlisis tipo noise
noise v(out) vs dec 10 1MegHz 100MegHz
*Representacin del valor del ruido total integrado
print inoise_total onoise_total
*Representacin de la densidad espectral de potencia
setplot noise1
plot

inoise_spectrum

onoise_spectrum

.endc
*____________MODELOS____________________________________
_____
*SRC=1N4148;1N4148;Diodes;Si;100V

150mA

4.0ns

35

Introduccin a

.MODEL 1N4148 D

( IS=6.2229E-9

+ N=1.9224
+ RS=.33636
+ IKF=42.843E-3
+ CJO=764.38E-15
+ M=.1001
+ VJ=9.9900
+ ISR=11.526E-9
+ NR=4.9950
+ BV=100.14
+ IBV=.25951
+ TT=2.
.end

La densidad espectral de potencia obtenida se representa a continuacin, en verde la de


entrada, y en rojo la de salida. Las unidades son V2/Hz.

Figura: Densidad espectral de ruido


El ruido total integrado es:
-

Entrada: 1,77634 10-10 V2

36

Introduccin a

Salida: 1,039302 10-10 V2

ngspice 7 -> noise.txt


Circuit: *** circuito switch de rf ***
Warning: Model issue on line 30 : .model 1n4148 d (
is=6.2229e-9 n=1.9224 rs=.33636 ikf=42 ...
unrecognized parameter (isr) - ignored
unrecognized parameter (nr) - ignored
Doing analysis at TEMP = 27.000000 and TNOM =
27.000000
No. of Data Rows : 21
No. of Data Rows : 1
inoise_total = 1.177634e-010
onoise_total = 1.039302e-010

37

Introduccin a

5.8 Anlisis de ceros y polos (.PZ)


Forma general:

. pz node1 node2 node3 node4 cur pol


. pz node1 node2 node3 node4 cur zer
. pz node1 node2 node3 node4 cur pz
. pz node1 node2 node3 node4 vol pol
. pz node1 node2 node3 node4 vol zer
. pz node1 node2 node3 node4 vol pz

Ejemplos:

. pz 1 0 3 0 cur pol
. pz 2 3 5 0 vol zer
. pz 4 1 4 1 cur pz

vol especifica de que desea la funcin de transferencia en voltaje


cur especifica de que desea la funcin de transferencia en corriente
pol especifica en anlisis para polos
zer especifica el anlisis para ceros
pz especifica el anlisis para ambos. Se especifica esta caracterstica principalmente
por si hay una no convergencia a la hora de encontrar polos o ceros. De esta manera
se puede buscar el otro.
node1 y node2 especifican los nodos de entrada
node3 y node4 los nodos de salida
Por consiguiente hay completa libertad respecto a los puertos de entrada y salida y el tipo
de funcin de transferencia.

38

Introduccin a

Figura: Respuesta en frecuencia del filtro

Filtro en T pasivo
V1 1 0 12 AC 1
C1 1 2 1u
C2 2 3 1u
R3 2 0 1k
R4 1 3 1k
.control
*Anlisis polo-cero
pz 1 0 3 0 vol pz
print all > pzvalor.txt
.endc
.end

39

Introduccin a

En un pzvalor.txt se almacena el resultado obtenido:

pole(1) = -2.61803e+003,0.000000e+000
pole(2) = -3.81966e+002,0.000000e+000
zero(1) = -1.00000e+003,0.000000e+000
zero(2) = -1.00000e+003,0.000000e+000

5.9 Anlisis de funcin de transferencia (.TZ)


Forma general:

.tf outvar insrc

Ejemplos:

.tf v(5,3)

VIN

.tf i(VLOAD)

VIN

Se deben definir la entrada y salida en pequea seal para el anlisis DC.


insrc define la fuente

outvar define sobre que nodo se quiere medir el voltaje de salida

Ngspice devuelve el valor de la funcin de transferencia (salida/entrada), la resistencia de


entrada y la resistencia de salida.
Hemos implementado este ejemplo con un divisor de tensin:
DIVISOR DE TENSIN
V1 IN 0 dc 5
R1 IN 1 2K
R2 1 2 2K
V2 2 OUT DC 0
R3 OUT 0 2K
*#destroy all

40

Introduccin a

*#run
*#print all
.tf v(out) V1
.end

Obteniendo el resultado:
ngspice 6 -> trans.txt
Circuit: divisor de tensin
Doing analysis at TEMP = 27.000000 and TNOM = 27.000000
No. of Data Rows : 1
transfer_function = 3.333333e-001
output_impedance_at_v(out) = 1.333333e+003
v1#input_impedance = 6.000000e+003

41

Introduccin a

6 SUBCIRCUITOS

Un subcircuito se define como si en definitiva se tratara de una "caja negra" que realice una
determinada funcin que previamente se conoce, y con un nmero determinado de nodos de
conexin. Es decir, dentro de dicha "caja negra" se describe un circuito con una funcionalidad
caracterstica, el cual puede ser llamado como si de un dispositivo ms se tratara para poder
utilizar en el resto del circuito.
La principal ventaja que incorpora la creacin de subcircuitos es la de simplificar el desarrollo
de circuitos cada vez ms complejos en los que se hace uso de un patrn definido dos o ms
veces.

6.1 Definicin de un subcircuito


Para definir el subcircuito se utiliza el comando .SUBCKT en el fichero de entrada, tal y como
aparece descrito a continuacin:
.SUBCKT NOMBRE N1 N2 ... Ni (conjunto de elementos y/o otros subcircuitos)
* Descripcin del subcircuito *
.ENDS NOMBRE
Es importante que el campo NOMBRE d una idea clara de la funcionalidad del subcircuito,
para que una vez quiera instanciarse se recuerde fcilmente. Seguidamente se observa que se
definen tantos nodos (N1, N2, ..., Ni) como se requieran.
El programa inserta el grupo de elementos definidos en el lugar donde el subcircuito es
referenciado o invocado

42

Introduccin a

6.2 Llamada a un subcircuito


La forma de invocar o llamar a un subcircuito ya descrito es muy sencilla, ya que se debe tratar
como si de un elemento ms de SPICE se tratara. Es decir, igual que para una resistencia se
hace uso de la letra "R", o para un condensador de la letra "C", para el caso de un subcircuito
se hace uso de la letra "X", seguida del nombre que se le quiera dar (segn el ejemplo inferior
"zzzz"). A continuacin se definen los nodos respecto al circuito principal (en este caso M 1, M2,
... Mi) y por ltimo se especifica en el campo "NOMBRE" el mismo con el que se haba definido
el subcircuito en el punto anterior.
Xzzzz M1 M2 ... Mi NOMBRE
Llegados aqu es importante tener en cuenta el orden en el que se definen los nodos cuando se
instancia a un subcircuito. Segn la imagen inferior se observa que se define el subcircuito
"EJEMPLO" con nodos N1, N2 y N3, y una vez se quiere llamar al mismo con los nodos A, B y C la
conexin de cada uno de ellos es segn marcan las flechas azules.

Si por el contrario cuando se instancia el orden de definir los nodos fuera A, C y B; realmente
se estara conectando el nodo C como si de N2 se tratara, y el nodo B como si fuera N3.

Se hace vital por lo tanto conocer con exactitud antes de instanciar un subcircuito la
funcionalidad de cada uno de los nodos y cmo estos deben estar conectados con el resto del
circuito.

43

Introduccin a

6.3 EJEMPLO 1. Divisor resistivo


En este primer ejemplo se muestra cmo disear un divisor resistivo con ratio de divisin 3
como si de un subcircuito se tratara.
1

10 K

5K

Para ello en primer lugar sera necesario definir el subcircuito "DIVISOR_TENSION" con nodos
1, 2 y 3; tal y como aparece representado en la figura superior.:
.SUBCKT DIVISOR_TENSION 1 2 3
R1 1 2 10k
R2 2 3 5K
.ENDS DIVISOR_TENSION
Una vez definido el subcircuito, ste podra instanciarse en el fichero de entrada de la
siguiente forma, y el conexionado respecto al circuito general quedara segn la imagen
inferior:
Xdivisor1 N5 N6 0 DIVISOR_TENSION

Como se observa, el nodo 1 del subcircuito se correspondera con N5, el nodo 2 del subcircuito
con N6 y el nodo 3 del subcircuito con 0 (GND)
.

44

Introduccin a

6.4 EJEMPLO 2: INVERSOR CMOS


El uso de subcircuitos simplifica la construccin de circuitos cada vez ms complejos, tal y
como se ha indicado ya.
Supongamos que tenemos el siguiente inversor CMOS
(Complementary MOS). Este tipo de circuito se compone de un PMOS y un NMOS

La descripcin del circuito en un fichero netlist podra ser la siguiente:


*Inversor CMOS
MP1 OUT IN VDD VDD

MOSFET_TIPO_P W=32U L=1U

MN1 OUT IN GND GND

MOSFET_TIPO_N

W=16U L=1U

.MODEL MOSFET_TIPO_N NMOS


.MODEL MOSFET_TIPO_N PMOS
.END
El circuito podra ser visto denuevo como una caja negra, con una entrada IN, una salida OUT,
una entrada de tensin VDD y la masa del circuito GND, tal y como aparece representado en la
siguiente figura.
VDD

IN

INVERSOR CMOS

GND

OUT

45

Introduccin a

Se podra describir por lo tanto el circuito anterior como si de un subcircuito se tratara de la


siguiente forma:
. SUBCKT INVERSOR_CMOS IN OUT VDD GND
MP1 OUT IN VDD VDD

MOSFET_TIPO_P W=32U L=1U

MN1 OUT IN GND GND

MOSFET_TIPO_N

W=16U L=1U

.MODEL MOSFET_TIPO_N NMOS


.MODEL MOSFET_TIPO_N PMOS
.ENDS INVERSOR_CMOS
En el caso de que un circuito ms complejo se requiriera hacer uso de varios inversiores CMOS,
simplemente sera necesario hacer uso del subcircuito "INVERSOR_CMOS" diseado de la
siguiente forma:
Xinvejemplo1 A B VIN 0 INVERSOR_CMOS
La entrada A se correspondera con el nodo IN del subcircuito, la salida B con el nodo OUT del
subcircuito , VIN con el nodo VDD del subcircuito y 0 por el nodo GND del subcircuito. SPICE
automticamente introducira el circuito en estos nodos y modelara el inversor CMOS como
dos MOSFET en serie tal y como ya se haba descrito.

6.5 Consideraciones
En lo que al diseo de subcircuitos se refiere, es necesario tener en cuenta algunas
consideraciones relevantes:

No hay lmite a la complejidad o tamao de un subcircuito.


Cada vez que se invoca un subcircuito, SPICE inserta en el lugar de las lneas
llamada las lneas correspondientes a dicho sub-circuito.
Dentro de la definicin del subcircuito pueden existir otros sub-circuitos y estos a
vez pueden contener otros.
Los nudos definidos en un subcircuito tienen carcter local, salvo el nudo 0 que
global.
Dentro de la definicin del subcircuito no se pueden usar lneas de control y s
modelo

de
su
es
de

46

Introduccin a

7 REFERENCIAS
http://ngspice.sourceforge.net/
http://jjc.hydrus.net/jjc/technical/ee/documents/spicehowto.pdf
http://www.allaboutcircuits.com/vol_5/chpt_7/8.html
http://littletux.homelinux.org/knowhow.php?article=ngspice/ar01s03
http://www.seas.upenn.edu/~jan/spice/spice.overview.html

47

Introduccin a

8 LISTA DE CAMBIOS
VERSION

FECHA

AUTOR

19/02/2013

Fernando Vicente Guijalba

1.0

28/02/2013

Daniel Garrido Ordez

1.1

05/03/2013

Daniel Garrido Ordez

1.2

13/02/2014

Rubn Crespo Cano

1.3

10/03/2015

1.4

15/02/2016

Mara Ortega Martnez


Gema Bald Llorca
Aitor Morales Hernndez

DESCRIPCION
Estructura
general
del
documento:
Introduccin, Primeros Pasos, Anlisis Bsico y
Referencias.
Captulo 4 Subcircuitos. Ejemplo divisor
resistivo.
Captulo 2.2. Descripcin bsica circuito netlist
Apartado 4.2 Se aade ejemplo subcircuito
inversor CMOS
Tabla de lista de Cambios.
Mejora del punto uno y dos. Aadidos los
siguientes apartados: modos de ejecucin,
ejemplos de UI, biblioteca compartida, uso
dinmico y paralelismo.
Reedicin del captulo 5. Anlisis Bsico
Mejora del Captulo 6 (Subcircuitos)

You might also like