22
Extrait de la publication

Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

Extrait de la publication

Page 2: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation
Page 3: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

Analyse de circuits électriques et électroniques

Simon Vatché Chamlian

Simulations avec

SPI CE

Chahé Nerguizian

PRESSES INTERNATIONALES POLYTECHNIQUE

Extrait de la publication

Page 4: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

Analyse de circuits électriques et électroniques – simulations avec SPICE Simon Vatché Chamlian et Chahé Nerguizian

Équipe de production Gestion éditoriale et production : Presses internationales Polytechnique Réviseure : Nicole Blanchette Page de couverture : Tact publicité

Pour connaître nos distributeurs et nos points de vente, veuillez consulter notre site Web à l᾽adresse suivante : www.pressespoly.ca

Courriel des Presses internationales Polytechnique : [email protected]

Tous droits réservés © Presses internationales Polytechnique, 1999 On ne peut reproduire ni diffuser aucune partie du présent ouvrage, sous quelque forme ou par quelque procédé que ce soit, sans avoir obtenu au préalable l᾽autorisation de l᾽éditeur. Dépôt légal : 3e trimestre 1999 Bibliothèque et Archives nationales du Québec Bibliothèque et Archives Canada ISBN 978-2-553-00736-1 (version imprimée) ISBN 978-2-553-01653-0 (version numérique)

Page 5: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

Avant-propos

Le langage SPICE (Simulation Program with Integrated Circuit Emphasis) a été conçu au début des années 1970, à l'Université de Californie, à Berkeley, dans sa version 2G6. Durant ces années, les algorithmes de SPICE 2G6 offraient une puissance et une vitesse d'exécution supérieures à celles des programmes précédents. C'est pourquoi de nombreux dialectes, fondés sur une syntaxe semblable à celle du langage SPICE, ont rapidement vu le jour, venant élargir la «famille» SPI CE. Par ailleurs, plusieurs programmes en SPI CE ont pu fonctionner avec des ordinateurs personnels à partir de 1985, grâce à l'apparition sur le marché du compilateur Fortran 3.0 de Microsoft (SPICE 2G6 étant en Fortran). La plupart de ces «nouveaux SPICE» ne présentaient pas de différences majeures avec le code de l'Université de Californie.

Cet ouvrage ne cherche pas à faire la comparaison des différents dialectes de SPICE. Mentionnons-en simplement quelques-uns qu'on rencontre le plus fréquemment dans la documentation: MOTIS-C, ISPICE, YSPICE, MODULAR-SPICE, M-SPICE, HP-SPICE, I-G SPICE, HSPICE, PSPICE, ASPEC, ZSPICE, MSINC. Par ailleurs, en ce moment même, il y a probablement un programmeur qui s'affaire à mettre au point un nouveau dialecte de SPICE.

Malgré toute la popularité dont il jouit, il n'existe pas de standard (ANSI) qui régisse le langage SPICE. La tendance que suivent tous les dialectes offerts sur le marché est d'admettre les programmes rédigés en SPICE 2G6. Toutefois, les différents suppléments dont on les dote ont comme principal inconvénient de rendre le langage ambigu du point de vue syntactique; en effet, on note une redondance des commandes. En conséquence, nous verrons en détail la syntaxe de SPICE 2G6 alors que nous survolerons brièvement les commandes supplémentaires disponibles avec PSPICE.

Dans l'ordinateur, plusieurs interfaces permettent de générer plus facilement la plupart des commandes du langage tant avec les préprocesseurs qu'avec les postprocesseurs. Par exemple, les nouvelles versions de PSPICE sont dotées d' un préprocesseur qui rend possible le dessin de circuits dans l'environnement Windows. Or, une fois le circuit dessiné, le préprocesseur sert également à générer le programme. Nous traiterons du préprocesseur de PSPICE d'une façon succincte, car nous estimons qu'il est préférable pour quiconque d'apprendre le langage de base plutôt qu'une interface usager susceptible de connaître de fréquents changements. En effet, nous entendons décrire ici le langage SPICE et non un de ses dialectes . Une fois qu'ils maîtriseront le langage, les utilisateurs seront à même d'utiliser ses multiples dialectes, et ce avec n'importe quel ordinateur ou n'importe quel système d'exploitation.

Extrait de la publication

Page 6: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

