Prévia do material em texto
Introdução à Microeletrônica Aula 04 ● Simulações de Circuitos no SPICE Opus − Conceitos básicos da linguagem SPICE − Netlist e tipos de análise: DC, Transiente e AC ● Constante de tempo em circuitos RC − Análise gráfica no SPICE Opus ● Subcircuitos − Varicap Hugo Leonardo D. de S. Cavalcante – DSC – CI – UFPB SPICE ● Simulation Program for Integrated Circuit Emphasis ● SPICE é um simulador (linguagem para descrição) de circuitos analógicos, importante para circuitos integrados Electr. Research Lab- UC - Berkley (1975). ● Análise não-linear DC e transiente ● Análise Linear AC, etc. ● Elementos e modelos – Resistores, capacitores, indutores, fontes de tensão e corrente – Diodos, transistores bipolares, MOSFET e JFET SPICE - formato ● Formato do arquivo com a descrição do circuito e simulação (netlist): 1.Título (nome do circuito) 2.Elementos do circuito (descrição do circuito: nós e componentes) 3.Comando de simulação (tipo de análise: .dc, .tran, .ac ) 4.Comandos de saída (opcional) 5..END Linhas começadas com * são comentários. A linguagem não é sensível à capitalização. Ver ref.: Circuit Simulation with SPICE OPUS, Tuma e Bürmen SPICE - exemplo Um circuito simples V1 1 0 dc 5 R1 1 2 1k Q1 2 3 0 t2n2222 R2 3 4 1k Vin 4 0 dc 0.68 .model t2n2222 npn + is=19f bf=150 vaf=100 ikf=0.18 ise=50p +ne=2.5 br=7.5 var=6.4 ikr=12m isc=8.7p +nc=1.2 rb=50 re=0.4 rc=0.3 cje=26p tf=0.5n +cjc=11p tr=7n xtb=1.5 kf=0.032f af =1 .end SPICE OPUS Vamos usar o SPICE OPUS para simular e analisar o circuito: > cd Circuitos > spiceopus & (← no terminal do Linux) > source exemplo.cir (← na janela do Spice Opus) > op (calcula o “ponto de operação”) > display (mostra os “vetores” com resultados) > print v(2) (mostra o valor da tensão no nó 2) > dc vin 0 1.4 0.01 (varredura DC da fonte Vin) > plot v(2) (gráfico v(2) x Vin) O comando de análise pode ser incluído no arquivo da netlist. O comando do gráfico é específico do Spice Opus, mas também pode ser colocado no bloco .control … .endc. Circuito RC – Medir a constante de tempo Circuito RC *Vname N1 N2 pulse(VL VH TD TR TF PW T) Vin 1 0 pulse(0 10.0 2n 0 0 4n 8n) R1 1 2 1k C1 2 0 0.32p .tran 1p 18n .end * RC medido da descida = 0.320 ns * RC medido da subida = 0.320 ns * Concorda com a teoria: tau = RC Subcircuitos no SPICE ● Formato do arquivo com a descrição de um subcircuito: 1. .SUBCKT Nome_do_sub Nó1 Nó2 ... 2. Elementos do circuito (descrição do circuito: nós e componentes) 3. .ENDS [Nome_do_sub] (termina o .subckt, opcionalmente pode repetir o nome) Linhas começadas com * são comentários. A linguagem não é sensível à capitalização. Somente os nós listados na primeira linha (terminais do subcircuito/componente) serão visíveis no circuito chamador. Incluindo subcircuitos ● Formato do arquivo com usando um subcircuito: 1. .INCLUDE Nome_do_arquivo 2. Xidentificador Nó1 Nó2 … Nome_do_sub 3. ... Os identificadores dos Nós na linha acima podem ser diferentes daqueles especificados no arquivo: a conexão é por ordem. O número de nós conectados tem que ser igual ao número de terminais no subckt. Circuito RD – Varicap Circuito RD – Usa um diodo como varactor (varicap) *Vname N1 N2 pulse(VL VH TD TR TF PW T) Vin 2 1 pulse(0 10.0m 2n 0 0 4n 8n) Vp 1 0 dc 10.0 R1 2 3 5 D1 0 3 1SV325 .model 1SV325 D (IS = 2.593e-15 N = 1.024 BV = 11 IBV = 1e-4 RS = 0.4 CJ0 = 7.67e-11 VJ = 100 M=0.9) .tran 1p 18n .end * RC medido com Vp = 1.0 V: tau = 0.378 ns * RC medido com Vp = 10.0 V: tau = 0.339 ns Circuito RD – Varicap Para simular o circuito: Execute o SPICE Opus: > spiceopus & No prompt do SPICE Opus, carregue a netlist: > circuito_rc.cir Execute a análise listada na netlist: > run Desenhe o gráfico: > plot v(2)-v(1) v(3)-v(1) Meça a constante de tempo usando zoom (z) e cursores (clique, solta e arrasta) adequados. Introdução à Microeletrônica Aula 04 ● Simulações de Circuitos no SPICE Opus − Conceitos básicos da linguagem SPICE − Netlist e tipos de análise: DC, Transiente e AC ● Constante de tempo em circuitos RC − Análise gráfica no SPICE Opus ● Subcircuitos − Varicap Hugo Leonardo D. de S. Cavalcante – DSC – CI – UFPB Antes de ver a metodologia para projetar os circuitos lógicos queremos ser capazes de testar o comportamento dos circuitos, do ponto de vista elétrico. Além de verificar que a lógica está correta, a simulação também permite avaliar o tempo de resposta, a qualidade do sinal, as correntes, potência consumida, etc. O padrão universal de simulação na área de eletricidade e eletrônica é a linguagem SPICE, que apresentaremos na aula de hoje. Vamos usar um programa gratuito, de código aberto, SPICE Opus, que executa as simulações escritas em SPICE. SPICE ● Simulation Program for Integrated Circuit Emphasis ● SPICE é um simulador (linguagem para descrição) de circuitos analógicos, importante para circuitos integrados Electr. Research Lab- UC - Berkley (1975). ● Análise não-linear DC e transiente ● Análise Linear AC, etc. ● Elementos e modelos – Resistores, capacitores, indutores, fontes de tensão e corrente – Diodos, transistores bipolares, MOSFET e JFET SPICE é uma linguagem desenvolvida para a simulação de circuitos elétricos, especialmente circuitos integrados. Quase todos os programas de simulação modernos usam alguma versão do SPICE ou linguagens inspiradas por ele. Um roteiro de simulação usualmente tem três partes/etapas: 1 – descrição do circuito e parâmetros 2 – escolha do tipo de simulação (análise) 3 – análise dos resultados (gráfico ou leitura de valores). Para a descrição do circuito, o SPICE permite indicar nós (de Kirchhoff) e elementos fundamentais: Resistores, capacitores, fontes, transistores, etc. Para a análise: vamos usar séries temporais (transiente) e varreduras cc (DC sweep). O SPICE Opus tem comandos para desenhar os gráficos dos resultados. SPICE - formato ● Formato do arquivo com a descrição do circuito e simulação (netlist): 1.Título (nome do circuito) 2.Elementos do circuito (descrição do circuito: nós e componentes) 3.Comando de simulação (tipo de análise: .dc, .tran, .ac ) 4.Comandos de saída (opcional) 5..END Linhas começadas com * são comentários. A linguagem não é sensível à capitalização. Ver ref.: Circuit Simulation with SPICE OPUS, Tuma e Bürmen A descrição do circuito é conhecida como netlist (embora o nome se generalize para qualquer texto em SPICE). O formato está descrito aqui: A primeira linha é sempre ignorada (título) Os elementos (tipo) são identificados pela letra inicial: R para resistor, C para capacitor, etc. São listados também os nós de conexão e demais parâmetros O comando de simulação e demais comandos de saída são opcionais. Sempre começando com . O arquivo termina com “.END” A linguagem NÃO é sensível à caixa (letras maiúsculas e minúsculas são equivalentes). Podemos encontrar ampla literatura sobre SPICE e linguagens derivadas na internet. SPICE - exemplo Um circuito simples V1 1 0 dc 5 R1 1 2 1k Q1 2 3 0 t2n2222 R2 3 4 1k Vin 4 0 dc 0.68 .model t2n2222 npn + is=19f bf=150 vaf=100 ikf=0.18 ise=50p +ne=2.5 br=7.5 var=6.4 ikr=12m isc=8.7p +nc=1.2 rb=50 re=0.4 rc=0.3 cje=26p tf=0.5n +cjc=11p tr=7n xtb=1.5 kf=0.032f af =1 .end Exemplos: O circuito mais simples (não vazio, não aberto, não trivial) que podemos montar é algo assim: Nome do circuito V1 N1 0 DC 5V R1 N1 0 1k .END Este circuito é uma fonte de tensão, ligada a um resistor. Não fizemos nenhuma análise. No slide acima temos um circuito mais complexo. O transistor Q1 recebe um “modelo”, detalhado na linha .model. Ainda não fizemos a simulação. SPICE OPUS Vamosusar o SPICE OPUS para simular e analisar o circuito: > cd Circuitos > spiceopus & (← no terminal do Linux) > source exemplo.cir (← na janela do Spice Opus) > op (calcula o “ponto de operação”) > display (mostra os “vetores” com resultados) > print v(2) (mostra o valor da tensão no nó 2) > dc vin 0 1.4 0.01 (varredura DC da fonte Vin) > plot v(2) (gráfico v(2) x Vin) O comando de análise pode ser incluído no arquivo da netlist. O comando do gráfico é específico do Spice Opus, mas também pode ser colocado no bloco .control … .endc. Na máquina vitual preparada para a discplina, temos o programa SPICE Opus instalado. Podemos chamar o programa no prompt de comando (terminal), ler a netlist com a descrição do circuito e realizar as análises desejadas. Alguns tipos de análises: .op : ponto de operação DC .dc : varredura de uma ou mais fontes de tensão ou corrente .tran : produz série temporal (resolve as equações diferenciais associadas a capacitores e indutores) .ac : análise de Fourier (linear) para pequenos sinais (As equações são linearizadas ao redor do ponto de operação) Para ver o resultado podemos usar: display (mostra valores das variáveis) plot (desenha gráfico) print > file.txt (escreve dados em um arquivo) Circuito RC – Medir a constante de tempo Circuito RC *Vname N1 N2 pulse(VL VH TD TR TF PW T) Vin 1 0 pulse(0 10.0 2n 0 0 4n 8n) R1 1 2 1k C1 2 0 0.32p .tran 1p 18n .end * RC medido da descida = 0.320 ns * RC medido da subida = 0.320 ns * Concorda com a teoria: tau = RC Exemplo: um circuito RC, estimulado por uma onda quadrada de tensão, simulado no tempo. Podemos analisar o resultado usando um comando plot v(1) v(2) (fazer o gráfico da tensão no nó 1 e da tensão no nó 2, em função do tempo) Subcircuitos no SPICE ● Formato do arquivo com a descrição de um subcircuito: 1. .SUBCKT Nome_do_sub Nó1 Nó2 ... 2. Elementos do circuito (descrição do circuito: nós e componentes) 3. .ENDS [Nome_do_sub] (termina o .subckt, opcionalmente pode repetir o nome) Linhas começadas com * são comentários. A linguagem não é sensível à capitalização. Somente os nós listados na primeira linha (terminais do subcircuito/componente) serão visíveis no circuito chamador. Uma ferramenta útil é criar subcircuitos no SPICE. Isso permite a modularização. Elementos complexos podem ser descritos apenas uma vez em como um subcircuito e instâncias destes chamadas na netlist principal. Subcircuitos são instanciados por um elemento cujo identificador é iniciado com “X”. Ex: X1 N1 N2 Nome_do_sub É comum haver “bibliotecas” (libraries), com diversos subcircuitos correspondendo a diferentes modelos de componentes. Subcircuitos e bibliotecas costumam ser colocados em arquivos separados da netlist em uso, para reaproveitamento e independência. Incluindo subcircuitos ● Formato do arquivo com usando um subcircuito: 1. .INCLUDE Nome_do_arquivo 2. Xidentificador Nó1 Nó2 … Nome_do_sub 3. ... Os identificadores dos Nós na linha acima podem ser diferentes daqueles especificados no arquivo: a conexão é por ordem. O número de nós conectados tem que ser igual ao número de terminais no subckt. Arquivos podem ser importados na netlist com o comando .include nome_do_arquivo As extensões no nome do arquivo são arbitrárias, mas é bom seguir alguma convenção. Para nós: .spi : modelo de subcircuito .lib : biblioteca com vários subcircuitos .cir : uma netlist principal (chamadora). Circuito RD – Varicap Circuito RD – Usa um diodo como varactor (varicap) *Vname N1 N2 pulse(VL VH TD TR TF PW T) Vin 2 1 pulse(0 10.0m 2n 0 0 4n 8n) Vp 1 0 dc 10.0 R1 2 3 5 D1 0 3 1SV325 .model 1SV325 D (IS = 2.593e-15 N = 1.024 BV = 11 IBV = 1e-4 RS = 0.4 CJ0 = 7.67e-11 VJ = 100 M=0.9) .tran 1p 18n .end * RC medido com Vp = 1.0 V: tau = 0.378 ns * RC medido com Vp = 10.0 V: tau = 0.339 ns Uma junção p-n se comporta como um capacitor cuja capacitância é dependente da tensão aplicada. Um diodo polarizado reversamente pode ser usado com um “capacitor controlado por tensão”, ou varicap. Como exercício, vamos medir a capacitância de um diodo, e alguma variação desta com a tensão reversa aplicada, conforme o circuito descrito aqui. Vamos forma o análogo a um circuito RC, mas substituindo o capacitor por um diodo. Note que a tensão de estímulo tem duas partes: uma grande tensão constante Vp, para polarizar o diodo reversamente e controlar sua capacitância, e uma pequena tensão que varia no tempo (uma onda quadrada), somada a Vp, para causar a carga e descarga do capacitor. Queremos medir a constante de tempo (tau) e determinar a capacitância. Circuito RD – Varicap Para simular o circuito: Execute o SPICE Opus: > spiceopus & No prompt do SPICE Opus, carregue a netlist: > circuito_rc.cir Execute a análise listada na netlist: > run Desenhe o gráfico: > plot v(2)-v(1) v(3)-v(1) Meça a constante de tempo usando zoom (z) e cursores (clique, solta e arrasta) adequados. Para carregar a netlist na memória, basta digitar o nome do arquivo que contém a netlist. Sempre que o arquivo for alterado, é necessário carregar novamente na memória. A simulação só será executada se você executar o comando “run” no prompt do SPICE Opus ou na seção .control do arquivo netlist. As grandeza desenhadas no eixo y do plot podem ser expressões aritméticas envolvendo constantes e variáveis. O eixo x depende da simulação (análise) que foi realizada. Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10