Tutorial SPICE

Propaganda
Tutorial do Simulador SPICE
Microeletrônica
Tutorial do Simulador SPICE
Prof. Dr. Fabian Vargas
Prof. Msc. Juliano Benfica
Marlon Moraes
Marcelo Mallmann
Setembro / 2007
Introdução
Este tutorial tem como objetivo principal fazer uma breve e sucinta introdução à ferramenta de simulação de circuitos SPICE aos alunos da disciplina
de Microeletrônica do curso de Engenharia Elétrica da PUCRS. Além do
contato inicial com ambiente de simulação SPICE, abordaremos também os
princípios da sintaxe de descrição de circuitos juntamente com os comandos
básicos para simulações de componentes semicondutores, foco desta disciplina.
O que é o SPICE?
O SPICE é um software de simulação que pode ser utilizado para analisar o comportamento elétrico de um circuito contendo uma grande variedade
de componentes, como por exemplo, transistores, diodos, resistores, capacitores e etc. Esta poderosa ferramenta possibilita que o usuário estime com bastante precisão, através de vários tipos de simulações, o comportamento de circuitos elétricos dos mais variados tamanhos e níveis de complexidade.
Para que o SPICE possa realizar tais estimativas, via simulação, o
usuário deve fornecer ao software os seguintes dados:
a) Descrição do circuito: uma descrição completa do circuito a ser
analisado; seus elementos, suas fontes de sinais e de polarização
e principalmente, como estes dispositivos estão interligados no
circuito. Também é necessário o fornecimento dos parâmetros
modelares empregados para a descrição comportamental dos
componentes ativos a serem simulados.
b) Especificação de análise: uma definição dos tipos de análise, por
exemplo, cc, transiente, pequenos sinais, etc..
Prof. Fabian Vargas. & Prof. Juliano Benfica
1/11
Tutorial do Simulador SPICE
Microeletrônica
c) Especificação dos resultados: uma definição do tipo de resultado
esperado com a simulação, por exemplo, uma tabela contendo
correntes e tensões cc, um gráfico CTT de uma porta-lógica etc..
Neste tutorial abordaremos, de uma forma bastante breve, como essas
informações devem ser apresentadas ao SPICE, porém antes devemos
mencionar que todas essas informações são passadas ao SPICE em forma de
seqüência de linhas de descrição armazenadas em um arquivo chamado de
arquivo de entrada (SPICE input file) cuja sua extensão usualmente é ‘*.cir’ ou
‘*.sp’ .
A composição do arquivo de entrada é bastante simples, entretanto
algumas regras devem ser seguidas. É o caso da primeira linha, que é
reservada para a identificação do título da simulação. A última linha, do arquivo
de entrada, também é reservada para o comando ‘.END’ que é utilizado para a
sinalização do fim do arquivo para o SPICE.
A ordem das linhas de comandos e definições restantes é totalmente arbitrária e fica a critério do usuário, embora seja recomendável o uso de comentários ao longo do arquivo para facilitar a sua posterior interpretação. As
linhas de comentário são identificadas pela presença do asterisco (*) como
primeiro caractere.
Descrição do Circuito
Cada elemento no circuito é especificado por uma declaração de
elemento (element statement) contendo o seu nome, os nós do circuito aos
quais ele está conectado e o(s) valor(es) do(s) seu(s) parâmetro(s) elétrico(s).
O nome do elemento pode conter até oito caracteres alfanuméricos, sendo a
primeira letra a indicação do seu tipo (por exemplo, R para resistor).
Os nós do circuito são especificados por meio de números inteiros nãonegativos, não sendo necessária a numeração seqüencial.
O nó de referência (terra) deve obrigatoriamente ser numerado com o
número zero. Cada nó deve possuir, pelo menos, duas conexões, exceto os
nós de substrato dos MOSFETs e as linhas de transmissão sem terminação.
Os formatos de especificações básicas para componentes são apresentados
na Tabela 1, na qual:
Prof. Fabian Vargas. & Prof. Juliano Benfica
2/11
Tutorial do Simulador SPICE
Microeletrônica
Componentes
Nome
Nós
Valores
Resistor
Rxxxxxxx
N+
N- VALOR
Capacitor
Cxxxxxxx
N+
N- VALOR
Indutor
Ixxxxxxx
N+
N- VALOR
GCCT(VCCS)
Gxxxxxxx
N+
N- NC+ NC- VALOR
GTCT(VCVS)
Exxxxxxx
N+
N- NC+ NC- VALOR
GCCC(CCCS)
Fxxxxxxx
N+
N- VNOM VALOR
GTCC(CCVS)
Hxxxxxxx
N+
N- VNOM VALOR
Fonte de Tensão
Vxxxxxxx
N+
N- QUAL
Fonte de Corrente
Ixxxxxxx
N+
N- QUAL
Tabela 1 – Sintaxes para declarações de elementos.
1. O nome do componente começa com uma letra específica (como
indicado na Tabela 1) e possui de um a oito caracteres alfanuméricos.
2. N+ e N- indicam os nós de ligação no circuito, o primeiro sendo o
nó positivo (se essa informação for necessária). É importante
observar que a corrente de uma fonte de corrente flui do nó N+
para o nó N-.
3. VALOR está nas unidades básicas de ohms, farads, henries, A/V,
V/V, A/A, V/A, respectivamente para os sete componentes listados anteriormente. Por conveniência, prefixos de unidades podem
ser usados, conforme indicado na Tabela 2.
Sufixo indicativo
Prefixo métrico
Fator multiplicador
12
T
tera
10
9
G
giga
10
6
Meg
mega
10
3
K
quilo
10
-3
M
mili
10
-6
U
micro
10
-9
N
nano
10
-12
P
pico
10
-15
F
fento
10
Tabela 2 – Abreviaturas para fatores de escala reconhecidos pelo SPICE.
4. NC+ e NC- são nós aos quais a tensão de controle está ligada.
5. VNOM é a fonte de tensão através da qual a corrente de controle
flui.
6. QUAL é o conjunto de atributos para a descrição das fontes. A
Tabela 3 apresenta o conjunto de atribuições para algumas fontes
importantes.
Prof. Fabian Vargas. & Prof. Juliano Benfica
3/11
Tutorial do Simulador SPICE
Fonte
DC
Senoidal
Quadrada
Microeletrônica
QUAL
DC valor_dc
sin(offset amplitude freqüência temp_inicio)
pulse(dc_1 dc_2 inicio_pulso tmp_sub tmp_desc largura_pulso periodo)
Tabela 3 – Atributos de descrição de fontes.
7. Uma fonte de tensão com valor zero é usada como ponto de
medição de corrente.
Como exemplo, um resistor de 2,2MΩ, com o nome RB2, conectado entre os nós 4 e 5, pode ser descrito ao SPICE pela seguinte declaração de elemento (note que é usado ponto e MEG):
RB2
4
5
2.2MEG
Como outro exemplo, um capacitor de 1,0µF (CC1) conectado entre os
nós 3 e 4 e tendo uma tensão inicial de 5V pode ser descrito pela seguinte declaração:
CC1
3
4
1.0M
IC=5
Como exemplo final, uma fonte de tensão dependente controlada por
tensão (gerador de tensão controlado por tensão) e com fator de controle 105
V/V (ganho), pode ser descrito como:
EOUT
3
0
2
1
100K
Onde EOUT indica o GTCT, no qual o seu terminal de saída está ligado
ao nó 3, sua referência ao no de terra (nó 0) e os seus terminais de entrada
ligados aos nós 2 e 1.
Descrever um dispositivo semicondutor no SPICE exige, além da declaração do elemento, a declaração de modelo do elemento (model statement).
A Tabela 4 apresenta a sintaxe das declarações de elemento para diodos, o
TJBs e os MOSFETs.
Componentes
Nome
Nós e Modelos
Diodo
Dxxxxxxx
N+
NMNOME
TJB
Qxxxxxxx
NC
NB
NE
NS
MNOME
MOSFET
Mxxxxxxx
ND
NG
NS
NB
MNOME
Tabela 4 – Declaração de elemento para dispositivos semicondutores.
Prof. Fabian Vargas. & Prof. Juliano Benfica
AREA
AREA
L W
4/11
Tutorial do Simulador SPICE
Microeletrônica
1. A declaração inicia-se com o nome do dispositivo, do qual a primeira letra indica o tipo de dispositivo.
2. Para um diodo, N+ é o nó no qual se liga o anodo e N- é o nó ao
qual se liga o catodo.
3. Para um TJB, NC, NB, NE e NS são respectivamente os nós do
circuito aos quais se ligam o coletor, a base, o emissor e o substrato.
4. Para um MOSFET, ND, NG, NS e NB são respectivamente os nós
do circuito aos quais se ligam o dreno, o gate, o source e o substrato.
5. MNOME indica o nome do modelo para o dispositivo em particular. Os valores dos parâmetros do modelo são especificados separadamente na declaração do modelo (abordaremos esta declaração a seguir).
6. AREA é um fator de escala de área (opcional): é o número de diodos ou TBJs do tipo em questão que devem ser conectados em
paralelo para formar o dispositivo desejado.
7. L e W indicam o comprimento e a largura do canal do MOSFET
(em metros).
Notas: O nó substrato em geral é conectado na referência de terra (nó 0) para
transistores NMOS e o na alimentação (nó Vcc) para transistores PMOS.
Finalmente, a Tabela 5 apresenta as sintaxes das declarações de modelos para diodos, TBJs e MOSFETs.
Componentes
Declaração de Modelo
Diodo
.Model
MNOME D(IS=... n=... etc.)
TBJ
.Model
MNOME NPN (ou PNP) (IS=... βF=... etc.)
MOSFET
.Model
MNOME NMOS (ou PMOS) (kP=... Vt0=... etc.)
Tabela 5 – Sintaxe para as declarações de modelos.
Onde MNOME novamente refere-se ao nome do modelo de elemento.
Cada tipo de dispositivo semicondutor, por exemplo, deve possuir uma
declaração de modelo de elemento especificando os valores dos seus
parâmetros de fabricação.
Também é possível, para a descrição e simulação de circuitos muito
grandes e/ou complexos, o uso da estrutura de sub-circuitos. A Tabela 6
Prof. Fabian Vargas. & Prof. Juliano Benfica
5/11
Tutorial do Simulador SPICE
Microeletrônica
apresenta a sintaxe de declaração e adição destas estruturas no arquivo de
entrada:
Declaração
.subckt nome_sub-circuito nó_1 nó_2 ... nó_n
R..
L...
(descrição do sub-circuito)
C...
.ends nome_sub-circuito
Adição
X-------- nó_1 nó_2 ... nó_n nome_sub-circuito
Tabela 6 – Sintaxe para as declaração e adição sub-circuitos.
Os nós do sub-circuito (nó_1 nó_2 ... nó_n) representam os nós que
poderão ser acessados quando o sub-circuito for adicionado, estes nós
obrigatoriamente devem ser descritos na mesma ordem definida no comando
.subckt, sendo que os sinais ou nós internos aos sub-circuitos sem acesso
externo não podem ser observados na simulação.
Especificando os Tipos de Análises
Uma vez descrito o circuito o usuário deve então especificar, também no
arquivo de entrada, o tipo de análise desejada para a simulação. Existem
basicamente três tipos de análises: ponto de operação cc (DC operating
ponint), resposta ca em freqüência (AC frequency response) e resposta
transiente (transient response). A Tabela 7 apresenta a sintaxe dessas
análises, juntamente com o comando de varredura cc (DC sweep command).
Note que cada um destes comandos inicia com um ponto (.), este caractere
informa ao SPICE que a linha se trata de um comando solicitando uma ação
específica.
Análise solicitada
Ponto de operação
Varredura cc
Resposta ca em freqüência
Resposta transiente
Comando SPICE
.OP
.DC nome_da_fonte valor_inicial valor_final valor_do_passo
.AC DEC pontos_por_decada freq_inicial freq_final
.AC OCT pontos_por_oitava freq_inicial freq_final
.AC LIN total_de_pontos freq_inicial freq_final
.TRAN passo_de_tempo tempo_final [tempo_sem_imprimir
tamanho_máximo_do_passo] [UIC]
Tabela 7 – Principais comandos de análise.
Prof. Fabian Vargas. & Prof. Juliano Benfica
6/11
Tutorial do Simulador SPICE
Microeletrônica
O comando ponto de operação cc (.OP), calcula o comportamento cc do
circuito, apresentando um arquivo com todas as tensões nodais, correntes nos
ramos e as dissipações de potência das fontes.
Embora a curva característica do circuito possa ser determinada
executando algumas análises de operação cc, alterando-se o valor da fonte cc
de entrada, o SPICE apresenta uma alternativa bastante eficiente e confiável, o
comando de varredura cc (.DC) executa essa tarefa automaticamente. A
sintaxe desse comando inclui o nome da fonte cc de entrada que deve ser
variada (nome_da_fonte), o valor em que ela começa (valor_inicial), o
incremento ou decremento em sem valor (valor_do_passo) e o valor final a ser
atingido (valor_final).
Com o comando de resposta ca em frequência (.AC), o SPICE executa
uma análise em freqüência para pequenos sinais (resposta linear). Sendo
calculado automaticamente o ponto de operação cc, por meio do qual a
ferramenta define os valores dos parâmetros a serem empregados nos
circuitos de modelos equivalentes para pequenos sinais. O circuito linear
equivalente completo para pequenos sinais é então analisado para freqüências
iniciando
em
(freq_inicial)
e
terminando
em
(freq_final).
Os
pontos
intermediários são espaçados logaritmicamente, ou por década (DEC) ou por
oitava (OCT). O número de pontos em um dado intervalo de freqüências é
especificado
pelo
usuário
(pontos_por_decada
ou
pontos_por_oitava).
Podemos também especificar uma varredura linear em freqüência (LIN) e o
número de pontos calculados (total_de_pontos). Usualmente, utiliza-se a
varredura linear em freqüência quando a faixa de freqüências de interesse é
estreita e a varredura logarítmica quando a faixa de freqüências de interesse é
larga.
Finalmente, com o comando de resposta transiente (.TRAN), o SPICE
calcula as variáveis de circuito em função do tempo. O intervalo de tempo
inicia-se em t=0 e prossegue a passos lineares (passo_de_tempo) até que
tempo_final seja atingido. Embora toda a análise transiente inicie-se em t=0,
pode-se iniciar a impressão ou plotagem dos resultados de saída após um
determinado intervalo de tempo especificado (tempo_sem_imprimir). Essa é
uma forma conveniente de pular a etapa transiente inicial de uma rede e de
visualizar apenas sua resposta em estado estável.
Prof. Fabian Vargas. & Prof. Juliano Benfica
7/11
Tutorial do Simulador SPICE
Microeletrônica
Antes do início de qualquer análise transiente, o SPICE precisa determinar os valores iniciais das variáveis de circuito, usualmente a partir de uma
análise cc. Se o parâmetro opcional UIC (use initial conditions) for especificado
no comando .TRAN, o SPICE não realizará a análise cc e usará apenas
informações contida no parâmetro “IC=” que acompanha cada declaração de
capacitor ou indutor. Entretanto, todos aqueles elementos que não contiverem
uma especificação “IC=” definida serão considerados com condição inicial nula.
Especificando os Resultados
Simulações de circuitos produzem uma enorme quantidade de dados, o
que por vezes é bastante inconveniente e desnecessário. O SPICE possui
ferramentas de apresentação de resultados que possibilitam ao usuário
especificar quais variáveis do circuito ele deseja visualizar e qual o melhor formato de apresentação para estas informações. A Tabela 8 apresenta a sintaxe
dos formatos de impressão e plotagem dos dados no SPICE.
Saída solicitada
Imprima os pontos calculados
Comando SPICE
.PRINT DC variáveis_saída
.PRINT AC variáveis_saída
.PRINT TRAN variáveis_saída
.PLOT DC variáveis_saída [limite_inferior; limite_superior]
Plote os pontos calculados
.PLOT AC variáveis_saída [limite_inferior; limite_superior]
.PLOT TRAN variáveis_saída [limite_inferior; limite_superior]
Tabela 8 – Principais comandos de análise.
Notas:
1. variáveis_saída no SPICE podem ser quaisquer tensões nodais V(nó), tensões
diferenciais entre dois nós V(nó1,nó2) ou correntes através de uma fonte de tensão
I(Vnome).
2. variáveis_saída em ca também podem ser:
Vr,Ir: parte real
Vi,Ii: parte imaginária
Vm,Im: magnitude
Vp,Ip: fase
Vdb,Idb: em decibéis
O comando .PRINT imprime as variáveis desejadas na forma tabular
como função da variável independente associada a cada tipo de análise. Com
ele, precisamos especificar o tipo de análise (DC, AC, TRAN) em questão. A
seguir é especificado uma lista de variáveis (tensões ou correntes, indicadas
por variáveis_saída).
Prof. Fabian Vargas. & Prof. Juliano Benfica
8/11
Tutorial do Simulador SPICE
Microeletrônica
Geralmente, uma variável do tipo tensão é especificada como a tensão
diferencial entre dois nós na forma V(nó1,nó2), entretanto quando um dos nós
é omitido, assume-se o nó do terra (0) como referência.
O SPICE permite que apenas as correntes fluindo através de fontes independentes de tensão sejam observadas. Tais correntes são especificadas na
forma I(Vnome), em que Vnome é o nome da fonte independente de tensão
através da qual a corrente está fluindo. Se desejarmos observar uma corrente
de um ramo no qual não há uma fonte de tensão, devemos adicionar uma fonte
de tensão nula (DC) em série com o ramo e solicitar que a corrente através
desta fonte seja impressa ou plotada.
Os resultados de uma análise do tipo TRAN são as tensões nodais e as
correntes nos ramos calculadas em função do tempo.
As ferramentas de plotagem do SPICE geram gráficos com os pontos
conectados por linhas em função da variável independente. As sintaxes para o
comando de plotagem são idênticas àquelas do comando de impressão.
Exemplos
Nesta seção são apresentados alguns exemplos de fixação sobre a
sintaxe e o uso do SPICE como ferramenta para descrição e simulação de
circuitos elétricos.
Arquivo de Entrada
Circuito Resistivo
Circuito Equivalente
** declaração das fontes.
vcc 1 0 dc 7.5
** descrição do circuito.
r1 1 2 1k
r2 2 0 560
r3 2 3 470
r4 3 0 470
** comandos
.op
R1
1
R3
2
3
1k
470
Vcc
R2
7.5
R4
560
0
0
470
0
.end
Prof. Fabian Vargas. & Prof. Juliano Benfica
9/11
Tutorial do Simulador SPICE
Microeletrônica
Circuito RC Diferenciador
C1
** descrição de fontes
vin 1 0 pulse(0 10 0 1n 1n 0.5 1)
1
** descrição do circuito
r1 1 2 1k
c1 2 0 100m
2
10m
Vin
VOFF = 0
VAMPL = 1
FREQ = 10
** comandos
.tran 0.1m 1000 [990]
.print tran v(1) v(2)
R1
1k
0
0
.end
Circuito RC Diferenciador e Integrador
** declaração das fontes.
vin 1 0 pulse(0 10 0 0 0 1m 2m)
C1
** descrição do circuito.
c1 1 2 100p
r1 2 0 47k
R2
1
2
3
100p
r2 1 3 47k
c2 3 0 100n
** comandos
.tran 0.001m 50m
.print tran v(1) v(2) v(3)
47k
V3
V1 = 0
V2 = 10
TD = 0
TR = 0
TF = 0
PW = 1m
PER = 2m
R1
C2
47k
0
100n
0
0
.end
Titulo: Sub-circuitos e Transistores MOS
.MODEL nmos nmos level=2 vto=.82 tox=2e-08 nsub=2.5e+16 uo=690
.MODEL pmos pmos level=2 vto=-1.4 tox=2e-08 nsub=2.5e+16 uo=231
vcc vcc 0 dc 3.3
vin 1 0 pulse(3.3 0 0 0.1n 0.1n 10n 20n)
VCC
** descrição do sub-circuito.
.subckt inv out in vcc
M1 out in vcc vcc pmos l=1e-06 w=2u ad=20p as=20p
M2 out in 0
0 nmos l=1u
w=2u pd=16u ps=16u ad=8p as=8p
.ends inv
G
S
M1
D
IN
OUT
** descrição do circuito.
X1 2 1 vcc inv
X2 3 2 vcc inv
C1 3 0 1fF
D
M2
G
S
X1
.tran 0.1n 80n
.plot tran v(1) v(2) v(3)
.end
1
INV
Vin
0
Prof. Fabian Vargas. & Prof. Juliano Benfica
X2
2
V1 = 3.3
V2 = 0
TD = 0
TR = 0.1n
TF = 0.1n
PW = 10n
PER = 20n
0
3
INV
C1
1fF
0
10/11
Tutorial do Simulador SPICE
Microeletrônica
Bibliografia
[1]
[2]
[3]
[4]
Sedra, Adel S., Microeletrônica. 4. ed. São Paulo: Makron Books, 2005.
T. Quarles, A.R. Newton, D.O. Pederson, A. Sangiovanni-Vincentelli, SPICE3 Version 3f3
User’s Manual, Department of Electrical Engineering and Computer Sciences, University
of California Berkeley, Ca., May, 1993.
HSPICE Command Reference Release W-2004.09, Synopsys, 2004
Renato P. Ribas, Tutorial do Simulador Elétrico SPICE, UFRGS, Abril, 2001.
Prof. Fabian Vargas. & Prof. Juliano Benfica
11/11
Download