IV Avant-propos

Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation en un rien de temps. Par contre, si on travaille à partir d'un autre logiciel (ou langage) qui génère le programme en C, on se trouvera limité à ce logiciel précis en tout temps. La même chose se produit dans le cas du préprocesseur de PSPICE.

Nous examinerons aussi brièvement le puissant postprocesseur PROBE de PSPICE qui permet de représenter g~;aphiquement les résultats obtenus avec PSPICE.

Pourquoi PSPICE? Pour compiler ou interpréter un programme, il faut bien entendu se servir d'un compilateur ou d'un interpréteur. Comme c'est le cas avec le langage C, une fois qu'on a écrit la syntaxe, on a besoin d'un compilateur particulier pour le compiler.

Dans le présent ouvrage, nous avons retenu PSPICE comme interpréteur pour exécuter les programmes écrits en SPICE, et ce pour les raisons suivantes :

- quoiqu'on puisse mettre la main assez facilement sur le code source de l'interpréteur SPICE 2G6 sur Internet, il reste nécessaire de compiler ce code source à l'aide d'un compilateur Fortran, tâche assez ardue surtout sur des ordinateurs personnels;

avec PSPICE de Microsim Corporation, on peut facilement obtenir sur Internet une version d'essai utilisable telle quelle.

De plus, toutes les compagnies (Borland, Watcom, etc.) de compilateurs de langages de programmation acceptent les programmes écrits dans un standard strict (ANSI C), mais elles ajoutent des particularités aux langages. Dans le langage SPICE, qui ne contient aucun standard et dont les interpréteurs acceptent tout programme écrit en SPICE 2G6, les déviations sont encore plus nombreuses.

Pour ces raisons, nous ne traitons dans le livre que de la syntaxe de SPICE 2G6. Toutefois, puisque nous avons utilisé PSPICE pour interpréter nos programmes, nous en décrivons les principales commandes.

À propos de SPICE 3 Dans les années 1990, l'Université de Californie a travaillé au développement de SPICE 3 qui, contrairement à SPICE 2G6, est rédigé en langage C. À l'heure actuelle, très peu de programmes (ou dialectes) commerciaux emploient SPICE 3. Ce langage, compatible avec SPICE 2G6, présente l'avantage de posséder des commandes supplémentaires. Toutefois, les dialectes existants sont eux aussi dotés de plusieurs commandes supplémentaires par rapport à SPICE 2G6. En conséquence, nous croyons que SPICE 3 n'atteindra pas le statut de standard (comme l'a fait SPICE 2G6).

Extrait de la publication

Page 7: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

Avant-propos V

********

Notre exploration du langage SPICE s'étendra sur huit chapitres. Dans le chapitre 1, nous présenterons la structure du langage SPICE et nous décrirons le format général d'un fichier d'entrée en langage SPICE. Nous nous attarderons ensuite aux divers éléments du langage. Nous consacrerons le chapitre 2 aux éléments passifs, le chapitre 3 aux sources de courant et de tension et le chapitre 4, aux semi-conducteurs. Dans le chapitre 5, nous verrons l'utilisation des sous-circuits dans un programme en langage SPICE.

Nous présenterons dans le chapitre 6les commandes de simulation servant à différents types d'analyse. Le chapitre 7 viendra compléter ces données puisqu'il contient les commandes supplémentaires de PSPICE ainsi que les commandes du postprocesseur PROBE. Le chapitre 8 traitera succinctement du préprocesseur rendant possible le dessin de circuits dans 1' environnement Windows.

Pour terminer, nous présenterons dans le chapitre 9 des exemples de simulation des circuits électriques et électroniques à l'aide de la version 4.03 de PSPICE. La compréhension de ces exemples exige que le lecteur possède au préalable des connaissances de base sur l'analyse de circuits.

********

Remerciements

Nous tenons à remercier Mmes Diane Ratel et Nicole Blanchette des Presses internationales Polytechnique pour l'aide précieuse qu'elles nous ont accordée au cours de la préparation de cet ouvrage. Nous remercions également le Bureau d'appui pédagogique de l'École Polytechnique ainsi que les Presses internationales Polytechnique pour leur soutien financier.

Extrait de la publication

Page 8: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation
Page 9: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

Table des matières

Chapitre 1 Structure du langage SPICE

1.1 Présentation du langage SPICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Parties d'un programme en langage SPICE . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 Modèles des semi-conducteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.2 Commandes de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2.3 Description du circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Chapitre 2 Éléments passifs

2.1 Règles de rédaction générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Résistance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Condensateurs et bobines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4 Condensateurs et bobines non linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.5 Inductance mutuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.6 Ligne de transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Chapitre 3 Sources de tension et de courant

3.1 Sources indépendantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1.1 Sources continues (DC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3 .1.2 Sources variant dans le temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.1.3 Sources sinusoïdales à fréquences variables (AC) . . . . . . . . . . . . . . . . . 28

3.2 Sources dépendantes linéaires (SCCT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2.1 Source linéaire de courant commandée par une tension . . . . . . . . . . . . . 31 3.2.2 Source linéaire de tension commandée par une tension (STCT) . . . . . . . 32 3.2.3 Source linéaire de courant commandée par un courant (SCCC) . . . . . . . 34 3.2.4 Source linéaire de tension commandée par un courant (STCC) . . . . . . . . 36

Chapitre 4 Semi-conducteurs

4.1 Commande .MODEL utilisée dans la description des semi-conducteurs . . . . . . 40 4.2 Description d'une diode comme élément de circuit . . . . . . . . . . . . . . . . . . . . 41

4.2.1 Déclaration d'une diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.2.2 Modèle statique d'une diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.2.3 Modèle dynamique ou en petits signaux d'une diode . . . . . . . . . . . . . . . 43 4.2.4 Paramètres du modèle d'une diode . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.2.5 Diode zéner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Extrait de la publication

Page 10: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

VIII Table des matières

4.3 Description d'un transistor bipolaire (BIT) comme élément de circuit . . . . . . . 46 4.3 .1 Déclaration d'un transistor bipolaire (BIT) . . . . . . . . . . . . . . . . . . . . . . 46 4.3.2 Modèle statique d'un transistor BIT . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Modèle dynamique en petits signaux d'un transistor BIT . . . . . . . . . . . . 51 4.3.4 Paramètres du modèle d'un transistor BIT . . . . . . . . . . . . . . . . . . . . . . 53

4.4 Description d'un transistor à effet de champ (JFET) comme élément de circuit . 55 4.4.1 Déclaration d'un transistor à effet de champ (JFET) . . . . . . . . . . . . . . . 55 4.4.2 Modèle statique d'un transistor IFET . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Modèle dynamique en petits signaux d'un transistor IFET . . . . . . . . . . . 56 4.4.4 Paramètres du modèle d'un transistor IFET . . . . . . . . . . . . . . . . . . . . . 58

4.5 Description d'un transistor MOSFET comme élément de circuit . . . . . . . . . . . 58 4.5.1 Déclaration d'un transistor MOSFET . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.5.2 Modèle statique d'un transistor MOSFET . . . . . . . . . . . . . . . . . . . . . . . 60 4.5.3 Modèle dynamique en petits signaux d'un transistor MOSFET . . . . . . . . 61 4.5.4 Paramètres du modèle d'un transistor MOSFET . . . . . . . . . . . . . . . . . . 62

Chapitre 5 Sous-circuits

5.1 Utilisation d'un sous-circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.2 Définition d'un sous-circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

5.2.1 Commande .SUBCKT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.2.2 Commande .ENDS ........... ................... . ...... . 67

5.3 Appel d'un sous-circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Chapitre 6 Commandes de contrôle

6.1 Commandes de contrôle des simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 6.1.1 Commande . TEMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 6.1.2 Commande .OPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6.2 Commandes de simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.2.1 Commande .OP ....................... ..... . .. . . ....... 76 6.2.2 Commande .DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.2.3 Commande . TF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.2.4 Commande .SENS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.2.5 Commande . TRAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.2.6 Commande .AC ... ... ... .. ............................. 79 6.2.7 Commande .DISTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.2.8 Commande .FOUR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.2.9 Commande .NOISE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

6.3 Commandes de fixation des tensions aux nœuds . . . . . . . . . . . . . . . . . . . . . . 82 6.3.1 Commande .NODESET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

Extrait de la publication

Page 11: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

Table des matières IX

6.3.2 Commande .IC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.4 Commandes de contrôle du fichier de sortie . . . . . . . . . . . . . . . . . . . . . . . . . 84

6.4.1 Commande . WIDTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 6.4.2 Commande .PRINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 6.4.3 Commande .PLOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

Chapitre 7 Commandes supplémentaires de PSPICE par rapport à SPICE 2G6

7.1 Modèles dans PSPICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 7.2 Modèles des éléments passifs dans PSPICE . . . . . . . . . . . . . . . . . . . . . . . . . 89

7 .2.1 Modèle de résistance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 7 .2.2 Modèle de condensateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 7.2.3 Modèle de bobine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

7.3 Sources dépendantes dans PSPICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 7.3 .1 Source non linéaire de courant commandée par une tension . . . . . . . . . . 94 7.3.2 Source non linéaire de tension commandée par une tension . . . . . . . . . . 94 7.3 .3 Source non linéaire de courant commandée par un courant . . . . . . . . . . 95 7.3.4 Source non linéaire de tension commandée par un courant . . . . . . . . . . . 95

7.4 Commandes de contrôle dans PSPICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 7 .4.1 Commentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 7.4.2 Commande .MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 7.4.3 Commande .INC ....... ... . . ..................... . .... .. 98 7.4.4 Commande .LIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 7.4.5 Commande .PROBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

7.5 Postprocesseur PROBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 7.5 .1 Spécification des tensions dans la commande .PROBE ou dans le menu

Add_trace de PROBE .................................... 101 7.5.2 Spécification des courants dans la commande .PROBE ou dans le menu

Add_trace de PROBE ..................... .. . .. .......... 102

Chapitre 8 Préprocesseur Schematics

8.1 Démarche de l'analyse, de la simulation et de l'affichage graphique des résultats d'un circuit électrique donné ... .. .. ...... ............... . 107

8.2 Écran d'ouverture du préprocesseur Schematics ................. ..... . 108 8.3 Applications du préprocesseur Schematics ... ....................... 109

8.3 .1 Atténuateur passif constitué de deux résistances .. . ......... .. .... 110 8.3 .2 Amplificateur à base d' un amplificateur opérationnel ......... ... . . 115 8.3.3 Filtre passif du premier degré ....................... . . .... .. 119 8.3.4 Filtre actif du troisième degré ...................... . ........ 123

Extrait de la publication

Page 12: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

X Table des matières

Chapitre 9 Simulations

9.1 Commande .OP . .. ... . .... . ... . .......... . .. .. . .. .. . . .. .. . .. 128 9.1.1 Calcul des variables électriques d'un circuit contenant des résistances

et des sources indépendantes seulement ........ . ... . ......... . . 128 9.1.2 Calcul des variables électriques d'un circuit contenant des résistances

et des sources indépendantes et dépendantes . ....... . ......... . . 131 9.2 Commande .DC . . ............ . .............. .. ....... ..... . . 133

9.2.1 Calcul des variables électriques d'un circuit contenant des résistances et des sources indépendantes et dépendantes .. . .. . . . . . .. .... . . . . 133

9.2.2 Caractéristique DC (entrée-sortie) des composants électriques ... .. . .. 138 9.3 Commande .TF .. . . .. . . . . ............................ . ...... 152

9.3.1 Calcul des résistances équivalentes d'un dipôle ou d'un quadripôle ..... 152 9.3.2 Calcul de l'équivalent de Thévenin d'un circuit ..... . ............ 157 9.3.3 Calcul de l'équivalent de Norton d'un circuit .. . .. ... .. ... .. . .... 161

9.4 Commande .SENS ............. .. .. . . . .. . .. . .............. ... 164 9.5 Commande .TRAN ..... .. ......... .... .. . ... .... . . ......... . . 166

9.5.1 Calcul des variables électriques d'un circuit contenant des éléments dynamiques excités par une source continue . .. ... ..... . ..... . ... 166

9.5.2 Calcul des variables électriques d'un circuit contenant des éléments dynamiques excités par une onde carrée . ... . ...... . .. .. . ...... 173

9.5.3 Calcul des variables électriques d'un circuit contenant des composants électroniques . .. ... . . .. . .. .. . .. .. . ... . ............... .. 180

9.5.4 Calcul des variables électriques d'un circuit contenant des amplificateurs opérationnels .. ... . . .... . . .. .. .. . .. .. . ... . . . . . . . .... .. . 195

9.6 Commande .AC . .... . . ... . . . ... ... .......... . ........ .. .. .. . 206 9.6.1 Réponse fréquentielle d'un circuit résonant . . ..... .. ... .. . . . . ... 206 9.6.2 Réponse fréquentielle d'un filtre actif ............. . ........... 210 9.6.3 Calcul des variables électriques d'un circuit c011tenant des éléments

dynamiques et des inductances mutuelles dans le domaine fréquentiel .. . 214 9.7 Commande .FOUR .......... . ............. ... ...... . .. ...... 226 9.8 Circuits complexes . .... ...... . ............. .. ..... ..... .... . . 235

Index .... .. . . . ........... ... .. ...... . .......... . .... ..... ... 251 Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

Extrait de la publication

Page 13: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

Chapitre

Structure du langage SPICE

INTRODUCTION

Le langage SPICE (Simulation Program with Integrated Circuit Emphasis) est un outil important à l'heure actuelle en matière de simulation de circuits analogiques et numériques. Créé au début des années 1970, il constitue encore aujourd'hui la norme dans ce domaine du génie électrique.

1.1 PRÉSENTATION DU LANGAGE SPICE

SPICE est un langage déclaratif constitué de blocs plutôt que d'expressions conditionnelles, de boucles et de répétitions. On considère le guide d'utilisation du dialecte 2G6 de SPICE [ 1] comme la source principale du langage SPI CE. Malheureusement, ce guide demeure ambigu quant à certains aspects et, de surcroît, accuse un manque de renseignements quant à plusieurs autres. Ces ambiguïtés ont toutefois donné lieu à différents projets de recherche [2].

Quelques dialectes dérivés du langage SPICE (comme HSPICE [4] ou PSPICE [5]) s'inspirent de la définition de SPICE 2G6, quoiqu'ils présentent quelques améliorations et modifications par rapport au langage original. Les algorithmes découlant de ces dialectes sont, en général, les mêmes qu'avec SPICE 2G6. L'étude des algorithmes numériques débordant le cadre de cet ouvrage, nous nous attarderons uniquement sur la description du langage.

SPICE est un langage interpréteur, c'est-à-dire qu'il lit un fichier d'entrée contenant le programme et génère un fichier de sortie. Par exemple, supposons qu'on désire effectuer une simulation du circuit diviseur de tension de la figure 1.1.

Extrait de la publication

Page 14: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

2 Chapitre 1

1

V1.

125V

R1. 2

R2 lOOQ

Figure 1.1 Circuit diviseur de tension.

Pour ce faire, on doit rédiger dans un fichier un programme décrivant le circuit en question. On appelle le fichier, disons, circuitl.cir (suivant l'usage, on accole l'extension .cir aux noms de fichiers contenant les programmes des circuits). On entre dans le fichier le programme suivant :

* Diviseur de tension

V1 1 0 125V R1 1 2 25Q R2 2 0 100

.OP

.END

Note : Nous verrons la description des différentes commandes dans les chapitres suivants. Nous nous contentons pour l'instant d'illustrer le fonctionnement de l'interpréteur.

Il reste à sauvegarder les résultats, soit les tensions des nœuds, dans un fichier nommé circuitl.out. À cet effet, on peut faire intervenir l'interpréteur PSPICE en entrant la commande suivante :

PSPICE circuit1.cir circuit1.out

Extrait de la publication

Page 15: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

Structure du langage SPICE 3

1.2 PARTIES D'UN PROGRAMME EN LANGAGE SPICE

Un programme en langage SPICE comporte trois parties principales : la description des modèles des semi-conducteurs, les commandes de contrôle et la description du circuit (fig. 1.2). Ces parties n'apparaissent pas nécessairement dans cet ordre. On pourra placer, par exemple, les commandes de contrôle au début du programme et les faire suivre des modèles des semi-conducteurs puis, finalement, de la description du circuit. On peut également entrelacer les trois parties, c'est-à-dire insérer des modèles de semi-conducteurs au début et à la fin du programme. Toutefois, comme c'est le cas avec tous les langages de programmation, il est préférable de se conformer à une certaine structure.

Programme en langage

SPI CE

1 1

Description des Description Commandes modèles des du de

se mi -conducteurs circuit contrôle

Figure 1.2 Parties d'un programme en langage SPICE.

Il est nécessaire de procéder à l'identification des modèles des semi-conducteurs et des commandes de contrôle; cette tâche est assez simple mais exige toutefois d'appliquer certaines règles syntactiques, par exemple faire précéder la commande d'un point«.». Ainsi, pour effectuer une simulation temporelle, on entrera la commande . TRAN et pour introduire un modèle, on entrera .MODEL. Enfin, la description du circuit consiste en la spécification des composants (résistance, bobine, condensateur, etc.) du circuit ainsi que des nœuds auxquels ils sont connectés .

La figure 1.3 présente le format général du fichier d'entrée d'un programme en langage SPI CE.

Extrait de la publication

Page 16: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

4 Chapitre 1

- Déclaration du titre - Modèles des semi-conducteurs - Description du circuit

Sources d'alimentation, sources de signaux Description des éléments Déclaration des modèles

- Requête d'analyse - Requête de sortie -FIN

Figure 1.3 Format d'un fichier d'entrée en langage SPICE.

La première ligne du fichier contient toujours le titre du circuit. Cette façon de faire n'a presque plus cours en programmation de nos jours, mais son origine s'explique facilement du fait que la conception de SPI CE 2G6 remonte à l'époque où les ordinateurs fonctionnaient avec des cartes. La première carte avait justement comme rôle d'initialiser l'ordinateur. Dans le manuel de SPICE [1] d'ailleurs, certains auteurs emploient le terme «carte» pour décrire le langage. Aussi surprenant que cela puisse paraître, les dialectes de SPICE récents comportent encore cette étape de la rédaction d'un fichier, qui est une source d'erreurs fréquentes pour le débutant. En effet, un utilisateur non averti commence la rédaction de son programme dès la première ligne, ce qui produit une erreur en langage SPICE.

Il est possible d'insérer des commentaires n'importe où dans le corps du fichier. Il suffit d'entrer un astérisque«*» au début de la ligne.

Enfin, un programme finit toujours par la commande .END.

À noter également que le langage SPICE est de format libre, c'est-à-dire que le texte d'une ligne peut se poursuivre sur la ligne suivante à condition qu'on inscrive un«+» au début de cette ligne. Examinons plus en détail à présent chacune des parties principales d'un programme en langage SPICE : la description des modèles des semi-conducteurs, les commandes de contrôle et la description du circuit.

1.2.1 Modèles des semi-conducteurs

Les modèles des semi-conducteurs feront l'objet d'une analyse détaillée dans le chapitre 4. Le langage SPICE en compte sept types différents, donc on retrouve sept identificateurs de modèles (fig. 1.4 ). Leur description est une des parties constituantes d'un programme en langage SPICE.

Page 17: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

NPN: PNP: DIODE:

Modèles des se mi -conducteurs

Structure du langage SP!CE 5

Transistor bipolaire BIT NPN Transistor bipolaire BIT PNP Diode

IFET N : Transistor à effet de champ IFET canal N IFET P : Transistor à effet de champ IFET canal P MOSFET N: Transistor MOSFET canal N MOSFET P: Transistor MOSFET canal P

Figure 1.4 Identificateurs des modèles des semi-conducteurs.

1.2.2 Commandes de contrôle

Dans le langage SPICE, les commandes de contrôle servent à mener les simulations. Elles sont au nombre de 16 :

.TEMP:

.WIDTH:

.OPTIONS:

.OP:

.DC:

.NODESET :

.IC:

.TF:

.SENS:

.AC:

.DISTO:

.NOISE:

.TRAN:

.FOUR:

.PRINT:

.PLOT:

fixation de la température durant la simulation; formatage de la sortie (largeur des lignes); fixation des paramètres (optionnels) de simulation; détermination du point d'opération du circuit; exécution d'une simulation en courant continu; fixation des tensions initiales aux nœuds; entrée des conditions initiales pour les éléments dynamiques; détermination des caractéristiques de la fonction de transfert; exécution d'une analyse de sensibilité; exécution d'une analyse fréquentielle; exécution d'une analyse de distorsion en petit signal; exécution d'une analyse de bruit; exécution d'une analyse de simulation temporelle; exécution d'une analyse de Fourier; génération dans le fichier de sortie des résultats désirés; génération dans le fichier de sortie des résultats désirés sous forme graphique (texte).

Page 18: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

6 Chapitre 1

1.2.3 Description du circuit

Dans la description du circuit, 1' auteur du programme spécifie les composants du circuit électrique qui fait l'objet de la simulation. Il indique les nœuds qui les relient. SPI CE tient compte de huit composants du circuit électrique (fig. 1.5).

- RES : - CIL : - IND . M - LIG . TRANS - STCT - STCC - SCCT - sccc

Description du circuit

résistance condensateur et bobine inductance mutuelle (transformateur)

ligne de transmission source de tension commandée par une tension source de tension commandée par un courant source de courant commandée par une tension source de courant commandée par un courant

Figure 1.5 Composants de la description du circuit d'un programme en langage SPICE.

Extrait de la publication

Page 19: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

Chapitre

Éléments passifs

INTRODUCTION

Avec le langage SPI CE, on répartit les éléments passifs en cinq catégories : la résistance, les condensateurs et bobines, les condensateurs et bobines non linéaires, l'inductance mutuelle et la ligne de transmission. Avant d'examiner la manière d'insérer chaque élément dans un programme en langage SPICE, nous décrirons d'abord quelques règles de rédaction générales.

2.1 RÈGLES DE RÉDACTION GÉNÉRALES

On doit spécifier les éléments passifs d'un circuit par leur nom, les nœuds auxquels ils sont connectés dans le circuit et les valeurs des paramètres qui déterminent la caractéristique électrique de l'élément. Les noms des éléments consistent en une lettre suivie d'au plus sept caractères alphanumériques. La lettre initiale correspond au type de l'élément (résistance, condensateur ou bobine). Les nombres peuvent être des entiers (22, -50) ou des réels en notation flottante ou scientifique (3,1415, 1E-14, 3,2E-12). Les lettres qui suivent un nombre doivent constituer des unités reconnues par SPICE, sinon le programme n'en tient pas compte. Ainsi, 1000, 1000,0, 1000 ohms, 1E3 et 1,0E3 représentent le même nombre en langage SPICE. Lorsque les lettres entrées à la suite d'un nombre représentent une unité reconnue par SPICE, ce dernier ignore toutes les lettres subséquentes. En conséquence, les deux expressions 1 MEG et 1 MEGohm désignent le même nombre.

SPICE reconnaît les unités suivantes, accompagnées de la valeur qu'elles représentent :

T = 1 E12 G = 1 E9 MEG = 1E6 K 1E3 MIL = 25.4E-6 M 1 E-3 U = 1 E-6 N = 1 E-9 P = 1E-12 F = 1E-15

Extrait de la publication

Page 20: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

8 Chapitre 2

Dans ce manuel, nous nous en tenons à la convention suivante : les chaînes .xx.xxx.xx, yyyyyyy et zzzzzzz représentent des chaînes de caractères alphanumériques quelconques. Par exemple, le nom d'une résistance commence par la lettreR, qu'on peut faire suivre d'au plus sept caractères alphanumériques. Par conséquent, R, Rl, Rs, Rout et R2abs5G sont tous des noms de résistances valides.

On doit utiliser des entiers non négatifs pour la spécification des nœuds, qui ne doivent pas forcément faire l'objet d'une numérotation séquentielle. Le seul nœud qui doit toujours faire partie d'un circuit est le nœud 0, qui représente la masse (mise à la terre). Le circuit ne peut pas contenir une boucle de sources de tension ou de condensateurs ni un nœud de sources de courant ou de bobines.

La spécification des paramètres entre crochets «< >» demeure facultative. On en trouvera la description dans les sections qui suivent.

2.2 RÉSISTANCE

La spécification d'une résistance prend la forme générale suivante :

Rxxxxxxx N1 N2 VALEUR <TC= TC1 <,TC2»

Exemple:

R1 RC1 R12

12 20

2 17 25

100 1K 1.2K

TC=0.001 TC=0.003, 0.01

NI et N2 sont deux nombres entiers qui désignent les deux nœuds de la résistance. VALEUR est la valeur de la résistance, qui peut être positive ou négative, mais doit être autre que zéro. TCl et TC2 sont des données optionnelles qui représentent les coefficients de température. La valeur de la résistance en tant que fonction de la température suit la règle suivante :

valeur(T) = valeur(TNOM) * (1 + TC1 (T-TNOM) + TC2(T-TNOM)2)

TNOM est la température nominale spécifiée dans la commande .OPTIONS, une commande de contrôle servant à spécifier des paramètres pour les simulations (chap. 6). La valeur de T représente la température à laquelle on veut effectuer la simulation, qu'on doit d'abord spécifier dans la commande de contrôle . TEMP (chap. 6).

Lorsqu'on ne spécifie pas TCl et TC2, SPICE assume qu'ils prennent la valeur zéro; autrement dit, la valeur de la résistance correspond à celle de VALEUR.

Extrait de la publication

Page 21: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation
Page 22: Extrait de la publication...IV Avant-propos Prenons à cet effet l'exemple du langage C. Si on connaît le langage, on peut programmer sur n'importe quel ordinateur ou système d'exploitation

Extrait de la publication