Node List Tolerance Analysis

  • 58 25 1
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

Node List Tolerance Analysis Enhancing SPICE Capabilities with Mathcad

Other Related Titles of Interest Include: Tolerance Analysis of Electronic Circuits Using MATLAB Robert R. Boyd, University of California, Irvine, California ISBN: 0849322766 Tolerance Analysis of Electronic Circuits Using MATHCAD Robert R. Boyd, University of California, Irvine, California ISBN: 0849323398 The Electronics Handbook, Second Edition Jerry Whitaker, Technical Press, Morgan Hill, California ISBN: 0849318890 PSPICE and MATLAB for Electronics: An Integrated Approach John O. Attia, Prairie View A&M University, Texas ISBN: 0849312639 Electronics and Circuit Analysis Using MATLAB, Second Edition John O. Attia, Prairie View A&M University, Texas ISBN: 0849318920

Node List Tolerance Analysis Enhancing SPICE Capabilities with Mathcad

Robert R. Boyd

Boca Raton London New York

A CRC title, part of the Taylor & Francis imprint, a member of the Taylor & Francis Group, the academic division of T&F Informa plc.

Published in 2006 by CRC Press Taylor & Francis Group 6000 Broken Sound Parkway NW, Suite 300 Boca Raton, FL 33487-2742 © 2006 by Taylor & Francis Group, LLC CRC Press is an imprint of Taylor & Francis Group No claim to original U.S. Government works Printed in the United States of America on acid-free paper 10 9 8 7 6 5 4 3 2 1 International Standard Book Number-10: 0-8493-7028-0 (Hardcover) International Standard Book Number-13: 978-0-8493-7028-1 (Hardcover) Library of Congress Card Number 2005052136 This book contains information obtained from authentic and highly regarded sources. Reprinted material is quoted with permission, and sources are indicated. A wide variety of references are listed. Reasonable efforts have been made to publish reliable data and information, but the author and the publisher cannot assume responsibility for the validity of all materials or for the consequences of their use. No part of this book may be reprinted, reproduced, transmitted, or utilized in any form by any electronic, mechanical, or other means, now known or hereafter invented, including photocopying, microfilming, and recording, or in any information storage or retrieval system, without written permission from the publishers. For permission to photocopy or use material electronically from this work, please access www.copyright.com (http://www.copyright.com/) or contact the Copyright Clearance Center, Inc. (CCC) 222 Rosewood Drive, Danvers, MA 01923, 978-750-8400. CCC is a not-for-profit organization that provides licenses and registration for a variety of users. For organizations that have been granted a photocopy license by the CCC, a separate system of payment has been arranged. Trademark Notice: Product or corporate names may be trademarks or registered trademarks, and are used only for identification and explanation without intent to infringe.

Library of Congress Cataloging-in-Publication Data Boyd, Robert (Robert R.) Node list tolerance analysis : enhancing SPICE capabilities with Mathcad/ Robert R. Boyd. p. cm. Includes bibliographical references and index. ISBN 0-8493-7028-0 (alk. paper) 1. Electric circuits, Linear. 2. Analog electronic systems. 3. Electric circuit analysis. 4. Tolerance (Engineering) 5. Mathcad. 6. SPICE (Computer file) TK454.B66 2006 621.3815--dc22

2005052136

Visit the Taylor & Francis Web site at http://www.taylorandfrancis.com Taylor & Francis Group is the Academic Division of Informa plc.

and the CRC Press Web site at http://www.crcpress.com

Preface The purpose of this book is to provide an improved SPICE-like, worst-case analysis (WCA) capability using Mathcad. To achieve more accurate WCA methods, a SPICE-like netlist or node list method of nominal circuit analysis was developed first. Subprogram routines were then added to perform tolerance analyses using Root-Sum-Square (RSS), Extreme Value Analysis (EVA), and Monte Carlo Analysis (MCA) in the DC, frequency, and time domains. Note that “SPICE” is a generic term referring to the public domain software developed by the University of California–Berkeley in the early 1980s. Several companies were started after converting the Fortran code to C and adding a graphics interface. These commercial versions are very capable in nominal circuit analysis and, correspondingly, expensive. There are many areas in SPICE WCA that range from nonexistent or weak capability to erroneous analyses. Most if not all of these deficiencies still exist in many commercial versions. These areas are: • • • • • • • •

A 400-sample Monte Carlo limitation — not nearly enough for adequate statistical confidence levels No RSS capability No direct method of handling asymmetric component tolerances, e.g., +2%, 4% No Fast Monte Carlo Analysis (FMCA) capability* No single-run method of tolerancing inputs No direct method of detecting nonmonotonic components, which cause erroneous WCA outputs No AC frequency sweep sensitivity capability No predefined beta (skewed) or bimodal (gapped) distributions available for MCA

In addition, the SPICE random number generator used for MCA repeatedly supplies the same set of random numbers with each analysis run. To correct this, a new seed must be supplied before each new run. (This is equivalent to having the same 20 numbers come up every time in a Las Vegas keno game.) Some commercial versions may have improved a few of these areas, as most companies want to make a good product better. All of these deficiencies have been addressed and corrected in the supplied Mathcad software on the CD and demonstrated using many examples in this book. For example, the number of Monte Carlo samples is now limited only by the amount * Boyd, R., Tolerance Analysis of Electronic Circuits Using Mathcad, CRC Press, Boca Raton, FL, 1999, p. 87.

of memory on the computer platform used. Those readers knowledgeable in statistics know that in Monte Carlo analysis, more is better. It is the author’s hope that this book will provide a much less expensive and more accurate method of performing tolerance analysis of electronic circuits.

The Author Robert R. Boyd was a technical instructor in the United States Air Force for 19 years. Upon his retirement in 1971, he enrolled at the University of New Mexico and received a B.S.E.E. degree with honors in 1974. He was subsequently employed in the aerospace industry, including 8 years with Hughes Aircraft Co., in analog circuit design until 1993 and as a consultant until 2002. He taught courses in tolerance analysis at the University of California Extension, Irvine, in 1998 and 1999. He has authored two books, Tolerance Analysis of Electronic Circuits Using MATLAB and Tolerance Analysis of Electronic Circuits Using Mathcad, both published by CRC Press in 1999.

This page intentionally left blank

Acknowledgments I would like to give my thanks and credit to the following people at Taylor & Francis/CRC Press: Engineering Editor, Nora Konopka – for her successful presentation of my manuscript to the publishing committee and for pleasant email “conversation.” Editorial Project Development Manager, Helena Redshaw – for her patience and diligence in guiding me and the book material through to production. Associate Editor, Allison Taub – for smoothing out the rough spots and helping with the reviews. Project Editor, Amber Stein – for putting up with my frequent changes to the manuscript. They have all been easy to communicate with and helped make the work of writing this book less painful than it would have otherwise been; and all this in spite of several hurricanes! Robert Boyd Placerville, CA

This page intentionally left blank

Table of Contents PART I Chapter 1 1.1

1.2

Nominal Analysis Introduction ........................................................................................3

Nominal Analysis.............................................................................................3 1.1.1 Introduction ..........................................................................................3 1.1.2 The NDS Method of Nominal Circuit Analysis..................................4 1.1.3 General Guidelines...............................................................................5 Introduction to Node List Circuit Analysis .....................................................6 1.2.1 Rules and Definitions...........................................................................6

Chapter 2

Passive Circuits...................................................................................9

2.1 Introduction to Node List Circuit Analysis (Part One)...................................9 2.2 Introduction to Node List Circuit Analysis (Part Two).................................16 2.3 All-Capacitive Circuit ....................................................................................21 2.4 All-Inductive Circuit ......................................................................................23 2.5 Twin-T RC Network ......................................................................................24 2.6 Broadband Pulse Transformer Model............................................................27 2.7 All-Capacitive Loops (ACL)..........................................................................30 2.8 All-Inductive Cutsets (ICS) ...........................................................................31 2.9 All-Capacitive Loop Example .......................................................................32 References................................................................................................................34 Chapter 3 3.1

3.2 3.3 3.4 3.5 3.6

Controlled Sources ...........................................................................35

Controlled (Dependent) Sources....................................................................35 3.1.1 Voltage-Controlled Current Source (VCCS) .....................................35 3.1.2 Current-Controlled Current Source (CCCS) .....................................35 3.1.3 Voltage-Controlled Voltage Source (VCVS) .....................................35 3.1.4 Current-Controlled Voltage Source (CCVS) .....................................36 3.1.5 CCVS to VCVS .................................................................................36 3.1.6 CCCS to VCCS..................................................................................36 3.1.7 Four Rules that Must be Observed....................................................37 Floating VCVS...............................................................................................38 Circuits with M > 1 .......................................................................................41 First-Order MOSFET Model .........................................................................44 VCVS and CCCS Example ...........................................................................46 Two Inputs, Three Outputs ............................................................................50

3.7 3.8 3.9 3.10 3.11 3.12

Third-Order Opamp Model............................................................................54 A Subcircuit Scheme .....................................................................................56 Subcircuit Opamp Model...............................................................................58 Fifth-Order Active Filter ................................................................................59 State Variable Filter........................................................................................60 Seventh-Order Elliptical Low-Pass Filter......................................................63 3.12.1 Stepping One Resistor Value .............................................................68 3.12.2 Stepping All Seven Capacitor Values ................................................71 3.13 Square Root of Frequency (+10 dB/decade) Circuit ....................................74 3.14 HV (200 V) Shunt MOSFET Regulator........................................................76 3.15 LTC 1562 Band-Pass Filter IC in a Quad IC................................................78 3.16 LTC 1562 Quad Band Filter IC.....................................................................79 3.17 BJT Constant Current Source — A Simple Linear Model Using the NDS Method ..................................................................................................87 3.18 uA733 Video Amplifier..................................................................................89 References................................................................................................................95 Chapter 4

Leverrier’s Algorithm ......................................................................97

4.1 4.2

Numerical Transfer Function [1] ...................................................................97 Transfer Function Using Leverrier’s Algorithm for Twin-T RC Network ..................................................................................................100 References..............................................................................................................101 Chapter 5 5.1 5.2 5.3

Stability Analysis ............................................................................103

Unity Gain Differential Amplifiers..............................................................103 Stability of LM158 Opamp Model..............................................................106 High-Voltage Shunt Regulator — Stability Analysis..................................109

Chapter 6

Transient Analysis ..........................................................................115

6.1 Introduction ..................................................................................................115 6.2 Switched Transient Analysis........................................................................118 6.3 N = 2 Switched Circuit Transient Response ...............................................120 6.4 Comparator 100-Hz Oscillator.....................................................................123 6.5 Transient Analysis of Pulse Transformer ....................................................127 6.6 Passive RCL Circuit Transient Analysis......................................................131 6.7 Mathcad’s Differential Equation Solvers.....................................................133 6.8 A Mathematical Pulse Width Modulator (PWM) .......................................135 6.9 Switching Power Supply Output Stage — Buck Regulator .......................137 6.10 State Space Averaging..................................................................................140 6.11 Simple Triangular Waveform Generator......................................................143 6.12 Quadrature Oscillator...................................................................................145 6.13 Wein Bridge Oscillator ................................................................................148 References..............................................................................................................149

Chapter 7 7.1 7.2

7.3 7.4 7.5 7.6 7.7

DC Circuit Analysis .......................................................................151

Resistance Temperature Detector (RTD) Circuit ........................................151 An Undergraduate EE Textbook Problem ...................................................152 7.2.1 Matrix Solution To Demonstrate the Utility of the NDS Method ....................................................................................153 DC Test Circuit ............................................................................................154 Stacking VCVS’s and Paralleling VCCS’s..................................................158 DC Voltage Sweep (RTD Circuit) ...............................................................159 RTD Circuit — Step Resistor Value............................................................161 Floating 5-V Input Source ...........................................................................164

Chapter 8

Three-Phase Circuits .....................................................................167

Convert ∆ Floating Voltage Inputs to Single-Ended Y Inputs ....................167 Three-Phase NDS Solution..........................................................................170 8.2.1 Unbalanced Delta Load — Single-Ended Inputs on A and B ............................................................................................170 8.2.2 Unbalanced Delta Load — Single-Ended Inputs on A and C ............................................................................................172 8.3 Three-Phase Y — Unbalanced Load ...........................................................174 8.4 Three-Phase Y-Connected Unbalanced Load — Floating Delta Input....................................................................................................177 8.5 Balanced Y- Load.........................................................................................181 References..............................................................................................................186 8.1 8.2

Appendix I ............................................................................................................187 Background Theory of NDS Method....................................................................187 A-I.1 Theory of NDS Method...............................................................................196 A-I.1.1 An AC Floating VCVS ..................................................................199 A-I.1.2 VCVS and CCCS...........................................................................203

PART II Chapter 9 9.1

9.2

Tolerance Analysis Introduction ....................................................................................211

Introduction ..................................................................................................211 9.1.1 Tolerance Analysis of Circuits with Discrete Components ............211 9.1.2 Analysis Methods.............................................................................212 Some Facts about Tolerance Analysis .........................................................212 9.2.1 DC Analysis .....................................................................................212 9.2.1.1 Monte Carlo Analysis .......................................................213 9.2.2 AC Analysis .....................................................................................213 9.2.3 Transient Analysis ............................................................................217

9.2.4 Asymmetric Tolerances....................................................................217 References..............................................................................................................217

Chapter 10 DC Circuits .....................................................................................219 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 10.10 10.11

Resistance Temperature Detector (RTD) Circuit......................................219 A Note on Asymmetric Tolerances...........................................................221 Centered Difference Approximation — Sensitivities ...............................222 RTD Circuit Monte Carlo Analysis (MCA) .............................................224 RTD MCA with R4 Tolerance = 10%......................................................226 RTD Circuit Fast Monte Carlo Analysis (FMCA) ...................................227 A CASE FMCA Greater than EVA......................................................... 228 Tolerancing Inputs.....................................................................................231 Beta Distributions [4–6]............................................................................232 RTD MCA — Beta (Skewed) Distribution ..............................................234 MCA of RTD Circuit using Bimodal (Gapped) Distribution Inputs.....................................................................................236 References..............................................................................................................239 Chapter 11 AC Circuits .....................................................................................241 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.10 11.11 11.12 11.13 11.14 11.15 11.16 11.17

11.18 11.19 11.20 11.21

Circuit Output vs. Component Value........................................................241 Exact Values of C1 Sensitivity .................................................................247 Multiple-Output EVA................................................................................248 Butterworth Low-Pass Filter Circuit.........................................................250 Butterworth Low-Pass Filter MCA...........................................................251 Butterworth Low-Pass Filter EVA ............................................................253 Butterworth Low-Pass Filter FMCA ........................................................254 Multiple-Feedback Band-Pass Filter (BPF) Circuit ................................255 Multiple-Feedback BPF MCA..................................................................256 Multiple-Feedback BPF EVA ...................................................................257 Multiple-Feedback BPF FMCA................................................................259 Switching Power Supply Compensation Circuit .....................................260 Switching Power Supply Compensation MCA ........................................261 Switching Power Supply Compensation EVA..........................................262 Switching Power Supply Compensation FMCA ......................................264 Sallen and Key Band-Pass Filter (BPF) Circuit.......................................265 Sallen and Key BPF MCA........................................................................266 11.17.1 Sallen and Key BPF — MCA with both Common and Precision Tolerances ...................................................................267 Sallen and Key BPF EVA .........................................................................268 Sallen and Key BPF FMCA .....................................................................270 State Variable Filter Circuit .....................................................................271 State Variable Filter MCA ........................................................................272

11.22 State Variable Filter EVA..........................................................................273 11.23 State Variable Filter FMCA and MCA Combined...................................275 11.24 High-Q Hum Notch Filter Circuit ...........................................................276 11.25 High-Q Hum Notch Filter MCA ..............................................................278 11.26 High-Q Hum Notch Filter EVA................................................................279 11.27 High-Q Hum Notch Filter FMCA ............................................................280 11.28 LTC 1562 MCA ........................................................................................281 11.29 LTC 1562 EVA..........................................................................................282 References..............................................................................................................284 Chapter 12 Transient Tolerance Analysis ........................................................285 12.1 12.2 12.3 12.4

Transient MCA — Twin-T RC Network ...................................................285 Transient MCA — Multiple Feedback BPF ...............................................286 AC and Transient MCA — Bessel HPF .....................................................288 Transient MCA — State Variable Filter......................................................291

Chapter 13 Three-Phase Circuits ....................................................................295 13.1 Three-Phase Y-Connected Unbalanced Load MCA ....................................295 13.2 Three-Phase Y-Connected Unbalanced Load EVA .....................................297 13.3 Three-Phase Y-Connected Unbalanced Load FMCA..................................300 Chapter 14 Miscellaneous Topics......................................................................303 14.1 14.2 14.3 14.4 14.5

Components Nominally Zero.......................................................................303 Tolerance Analysis of Opamp Offsets .........................................................305 Best-Fit Resistor Ratios ...............................................................................309 Truncated Gaussian Distribution .................................................................311 LTC1060 Switched Capacitor Filter............................................................313 14.5.1 Design Procedure from the Data Sheet ...........................................313

Appendix II...........................................................................................................319 Summary of Tolerance Analysis Methods ............................................................319 DC ................................................................................................................319 AC.................................................................................................................319 Transient .......................................................................................................319 Table of Subprograms............................................................................................320 Part I Nominal Analysis Subprograms .......................................................320 Part II Tolerance Analysis Subprograms (Used with Part I Subprograms) ..................................................................................320 In Case of Difficulty..............................................................................................320 Abbreviations .........................................................................................................321 Index......................................................................................................................323

This page intentionally left blank

TO MY WIFE LINDA Forever and Always

This page intentionally left blank

Part I Nominal Analysis

This page intentionally left blank

1

Introduction

1.1 NOMINAL ANALYSIS The features of this analysis are: • • •

• • •

Loop or nodal analysis math is not required. It uses SPICE-like node lists. All four types of controlled (dependent) sources can be used. It has DC and AC multiple-input-multiple-output (MIMO) capability. • Maximum number of inputs: 10 • Maximum number of outputs: No limit (all circuit nodes) Transient (time-domain) analysis. Three-phase circuit analysis. DC, AC, three-phase, and transient tolerance analysis methods (discussed in Part II).

1.1.1 INTRODUCTION Using state space methods, the circuit DC, AC, and transient response can all be obtained from the same initial analysis. Hence, there is an economy of effort that makes it worthwhile to learn state space techniques. However, conventional state space methods require an inordinate amount of circuit analysis algebra. This book shows a SPICE-like method for creating state space arrays with minimal effort. The numerical transfer function can also be a part of the solution using Leverrier’s algorithm. Hence, this method eliminates the algebra required for conventional circuit analysis techniques as taught in some undergraduate electrical engineering curriculums. The simple procedure entails creating node lists directly from the schematic, very much similar to early commercial versions of SPICE. This original method is called node list DC superposition (NDS). The purpose of presenting this material in Part I is to provide easy SPICE-like analysis methods for the working engineer if SPICE is not available owing to network downtime, network queuing (owing to limited site licenses), or, as sometimes happens in smaller companies, simply has not been purchased. Circuits of at least medium complexity can be simulated. (See Section 3.15 for a circuit with a component count of 68.) The primary goal, however, is to demonstrate correct tolerance analysis methods (Part II). The prerequisite nominal circuit analysis NDS method along with numerous examples is covered in Part I.

3

4

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

1.1.2 THE NDS METHOD

OF

NOMINAL CIRCUIT ANALYSIS

It is assumed that electrical engineers are somewhat familiar with matrix analysis and state space methods; hence, the introductory material is not extensive. Familiarity with these subjects and Mathcad is necessary. As previously stated, a big advantage of state space analysis is that the DC output, AC frequency response, transient response, and circuit transfer function (using Leverrier’s algorithm) can all be obtained from one initial analysis. Another advantage is that state space matrices or arrays are real, not complex. Complex matrices obtained from loop or nodal analysis require a real array twice the size of a complex array to obtain a solution. Hence, state space methods decrease execution time for large arrays and increase solution accuracy. This becomes apparent when it is recalled that the number of arithmetic operations required to find a determinant is directly proportional to N!, where N is the dimension of the square array. The matrix equations used in state space analysis are dx dx = Ax + Bu, y = Dx + Eu + G dt dt where A, B, D, E, and G are arrays; x, a column vector of the state variables; u, a column vector of inputs; and y, the output. In most analyses, array G is a null (zero) array. (For an example using the G array, see Section 12.3.) Taking the Laplace transform of the first equation and substituting in the second gives the following with G = 0: y = D(sI – A)–1 Bu + Eu where I is an identity matrix. In the NDS method, the input u is included in B and E so that y = D(sI – A)–1 B + E The “state variables” are the capacitor voltages and inductor currents. Using N as the order of the circuit (number of L’s and/or C’s), M as the number of inputs, and K as the number of outputs, the arrays have the following dimensions (in {row column} format): Array A B D E G x u I

Rows N N K K K N M N

Columns N M N M N 1 1 N

Introduction

5

Using dimensional notation, {row col}, y is {K N}{N N}{N M} + {K M} = {K M}. Then, y is a transfer matrix with the dimensions {K M} or {output input} Note that in multiplying matrices, the inner dimensions in {row col} order must be the same. That is, if A is {N N} and B is {N M}, they cannot be multiplied as BA because {N M}{N N}, the inner dimensions, do not match. But they can be multiplied as AB = {N N}{N M}. The dimension of the product is the outside dimensions of both, i.e., {N M}. Hence, the dimension of the product {K N}{N N}{N M} is {K M}, which can be added to E = {K M} (The two arrays are then said to be “conformable” for multiplication if the inner dimensions are the same, and they are conformable for addition if the dimensions are equal.)

1.1.3 GENERAL GUIDELINES The SPICE node list text format is Ref Desig From node To node Component value. An example would be R3 6 9 10K. The node lists used in the NDS method are arrays of the form [From node To node Ref Desig], the component value having been specified prior to node list creation. Node numbering must start with 1 and be in numerical sequence up to 89. Nodes 99, 98, …, 91, 90 are reserved for inputs, and node 0 is for ground. There is no requirement for the resistor node list as to node sequence. That is, [4 5 R1] and [5 4 R1] are both accepted. For the capacitor node list and the inductor node list, however, the sequence must correspond to Kirchoff’s current law (KCL): current flow from left to right and from top to bottom. Hence, [3 6 C1] will work, but [6 3 C1] may give the wrong phase angle output and incorrect output polarity in DC and transient analyses. The open loop gain of opamps is set at 106 V/V or 120 dab. In the majority of circuit examples, no opamp frequency rolloff is used. However an example is given on how to create an opamp with rolloff using voltage-controlled voltage sources (VCVSs) (see Section 3.7 and Section 3.8). The Mathcad file in Section 3.18 demonstrates how to embed the opamp rolloff models into circuits, much like subcircuits in SPICE. Component values should generally be kept within the bounds of 1E+12 and 1E–12. Numbers outside this range run the risk of excessively increasing the A matrix condition number. This will cause solution accuracy to diminish. A guideline that can be used is the number of decimal places of accuracy, which is 15 – log10 × (condition number). If a solution appears incorrect or unreasonable, the condition number of matrix A should be checked using the Mathcad statement floor(15log(conde(A))). The reference paths for the subprogram files are localized for the author’s computer. In creating new files, the user must click on Insert, then on Reference, and then enter the correct local path or go to Browse. Two of the most important Mathcad subprogram files are named as follows: For DC: dccomm42.mcd (creates A1 and B2 arrays) For AC: comm42.mcd (creates A, B, D, and E arrays)

6

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

All of the necessary Mathcad subprograms are contained in the included CD. There is no error trapping. Users must ensure that the node lists correctly represent the circuit being analyzed and that all required input arrays are included. The version of the software used is Mathcad 11.0. (Note that due to internal bugs in Mathcad 8.0, some files will not run on that version. Intermediate versions have not been tested.) Some mathematical ability will be helpful for some advanced subjects such as the theory of the NDS method (Appendix I), stability analysis, Leverrier’s algorithm, and transient analysis.

1.2 INTRODUCTION TO NODE LIST CIRCUIT ANALYSIS The passive RCL circuit used to demonstrate the procedure is shown in the following figure: L3 R1

V1

C1

V2

R2

V3

Ein R4

1.2.1 RULES

AND

R3

C2

L4

DEFINITIONS

Calculated using the Mathcad subprogram file comm42.mcd: Ncap = number of capacitors Nind = number of inductors N = Ncap + Nind M = number of independent inputs (= 1 here, but can be up to 10) K = number of outputs (= 1, but can be up to U) User input: U = number of unknown nodes (= 3 here). Y = output node (can be any or all of the three nodes V1, V2, or V3). Number nodes sequentially from 1 to U (V1, V2, V3,…); 0 is ground. Maximum value of U = 89. Independent voltage input nodes are numbered from 99, 98, …, 90. (Note that if only one input source is present, use 99 as the node number; if two inputs, use 99, 98; if three inputs, use 99, 98, 97, etc.) Component reference designator sequence is optional. It can be R1, L2, Ra, Cx, R301, etc. A sequential numbering has been used for convenience.

Introduction

7

For AC analysis, log frequency sweep: BF = Beginning log frequency = 10BF Hz ND = Number of decades from BF PD = Points per decade Total number of frequency points NP = ND·PD + 1 Linear frequency sweep BF = Beginning frequency in Hz LF = Last frequency in Hz DF = Frequency increment LF − BF +1 DF Using the RCL circuit, creating the node lists is just as easy as in early versions of SPICE. For the resistors, we create the array RR: Total number of frequency points NP =

 99  1 RR =   2   3

1 2 3 0

R1  R 4  R2   R3

The first column is one of the two nodes that the resistor is connected to, whereas the second column is the other node. The last column is the reference designator for the resistor, the value of which has been given previously. For the capacitors, we create the array CC: 1 CC =   3

2 0

C1  C2 

For the inductors, we similarly create the array LL:  1 LL =   3

2 0

L3 L 4 

The inputs are listed in the array Ein as Ein = (99 1). The first number indicates the node and the second, the amplitude in volts, which is usually set to 1. All independent inputs are referenced to ground. Because this circuit is passive with no controlled sources, this must be shown for VCVSs as EE = 0. No Voltage-Controlled-Current (VCCS) is shown as GG = 0.

8

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

REFERENCES 1. Seminal information for the method was obtained from DeRusso, P.M., Roy, R.J., and Close, C.M., State Variables for Engineers, John Wiley, NY, 1965.

2

Passive Circuits

2.1 INTRODUCTION TO NODE LIST CIRCUIT ANALYSIS (PART ONE) Analysis with output plots. Unit suffixes: K := 103

u := 10–6

m := 10–3

L3 R1

V1

C1

V2

R2

V3

Ein R3

R4

C2

L4

Component values: R1 := 10 C1 := 0.1·u

R2 := 100 C2 := C1

R3 := 50·K f1 := 10·K

R4 := 10·K f2 := 100·K

f1 and f2 are resonant frequencies for the values of L3 and L4. Calculate L3 and L4: L 3 :=

1

( 2 ⋅ π ⋅ f1) ⋅ C1 2

L 4 :=

1

( 2 ⋅ π ⋅ f 2 ) ⋅ C2 2

The eight inputs required for the subprogram comm42.mcd are: U, Y, EE, GG, RR, CC, LL, and Ein (see previous definitions). U := 3 Three unknown nodes. Y := 3 Take the output from node 3, V3.

9

10

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Set up node list arrays: Ein := (99 1)  99  1 RR : =   2  3 

1 2 3 0

R1  R4  R2 R 3

(Ein = 1 V at node 99)

 1 CC : =   3

EE := 0 (No VCVSs)

2 0

C1  C2 

 1 LL : =   3

2 0

L 3 L 4 

GG := 0 (No VCCSs)

Insert reference for subprogram file comm42 to get state space arrays A, B, D, and E: → Reference:C:\mcadckts\CaNL11\comm42.mcd Display arrays:  −91909.09  −90909.09 A=  394.78  0 

−90909.09 −91109.009 0 39478.42

−1 × 10 7 0 0 0

0  −1 × 10 7  0   0 

 90909.09   90909.09   B= 0     0   D = (0

1

0)

0

E = (0) DC Analysis dx dx = Ax + B, the DC value is obtained by setting = 0. Then AX = −B and dt dt X = −A−1⋅B where the uppercase X is used for DC. Mathcad’s lsolve function provides the solution. When B has more than one column, the explicit solution form X = −A−1⋅B must be used. In

X : = 1solve(− A, B) VC1 VC 2 XT = ( 0

0

IL 3 9.091

IL 4 9.091) m

That is, IL3 = IL4 = 9.091 mA. The capacitors are short-circuited by the inductor.

Passive Circuits

11

DC output voltage at node Y: Y = 3 Vodc := D·X + E Vodc = (0) DC node voltages (inductors open-circuited) Vdc := 1solve(A11, A14) VdcT = (1 0.833 0.832) Ein1,2 ⋅ R 3 = 0.832 R1 + R 2 + R 3 + R 4

Confirming the last entry in vector Vdc: AC Analysis BF := 3

ND := 3

Li := BF +

i −1 PD

PD := 40

NP := ND·PD + 1

s := 2·π·10L· −1

i := 1..NP

cvi := D(si·I – A)–1·B + E

180 ·arg(cvi) π Note the two resonant frequency cusps at f1 and f2. Voi := db(cvi)

Vai :=

Output magnitude at node Y

0

Y=3

dBV

−20 Voi

−40 −60 −80

3

3.5

4

4.5

5

5.5

6

Li Log freq(Hz)

Phase angle at node Y

180 150 120 Degrees

90 (Vai)1

60 30 0 −30 −60 −90

3

3.5

4

4.5 Li Log freq(Hz)

5

5.5

6

12

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

 2 Now take the output from both nodes 2 (V2) and 3 (V3): Y :=    3 Call the subprogram comm42 again to get the new D and E arrays. → Reference:C:\mcadckts\CaNL11\comm42.mcd

 −91909.091  −90909.091 A=  394.784  0 

−90909.091 −91109.091 0 39478.418

0  −1 × 10 7  0   0 

−1 × 10 7 0 0 0

 90909.091  90909.091  B= 0     0    −0.909 D=  0

0.091 1

0 0

0 0

 

 0.909  E=  0 

Note that only D and E have changed. Sample of cv (complex value) for one output: cv10 = (0.001 + 0.002i) Dimension = {K M} = {1 1} Get the new AC outputs and plot: cvi = D·(si·I – A)–1·B + E  0.855 − 0.213i Sample of cv for two outputs: cv10 =   0.001 + 0.002 i Dimension = {K M} = {2 1} Plot both: Vo 2 i : = db ( cvi )1  Vo 3i : = db ( cvi )2 

Passive Circuits

13 Output magnitude at node Y

0

2 Y = ( 3)

dBV

−20 Vo2i Vo3i

−40 −60 −80

3

3.5

4

V2 V3

4.5 Li

5

5.5

6

Log freq(Hz)

We can plot the ratio of V3 to V2 as follows:  ( cvi )2  Vo 32 i : = db    ( cvi )1 

Va 32 i : =

 ( cvi )2  180 ⋅ arg   π  ( cvi )1 

Magnitude of V3/V2

0

dBV

−20 Vo32i −40 −60 −80

3

3.5

4

4.5 Li

5

5.5

6

5

5.5

6

Log freq(Hz) Phase of V3/V2

180 120

Deg

60 Va32i

0 −60 −120 −180

3

3.5

4

4.5 Li Log freq(Hz)

14

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Introduction to NDS Method — SPICE Verification VEin 99 0 AC 1 R1 99 1 10 R4 1 2 10K R2 2 3 100 R3 3 0 50K * C1 1 2 0.1u C2 3 0 0.1u * L3 1 2 2.533m L4 3 0 25.33u * .PRINT AC V(2) V(3) VP(3) V(3,2) VP(3,2) .AC DEC 50 1E3 1E6 .OPTIONS NOMOD NOECHO NOPAGE .END Extracting the data from the SPICE *.out file and plotting: Fnom := READPRN(“c:\SPICEapps\datfiles\intro3.txt”) N := rows(Fnom) N = 151 k := 1..N

Spice verification - magnitude

0

dBV

−20 db(Fnomk,2) db(Fnomk,3)

−40 −60 −80

3

3.5 V2 V3

4

4.5 log(Fnomk,1) Log freq(Hz)

5

5.5

6

Passive Circuits

15 Spice verification - phase angle

180 150 120 Deg

90 Fnomk,4

60 30 0 −30 −60 −90

3

3.5

4

4.5

5

5.5

6

log(Fnomk,1) Log freq(Hz)

For further verification, we compare the accuracy of the A and B arrays obtained from the NDS method to that obtained from the algebraic solution in Section 2.2. Ax and Bx, shown in the following, are from that section.  −1  1 1   C1 ⋅  R 4 + R1 + R 2    −1  C 2 ⋅ R 1 + R2) ( Ax :=   1  L 3   0    −91909.09  −90909.09 Ax =   394.78  0  0 0 A − Ax =  0 0 

0 0 0 0

0 0 0 0

−1 C1 ⋅ ( R1 + R 2 )

−1 C1

−1  1 1  ⋅ +  C2  R1 + R 2 R 3 

0

0

0

1 L4

0

−90909.09 −91109.09 0 39478.42 0 0  0 0 

−1 × 10 7 0 0 0

 0   −1   C2   0    0  

0  −1 × 10 7  0   0 

16

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

1    C1 ⋅ ( R1 + R 2 )   0  90909.09       0   1 90909.09  Bx :=  Bx =  B − Bx =      0  0  C2 ⋅ ( R1 + R 2 )     0   0 0       0  

2.2 INTRODUCTION TO NODE LIST CIRCUIT ANALYSIS (PART TWO) K := 103

u := 10–6

The algebraic solution of a sample RCL circuit is given to show the amount of labor saved using the NDS method. For those less mathematically inclined, the next three pages can be skipped. The advantages of the NDS method can be seen just by glancing at the amount of circuit analysis algebra given in the following: L3 R1

V1

C1

V2

R2

V3

Ein

R1 := 10 R4 := 10·K fl := 10·K

R2 := 100 C1 := 0.1·u f2 := 100·K L 3 :=

1

( 2 ⋅ π ⋅ f1)

C2

R3

R4

2

⋅ C1

L4

R3 := 50·K C2 := C1

L 4 :=

1

( 2 ⋅ π ⋅ f 2 ) 2 ⋅ C2

Format goal: eL and iC on LH side; Ein, iL, and vC on RH side. Must only use terms involving these unknowns. We thus need N = Ncap + Nind = 4 equations in the following format including constant coefficients. f(eL, iC) = g(iL, vC, Ein) in which e L = L ⋅

diL dt

iC = C ⋅

dvC dt

We first see that eL3 = vC1

eL4 = vC2

(1)

Passive Circuits

17

which are in the correct format. Two more equations are needed. KCL at node V1: Ein − V1 V1 − V2 = iL 3 + iC1 + R1 R4

V1 − V2 = vC1

(2)

Ein v V1 − iL 3 − C1 − R1 R 4 R1

(3)

Substituting: Ein − V1 v = iL 3 + iC1 + C1 R1 R4

iC1 =

Not done yet; need to eliminate V1. KCL at node V2: iL 3 + iC1 +

vC1 V2 − V3 = R4 R2

We see that: V3 = vC2 Substituting and rearranging: V2 vC 2 vC1 − − − iC1 − iL 3 = 0 R2 R2 R 4

(4)

Solving Equation 4 for V2: V2 = iL 3 ⋅ R 2 + vC 2 +

vC1 ⋅ R 2 + iC1 ⋅ R 2 R4

V1 = vC1 + V2 From Equation 2

(5) (6)

Substituting Equation 5 into Equation 6 V1 = vC1 + iL 3 ⋅ R 2 + vC 2 +

vC1 ⋅ R 2 + iC1 ⋅ R 2 R4

Collecting terms: R2   V1 = vC1 ⋅  1 +  + vC 2 + iL 3 ⋅ R 2 + iC1 ⋅ R 2  R4  Substituting Equation 7 into Equation 3:

(7)

18

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

iC1 =

Ein v v  R 2  vC 2 iL 3 ⋅ R 2 iC1 ⋅ R 2 − − − iL 3 − C1 − C1 ⋅  1 + −  R1 R 4 R1 R 4  R1 R1 R1

Collecting terms: R 2  Ein R 2  vC 2 1 R2     1 iC1 ⋅  1 + = − iL 3 ⋅  1 + − − vC1 ⋅  + +      R1 R 4 R1 ⋅ R 4  R1  R1 R1  R1 From Equation 2: V2 = V1 − vC1 Repeating Equation 5: V2 = iL 3 ⋅ R 2 + vC 2 +

vC1 ⋅ R 2 + iC1 ⋅ R 2 R4

KCL at node V3: V2 − V3 V3 = + iC2 + iL 4 R2 R3 Substituting V3 = vC2 −V2 1   1 + vC 2 ⋅  + + iC 2 + i L 4 = 0  R 2 R 3  R2 Multiplying by –1: V2 1   1 − vC 2 ⋅  + − iC 2 − i L 4 = 0  R 2 R 3  R2 Substituting Equation 5: iL 3 +

vC 2 vC1 1   1 + + iC1 − vC 2 ⋅  +  − iC 2 − i L 4 = 0  R2 R 4 R2 R 3 

Rearranging to the correct format: iC1 − iC 2 = − iL 3 − or finally

vC 2 vC1 1   1 − + vC 2 ⋅  + + iL 4  R 2 R 3  R2 R 4

(8)

Passive Circuits

19

iC1 − iC 2 = − iL 3 +

vC 2 vC1 − + iL 4 R2 R 4

(9)

Create two {N N} arrays W and Q from Equation 1, Equation 8, and Equation 9. Fill in the coefficients from the LH sides for W, and for the RH sides for Q per the column headings: iC1

iC 2

 0  0  W :=  R2  1 + R1   1 vC1 1   0    1 1 R2  Q :=  −  + +   1 4 1 ⋅ R4  R R R   −1  R4 

eL 3 eL 4

0 0

1 0

0

0

−1

0

0 1   0  0

vC 2

iL 3

iL 4

0 1

0 0

−1 R1 1 R3

R2   − 1 +   R1 

0 0   0   1 

−1

S is created from the only Ein term in the third equation: P is an {N N} diagonal array in the same C and L order as W and Q.  0   0    S :=  1   R1     0 

 C1  0 P :=   0  0 

0 C2 0 0

Now form A and B as follows: C:= (W·P)–1  −91909.091  −90909.091 A=  394.784  0 

−90909.091 −91109.091 0 39478.418

−1 × 10 7 3.492 × 10 −10 0 0

0 0 L3 0

0 0  0 L 4 

A := C·Q

B := C·S

 90909.091 0  7  90909.091 −1 × 10   B= 0   0     0   0 

20

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Because the output is vC2, we place a 1 in the second column of the {K N} array vC1 vC 2 iL 3 D := ( 0

1

0

iL 4 0)

Because there are no input terms Ein in the output: E := 0 Prior to this shortcut method [*], the algebra would have to continue as follows. Isolating iC1 in Equation 8: iC1 =

vC 2 Ein 1  1  − iL 3 − − vC1 ⋅  +  R 4 R1 + R 2  R1 + R 2 R1 + R 2

Because iC1 = C1 ⋅ dvC1 − vC1 = dt C1

(10)

dvC1 , we get dt

1 vC 2 i Ein  1  ⋅ + − L3 + −   R 4 R1 + R 2  C1 ⋅ ( R1 + R 2 ) C1 C1 ⋅ ( R1 + R 2 )

(11)

From Equation 9: iC 2 = i L 3 − i L 4 +

vC1 vC 2 − + iC1 R4 R3

(12)

Substituting Equation 10 into Equation 12: iC 2 = i L 3 − i L 4 +

iC 2 =

vC1 vC 2 vC 2 1 Ein  1  − − iL 3 − − vC1 ⋅  + +   R 4 R1 + R 2  R1 + R 2 R4 R3 R1 + R 2 – vC1 Ein 1 1   − iL 4 + − vC 2 ⋅  +  R1 + R 2 R 3  R1 + R 2 R1 + R 2

Again, because iC 2 = C2 ⋅

dvC 2 dt

− vC1 dvC 2 v = − C2 dt C2 ⋅ ( R1 + R 2 ) C2

1 1  iL 4 Ein  ⋅ + − +   R1 + R 2 R 3  C2 C2 ⋅ ( R1 + R 2 )

From Equation 1 above, repeated here: eL3 = vC1

eL4 = vC2

(13)

Passive Circuits

21

eL 3 = L 3 ⋅

diL 3 , dt

diL 3 vC1 = dt L3

(14)

Similarly: diL 4 vC 2 = dt L4

(15)

Using Equation 11, Equation13, Equation14, and Equation15, the general form matrix equation

dx = Ax + Bu becomes dt

1   dvC1   −1 ⋅  1 +     dt   C1  R 4 R1 + R 2     −1  dvC 2    dt   C2 ⋅ ( R1 + R 2 )  diL 3  =  1     dt   L3  diL 4     0 dt  

−1 C1 ⋅ ( R1 + R 2 )

−1 C1

−1  1 1  ⋅ +   C2 R1 + R 2 R 3 

0

0

0

1 L4

0

1    C1 ⋅ ( R1 + R 2 )      1 + 2 1 2 ⋅ + C R R ( )  ⋅ Ein    0   0  

2.3 ALL-CAPACITIVE CIRCUIT u := 10–6 R3

R1

1

C1

2

Ein C2 3 R2

 0   −1   vC1     C2  ⋅  vC 2    iL 3  0  i    L4   0  

22

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

R1 := 10 U := 3  99 RR :=  1   3 tors) EE := 0

R2 := 100 R3 := 50 Y := 2 Ein := (99 1) 1 2 0

R1  R 3  R 2 

C1 := 0.1·u C2 := 0.5·u Input 1 V at node 99.

 1 CC :=   2

2 3

C1  LL := 0 (No inducC2 

GG := 0 (No controlled sources.)

Get A, B, D, and E arrays from subprogram comm42.mcd: → Reference:C:\mcadckts\CaNL11\comm42.mcd  −290909.1 A=  −18181.8

−90909.1 −18181.8 

 90909.1 B=  18181.8  D = ( −0.909

0.091)

E = ( 0.909 ) DC voltages at all U nodes in the order given by Vdc. If inductors are present, they are open-circuited: Vdc := lsolve(A11, A14) X := lsolve(–A,B) Vodc := D·X + E Y=2

VdcT = (1

1

0)

 0 X=   1 Vodc = (1) DC output voltage at node Y given by Vodc.

AC Analysis BF := 3

ND := 3

i := 1..ND·PD + 1

PD := 40

cvi := D·(si·I – A)–1·B + E 180 ·arg(cvi)1 π (Phase angle) Y=2

Vai :=

i −1 s := 2·π·10L· −1 PD Voli := db(cvi)

Li := BF +

Passive Circuits

23 Magnitude at node Y

Degrees

dBV

−1 Vo1i −2 −3 −4

Phase at node Y

10

0

3

4

5

0

Vai

−10 −20

6

3

4

5

Li

Li

Log freq (Hz)

Log freq (Hz)

2.4 ALL-INDUCTIVE CIRCUIT u := 10–6

mA := 10–3 R3

R1

1

L1

2

Ein L2 3 R2

R1 := 10 U := 3  99 RR :=  3   1

R2 := 100 R3 := 50 Y := 2 Ein := (99 1) 1 0 2

R1  R 2  R 3

 1 LL :=   2

L1 := 220·u

2 3

CC := 0 (No capacitors) EE := 0 GG := 0 (No controlled sources.) → Reference:C:\mcadckts\CaNL11\comm42.mcd

L1  L 2 

L2 := 330·u

6

24

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

 −2287272.7 A=  151515.2

227272.7  −484848.5 

 0  B=  3030.3 D = ( 50

−60 )

E = (1) VdcT = (1

Vdc := lsolve(A11, A14)  9.091 X=  9.091

iL1 mA iL 2

1

0)

X := lsolve(–A, B)

Vodc := D·X + E

Vodc = (0.909)

AC Analysis BF := 3

ND := 3

i −1 PD cvi := D·(si·I – A)–1·B + E Voli := db(cvi)

NP := ND·PD + 1

i := 1..NP

s := 2·π·10L· −1 Vai :=

PD := 50

180 ·arg(cvi)1 π

Li := BF +

Y=2

Amplitude at node Y 0

5 Degrees

dBV

−1 Vo1i −2 −3

Phase at node Y

10

Vai

0 −5

3

4

Li

5

6

−10

3

Log freq (Hz)

Li

5

Log freq (Hz)

2.5 TWIN-T RC NETWORK 60-Hz Notch Filter K :=103 u := 10–6

4

Meg := 106

m := 10–3

6

Passive Circuits

25 C2

C3

V1 R3

R4

V4

Ein

R1

R2

V2 C1

V3

R5

R1 := 267·K R2 := 267·K R3 := 133·K R4 := 0.01 C1 := 0.02·u C2 := 0.01·u U := 4 Y :=3 Ein := (99 1)  4  2  RR :=  3  1   99

2 3 0 0 4

R1  R2  R5 R 3 R 4 

2 CC : =  4   3

0 1 1

R5 := 10·Meg C3 := 0.01·u

C1  C2   C 3

GG : = 0 LL : = 0 EE : = 0

Resistor R4 is the output impedance of the external voltage source. → Reference:C:\mcadckts\CaNL11\comm42.mcd DC Analysis

X := lsolve(–A, B)

 0.975  VC1 X =  1  VC 2    0.949  V C3

Vodc := D·X + E

Vodc = (0.949) Ein1,2 ⋅ R 5 = 0.949 (Checks; same as Vodc.) R 4 + R1 + R 2 + R 5 DC node voltages: Vdc := lsolve(A11, A14) V1 Vdc T = ( 0

V2

V3

0.975

0.049

V4 1)

Note: The reader is encouraged to reverse 3 1 C3 to 1 3 C3 in the CC array and note the polarity change of VC3 above. Sign changes in the D array cancel the VC3 sign change and the output Vodc polarity remains the same. In SPICE the state variables X and the A, B, D, E arrays are not accessible. As will be seen later, access to these arrays can be useful.

26

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

AC Analysis BF := 0 DF :=

LF := 100

LF − BF NP

NP := 100

i := 1..NP + 1

s := 2·π·F· −1

DF = 1

(Linear frequency sweep) Fi := BF + DF·(i – 1)

cvi := D·(si·I – A)–1·B + E

180 ·arg(cvi) π Note: Most math software and scientific calculators limit phase angles of complex numbers to +/– 180 deg, or π+ to –π. SPICE phase angle outputs can be from 0 to + 360 (2 ) or 360 deg. For example, +300 deg is equivalent to –60 deg; –200 deg is equivalent to +160. Both are correct. Voli := db(cvi)

Vai :=

Output plots Y=3 Magnitude at node Y

0

dBV

−20 Voi −40

−60

0

10

20

30

40

50 Fi

60

70

80

90

70

80

90

100

Freq(Hz) Phase at node Y

100

Deg

50 (Vai)1

0 −50 −100

0

10

20

30

40

50 Fi Freq(Hz)

60

100

Passive Circuits

27

2.6 BROADBAND PULSE TRANSFORMER MODEL K := 103

p := 10–12

u := 10–6

n := 10–9

R6 R1

1

R2

6

L1

2

m := 10–3

R4

3

C2 4

L3

5

Ein C1

R7

R3

R5 L2

7

R1 := 10 R6 := 0.5 L2 := 2·m U := 7

R2 := 1.5 C1 := 20·p L3 := 1·u Y := 5

R3 := 20·K C2 := 5·p R7 := 1

Ein := (99

10)

 99  1   3  RR :=  3  5   1  3

C3

R4 := 1.5 C3 := 20·p

R5 := 1·K L1 := 1·u

10 Vac input. 1 2 0 4 0 6 7

R1  R2  R 3 R 4  R5  R6 R 7 

1 CC : =  6   5

0 5 0

C1  C2   C 3

2 LL : =  7   4

3 0 5

L1  L2  L 3

EE : = 0 GG : = 0 L1 and L3 represent leakage inductance; L2 is the magnetizing inductance. Insert subprogram file: → Reference:C:\mcadckts\CaNL11\comm42.mcd

28

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

DC Analysis X := lsolve(–A,B) X Format: VC1

(

X T = 1.999

VC 2

VC 3

IL 1

IL 2

1, 201

0.7 798

0.8

0.799

Vodc := D·X + E

IL 3 7.98 × 10 −4

)

Vodc = (0.798)

Note that this DC analysis is certainly easier than deriving the following algebraic solution: Vdc5 : =

Ein1,2 ⋅ R 5     R1 + R 2 1 +  ⋅ (R 4 + R5)   (R 4 + R5) ⋅ R 3 ⋅ R 7  ⋅ + + ⋅ + R 3 R 7 R 4 R 5 R 3 R 7 ( )( )  

Vdc5 = 0.798 DC node voltages (inductors open-circuited): VdcT = (10

Vdc := lsolve(A11, A14)

10

0

0

0

10

0)

AC Analysis BF := 2

ND := 6

i := 1..ND·PD +1

PD := 30 Li := BF +

cvi := D·(si·I – A)–1·B + E

i −1 PD

rd :=

s := 2·π·10L· −1

180 π

Voi := db(cvi) Vai := rd·arg(cvi) Note flat response from about 1 KHz to 10 MHz. Output amplitude at node Y

40

dBV

20 Voi

0 −20 −40

2

3

4

5 Li Log freq(Hz)

6

7

8

Passive Circuits

29 Phase at node Y

200 150 Degrees

100 50 (Vai)1

0 −50 −100 −150 −200

2

3

4

5 Li Log freq(Hz)

6

7

Broadband Pulse Transformer — SPICE Verification *File: c:\SPICEapps\Cirtext\xformer.cir VEin 99 0 AC 10 R1 99 1 10 R2 1 2 1.5 R3 3 0 20K R4 3 4 1.5 R5 5 0 1K R6 1 6 0.5 R7 3 7 1 * C1 1 0 20p C2 6 5 5p C3 5 0 20p * L1 2 3 1u L2 7 0 2m L3 4 5 1u * .AC DEC 20 100 1E8 .PRINT AC V(5) VP(5)

8

30

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

.OPTIONS NOMOD NOPAGE NOECHO .END Extracting the data from the SPICE *.out file: Fnom := READPRN(“c:\SPICEapps\datfiles\xformer.txt”) N := rows(Fnom) N = 121 k := 1..N Output amplitude at node Y

40

dBV

20 db(Fnomk,2)

0 −20 −40

2

3

4

5

6

7

8

Degrees

log(Fnomk,1) Log freq(Hz)

Fnomk,3

200 150 100 50 0 −50 −100 −150 −200

Phase at node Y

2

3

4

5 log(Fnomk,1) Log freq(Hz)

6

7

8

2.7 ALL-CAPACITIVE LOOPS (ACL) In a physical circuit, two or more capacitors in parallel can occur, such as in power supply decoupling circuits. However, in converting capacitors to ideal independent voltage sources (which is done using this method of analysis), we end up with a violation of Kirchoff’s laws. For example, in the circuit that follows:

C1

C2

C3

+ −

E1

+ −

E2

+ −

E3

Passive Circuits

31

If we assign arbitrary values to E1, E2, and E3, Kirchoff’s Voltage Law (KVL) is violated around any of the three possible loops. If we assign the value of +1 V to all three, because the resistance is zero, infinite current will flow around the loops unless all assigned values of 1.0 have an infinite number of zeros after the decimal point, e.g., if E1 – E2 = 10–9000 V divided by zero resistance is infinite current. Another example of an ACL is: C2

C1

C3

When converted to ideal voltage sources, KVL is again violated. For example, if the arbitrary values were C1 = E1 = 10 V, C2 = E2 = 7 V, and C3 = E3 = 20 V, KVL yields –10 + 7 + 20 = +17 V ≠ 0. Every “real-world” capacitor has a small amount of series resistance, termed equivalent series resistance (ESR). The cure in state space analysis of circuits with ACLs is to place a small ESR resistor (≈ 0.01 Ω) in series with all (or all but one) of the capacitors. E1

+ −

R2

R1

E2

+ −

E3 The cure

+ −

R3

2.8 ALL-INDUCTIVE CUTSETS (ICS) A similar problem occurs with circuits having two or more inductors connected to the same node. In this analysis method, the inductors become ideal current sources connected to the same node, and we end up with a violation of Kirchoff's Current Law (KCL), as shown in the following: L1 L2

I1 V1

L3

I2

+



+



V1 I3

+



Kirchoff’s Current Law at node V1 is I1 + I2 = I3. This law is violated regardless of the values of I1, I2, and I3. The term cut set comes from circuit topology. If we were to place a small “cookie cutter” at node V1, it would cut the wires of all three inductors. Thus, we are cutting a set of inductor wires.

32

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

The cure is to place “de-Qing” resistors in parallel with at least one of the inductors as shown in the following. The values to be used will depend on the remainder of the circuit and the desired L/R time constants.

I1

+

I2

+

R1

R3





R2

The cure I3 V

+



In defense of the NDS method, it should be stated that ACLs and/or ICSs will cause any state space analysis method to fail if additional corrective steps are not taken. See, for example, Intermediate Network Analysis, Shlomo Karni, Allyn & Bacon, 1971.

2.9 ALL-CAPACITIVE LOOP EXAMPLE K := 103

u := 10–6

m := 10–3

R1

V1

KHz := 103

C3

V2

Ein C1

R3

C2 V3

L3

R1 := 1·K R2 := 0.1 R3 := 100 C1 := 1·u C2 := C1 C3 := C1 L3 := 25.33·m U := 3 Y := 3 Ein := (99 1) GG := 0 EE := 0 LL := (3 0 L3)  99 RR : =   2 1 CC : =  1   2

1 3 0 2 0

R1 R 3 C1  C 3  C2 

Passive Circuits

33

Call reference subprogram: → Reference:C:\mcadckts\CaNL11\comm42.mcd A, B, D, and E are not returned. Due to the ACL, A is singular, i.e., the determinant of A is zero, and the inverse of A is undefined. Insert R2 to break ACL. R1

V1

R2

Ein

C3

V3

V2

R3

C2

C1

V4 L4

 99 RR : =  1   3 1 CC : =  2   3 U := 4

Y := 4

LL := (4

0

1 2 4 0 3 0

R1  R 2  R 3 C1  C 3  C2 

L3)

Reinsert subprogram for new node lists. → Reference:C:\mcadckts\CaNL11\comm42.mcd AC Analysis BF := 2

ND := 2

i := 1..ND·PD + 1

PD := 50 i −1 s := 2·π·10L· −1 PD Voi := db(cvi)

Li := BF +

cvi := D·(si·I – A)–1·B + E

34

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad Output at node Y

−20

dBV

−30 Voi −40

−50

2

2.5

3 Li

3.5

4

Log freq(Hz)

Y=4

REFERENCES 1. R. Boyd, State Space Averaging with a Pocket Calculator, High Frequency Power Conversion Conference Proceedings, Santa Clara, CA, 1990, p. 283.

3

Controlled Sources

3.1 CONTROLLED (DEPENDENT) SOURCES 3.1.1 VOLTAGE-CONTROLLED CURRENT SOURCE (VCCS) SPICE convention: Gname Vp Vn Vcp Vcn Transconductance The units of transconductance are amperes/volts = 1/ohms = siemens (or mhos, for you old-timers). Vp and Vn are the node connections of the current source in the circuit. Current flows away from node Vp (into the + terminal of the source) and towards node Vn, going out of the source. Vcp and Vcn are the + and controlling voltage nodes. This convention is chosen because virtually all models of transistors and MOSFETs depict the current as flowing down and internally away from the collector or drain terminal of the device. Example: MOSFET drain current: Id = gm·Vgs = gm(Vg – Vs) Here Vg and Vs are Vcp and Vcn, respectively. Because Id is dependent by definition, it is unknown, as usually are Vg and Vs. In MathCAD, GG = (Vp Vn Vcp Vcn Gain) For a MOSFET, GG = (Vp Vn Vg Vs gm)

3.1.2 CURRENT-CONTROLLED CURRENT SOURCE (CCCS) SPICE convention: Fname Vp Vn Controlling Current Gain In the NDS analysis method, the controlling current is specified as I = f(V/R)  Ein − V1  Example: Ic = B ⋅ lb = B   R1 

3.1.3 VOLTAGE-CONTROLLED VOLTAGE SOURCE (VCVS) SPICE convention: Ename Vp Vn Vcp Vcn Gain As in VCCS, Vp and Vn are the + and connections of the source in the circuit, and Vcp and Vcn are the + and controlling nodes. Example: V1 V2 = k(V3 V4), or in SPICE Ename V1 V2 V3 V4 k In MathCAD, EE = (Vp Vn Vcp Vcn Gain) = (V1 V2 V3 V4 k) For an opamp, which is usually a single-ended output, Vo = Ao(Vcp Vcn), where typically Ao = 106 V/V. For an inverter, Vcp = 0. For a voltage follower, Vo is connected to Vcn and

35

36

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Vo − AoVcp + AoVo = 0, Vo (1 + Ao ) = AoVcp Vo =

AoVcp Ao = Vcp, since ≈1 1+Ao 1 + Ao

and in MathCAD as EE = (Vo 0 Vcp Vcn Ao) = (Vo 0 Vcp Vo Ao)

3.1.4 CURRENT-CONTROLLED VOLTAGE SOURCE (CCVS) SPICE convention: Hname +V –V Controlling Current Transresistance The units of transresistance are volts/amperes = ohms. Only two types are used in NDS method, the VCVS and the VCCS. Conversions from the remaining two are easily accomplished as shown in the following subsections.

3.1.5 CCVS

TO

VCVS

To convert a CCVS to a VCVS, divide the controlling current nodes by the resistance in the controlling current branch. (This “resistance” could be that of a printed circuit board trace or wire, or a small current-sensing resistor.) Example: Assume the controlling current Ic is through a resistor or resistance R2, which is connected to nodes V2 and V1. Then  V2 − V1  Rc Vh = Rc ⋅ Ic = Rc  = (V2 − V1) Gain = Rc / R2  R 2  R 2 The gain is thereby converted from a “transresistance” in dimensions of ohms, to a dimensionless gain. MathCAD format: EE = (Vp Vn Vcp Vcn Gain) = (Vh 0 V2 V1 Rc/R2), which is very similar to the SPICE format.

3.1.6 CCCS

TO

VCCS

To convert a CCCS to a VCCS, divide the (dimensionless) gain by the resistance of the “controlling current.” Example: B  Ein − V1  Ic = B ⋅ lb = B  = ( Ein − V1)  R1  R1 The controlling voltage is now Ein – V1, and the “gain,” with dimension 1/ohms or “transconductance,” is B/R1. In MathCAD format, GG = (Vp Vn Vcp Vcn Gain) = (Vp Vn Ein V1 B/R1).

Controlled Sources

37

To repeat, the first input Ein is given the node number 99. For a second input, Ein2 = 98, Ein3 = 97, etc., down to 90. For example, if Vp = 2, Vn = 1, Vcp = 99, Vcn = 1, then GG = (2 1 99 1 B/R1).

3.1.7 FOUR RULES THAT MUST BE OBSERVED 1. The output of a controlled source cannot be connected directly to an independent input source. That is, EE = (99 0 2 1 gain) is not allowed. Input voltage sources are specified, for example, as Ein = (99 5), the input connected from node 99 to ground, with an amplitude of +5 V. However, EE = (2 0 99 1 gain), one input being a controlling node, Vcp or Vcn, is allowed. Here and as earlier, “99” represents any of the nodes 99, 98, 97, … , etc., down to 90. An independent source can be created by having Vcp = 99, 98, etc., and Vcn = 0. For example, assume Ein = (99 5), and it is desired to connect an independent 15-mA current source at an internal node V2 to node V7. Then GG = (2

7

99

0

0.015/5)

For an independent 15 V source at the same nodes: EE = (2 7 99 0 15/5) 2. Vp in a VCVS is not allowed to be zero. That is, the output nodes of a VCVS must always be (Vp 0) or (Vp Vn). For example, EE = (0 2 3 0 gain) is not allowed. If a negative output is desired, use EE = (2 0 3 0 – gain) or EE = (2 0 0 3 gain). 3. If a capacitor C or inductor L in the circuit being analyzed is connected directly to an ideal input source, it must have an equivalent series resistance (ESR) resistor in series between it and the source. That is CC = (99 1 C1) or LL = (98 2 L1) are not allowed. This will be a minor inconvenience as every real-world capacitor and inductor has an ESR. Also, every real-world voltage source has some finite internal source impedance which includes resistance. Hence, the simulation will be more realistic with ESR included. If in doubt about what value of ESR to use, use 0.01 Ω for capacitors and 0.05 Ω for inductors. 4. The nodes Vp or Vn of two or more VCVS’s (EE) must not be common. That is 2 EE =  2

1 0

12 3

4 4

4 2 

is not allowed. In the NDS method, this results in “node contention,” and the solution will not be correct. As in SPICE, every circuit must have at least one ground node (node 0).

38

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

3.2 FLOATING VCVS K := 103

uF := 10–6

m := 10–3

R1

uV1

V1

V2

− +

Ein C1

Gain of VCVS.

 99  2 RR : =   2  3  LL := 0

Ein := (99

R1  R2  R 3 R 4 

2)

R4

R4 := 2·K Y := 3

180 π

rd :=

1 0 3 0

V3 C2

R2

R1 := 1·K R2 := 3·K R3 := 4·K C1 := 0.01·uF C2 := 0.05·uF U := 3 u := 20

R3

 1 CC : =   3

0 0

C1  C2 

GG := 0

VCVS equation: uV1 = V2 – V1 or V2 = V1·(1 + u) Format: EE = (Vp

Vn

Vcp

Vcn gain), then: EE := (2

1

1

→ Reference:C:\mcadckts\CaNL11\comm42.mcd  −1.325 × 10 6 A=  105000 D = (0

1)

25000  −15000 

 200000  B=  0 

E = (0)

DC Analysis X := lsolve(–A, B) Vodc = (1.217)

XT = (0.174

1.217)

Vodc := D·X + E

DC node voltages: Vdc := lsolve(A11, A14)

VdcT = (0.174

3.652

1.217)

0

u)

Controlled Sources

39

Check VCVS equation: Vdc2 – Vdc1 = 3.478

u·Vdc1 = 3.478

Checks.

AC Analysis BF := 2

ND := 5

PD := 20

Lit := ND·PD + 1

i :=1..Lit

i−1 s := 2·π·10L· −1 db(x) := 20·log(|x|) PD cvi := D·(si·I – A)–1·B + E Voi := db(cvi) Vai := rd·arg(cvi)

Li := BF +

Plot marker: M1 := db(Vodc)

Y=3 Magnitude at node Y

20 M1

dBV

0

Voi

−20 −40 −60 −80

2

3

4

5 Li Log freq(Hz)

6

7

Phase at node Y

0

Deg

−45 (Vai)1

−90 −135 −180

2

3

4

5 Li Log freq(Hz)

6

7

40

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

SPICE Verification — Floating VCVS *File:

c:\Spicapps\Cirtext\vcvs1c.cir

VEin 99 0 AC 2 R1 99 1 1K C1 1 0 0.01u R2 2 0 3K R3 2 3 4K C2 3 0 0.05u R4 3 0 2K * EE 2 1 1 0 20; VCVS .AC DEC 20 100 1E7 .PRINT AC V(3) VP(3) .OPTIONS NOPAGE NOMOD NOECHO .END Fnom := READPRN(“c:\SPICEapps\datfiles\vcvs1c.txt”) N := rows(Fnom) N = 101 k := 1..N

Spice V3 magnitude

20

dBV

0 db(Fnomk,2)

−20 −40 −60 −80

2

3

4 5 log(Fnomk,1) Log freq(Hz)

6

7

Controlled Sources

41 Spice V3 phase angle

0

Deg

−45 Fnomk,3

−90 −135 −180

2

3

4

5

6

7

log(Fnomk,1) Log freq(Hz)

3.3 CIRCUITS WITH M > 1 The subprogram that constructs the A, B, D, and E arrays from the node lists also counts the number of rows in the Ein array and assigns this value to M. In most cases, the user is interested in the node voltages with all inputs active. In some cases, however, the separate superposed contribution of each independent input may be desired. Hence, there are two different subprograms to call, depending on the type of output desired. For DC, call dccomm42.mcd if the user wants all inputs active simultaneously. (Most frequently used.) Call dccomm42m.mcd if the separate contribution of each independent input, M > 1, one at a time, is desired. For AC, call comm42.mcd for all inputs active, and comm42m.mcd to separate the node voltages due to the M > 1 inputs. For a simple example, we use one “circuit” with M = 3 inputs and U = 3 unknown nodes: Ein1 Ein 2 Ein 3  0.1 A 3 : =  −0.01   0

−0.01 0.2 −0.02

0  −0.02   0.3 

1 B3 : =  0   0

Ein1

Eiin 2

 10.05 V3 : = A 3 ⋅ B3 V3 =  0.51   0.03

1.01 10.12 0.67

−1

0 2 0

0 0  3

Ein 3 0.1  V1 1.01  V2  10.07  V3

42

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

The aforementioned is what is returned if dccomm42m.mcd is called. The separate contributions of each column (independent input) in B3 is given. When this is not desired, calling dccomm42.mcd gives −0.01 0.2 −0.02

 0.1 A3 : =  −0.01   0 V1 : = A 3−1 ⋅ B1

0  −0.02   0.3 

 1 B1 : =  2     3

 11.16  V1 V1 =  11.64  V2    10.78  V3

We could get the same answer by adding the columns of V3, but this requires additional statements in the worksheet. i : = 1..3 V1i : = V3i,1 + V3i,2 + V3i,2 + V3i,3  11.16  V1 =  11.64     10.78  For circuits in which M = 1, i.e., Ein array has one row, it does not matter which subprogram is called. This applies only to those circuits with more than one input, where Ein has more than one row and M > 1. Example DC circuit with M = 2: K := 103 R7

V99 R1

V1

R3

V2

R4

V3

Ein1

R8

V98

Ein2 R2

R5

R6

Controlled Sources

43

 99 Ein : =   98

15  −5 

 99  1   1  2 RR : =   2   3  1   3

1 0 2 3 0 0 3 98

1⋅ K  1⋅ K   1⋅ K  1 ⋅ K  10 ⋅ K   1⋅ K  1.5 ⋅ K   1⋅ K 

R1 R2 R3 R4 R5 R6 R7 R8

GG := 0 EE := 0 U := 3 Inputs separate. (M = 2) → Reference:C:\mcadckts\CaNL11\dccomm42.mcd Va : = A1−1 ⋅ B2 Ein1  5.3936 Va =  3.4884   1.9320

Ein 2 –0.6440  V1 −1.1628  V2  −1.7979  V3

In SPICE, one of two inputs would have to be zeroed, which requires two runs to get the same information as given earlier. If M = 3, SPICE would require three runs, and so forth. Inputs added. (M = 1) → Reference:C:\mcadckts\CaNL11\dccomm42.mcd Vb : = A1−1 ⋅ B2  4.7496  Vb =  2.3256     0.1342  Va1,1 + Va1,2 = 4.7496 etc.

44

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

3.4 FIRST-ORDER MOSFET MODEL K := 103

u := 10–6

n := 10–9

p := 10–12

mA := 10–3

Edd R4 V4

R1

V1

R5

V5 C3

M1

Eg R2 V2 C1

V3

R3

R1 := 4.99·K R5 := 1.96·K

R2 := 1·K C1 := 0.1·u

R3 := 10·K C3 := 4.7·n

R4 := 4.99·K

From MOSFET data sheet: gm := 0.001 Edd := 200 Eg := 20 Nodes: V1 — Gate; V3 — Source; V4 — Drain Model using VCCS: C2 := 400·p C2 represents the internal gate-source capacitance. (Nonlinear in higher-order models.) R1

Edd

V1

Eg

R4 R2 C1

C2

V2

V3

R3

V4 R5 + g1 −

V5 C3

Controlled Sources

45

(VCCS g1 is drain current Id) VCCS: gl = gm·Vgs = gm·(V1 – V3) VCCS format: GG = (Vp Vn Vcp Vcn GG := (4 3 1 3 gm) Eg = 20 Edd = 200

gain)

 99  1  RR :=  3  98   4 2 CC : =  1   5

R1  R2  R 3 R 4  R 5 

1 2 0 4 5

C1  C2   C 3

3 3 0

Eg  Edd 

 99 Ein : =   98 LL : = 0 U := 5 Y := 4

→ Reference:C:\mcadckts\CaNL11\comm42.mcd DC Analysis VC1 VC2 VC3 DC voltages across C1, C2, and C3 X := –A–1·B

XT := (1.82

1.82

190.93)

DC output: Vodc := D·X + E

Vodc = (190.93)

DC voltage at all nodes: Vdc := A11–1·A14 Drain current Id: Vgs := Vdc1 – Vdc3

VdcT = (20

20

Vgs = 1.818

18.128

190.93

Id := gm·Vgs

1.82 × 10–3)

Id = 1.82mA

46

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Id := Vdc6 Id = 1.82mA = Vodc. Checks.

V4 := Edd – Id·R4

V4 = 190.93

AC Analysis BF := 2 Li := BF +

ND := 4 i−1 PD

PD := 25

Lit := ND·PD + 1

s := 2·π·10L· −1

i := 1..Lit

cvi := D·(si·I – A)–1·B + E

Voi := |cvi| Drain voltage V4

200

Y=4

Volts

150 Voi

100 50 0

2

3

4 Li Log freq(Hz)

5

6

mA := 10–3

n := 10–9

3.5 VCVS AND CCCS EXAMPLE K := 103

u := 10–6

m := 10–3

Hybrid-pi model of the Bipolar Junction Transistor (BJT). C1

l1 R1

R3

V1

V4

Ein R2 + −

V2 V3 R5

+ g1 −

R4

C2

Controlled Sources

R1 := 100 R5 := 10

47

R2 := 10 C1 := 80·n

R3 := 40·K C2 := 5·n

R4 := 2·K

Controlled source gains:

hre := 0.004

hie := 100

rd :=

180 π

 99  1  RR :=  1  4   3

1 2 4 0 0

R1  R2  R 3 R 4  R 5 

 1 CC : =   4

4 0

C1  C2 

LL : = 0 Ein : = ( 99

0.1)

U := 4 Y := 4 VCVS: V2 – V3 = hre·(V1 – V4) Format for EE: EE = (Vc

Vn

Vcp

Vcn

gain)

then EE := (2

3

1

4

hre)

Convert g1 CCCS to a VCCS. g1 = hie ⋅ I1 I1 =

Ein − V1 hie g1 = ⋅ ( Ein − V1) R1 R1

48

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

GG = ( Vp

Vn

Vcp

Vcn

 GG =  4 

0

99

1

GG = ( 4

0

99

1

gain ) hie   R1 

1

)

→ Reference:C:\mcadckts\CaNL11\comm42.mcd  −747812.5 A=  188040000

−75000  187900000 

 12500  B=  −19800000  D = (0

1)

E = (0) DC Analysis X := lsolve(–A,B) XT = (24.226 –24.138) Vodc := D·X + E Vodc = (–24.14) Vdc := lsolve(A11,A14) VdcT = (0.09 0.09 –4.79 × 10–3 –24.14 0.01) Igl := Vdc5 Igl = 12.67mA (Igl = current thru souce gl) AC Analysis BF := 1

ND := 7

PD := 20

i := 1..ND·PD + 1

i−1 F := 10L s := 2·π·F· −1 PD Voi := D·(si·I – A)–1·B + E Vai := rd·arg(Voi)

Li : = BF +

NDS results and SPICE verification: Fnom := READPRN(“c:\SPICEapps\datfiles\vcvs_cccs4.txt”) N := rows(Fnom) N = 141 k := 1..N Hybrid-pi BJT Model *File: vcvs_cccs4.cir VEin 99 0 AC 0.1 R1 1 99 100 R2 1 2 10 R3 1 4 40K R4 4 0 2K R5 3 0 10

Controlled Sources

49

* C1 1 4 80n C2 4 0 5n * EE 2 3 1 4 0.004 * B = 100; Gain B/R1 = 1.0 in GG GG 4 0 99 1 1 .AC DEC 20 10 1E8 .PRINT AC V(4) VP(4) .OPTIONS NOECHO NOPAGE NOMOD .END Magnitude at node Y

30

dBV

20 db(Fnomk,2) db(Voi) − 4

10 0 −10 −20 −30

1

2

3

Spice NDS

4 5 log(Fnomk,1), Li Log freq(Hz)

6

7

6

7

8

Y=4 Traces are separated to show congruency. Phase angle at node Y

80 40

Deg

0 Fnomk,3

−40

(Vai)1− 10

−80 −120 −160 −200

1

2 Spice NDS

3

4

5

log(Fnomk,1), Li Log freq(Hz)

8

50

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

3.6 TWO INPUTS, THREE OUTPUTS K := 103

n := 10–9

R1 Ein1

V1

mA := 10–3

R2

V2

C1

R3

V3

R4

V4

+ GG C2 −

+ EE −

R7

R3 := 1·K R8 := 1·K

Ein2

R4 := 2·K R5 := 2.2·K C1 := 20·n C2 := 4·n

100  50 

Gains: gm := 10

C3

R6

R8

Three outputs.  99 Ein :=   98

V5

V7

V6

R1 := 1·K R2 := 2·K R6 := 2.2·K R7 := 1·K C3 := 6·n U := 7 Y := (1 3 5)T

R5

a := 5  99  1   2  3 RR :=   4   5  6   7 1 CC : =  3   5 LL : = 0

1 2 3 4 5 98 0 0 0 0 0

R1  R2  R 3 R 4  R5  R6 R 7  R8 C1  C2   C 3

Controlled Sources

51

For VCVS EE: V4 – V7 = a·(Ein2 – V2)

EE := (4

7

98

2

a)

3

99

gm)

a=5

For VCCS GG: gl = gm·(V3 – Ein1)

GG := (2

6

gm = 10

→ Reference:C:\mcadckts\CaNL11\comm42.mcd DC Analysis X : = − A −1 ⋅ B Vdc : = D ⋅ X + E  22.03  Vdc =  100.03     308.96   1 Y =  3    5  Vn : = 1solve ( A11, A14 ) V1

V2

V3

V4

V5

V6

V7

Ig1

Vn T = ( 22.03 – 133.92 100.03 567.93 308.96 311.92 – 351.66 0.331) Igl := Vn8

Igl = 311.92mA

AC Analysis BF := 3 Li := BF +

ND := 3 i−1 PD

PD := 40

i := 1..ND·PD + 1

s := 2·π·10L· −1

cvi := D·(si·I – A)–1·B + E

Sample of the three (complex) outputs:  21.37 − 6.19 i  cv5 =  100.03 + 0 i     308.92 – 1.14 i

 1 Y =  3    5 

52

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Vo1i = db ( cvi )1  Vo 2 i = db ( cvi )2  Vo 3i = db ( cvi ) 3  SPICE Listing — Two In Three Out *File:

c:\SPICEapps\Cirtext\wizard.cir

VEin1 99 0 AC 100 VEin2 98 0 AC 50 * R1 99 1 1K R2 1 2 2K R3 2 3 1K R4 3 4 2K R5 4 5 2.2K R6 5 98 2.2K R7 6 0 1K R8 7 0 1K * C1 1 0 20n C2 3 0 4n C3 5 0 6n * GG 2 6 3 99 10 EE 4 7 98 2 5 .AC DEC 50 1E3 1E6 .OPTIONS NOMOD NOECHO NOPAGE .PRINT AC V(1) V(3) V(5) .OPTIONS NUMDGT 8 .END Fnom := READPRN(“c:\SPICEapps\datfiles\wizard.txt”) N := rows(Fnom) N = 151 k := 1..N

Controlled Sources

53

NDS and SPICE plots: Spice V1 magnitude

dBV

32

db(Fnomk,2)

30 28 26

3

3.5

4

4.5 log(Fnomk,1) Log freq(Hz)

5

5.5

6

NDS V1 magnitude

32

dBV

30 Vo1i 28 26

3

3.5

4

4.5 Li

5

5.5

6

Log freq(Hz)

Spice V3 magnitude

dBV

40.0028

db(Fnomk,3)

40.0024 40.0020 40.0016

3

3.5

4

4.5 log(Fnomk,1) Log freq(Hz)

5

5.5

6

54

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad NDS V3 magnitude

dBV

40.0028

Vo2i

40.0024 40.0020 40.0016

3

3.5

4

dBV

5

5.5

6

Spice V5 magnitude

50

db(Fnomk,4)

4.5 Li Log freq(Hz)

49.6 49.2 48.8

3

3.5

4

4.5 log(Fnomk,1) Log freq(Hz)

5

5.5

6

NDS V5 magnitude

50

dBV

49.6 Vo3i 49.2 48.8

3

3.5

4

4.5 Li Log freq(Hz)

5

5.5

6

3.7 THIRD-ORDER OPAMP MODEL This model has two poles and one zero. K := 103

uF := 10–6

pF := 10–12

MHz := 106

KHz := 103

Controlled Sources

55 R3

R1

1 +

EE1

2

3 +

C1



R2 EE2

5 C3 6

4 +

C2



R1 := 100

R2 := 100

EE3



R3 := 100

7 R4

+

EE4



R4 := 10

Pole frequencies: pl := 100

p2 := 1·MHz

Zero frequency C1 :=

zl := 100·KHz

1 2 ⋅ π ⋅ R1 ⋅ p1

Cl = 15.915uF

1 1 C 3 := C2 = 1591.549pF 2 ⋅ π ⋅ R 2 ⋅ p2 2 ⋅ π ⋅ R 3 ⋅ z1 C3 = 0.016uF U := 7 Y := 7 Ein := (99 1) Ao := 106 C2 :=

Third-stage transfer function: 1 R 3 ⋅ C3 F (s) = 1 s+ Rp ⋅ C 3 s+

Rp :=

R3 ⋅ R4 R3 + R4

Pole

Zero 1   log  =5  2 ⋅ π ⋅ R 3 ⋅ C 3  1 3 RR :=  5 6  LL := 0

2 4 6 0

R1  R2  R 3 R 4 

  1 log  = 6.041  2 ⋅ π ⋅ Rp ⋅ C 3 

2 CC :=  4   5

0 0 6

C1  C2   C 3

GG := 0

56

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

1 3  EE :=  5  7

0 0

99 2

0 0

0

4

0

0

6

0

1  1   R3  1+ R4   Ao 

Note EE3 gain.

→ Reference:C:\mcadckts\CaNL11\comm42.mcd AC Analysis BF := 1

ND := 6

i−1 PD Voi := db(cvi) Li := BF +

PD := 25

i := 1..ND·PD + 1

s := 2·π·10L· −1

cvi := D·(si·I – A)–1·B + E

Opamp open loop gain

140 120

dBV

100 Voi

80 60 40 20 0

1

2

3

4 Li Log freq(Hz)

5

Note zero at 105 Hz; and double pole at 106 = 1 MHz

3.8 A SUBCIRCUIT SCHEME Opamp model using both inverting and noninverting inputs K := 103

uF := 10–6

Differential Amplifier

nF := 10–9

MHz := 106

6

7

Controlled Sources

57

R2 R1

6(Vn) 2 −

Ein1 R3

11 V− 1

V+

7(Vp) 3 +

Ein2

5(Vo)

4

R4

Use the linear two-pole opamp model on page 58. R1 := 10·K R2 := 20·K R3 := 10·K CC := 0 GG := 0 LL := 0  99  98 RR :=   6  7  Vo := 5

6 7 5 0

R1  R 3  R2 R 4 

Vn := 6

 99 Ein :=   98

R4 := 20·K

−1 1 

Vp := 7

Input nodes to subckt6.mcd Y := Vo

U=7

→ Reference:C:\mcadckts\CaNL11\subckt6.mcd → Reference:C:\mcadckts\CaNL11\comm42.mcd A1 := A

B1 := B

D1 := D

E1 := E

Save arrays.

Get response for opamp open-loop gain of Ao := 105

EE3,5 := Ao

→ Reference:C:\mcadckts\CaNL11\comm42.mcd A2 := A

B2 := B

D2 := D

E2 := E

Save new arrays.

ND := 3

PD := 50

i := 1..ND·PD + 1

AC Analysis BF := 4

i −1 s := 2·π·10L· −1 PD cv2i := D2·(si·I – A2)–1·B2 + E2 Li := BF +

cv1i := D1·(si·I – A1)–1·B1 + E1

58

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad Magnitude at node Y 30

dBV

M1 db(cv1i)

20

Y=5

10 0

db(cv2i) −10 −20 −30 −40

4

4.5

5

5.5 Li Log freq(Hz)

Ao = 10^6 Ao = 10^5

6

6.5

7

Note the difference in high-frequency response with Ao = 10^5.

3.9 SUBCIRCUIT OPAMP MODEL MHz := 106 This file requires inputs from the “calling circuit” in order to provide solutions. These inputs are Vp, Vn, and Vo. Because Vo = V5 is common to the calling circuit, node numbers in the calling circuit must start with V5. Ra

1 +

EE1

2 +

C1



f1 := 10 Ca :=

Rb

3 EE2

4 C2





Ao := 106

f2 := 1·MHz

1 2 ⋅ π ⋅ Ra ⋅ f1

Cb :=

0 0 0

Vp 2 4

RR := stack(RR,RR1)

Vn 0 0

1  1   Ao 

CC := CA

EE3

Ra := 10

1 2 ⋅ π ⋅ Rb ⋅ f 2

Ra  1 2 2 0 RR1 :=  CC1 :=    3 4 Rb  4 0 CA = CC1 if no capacitors in main circuit.  1 EE :=  3   Vo

5 +

Rb := 10

Vo = V5 Ca  Cb 

CA : = cc ← CC1 if CC = 0 cc ← stack (CC, CC1) otherwisee cc

Controlled Sources

59

→ Reference:C:\mcadwca\wcaref11\Find_U.mcd Find the maximum number of nodes U.

3.10 FIFTH-ORDER ACTIVE FILTER High Pass K := 103

u := 10–6

n := 10–9

C2 Ein

V1 C1

Meg := 106

V5 V2

R1

R3

V3 C3

R2

V5 C5

R4

R6 3

V4 C4

R5

m := 10–3

2

+



4 V+

V6 1

V− 11

R7 V7 R8

R1 := 0.01 R2 := 2·K R3 := 70·K R4 := 140·K R5 := 12·K R6 := 2.7·K R7 := 3.2·K R8 := 10·K C1 := 0.03·u C2 := 0.02·u C3 := 1.9·n C4 := 0.4·n C5 := 0.01·u Ao := 106 U := 7 Y := 6 Resistor R1 (0.01 Ω) serves two purposes: (1) acts as an ESR resistor so that C1 is not connected directly to independent input Ein, and (2) prevents an allcapacitive loop via ground, C4, C5, C2, and C1, and the zero-output impedance of Ein.  99  2   2  3 RR :=   4   6  6   7 Ein := (99

1 0 3 4 0 5 7 0 1)

R1  R2  R 3 R 4  R5  R6 R 7  R8 LL := 0

1 2  CC :=  3 4   5

GG := 0

2 5 0 0 4

C1  C2   C 3 C 4  C5 

60

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

For the opamp: EE format: EE = (Vp Vn Vcp V6 = Ao·(V4 – V7)

Vcn gain) EE := (6 0

4

7

Ao)

→ Reference:C:\mcadckts\CaNL11\comm42.mcd AC Analysis BF := 2

ND :=2

i := 1..ND·PD + 1

PD := 50 i−1 s := 2·π·10L· −1 PD Voi := db(cvi) Y=6

Li := BF +

cvi := D·(si·I – A)–1·B + E

Output magnitude at node Y

10 0 −10 dBV

−20 Voi −30 −40 −50 −60 −70

2

2.2

2.4

2.6

3.11 STATE VARIABLE FILTER K := 103

n := 10–9

Ten outputs: V1 through V10.

2.8

3 3.2 Li Log freq(Hz)

3.4

3.6

3.8

4

Controlled Sources

R3

7

2 R1

C1

2

R2

Ein

61

1 3

11



3

V−

C2

4 2

1

V+

+

R4

4 3



11 V− 1

V+

+

5

6

R5

2



3

+

4

11

7

V−

1

V+ 4 R8

R6

1

9

R7

5

R9

8

2



3

+

11

4

R1 := 10·K R2 := 20·K R3 := 10·K R4 := 182·K R5 := 2.2·K R6 := 20·K R7 := 10·K R8 := 100·K R9 := 10·K R10 := 100·K C1 := 1.125·n C2 := C1 U := 10 Ao := 106 GG := 0 LL := 0 5 7

C1  C2 

Ein := (99

1)

rd :=

180 π

Get all nodes: Y := (1

2

 99  7   2  3   5 RR :=   1  5   9  3   8

3 1 2 3 4 6 5 9 10 8 7

4

5

6 7

R1  R2   R3  R 4  R5   R6  R7   R8  R9   R10 

8

9

10)T

Opamps :

Vp Vn Vcp Vcn Gain

 3 5 EE :=  7  10 

0 0 0 0

1 0 0 8

2 4 6 9

1

V+ R10

4 CC :=  6

10

V−

Ao  Ao   Ao  Ao 

7

62

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Note that the DC Analysis has been omitted AC Analysis BF := 3

ND := 1

PD := 200

i−1 PD

s := 2·π·10L· −1

 rows ( A)  rows (B)   rows (D)  rows (E ) 

cols ( A)  2 cols (B)   2  = cols (D)  10 cols (E )   10

Li := BF +

i := 1..ND·PD + 1 cvi := D·(si·I – A)–1·B + E

2 1  2 1 

N N Format :  K K 

N M  N M 

K = number of outputs; M = number of inputs. The dimensions of the complex output variable cv are always {K M}. From the schematic, V1 = V2; V8 = V9; V4 and V6 ≈ zero; hence, we omit V2, V9, V4, and V6. Get magnitude (dBV) and phase (deg) for single or multiple outputs: Vo : = for i ∈1..ND ⋅ PD + 1 if rows ( Y) = 0 vo i ← db ( cvi ) for i ∈1..ND ⋅ PD + 1 otherwise for K ∈1..rows ( Y) vo i,k ← db ( cvi )k  vo Vai := rd·arg(cvi)

Controlled Sources

63 V1, V3, V5

40 20

dBV

Voi,1 Voi,3 Voi,5

0 −20 −40 −60

3

3.1

3.2

3.3

V1 V3 V5

3.4

3.5 3.6 Li Log freq(Hz)

3.7

3.8

3.9

3.7

3.8

3.9

4

V7, V8, V10

40 20

dBV

Voi,7 Voi,8 Voi,10

0 −20 −40 −60

3

3.1 V7 V8 V10

3.2

3.3

3.4

3.5 Li

3.6

Log freq(Hz)

3.12 SEVENTH-ORDER ELLIPTICAL LOW-PASS FILTER K := 103

nF := 10–9

4

Ein

3

2

R1 V12

+



V+

V−

11

R2

C1

4

V2

1

V1

R5

C2

R3

R4

R6

C4

V3

V4

V5

C3

R7 V6 3

2 +

− V+

V−

11

4

R11

V8

R10

R9 V4

1 C7

R12

R8

C5

V13 R13

V9

C6

V10

V7

V11 3

2 +

− V+

V−

11

4

R15

V10

R14

1

V14

64 Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Controlled Sources

65

R1 := 19.6·K R2 := 196·K R3 := 1·K R4 := 147·K R5 := 71.5 R6 := 37.4·K R7 := 154·K R8 := 110·K R9 := 260 R10 := 740 R11 := 402 R12 := 27.4·K R13 := 110·K R14 := 40 R15 := 960 C1 := 2.67·nF C2 := C1 C3 := C1 C4 := C1 C5 := C1 C6 := C1 C7 := C1 Ao := 106 U := 14 Y := 14  99  12   1  1   2   4  5  RR :=  13  13   4   8  9   7  14   10

12 1 2 5 0 3 6 7 4 8 0 10 11 10 0

1 EE :=  13   14

0 0 0

Ein := (99

1)

R1  R2   R3  R 4  R5   R6  R7   R8  R9   R10   R11 R12   R13 R14   R15  0 6 11

 12  3  6  CC :=  5 9   11  7

12 13 14

LL := 0

Ao  Ao   Ao 

1 2 3 4 8 9 10

C1  C2   C 3 C 4  C5   C6  C 7 

(opamps)

GG := 0

→ Reference:C:\mcadckts\CaNL11\comm42.mcd The DC analysis has been omitted. AC Analysis BF := 2 Li := BF +

ND := 2 i−1 PD

Voi := db(cvi)

PD := 100 s := 2·π·10L· −1

i := 1..ND·PD + 1 cvi := D·(si·I – A)–1·B + E

180 ·arg(cvi) π Vbi := –210·log(10Li–3)

Vai :=

Equation of asymptote:

A 210 dB/decade rolloff with a seventh-order (140-dB Butterworth) circuit.

66

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Elliptical Seventh-Order LPF — SPICE Verification * File: c:\SPICEapps\Cirtext\Ellipt7.cir * 5/06/05 VEin 99 0 AC 1 R1 99 12 19.6K R2 12 1 196K R3 1 2 1K R4 1 5 147K R5 2 0 71.5 R6 4 3 37.4K R7 5 6 154K R8 13 7 110K R9 13 4 260 R10 4 8 740 R11 8 0 402 R12 9 10 27.4K R13 7 11 110K R14 14 10 40 R15 10 0 960 * C1 12 1 2.67n C2 3 2 2.67n C3 6 3 2.67n C4 5 4 2.67n C5 9 8 2.67n C6 11 9 2.67n C7 7 10 2.67n * EE1 1 0 0 12 1E6 EE2 13 0 6 13 1E6 EE3 14 0 11 14 1E6

Controlled Sources

67

* .OPTIONS NOMOD NOPAGE NOECHO .AC DEC 100 100 10K .PRINT AC V(14) VP(14) .END Fnom := READPRN(“c:\SPICEapps\datfiles\Elliptf7.txt”) N := rows(Fnom) N = 201 k := 1..N Output at node Y

40 20

dBV

Voi + 5 Vbi

0 −20

db(Fnomk,2) −40 −60 −80

2

2.2

2.4

2.6

2.8

3

3.2

3.4

3.6

3.8

4

Li, Li, log(Fnomk,1) Log freq(Hz)

NDS Asymptote Spice V(14)

Traces separated to avoid overlay and show congruency. Phase at node Y

200

Deg

100 (Vai)1 Fnomk,3 − 20

0 −100 −200

2

2.2

2.4

NDS Spice VP(14)

2.6

2.8

3

3.2

Li, log(Fnomk,1) Log freq(Hz)

3.4

3.6

3.8

4

68

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

3.12.1 STEPPING ONE RESISTOR VALUE K := 103

nF := 10–9

For the schematic, see Section 3.12. R1 := 19.6·K R2 := 196·K R3 := 1·K R4 := 147·K R5 := 71.5 R6 := 37.4·K R7 := 154·K R8 := 110·K R9 := 260 R10 := 740 R11 := 402 R12 := 27.4·K R13 := 110·K R14 := 40 R15 := 960 C1 := 2.67·nF C2 := C1 C3 := C1 C4 := C1 C5 := C1 C6 := C1 C7 := C1 Ao := 106 U := 14 Y := 14 New resistor values for R4: Rx := (100

150

 99  12   1  1   2   4  5  RR :=  13  13   4   8  9   7  14   10

12 1 2 5 0 3 6 7 4 8 0 10 11 10 0

1 EE :=  13   14

0 0 0

Ein := (99

1)

250)T·K

200 R1  R2   R3  R 4  R5   R6  R7   R8  R9   R10   R11 R12   R13 R14   R15  0 6 11

12 13 14

LL := 0

Ndc := rows(Rx)

 12  3  6  CC :=  5 9   11  7

Ao  Ao   Ao 

1 2 3 4 8 9 10

C1  C2   C 3 C 4  C5   C6  C 7 

(Opamps)

GG := 0

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Collect all arrays into one multidimensional array VAB:

Ndc = 4

Controlled Sources

69

Vn(U, Y, EE, GG, RR, CC, LL, Ein ) : = for i ∈1..Ndc RR 4 ,3 ← Rx i AE ← G(U, Y, EE, GG, RR, CC, LL, Ein ) A i ← AE1 Bi ← AE 2 D i ← AE 3 E i ← AE 4  A    B    D    E 

Row 2 comment: Stuff new Rx values into R4. Row 3 comment: Recompute and store the arrays. (The G function comes from subprogram comm42.mcd previously called.) VAB := Vn(U, Y, EE, GG, RR, CC, LL, Ein) Note: Except for the second line in the Vn routine (given earlier), this routine, the VAB statement (given earlier), and the Vo routine below are universal. That is, they can be used to step values in column 3 of RR, CC, or LL and column 5 of GG or EE in any AC circuit. Similar statements apply for stepping resistor values in DC circuits. AC Analysis BF := 2

ND := 2

Li := BF +

i−1 PD

PD := 100

i := 1..ND.PD +1

70

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Vo : = for k ∈1..Ndc A ← ( VAB1 )k B ← ( VAB2 )k D ← ( VAB3 )k E ← ( VAB4 )k for i ∈1..ND ⋅ PD + 1 L i ← BF +

i −1 PD

si ← 2 ⋅ π ⋅ 10 L i ⋅ −1 cvk ,i ← D ⋅ ( si ⋅ I − A ) ⋅ B + E −1

vo k ,i ← db ( cvk ,ii ) vo

Ndc different resistor values

40

dBV

Vo1,i Vo2,i

20 0

Vo3,i −20 Vo4,i −40 −60 −80 2.6

2.7

2.8

R4 = 100 K 150 K 200 K 250 K

Ndc = 4 Note the scale change.

2.9

3

3.1 3.2 Li Log freq(Hz)

3.3

3.4

3.5

3.6

Controlled Sources

71

3.12.2 STEPPING ALL SEVEN CAPACITOR VALUES K := 103

nF := 10–9

For the schematic, see Section 3.12. R1 := 19.6·K R2 := 196·K R3 := 1·K R4 := 147·K R5 := 71.5 R6 := 37.4·K R7 := 154·K R8 := 110·K R9 := 260 R10 := 740 R11 := 402 R12 := 27.4·K R13 := 110·K R14 := 40 R15 := 960 C1 := 2.67·nF C2 := C1 C3 := C1 C4 := C1 C5 := C1 C6 := C1 C7 := C1 Ao := 106 U := 14 Step C1 through C7 from 1nF to 3 nF: Cx := (1.8  99  12   1  1   2   4  5  RR :=  13  13   4   8  9   7  14   10 Y := 14

2.2 12 1 2 5 0 3 6 7 4 8 0 10 11 10 0

2.6

3.0)T·nF

R1  R2   R3  R 4  R5   R6  R7   R8  R9   R10   R11 R12   R13 R14   R15 

Ndc := rows(Cx)

 12  3  6  CC :=  5 9   11  7

Ncap := rows(CC)

1 EE :=  13   14

0 0 0

Ein := (99

1)

0 6 11

12 13 14

LL := 0

1 2 3 4 8 9 10

Ncap = 7

Ao  Ao   Ao 

(Opamps)

GG := 0

→ Reference:C:\mcadckts\CaNL11\comm42.mcd

C1  C2   C 3 C 4  C5   C6  C 7 

Ndc = 4

72

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Collect all arrays into one multidimensional array VAB:

Vn(U, Y, EE, GG, RR, CC, LL, Ein ) : = for i ∈1..Ndc for j ∈1..Ncap CC j,3 ← Cx i AE ← G(U, Y, EE, GG, RR, CC, LL, Ein ) A i ← AE1 Bi ← AE 2 D i ← AE 3 E i ← AE 4  A    B    D    E 

Row 3 comment: Fill CC column 3 with the ith capacitor value. Row 4 comment: Recompute the arrays for each new value and store. VAB := Vn(U, Y, EE, GG, RR, CC, LL, Ein) AC Analysis Bf := 2

ND := 2

Li := BF +

i−1 PD

PD := 100

i := 1..ND·PD + 1

Controlled Sources

73

Vo : = for k ∈1..Ndc A ← ( VAB1 )k B ← ( VAB2 )k D ← ( VAB3 )k E ← ( VAB4 )k for i ∈1..ND ⋅ PD + 1 L i ← BF +

i −1 PD

si ← 2 ⋅ π ⋅ 10 L i ⋅ −1 cvk ,i ← D ⋅ ( si ⋅ I − A ) ⋅ B + E −1

vo k ,i ← db ( cvk ,ii ) vo Four different values for C1 thru C7

40 20

dBV

Vo1,i Vo2,i Vo3,i

0 −20

Vo4,i −40 −60 −80

2

2.2

2.4

2.6

C1 thru C7 = 1.8 nF 2.2 nF 2.6 nF 3.0 nF

2.8

3 3.2 Li Log freq(Hz)

 1.8   2.2  Cx =   nF  2.6   3  

3.4

3.6

3.8

4

74

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

3.13 SQUARE ROOT OF FREQUENCY (+10 dB/DECADE) CIRCUIT K := 103 Hz := 1

u := 10–6

R1

V1

n := 10–9

R2

V2

R3

p := 10–12

V3

R4

kHz := 103

R5

V4

V5

Ein C1

C2

C3

C4

C5 V9

V5 R6

V6 C6

R7

V7 C7

R8

V8

R9

R10

V9

V10

C9

C8

V9 2 3



+

11 V− 1

V+ 4

R1 := 523 R2 := 1.54·K R3 := 3.16·K R4 := 6.19·K R5 := 12.4·K R6 := 24.9·K R7 := 49.9·K R8 := 100·K R9 := 200·K R10 := 49.9·K C1 := 330·p C2 := 680·p C3 := 1.2·n C4 := 2.7·n C5 := 4.7·n C6 := 0.01·u C7 := 0.022·u C8 := 0.039·u C9 := 22·p Ao := 106 Ein := (99 1) U := 10 Y := 10 GG := 0 LL := 0 db(x) := 20·log(|x|) S1 : = 100

S1 = 10

db(S1) = 20

S2 : = 1000

S2 = 31.623

db(S2 ) = 30

S3 : = 10000

S3 = 100

db(S3) = 40

Hence, a slope of +10 dB/decade is the square root of frequency.

Controlled Sources

 99  1   2  3   4 RR :=   5  6   7  8   9 EE := (10

75

R1  R2   R3  R 4  R5   R6  R7   R8  R9   R10 

1 2 3 4 5 6 7 8 9 100 0

0

9

1 2  3 4  CC :=  5  6 7  8  9

9 9 9 9 9 9 9 9 10

C1  C2   C 3 C 4  C5   C6  C7   C8  C9 

Ao)

→ Reference:C:\mcadckts\CaNL11\comm42.mcd AC Analysis BF := 0

ND := 6

Li := BF +

i−1 PD

PD := 20

i := 1..ND·PD +1

F := 10L

Insert a non-inverting opamp gain stage after V10 with a gain of:  118 ⋅ K  dBG := 20 ⋅ log  1 +   8.5 ⋅ K  dBG = 23.453 s := 2·π·F· −1 cvi := D·(si·I – A)–1·B + E Voi := db(cvi) + dBG Vai := 10·log(Fi) Y = 10 Output at node Y

60 50

dBV

40 Voi Vai

30 20 10 0

0

1 V10 +10 dB/dec

2

3 4 Li Log freq(Hz)

5

6

76

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

3.14 HV (200 V) SHUNT MOSFET REGULATOR K := 103

n := 10–9

mA := 10–3 Ehv R4

R7

V8

V1 V3

R8 Eref

R10

C1

V7 2 3

− +

11 V−

V1

R1

V2

M1

M2 C2 V9

1

V+ 4

R2

V4

V6 R5

R9

V5

R3 R6

R1 := 10K R2 := 10K R3 := 5.1K R4 := 51K R5 := 215K R6 := 6878 R7 := 562K R8 := 10K R9 := 1.96K R10 := 0.01 C1 := 2.7n C2 := 4.7n Eref := 6.2 Ehv := 400 Y := 6 U := 10 LL := 0 From MOSFET data sheet: gm := 0.001  99  1   2  4   98 RR :=   6  5   7  9   988

R8  R1   R2  R 3  R4   R5  R6   R7  R9   R10 

7 2 0 0 3 5 0 8 0 10

 3 GG :=   10

4 6

 99 Ein :=   98

Eref  Ehv 

2 3

4 6

8 CC :=  3

gm  gm 

1 9

Ao := 106

Two inputs, M = 2.

C1  C2 

EE := (1 0 5 7 Ao) Opamp

 99 Ein =   98

6.2  400 

Controlled Sources

77

(Note: C1 and C2 are for stability purposes. See Section 5.3, page 107 for analysis.) → Reference:C:\mcadckts\CaNL11\comm42.mcd DC Analysis  −41.43 VC1 X := lsolve(–A,B) X =  Vodc := D·X + E  200.91 VC 2

Vodc = (200.01)

DC drain currents of MOSFETs M1 and M2: Vdc := lsolve(A11,A14) Id2 := Vdc12 Id1 := Vdc11

Id1 := 3.904mA

Id2 := 0.901mA

AC Analysis BF := 0

ND := 5

PD := 30

Lit := ND·PD + 1

i := 1..Lit

s := 2·π·10L· −1 log(20) = 1.3

Li := BF +

cvi := D·(si·I – A)–1·B + E

i−1 PD Voi := |cvi|

200 V regulation is maintained up to about 20 Hz. Output at V5

250

Volts

200 Voi

150 100 50 0

0

1

2

3 Li Log freq(Hz)

4

Due to the opamp, a short expression for the DC output is: R5   Vo := Eref ⋅  1 +   R6  Vo := 200.01

5

78

3.15 LTC 1562 BAND-PASS FILTER IC IN A QUAD IC R21

Ein

V1 2



3

+

R1A

V2 11 V−

2



3

+

1

V+ 4

C1A

V3

V4

R5

11 2

V− 1

V+

3

4

R6

V5 − +

V6

C2B RQ2

RIN2 V7

11 V−

2

1

V+ 4

3



R1B

V8

11

2

V− 1

V+

+

3

4

C1B

V9 − +

V10

R7

11 2

V−

R8

V11 −

1

V+

3

4

+

V12

11 V− 1

V+ 4

To RIN3 R23

C2C RQ3

RIN3 V13

2



3

+

R1C

V14 11 V− 4

C1C

V15

2



3

+

1

V+

R24

V16

R9

11 2

V− 1

V+ 4

R10

V17

3

− +

V18

RIN4

C2D RQ4

V19

11 V− 1

V+ 4

2 3

− +

R1D

V20

11

2

V− 1

V+

3

4 Vout

C1D

V21 − +

V22

R11

11 2

V−

R12

V23 −

1

V+ 4

3

+

V24

11 V− 1

V+ 4

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

C2A RQ1

RIN1

R22

Controlled Sources

79

Opamp rolloff for the first four stages of this circuit is shown following. The remaining stages have infinite bandwidth at gain Ao. V25

R13

+

V26 C3



V33 +

V27

R14

+

V28 C4



R17

V34 C7



V35

R18

+

V36 C8



V2

V29

+

+





V14

+





V30 C6

V31

R16

+

V32 C5



V37

+

R15

R19

V38 C9

V39 +

V8 + −

R20

V40

C10



V20 + −

Output plot — see following Mathcad file. Resistor values for fo = 100 KHz are from LTC data sheet [1]. Total circuit has 40 unknown nodes and 68 components. See Section 3.16 following.

3.16 LTC 1562 QUAD BAND FILTER IC K := 103

m := 10–3

u := 10–6

n := 10–9

p := 10–12

See Section 3.15 for a schematic of the four connected sections and the opamp rolloff subcircuit. First-stage resistor values for 100-KHz fo: RIN1 := 42.2·K C1A := 159.15·p

RQ1 := 42.2·K C2A := C1A

R21 := 10·K R5 := 10·K

R1A := 10·K R6 := 10·K

Second-stage resistor values for 100-KHz fo: RIN2 := 42.2·K C1B := 159.15·p

RQ2 := 42.2·K C2B := C1B

R22 := 10·K R1B := 10·K R7 := 10·K R8 := 10·K

Third-stage resistor values for 100-KHz fo: RIN3 := 42.2·K C1C := 159.15·p

RQ3 := 42.2·K C2C := C1B

R23 := 10·K R1C := 10·K R9 := 10·K R10 := 10·K

Fourth-stage resistor values for 100-KHz fo: RIN4 := 42.2·K C1D := 159.15·p

RQ4 := 42.2·K C2D := C1B

R24 := 10·K R11 := 10·K

R1D := 10·K R12 := 10·K

80

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

These component values were obtained from Reference 1. Opamp frequency rolloff components: R13 := 1 R14 := 1 R15 := 1 R16 := 1 R17 := 1 R18 := 1 R19 := 1 R20 := 1 Cx1 := 15.91·m Cx2 := 159·n (10-Hz and 1-MHz poles) (Note: These poles, and Ao (given in the following), are estimates because the vendor chose not to put this information in the data sheet.) C3 := Cx1 C8 := Cx2 Ein := (99

C4 := Cx2 C9 := Cx1 1)

C5 := Cx1 C6 := Cx2 C10 := Cx2

C7 := Cx1

 Lao    20 

Ao := 10 

Lao := 130

Component node lists: LL := 0

GG := 0

Y := 20

U := 40

Quad 1 of 4 quads  99  1   2 RR1 :=   6  4   5

 25  27  EE1 :=  2  4   6

RIN1 RQ1   R1A  R 21  R5   R6 

1 2 3 1 5 6

0 0 0 0 0

0 26 28 0 0

1 0 0 3 5

1 CC :=  3

2 4

C2 A  C1A 

1  1st opamp inv input. 1  1st opamp 10 Hz pole  Ao  1st opamp 1MHz pole Ao  2nd opamp, no roolloff Ao  3rd opamp, no rolloff

Controlled Sources

81

Quad 2 of 4 2 7  8 RR 2 :=   12  10   11

 29  31  EE 2 :=  8  10   12

RIN 2  RQ 2   R1B  R 22  R7   R8 

7 8 9 7 11 12

0 0 0 0 0

0 30 32 0 0

7 0 0 9 11

7 CC2 :=  9

1  1   Ao  Ao  Ao 

8 10

C2 B C1B 

4th opamp inv input. 4th opampp 10 Hz pole 4th opamp 1MHz pole 5th opamp, no rolloff 6th opamp, no rolloff

Quad 3 of 4 8  13   14 RR 3 :=   18  16   17

 33  35  EE 3 :=  14  16   18

13 14 15 13 17 18

0 0 0 0 0

RIN 3 RQ 3   R1C  R 23  R9   R10 

0 34 36 0 0

13 0 0 15 17

 13 CC 3 :=   15

1  1   Ao  Ao  Ao 

14 16

C2C  C1C 

7th opamp inv input. 7th opamp 10 Hz pole 7th opamp 1MHz pole 8th opam mp, no rolloff 9th opamp, no rolloff

82

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Quad 4 of 4  14  19   20 RR 4 :=   24  22   23  37  39  EE 4 :=  20  22   24

RIN 4  RQ 4   R1D  R 24  R11   R12 

19 20 21 19 23 24 0

0

19

0 0 0 0

38 40 0 0

0 0 21 23

 19 CC 4 :=   21

20 22

C2 D  C1D 

1  10 th opamp inv input. 1  10tth opamp 10 Hz pole  Ao  10th opamp 1MHz pole Ao  11thh opamp, no rolloff Ao  12th opamp, no rolloff

R and C’s for rolloff poles:  25  27   29  31 RR 5 :=   33   35  37   39

26 28 30 32 34 36 38 40

R13  R14   R15  R16  R17   R18  R19   R 20 

 26  28   30  32 CC5 :=   34   36  38   40

0 0 0 0 0 0 0 0

C3  C4   C5  C6  C7   C8  C9   C10 

Stack into one array: RR := stack(RR1,stack(RR2,stack(RR3,stack(RR4,RR5)))) CC := stack(CC1,stack(CC2,stack(CC3,stack(CC4,CC5)))) EE := stack(EE1,stack(EE2,stack(EE3,stack(EE4,CC5)))) → Reference:C:\mcadckts\CaNL11\comm42.mcd  rows ( A)  rows (B)   rows (D)  rows (E ) 

cols ( A)  16 cols (B)   16  = cols (D)  1 cols (E )   1

16  1  16  1 

N N Format :  K K 

N M  N M 

Controlled Sources

83

AC Analysis

BF := 40·K

LF := 180·K

i := 1..NP + 1 s := 2·π·F· −1

NP := 101

DF :=

LF − BF NP

Fi := BF + DF·(i – 1) cvi := D·(si·I – A)–1·B + E

voi := db(cvi)

Get SPICE output (see SPICE listing below) Fnom := READPRN(“c:\SPICEapps\datfiles\ltc1562_nom.txt”) N := rows(Fnom) N = 101 k := 1..N LTC1562 output at node Y

30 20 10

dBV

0 Voi db(Fnomk,2) − 5

−10 −20 −30 −40 −50 −60 −70 40

60 NDS Spice

80

100 120 Fi Fnomk,1 , K K Freq(KHz)

140

160

180

SPICE plot separated by 5 dBV from NDS plot to show both. Also see Amplitude Response plot in Reference 1. Y = 20 SPICE listing for Itc1562.med LTC1562 Analysis * File: Itc1562A.cir VEin 99 0 AC 1 * * Quad 1 of 4 quads *

84

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

RIN1 99 1 4.22K RQ1 1 2 42.2K R1A 2 3 10K R21 6 1 10K R5 4 5 10K R6 5 6 10K C1A 3 4 159.15p C2A 1 2 159.15p EE1 25 0 0 1 1 EE2 27 0 26 0 1 EE3 2 0 28 0 3.162E6 EE4 4 0 0 3 3.162E6 EE5 6 0 0 5 3.162E6 * Quad 2 * RIN2 2 7 42.2K RQ2 7 8 42.2K R1B 8 9 10K R22 12 7 10K R7 10 11 10K R8 11 12 10K C2B 7 8 159.15p C1B 9 10 159.15p EE6 29 0 0 7 1 EE7 31 0 30 0 1 EE8 8 0 32 0 3.162E6 EE9 10 0 0 9 3.162E6 EE10 12 0 0 11 3.162E6 * * Quad 3

Controlled Sources

* RIN3 8 13 42.2K RQ3 13 14 42.2K R1C 14 15 10K R23 18 13 10K R9 16 17 10K R10 17 18 10K C2C 13 14 159.15p C1C 15 16 159.15p EE11 33 0 0 13 1 EE12 35 0 34 0 1 EE13 14 0 36 0 3.162E6 EE14 16 0 0 15 3.162E6 EE15 18 0 0 17 3.162E6 * Quad 4 * RIN4 14 19 42.2K RQ4 19 20 42.2K R1D 20 21 10K R24 24 19 10K R11 22 23 10K R12 23 24 10K C2D 19 20 159.15p C1D 21 22 159.15p EE16 37 0 0 19 1 EE17 39 0 38 0 1 EE18 20 0 40 0 3.162E6 EE19 22 0 0 21 3.162E6 EE20 24 0 0 23 3.162E6 *

85

86

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

* R’s & C’s for opamp poles * R13 25 26 1 R14 27 28 1 R15 29 30 1 R16 31 32 1 R17 33 34 1 R18 35 36 1 R19 37 38 1 R20 39 40 1 C3 26 0 15.915M C4 28 0 159.15n C5 30 0 15.915M C6 32 0 159.15n C7 34 0 15.915M C8 36 0 159.15n C9 38 0 15.915M C10 40 0 159.15n * .OPTIONS NOMOD NOPAGE NOECHO .AC LIN 101 40000 180000 .PRINT AC V(20) .END

Controlled Sources

87

3.17 BJT CONSTANT CURRENT SOURCE — A SIMPLE LINEAR MODEL USING THE NDS METHOD Constant Current Source Ein

Q1

Explanatory schematic Ein

R1 +

R4

V1

V4

Ic

− +

D1

V3 R3

R1



V3

V2 R2

V4

R4

V1

Vbe

R3

+

Ix

+

Vd

Iy





V2 R2

K := 103 mA := 10–3 uA := 10–6 pA := 10–12 R1 := 10·K R2 := 1.4·K R3 := 300 R4 := 0.01 Ein := (99 Ecc) beta := 100 U := 4

Ecc := 15

Use Roe = 1/hoe = 50 K in linear model — simulates Early voltage. Roe := 50K  99  2  RR :=  3  1   99

1 0 0 4 3

R1  R2   R3  R 4  Roe 

Id = Ix + Iy =

V2 R2

Ib flows through Vbe. The values of Ix and Iy are not needed, only Id. Vbe initial guess: Vbe := 0.6 Vbe refinement; see next page. Vbe := 0.705 Match Vd

88

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Vd := Vbe  1  GG :=   99 

2

2

0

3

1

4

1  R2   beta  R4 

 1  EE :=  4 

Id =

V2 R2

 V1 − V4  Ic = beta ⋅ Ib = beta ⋅   R 4 

2

99

0

3

99

0

Vd  Ecc   Vbc  Ecc 

→ Reference:C:\mcadckts\CaNL11\comm42.mcd V := Isolve (A1, B2)  2.395   1.69   Get node voltages from nodes 1 to U: k := 1..U Vk =   1.69   2.395    Get VCCS currents set by GG: Ngg := rows (GG) n := 1..Ngg  1.21  Vn+ U =   ⋅ mA  5.31

Isrc = 5.31 mA

V2 Id = 1.207mA Id := V5 R2 Id = 1.207 mA Id := V5 Checks. Id :=

Refine Vbe: V1 − V4 R4

ml := 0.068

b1 := 0.588

Isrc = 100 Ib Ie = 5.63 mA

 Ib  + b1 Vbe : = ml ⋅ log   uA 

Iroe :=

Ib :=

Ic := le – lb

Ecc − V3 Roe

Ib

Ib + Id = 1.26mA

Id

Vbe = 0.705

Ie :=

V3 R3

Ic = 5.58 mA

Iroe = 266.19uA

Ecc − V1 V1 − V4 V2 = + R1 R4 R2

Ib = 53.15uA

Ic – Iroe = 5.31mA

Ecc − V1 V1 − v4 V2 + = 1.26 mA = 1.26 mA R1 R4 R2

Checks.

Controlled Sources

89

3.18 uA733 VIDEO AMPLIFIER K := 103

mA := 10–3

uA := 10–6

pA := 10–12

Also see NE592 Video Amplifier (http://onsemi.com) Rs := 0.01 R1 := 2.4·K R2 := 2.4·K R3 := 50 R4 := 590 R5 := 50 R6 := 590 R7 := 1.1·K R8 := 1.1·K R9 := 7·K Ein1 := 4.1 Ein2 := 4.0 Ein3 := 15 beta := 100 R10 := 7·K Roe := 50·K (Simulates 1/hoe of transistors. Not shown on schematic.) Rg := 20·K

R7 R1

Q3 V13

V4 Rs

V3

R3

V5

Ein1

Q2

R6

Q4

V15

Q6

V1 Rs

V1 Rs V3

V2

V10

Out

R9 V4

Out2

V11 R10

Ein2

V7 I1 +

Q5

Rs

V8

V6 R5

Rg

R4

V16

V9

R2

Q1 V1

Ein

R8

+

I2

+



I3



+

I4





Current source values obtained from analysis on the previous page. I1 := 5.31·mA I3 := 4.54·mA Initialize Vbe:

(R3 = 300)

I2 := I1

 99 Ein :=  98   97

Ein1  Ein 2   Ein 3

(R3 = 350) I4 := I3 Vbe := (0.6 0.6 0.6 0.6 0.6 0.6)T Vbe := (0.68 0.68 0.69 0.68 0.70 0.70)T Vbe refinements; see next page.

U := 16

90

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

 99  98   97  97   5   6  97   97  3   4  RR :=  4  3   9  8   5  3   4   8  9   97  97

1 2 3 4 7 7 8 9 10 11 13 14 16 15 6 5 6 12 12 10 11

R3  R5   R1  R 2  R4   R6  R7   R8  R9   R10   Rs  Rs   Rs  Rs   Rg  Roe  Ro oe   Roe  Roe   Roe  Roe 

R 3 external R 5 external

Rg externall

Vbe voltage sources  1   2    13 EE :=    14    16   15 

5

97

0

6

97

0

12

97

0

12

97

0

10

97

0

11

97

0

Vbe1  Ein 3   Vbe 2  Ein 3  Vbe 3   Ein 3  Vbe 4   Ein 3  Vbe 5  Ein 3   Vbe 6  Ein 3 

Controlled Sources

 7    12    10    11    3 GG :=   4    8    9    97    97

91

0

97

0

0

97

0

0

97

0

0

977

0

5

99

1

6

98

2

12

4

13

12

3

14

10

9

16

11

8

15

I1  Current source I1 (Ic = beta ⋅ Ib) Ein 3   I2  Current source I2, etc. Ein 3  I3   Ein 3  I4   Ein 3  Q1 current source frrom V3 to V5, beta  Ein1–V1 R 3  controlled by Ib = R3  beta  Q22 current source from V4 to V6, Ein2–V2 R5  controlled by Ib = beta  R5 Rs  Q3 current source from V8 to V12, beta  controlled by Ib = V4–V13 , etc  Rs Rs  beta   Rs  beta   Rs 

→ Reference:C:\mcadckts\CaNL11\comm42.mcd V := lsolve(A1,B2) Get all node voltages from 1 to U: k := 1..U

Vnk := Vk

See the following. Get VCCS currents set by GG: Ngg := rows(GG) ViT = (5.31 5.31

n := 1..Ngg Vin := Vn+U 4.54 4.54 2.6 2.42 3.09 2.04

4.8

4.62)mA

92

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Get base currents to refine Vbe:

IbT = (26.01

24.21

30.87

Ib1 : =

Ein1 − V1 R3

Ib 2 : =

Ein 2 − V2 R5

Ib 3 : =

V4 − V13 Rs

Ib 4 : =

V3 − V14 Rs

Ib 5 : =

V9 − V16 Rs

Ib 6 : =

V8 − V15 Rs

20.35

48.02

46.19)uA

From Vbe curve-fit data: m1 :=0.068

b1 := 0.588

 Ib  Vbe W : = ml ⋅ log  w  + b1  uA  VbeT = (0.68

0.68

0.69

0.68

Copy to Vbe in the previous text. Repeat if necessary. (Converges very rapidly.)

0.70

0.70)

w := 1..rows(Ib)

Controlled Sources

93

NDS (Mathcad)  4.0987   3.9988     9.3186   9.3286     3.4187     3.3188   1.8023     11.4909  Vk =  12.6208     11.9208     10.7909   8.6386     9.3286   9.3186     11.4909   12.6208   

Spice using 2N3904  4.0991   3.9992     9.3188   9.32999     3.4085     3.3104   1.7930     11.4960  Vspice : =  12.6350     11.9280     10.7900   8.6342     9.3299   9.3188     11.4960   12.6350   

pe k : =

Vk −1 Vspice k

Percent error, each node  −0.01  −0.01    −0.00   −0.01    0.30     0.25   0.52    min(pe) = −0.11%  −0.04  pe =  %  −0.11 max(pe) = 0.52%    −0.06     0.01   0.05     −0.01  −0.00     −0.04   −0.11  

94

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

SPICE Comparison of uA733 Video Amplifier Analysis uA733 Video Ampl * File: uA733_va.cir VEin1 99 0 DC 4.1 VEin2 98 0 DC 4.0 VEin3 97 0 DC 15 * R3 99 1 50; External input resistor R5 98 2 50; External gain resistor R1 97 3 2.4K R2 97 4 2.4K R4 5 7 590 R6 6 7 590 R7 97 8 1.1K R8 97 9 1.1K R9 3 10 7K R10 4 11 7K Rg 5 6 20K; External gain resistor * Rs1 4 13 0.01 Rs2 3 14 0.01 Rs3 9 16 0.01 Rs4 8 15 0.01 * Current sources I1 7 0 DC 5.31mA I2 12 0 DC 5.31mA I3 10 0 DC 4.54mA I4 I1 0 DC 4.54mA * * C B E Q1 3 1 5 Q2N3904

Controlled Sources

95

Q2 4 2 6 Q2N3904 Q3 8 13 12 Q2N3904 Q4 9 14 12 Q2N3904 Q5 97 16 10 Q2N3904 Q6 97 15 11 Q2N3904 * * Bf=416.4 .model Q2N3904 NPN(Is=6.734f Xti=3 Eg=1.11 Vaf=74.03 +Bf=416.4 Ne=1.259 Ise=6.734f Ikf=66.78m Xtb=1.5 +Br=.7371 Nc=2 Isc=0 Ikr=0 Rc=1 Cjc=3.638p Mjc=.3085 +Vjc=.75 Fc=.5 Cje=4.493p Mje=.2593 Vje=.75 Tr=239.5n +Tf=301.2p Itf=.4 Vtf=4 Xtf=2 Rb=10) * OPTIONS NOMOD NOECHO NOPAGE .END

NODE

VOLTAGE

NODE

VOLTAGE

NODE

VOLTAGE

NODE

VOLTAGE

(1) (5) (9) (13) (97)

4.0991 3.4085 12.6350 9.3299 15.0000

(2) (6) (10) (14) (98)

3.9992 3.3104 11.9280 9.3188 4.0000

(3) (7) (11) (15) (99)

9.3188 1.7930 10.7900 11.4960 4.1000

(4) (8) (12) (16)

9.3299 11.4960 8.6342 12.6350

REFERENCES 1. LTC1562 Data Sheet, p. 18, www.linear.com.

This page intentionally left blank

4

Leverrier’s Algorithm

4.1 NUMERICAL TRANSFER FUNCTION [1] The transfer matrix G is a matrix of output/input transfer functions. It has the dimensions {K M}, or {output input}. The desired numerical transfer function is an element of the transfer matrix G. For example, output 1 / input 2 would be G12. Leverrier’s algorithm finds both. Note that in the following sequence, the symbol tr( ) indicates the trace of a matrix, i.e., the sum of the diagonal elements. General subscripts are given in parentheses, but specific ones are not. That is, FN – 1 is designated F(N – 1). However, F2 would be designated by F2. This is to prevent double subscript sets in later equations. For a given matrix A of dimension {N N}, the general sequence is: I = identity(N) F = (N – 1) = I T(N − 1) =

− tr  A ⋅ F ( N − 1)  1

F = (N − 2 ) = A ⋅ F (N − 1) + T(N − 1) ⋅ I T(N − 2 ) =

− tr  A ⋅ F ( N − 2 ) 

F = (N − 3) = A ⋅ F (N − 2 ) + T(N − 2 ) ⋅ I T(N − 3) =

− tr  A ⋅ F ( N − 3) 



2

3



F1 = A ⋅ F 2 + T2 ⋅ I T1 =

− tr ( A ⋅ F1) N −1

F 0 = A ⋅ F1 + T1 ⋅ I T0 =

− tr ( A ⋅ F 0 ) N

The numerator coefficients are then: Y(N − 1) = D ⋅ F (N − 1) ⋅ B + E ⋅ T(N − 1) Y(N − 2 ) = D ⋅ F (N − 2 ) ⋅ B + E ⋅ T(N − 2 ) 



Y1 = D ⋅ F1 ⋅ B + E ⋅ T1 Y0 = D ⋅ F 0 ⋅ B + E ⋅ T0

97

98

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

The output I / input J transfer function extracted from the {K M} transfer matrix G is then: GI J (s) =

E I J sN + Y ( N − 1)I J s N−1 + Y ( N − 2 )I J s N− 2 +  + Y1I J s + Y0 I J sN + T ( N − 1) sN−1 + T ( N − 2 ) sN− 2 +  + T1s + T0

A simple example will help clarify the procedure. Let  −1  A=0  0

0 −4 −1

0 1   4  , I = 0  0 0 

0 1 0

0  0 1 

in which N = 3 The trace of A = 5; the trace of I = 3. Sequence is: F2 = I

T2 =

4 − tr ( A ⋅ F 2 )  = 5, F1 = A ⋅ F 2 + T2 ⋅ I =  0 1  0

T1 =

4 − tr ( A ⋅ F1)  = 8, F 0 = A ⋅ F1 + T1 ⋅ I =  0 2  0

T0 =

− tr ( A ⋅ F 0 ) =4 3

0 1 −1

0  4 4 

0 0 −1

The denominator of GI,J is then D(s) = s3 + T2s2 + T1s + T0 = s3 + 5s2 + 8s + 4 Let the D, B, and E arrays be, with {K M} = {2 2}.  −1 D= 0

0 0

1 1  , B = 0 1  1

We compute the numerator of G using:

0 1  1 , E =  0 −1

0  4 5 

0 1 

Leverrier’s Algorithm

99

5 Y2 = D ⋅ F 2 ⋅ B + E ⋅ T2 =  1

−1 4 

9 Y1 = D ⋅ F1 ⋅ B + E ⋅ T1 =  5

−66  2 

4 Y0 = D ⋅ F 0 ⋅ B + E ⋅ T0 =  4

−5  −1 

The numerator of G is a matrix polynomial: 1 N(s) = Es 3 + Y2s2 + Y1s + Y0 =  0

0  3 5 s + 1  1

−1 2 s 4 

9 + 5

−6  4 s+  2 4

−5  −1 

G I,J =

N (s) D (s)

Then:

G1,2 =

(

− s 2 + 6s + 5

)

s 3 + 5s 2 + 8s + 4

and G2,2 is G 2 ,2 =

s 3 + 4 s 2 + 2s − 1 , s 3 + 5s 2 + 8s + 4

etc. Another way to find D(s) is by using eigenvalues:  −1  A=0  0

0 −4 −1

0  −2     4  , eigenvals( A) =  −2   −1  0 

then D(s) = (s + 1)(s + 2)(s + 2) = s3 + 5s2 + 8s + 4 A circuit example is given in Section 4.2.

100

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

4.2 TRANSFER FUNCTION USING LEVERRIER’S ALGORITHM FOR TWIN-T RC NETWORK → Reference:C:\mcadckts\CaNL11\TwinT2.mcd See schematic in Section 2.5. Display A, B, D, and E arrays:  −374.53 A =  −374.53   −374.53

−187.27 −1136.41 −384.53 D = (0

–1

−187.27  −384.553  −384.53 –1)

 374.53  B =  1136.41    384.53 

E = (1)

The {N N} identity matrix is obtained from the referenced subprogram: 1 I = 0   0

0 1 0

0 0  1 

{K M} = {1 1} here. Step 1 − tr ( A ⋅ F 2 ) T2 = 1895.48 1 Y2 := D·F2·B + E·T2 Y2 = (374.53) F2 := I

T2 :=

Step 2

F1 := A·F2 + T2·I Y1 := D·F1·B + E·T1

− tr ( A ⋅ F1) T1 = 718489.21 2 Y1 = (140274.07)

T1 :=

Step 3

F0 := A·F1 + T1·I Y0 := D·F0·B + E·T0

− tr ( A ⋅ F 0 ) 3 Y0 = (5.27 × 107)

T0 :=

T0 = 5.56 × 107

Leverrier’s Algorithm

101

Transfer function: G (s) :=

E ⋅ s 3 + Y2 ⋅ s2 + Y1 ⋅ s + Y0 s 3 + T2 ⋅ s2 + T1 ⋅ s + T0

Compare the following plot with that of the twin-T network in Section 2.5: Transfer function magnitude

0 −10 dBV

−20 db(G(si)) −30 −40 −50 −60

0

20

40

60

80

100

Fi Freq(Hz)

REFERENCES 1. D.M. Wiberg, Schaum’s Outline Series, State Space and Linear Systems, McGrawHill, 1971, p. 102.

This page intentionally left blank

5

Stability Analysis

5.1 UNITY GAIN DIFFERENTIAL AMPLIFIERS The NDS Method can be used for stability analysis problems. Techniques illustrated are, (1) Α and β slope intersection method, and (2) gain-phase plots of loop gain Αβ. Several examples are contained in this chapter. (In control theory, the symbols G and Η are used for Α and β respectively.) K := 103

u := 10–6

p := 10–12

Meg := 106

Hz := 1

MHz := 106

Compensated unity gain differential amplifier R1

R2 Ein1

R5

R3

11 2 − V−

C3

3 +

V0 1

V+ 4

Ein2 R6

R1 R4 R5 C3

:= := := :=

30·K R2 := 30·K R3 := 100·Meg 10·Meg (R4 internal to opamp) 30·K R6 := 30·K 0.01·u C4 := 5·p (Stray package capacitance)

Beta equivalent circuit (R4 and C4 internal to opamp) Note that Vo becomes the input, or Ein. R2

R1

V1

V0 (Ein) R3

R4

V2

C4

C3 R5

V3 R6

103

104

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

By definition: Beta =

V1 − V3 Ein

The inverse of this is: InvBeta =

Ein V1 − V3

For opamp poles: f1 := 20·Hz rd :=

f2 := 1·MHz

180 π

ω1 := 2·π·f1

ω2 := 2·π·f2

U := 3

 1 Y :=    3

Two outputs are V1 and V3

 99  1   1 RR :=   1  3   3

1 0 2 3 0 0

LL := 0

R1  R2  R 3 R 4  R5  R6

GG := 0

2 CC :=  1

EE := 0

3 3

C 3 C 4 

Ein := (99

1)

One input.

→ Reference:C:\mcadckts\CaNL11\comm42.mcd AC Analysis BF := 2 L i = BF +

ND := 5 i −1 PD

PD := 20

F := 10L

i := 1..ND·PD + 1

s := 2 ⋅ π ⋅ F ⋅ −1

For the opamp: Ao si   si    1 +  ⋅ 1 +  ω1   ω2 

Ao := 105.5

Ao1i =

V1i := (cvi)1

V3i := (cvi)2

cvi := D·(si·I – A)–1·B + E

Stability Analysis

105

 1 Recall that Y =   Vai := V1i – V3i  3 Aold := A (for future reference) This is with the compensation R3 and C3 (sometimes called the “beta killer”) disabled by setting R3 = 100 Meg. To enable it, we now set R3 = 2K, RR3,3 := 2·K, and call the reference template again to get the new A matrix value. → Reference:C:\mcadckts\CaNL11\comm42.mcd Anew := A 1 50000   −1   −50000 Aold =  Anew =  6 8 −1.067 × 10 8   2000 −6.689 × 10   1 × 10 cvi := D·(si·I – A)–1·B + E V1i := (cvi)1 V3i := (cvi)2 Vbi := V1i – V3i Net slope of intercept is >20 dB/decade implies unstable (R3 = 100 Meg). Net slope of intercept = 20 dB/decade implies stable (R3 = 2 K). With and without compensation

80 70 60

dBV

50 db(Aoli)

40

−db(Vai)

30

−db(Vbi)

20 10 0 −10 −20

2

3

4

Aol R3 = 100 Meg R3 = 2 K

Li

5

6

7

Log freq(Hz)

Plot Loop Gain as a Gain–Phase Plot: Loop gain is defined as (Aol)(Beta) AB1i := db(Aoli·Vai) AB2i := db(Aoli·Vbi) φi := rd·arg(Aoli·Vai) θi := rd·arg(Aoli·Vbi) φi := if(φi > 0, φi – 360, φi) θi := if(θ > 0, θi – 360, θi) Zero crossover markers: F1 := –192 F2 := –103

106

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Phase margin (R3 = 100 Meg) = 180 + F1 = −12 implies unstable. Phase margin (R3 = 2 K) = 180 + F2 = 77 implies stable. Gain-phase plot

50

F2

Gain (dBV)

F1

AB1i

0

AB2i

−50 −230

−210

−190

−170

−150 φi, θi Phase angle (Deg)

R3 = 100 Meg R3 = 2 K

−130

−110

−90

5.2 STABILITY OF LM158 OPAMP MODEL In this section, the stability of an LM158 opamp model embedded in a feedback circuit is analyzed. Meg := 106

R3

K := 103

U := 106

MHz := 106

Original circuit C1 V3 Rs

R3

0.1 uF

1.13 K

1.13 K R2

V1

R1

Ein 2.26 K

LM158 opamp

Ein

10 K 2 −

3

+

1

Feedback (beta) circuit C1 V3 Rs R3

R2 2.26 K

0.1 uF V1

R1 10 K

(V2) Ein1

X V2

LM158 model

R4 V4

4

Ein

(V2)

10 K

V− V+

Rs

R1

V1

11

p := 1012

0.1 uF V1

2.26 K

V5 C2

1.13 K

Using LMI 58 model C1 V3

R2

V2

N := 109

+ −

R5

EE2

V7

V6 C3

+ −

R6

EE3

V8 C4 EE4

+ −

Stability Analysis

107

R1 := 10·K R2 := 2.26·K R3 := 1.13·K R4 := 99.47·Meg R5 := 10 R6 := 10 C1 := 0.1·u C2 := 80·p C3 := 13.263·n C4 := 7.958·n Rs := 0.01 Ao := 105 U := 8  1 Y=   2 The feedback circuit consists of R1, R2, R3, and C1. The opamp model consists of R4, C2, R5, C3, R6, C4, and VCVSs EE2 through EE4. When analyzing the feedback factor beta, the output V2 becomes an input Ein1. For the opamp model, inverting input V1 becomes a new input Ein1. f1, f2, and f3 are the three pole frequencies (Hz) of the opamp model.

1 f1 : = 2 ⋅ πR 4 ⋅ C2

Ein := (99

1)

 99  1   1  RR :=  99  5   7  99 5 EE :=  7   2

1 1 f2 : = f3 : = 2 ⋅ πR 5 ⋅ C 3 2 ⋅ πR 6 ⋅ C 4

LL := 0 R1  R2  R 3 R 4  R5  R6 Rs 

1 0 0 4 6 8 3 0 0 0

4 6 8

0 0 0

GG := 0

3 4 CC :=  6 8 

1 0 0 0

C1  C2   C 3 C 4 

1  1   Ao 

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Aold := A

Bold := B

Save arrays. New value for C2 C2 := 250·p Insert into CC array: CC2,3 := C2

 1.3  log ( f ) =  6.08     6.3 

108

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Call reference again with new value of C2: New pole frequency f1:

f1 :=

 0.81 log ( f ) =  6.08     6.3 

1 2 ⋅ πR 4 ⋅ C2

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Anew := A

Bnew := B

AC Analysis BF := 0

ND := 7

PD := 20

i := 1..ND·PD + 1

i −1 s := 2 ⋅ π ⋅ 10 L ⋅ −1 PD Vai := D·(si·I – Aold)–1·Bold + E Vai := (vai)1 L i = BF +

Vbi := D·(si·I – Anew)–1·Bnew + E

A3i := (vai)2

A4i := (vbi)2

rd :=

180 π

Loop gain: AB1i := A3i·Vai AB2i := A4i·Vai φi := rd·arg(A3i·Vai) αi := rd·arg(A4i·Vai) φi := if(φi > 0, φi – 360, φi) αi := if(αi > 0, αi – 360, αi) Zero crossover markers: F1 := –165

F2 :=–129

Phase margins: PM1 := 180 + F1

PM1 = 15

PM2 := 180 + F2

PM2 = 51

Stability rule of thumb: Phase margin should be greater than 45°. 80

Gain-phase plot of loop gain AB F1

dBV

60 db(AB1i)

40

db(AB2i)

20

F2

0

0 −20 −300

−250 C2 80 pF C2 250 pF

−200

−150 φi, αi Deg

−100

−50

0

Stability Analysis

109 Opamp open loop gain and inverse beta

120 100 80

dBV

db(A4i)

60

db(A3i)

40

−db(Vai)

20 0 −20

0

1

2

3

4

5

6

7

Li

C2 250 pF

Log freq(Hz)

C2 80 pF Inv Beta

Note: Net slope of intercept of Inv Beta with opamp Aol should be 20 dB/dec.

5.3 HIGH-VOLTAGE SHUNT REGULATOR — STABILITY ANALYSIS In this section, the stability analysis of the HV Shunt Regulator presented in Section 3.14 is given. K := 103

nF := 10–9

Hz := 1

MHz := 106

V := 1

Ehv R10

R4 R7 V8

C1

V10 V3

R8 Eref

V7

2



3 +

M2

11 V1 R1

V− V+

V2

C2

M1

V3

1 4

R2

V4

R9

V6 R5 V5

R3 R6

R1 R5 R9 C2

:= := := :=

10·K 215·K 1.96·K 4.7·nF

R2 := 10·K R6 := 6878 Ehv := 400

db(x) := 20·log(|x|)

R3 := 15·K R4 := 150·K R7 := 562·K R8 := 14.7·K Eref := 6.2 C1 := 2.7·nF

110

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Calculate poles, zeros, and critical gain points in dBV: T1 := C1·(R7 + R8) T6 := R9·C2

T3 := R8·C1

T2 := C2·(R4 + R9)

Breakpoint (bp) of loop gain 1 (lg1): F1 :=

1 2 ⋅ π ⋅ T1

F1 = 102.2 Hz

LF1 := log(F1)

LF1 = 2.01

LF2 := log(F2)

LF2 = 2.348

LF6 := log(F6)

LF6 = 4.24

First bp of lg2 (see plot marker): F 2 :=

1 2 ⋅ π ⋅ T2

F1 = 222.8 Hz

Second bp of lg2: 1 F6 = 17.3 KHz 2 ⋅ π ⋅ T6 BF := 0 ND := 7 PD := 20 F 6 :=

L i = BF +

i −1 PD

i := 1..ND·PD +1

s := 2 ⋅ π ⋅ 10 L ⋅ −1

Minor loop inverse beta (see the following derivation).  s ⋅ T3  1g1i := − db  i  si ⋅ T1 + 1  Major loop inverse beta  s ⋅ T6 + 1  R 4 ⋅ R6 ⋅ 1g 2 i : = – db  i   si ⋅ T2 + 1 R 3 ⋅ ( R 5 + R 6 )  High-frequency gain of lg1 R7   G1 := db  1 +   R8 

G1 = 31.87

High-frequency gain of lg2  R 3 ⋅ (R 4 + R9) ⋅ (R5 + R6)  G 4 := db   R 4 ⋅ R6 ⋅ R9  

G4 = 47.96

Stability Analysis

111 Inverse betas & break points

80

LF2

70

LF6

60

G4

dBV

50 lg1i

40

lg2i

30

G1

20 10 0 −10

0

1

Minor loop Major loop

2

3 Li

4

Log freq(Hz)

Note: Net slope of intercept = 20 dB/dec. Opamp DC open loop gain in V/V: Ao := 106 Goa := db(Ao) Goa = 120 Foa := 30·Hz Foa = First opamp breakpoint. ω1 := 2·π·Foa ω2 := 2·π·2·106 (Opamp poles)     Ao  Ao1i = db    1 + si  ⋅  1 + si        ω1   ω 2    Opamp open loop gain:  R 3 ⋅ (R5 + R6)  IG 2 := db   R 4 ⋅ R6   LF 3 := LF 2 + LF 4 : =

G1 − IG 2 20

Goa − G1 + log ( Foa ) 20

IG2 = 10.17

LF3 = 3.43

LF4 = 5.88

5

6

112

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Ao1i lg1i lg2i

Stability intercepts

130 120 110 100 90 80 70 60 50 40 30 20 10 0 −10

LF3

LF4

G4 G1

0

0.5

1

1.5

Opamp Minor loop Major loop

2

2.5

3

3.5 Li

4

4.5

5

5.5

6

6.5

7

Note that at each intercept LF3 and LF4, the net slope is approximately 20 dB/decade, which implies stability. Calculate loop gain GH:

F 7 i :=

si ⋅ R 7 ⋅ C1 + 1 si ⋅ R 8 ⋅ C1

F 8 i :=

1  R 4 ⋅ ( si ⋅ R 9 ⋅ C2 + 1)   R 6  ⋅ ⋅  R 3  s i ⋅ C2 ( R 4 + R 9 ) + 1   R 5 + R 6 

GHi := db(F7i·F8i) + Ao1i

M1 = 37

   − F 7 ⋅ F 8 ⋅ Ao  180 i i  PH I := ⋅ arg  π   1 + si  ⋅  1 + si        ω1   ω 2   

Stability Analysis

113 Gain vs. phase

200 M1

Gain

100 GHi 0

−100

0

20

40

60

80

100

phi Deg

Note: phasemargin := M1 phasemargin := 37 Voltage divider R1, R2 not included. Derivation of minor loop gain 1 (lg1) and major loop gain 2 (lg2): R7

C1

Ein = 1V 562 K

2.7 nF R8

lg1 derivation

1V



14.7 K

C2

R5

4.7 nF

215 K

Vb

+

lg1 R3

Va

15 K

R4

+

R9

150 K

1.96 K

Ebuff



lg2 derivation

Ebuff represents source follower M2. Ig1 is the drain current of M1, For lg1 derivation: Va =

R8 1 R8 + R 7 + sC1

For inverse, use –dBV

=

s ⋅ R 8 ⋅ C1 s ⋅ C1 ⋅ ( R 7 + R 8 ) + 1

Vc

R6

6.878 K

114

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

For lg2 derivation: Ig1 current =

1⋅ V R3

ZL =

R 4 ⋅ ( s ⋅ R 9 ⋅ C2 + 1) s ⋅ C2 ⋅ ( R 4 + R 9 ) + 1

of Ig1 Vb =

ZL 1 R 4 ⋅ ( s ⋅ R 9 ⋅ C2 + 1) = ⋅ R 3 R 3 s ⋅ C2 ⋅ ( R 4 + R 9 ) + 1

Vc =

Vb·R 6 R5 + R6

6

Transient Analysis

6.1 INTRODUCTION One method of transient analysis is based on the following equation: ∆x = Ax + Bu or ∆x = (Ax + Bu)·∆t ∆t Because A and B are already known using the NDS method, the task is to determine ∆t. If ∆t is too large, the solution will not be accurate. If ∆t is excessively large, the solution will not converge. If too small, a longer-than-necessary execution time may be required. The time increment ∆t generally should be less than the smallest time constant in the A matrix. This should be used as a guide in selecting the initial value of ∆t. Some adjustment may be required for circuits with very fast and very slow time constants. A simple circuit is used as the first example. R1

V1

Ein R2

R1 := 20·K

R2 := 40·K

C1

C1 := 0.5·uF

Ein := 4.5

The time constant of this circuit is easily found to be:

Rp := τ := Rp· C1

R1 ⋅ R 2 R1 + R 2

τ = 6.667 ms

To confirm this, KCL at the node V1 gives: Ein − V1 V1 = + iC1 R1 R2 1  Ein  1 iC1 = −V1 ⋅  + +  R1 R 2  R1 115

116

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Noting that V1 = vC1 and substituting iC1 = C1 ⋅ dvC1 − vC1 = dt C1

dvC1 dt

Ein 1   1 , ⋅ + +  R1 R 2  R1 ⋅ C1

which is in the state space form dx = Ax + Bu dt Then

A := u := Ein

−1  1 1  ⋅ +  C1  R1 R 2 

A = –150

B = 100

B :=

1 R1 ⋅ C1

u = 4.5

The time constant of A is 1 = 6.667 ms A which is τ as in the preceding text. We then chose ∆t = 1 ms < τ. Using ∆x = (Ax + Bu)⋅∆t we initialize: Vc1 := 0 (can be an initial condition other than zero) ∆Vc1 := (A·Vc1 +B·Ein)·∆t Vc1 = 0.45 Vc2 = ∆Vc1 +Vc1 Vc2 = 0.45 ∆Vc2 := (A·Vc2 +B·Ein)·∆t Vc2 = 0.383 Vc3 = ∆Vc2 +Vc2 Vc3 = 0.832 Combining: Vc2 := (A·Vc1 +B·Ein)·∆t + Vc1 Vc3 := (A·Vc2 +B·Ein)·∆t + Vc2

Vc2 = 0.45 Vc3 = 0.832

Setting the maximum number of iteration to kmax : = 50 and indexing k := 2..kmax, Vck : = (A·Vck-1 +B·Ein)·∆t + Vck-1 The total sweep time is: kmax⋅∆t = 50 ms, which should be sufficient because 5⋅τ = 33.33 ms.

Transient Analysis

117

We plot Vc and compare this to the continuous solution F ( t ) :=

 −t   Ein ⋅ Rp  ⋅  1 − exp  R1  Rp ⋅ C1   

t := 0, 0.005·ms..50·ms Widening the span of k to include k = 1 (Vc1 = 0): k := 1..kmax Time plot

Volts

3

Vck

2

F(t) 1

0 0

10

20

30 . k ∆t , t ms ms Time(ms)

40

50

Ein ⋅ Rp =3 R1 Note the lag of Vc behind the continuous time function F(t). We can decrease this lag by decreasing Dt to 0.5 ms and by increasing kmax from 50 to 100 to maintain the same sweep time: The steady-state value is

∆t := 0.5·ms

kmax :=

50 ⋅ ms ∆t

kmax = 100

k := 2..kmax (for computing) Vc1 := 0 Vck := (A·Vck–1 + B·Ein·∆t + Vck–1 k := 1..kmax (for plotting)

118

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad Time plot

Volts

3

Vck

2

F(t) 1

0 0

10

20

30

40

50

k . ∆t , t ms ms Time(ms)

Further reduction of ∆t would result in the two plots approaching congruency. The reader is encouraged to select larger values of ∆t and note the deleterious effect on the solution. As will be shown, this method applies irrespective of whether A and B are scalars as in the preceding text or arrays.

6.2 SWITCHED TRANSIENT ANALYSIS A more complicated example is now shown to further illustrate the utility of the method. R1 Ein

V1 Q1

R2

V2

C1

V3

1 R3

R4

2

R1 := 10·K R2 := 10·K R3 := 2·K Qloff := 10·Meg Qlon := 0.5 (Q1 is a CMOS SPST switch.) C1 := 0.1·u

U := 3

 1 Y :=  2     3

R4 := 10·K

Ein := (99

Analytical Q1off and Q1on time constants:  R 3 ⋅ ( R1 + R 2 )  τ1 :=  R 4 +  ⋅ C1 R1 + R 2 + R 3  

τ1 = 1.182m

1)

Transient Analysis

119

R2 ⋅ R 3   τ 2 :=  R 4 +  ⋅ C1  R2 + R 3  V3pk :=

τ2 = 1.167m

10 ⋅ R 3 ⋅ R 4 R 3 ⋅ R 4 + ( R1 + R 2 ) ⋅ ( R 3 + R 4 )

 99  1  RR :=  1  2   3 LL := 0

1 0 2 0 0

R1  Q1off   R2  R 3  R 4 

EE := 0

CC:= (2

3

V3pk = 0.769

C1)

GG := 0

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Aoff := A Close sw Q1

Boff := B

Doff := D

Eoff := E

RR2,3 := Q1on

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Aon := A

Bon := B

Don := D

Eon := E

Compare time constants: t1 :=

1 Aoff

t1 = 1.182m

From above: 1 Aon

τ1= 1.182m

t 2 :=

From above: τ2 = 1.167m

∆t := 0.02·m

 Per  k max := floor   ∆t 

t2 = 1.167m

Per := 20·m

kmax = 1000

Ein := 10

Create input pulse from Mathcad’s unit step function φ(x): pulse(x, w) := φ(x) – φ(x – w) bpf(x, f, w, Ein) := Ein·pulse(x – f, w) Eapp(t) := bpf(t, 0.05·Per, 0.9·Per, Ein) k := 2..kmax Initialize: V11 := 0 Switch time: Sw := 0.45·kmax Sw·∆t = 9m

120

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

V1k := if(k < Sw, Aoff·V1k–1·∆t + Boff·Eapp(k·∆t)·∆t + V1k–1, Aon·V1k–1·∆t + Bon·Eapp(k·∆t)·∆t + V1k–1) Vok := if(k < Sw, Doff·V1k + Eoff·Eapp(k·∆t), Don·V1k + Eon·Eapp(k·∆t)) Input & output waveforms

1.5

Sw . ∆t m

1

Volts

(Vok)2 − (Vok)3 (Vok)3 Eapp(k . ∆t)

V3pk

0.5 0

10

–V3pk

–0.5 –1

0

10 k . ∆t m Time(ms)

5 Vc1 V3 (Input pulse)/10

15

20

6.3 N = 2 SWITCHED CIRCUIT TRANSIENT RESPONSE In this section, a circuit with two capacitors (N = 2) with multiple time constants and a synchronously switched inputs is analyzed. K := 103

u := 10–6

Meg := 106

m := 10–3

R1

V1

Ein1 R3

R2 V2 1

C1

R4

V3 C2

Q1 2 Ein2

R1 := 10·K R2 := 10·K R3 := 20·K R4 := 100·K Q1off := 10·Meg Q1on := 0.5 C1 := 0.02·u C2 := 0.5·u U := 3 Y := (1 2 3)T  99 Ein :=   98

1 1

LL := 0

GG := 0

EE := 0

Transient Analysis

121

Two inputs. To be changed to +25 V and −10 V later. Switch Q1 OFF  99  1  RR :=  2  1   1

R1  R2   Q1off  R 3  R 4 

1 2 98 3 0

1 CC :=  3

C1  C2 

0 0

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Aoff := A Switch Q1 ON

Boff := B

Doff := D

Eoff := E

Save OFF arrays.

RR3,3 := Qlon

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Aon := A tau1 : =

Bon := B

Don := D

Eon := E

Save ON arrays.

1 1 1 1 tau 4 : = tau 2 : = tau 3 : = max ( Aoff ) min ( Aoff ) max ( Aon ) min ( Aon )

tau1 := (400

124.9

400

76.9)u

tau4 := 76.9 u

This is the shortest time constant; ∆t must be less than this. Choose ∆t := 50·u

Per1 := 20·m

Per2 := 40·m

 Per 2  kmax := floor   ∆t 

kmax = 800 pulse(x, w) := φ(x) – φ(x – w) bpf(x, f, w, Ein) := Ein·pulse(x – f, w) Ein1 := 25 Ein2 := –10 Eapp1(t) := bpf(t, 0.05·Per1, 0.95·Per1, Ein1) Eapp2(t) := bpf(t, 0.4·Per1, 0.95·Per1, Ein2)  Eapp1( t )  Eapp( t ) : =    Eapp 2( t )

0.95·Per1 := 19m

k := 2..kmax Initialize:  0 V11 :=    0

0.5·Per1 = 10m

122

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Switch time: Sw := 0.25·kmax Sw = 200 Sw·∆t = 10m V1k := if(k < Sw, Aoff·V1k–1·∆t + Boff·Eapp(k·∆t)·∆t + V1k–1, Aon·V1k–1·∆t + Bon·Eapp(k·∆t)·∆t + V1k–1) Vok := if(k < Sw, Doff·V1k + Eoff·Eapp(k·∆t), Don·V1k + Eon·Eapp(k·∆t)) 30 25

Sw . ∆t m

20

(Vok)1

15

(Vok)3

10

Eapp(k . ∆t)1

5

Eapp(k . ∆t)2

0 –5 –10 –15

0

5 V1 V3 Ein1 Ein2

10

15

20 k . ∆t m

25

30

35

40

SPICE Verification N=2 Switched Circuit Transient Response *File: n2tran.cir V1 99 0 PWL(0,0 1m,0 1.001m,25 19.99m,25 20m,0) V2 98 0 PWL(0,0 7.99m,0 8m,-10 17.99m,-10 18m,0) R1 99 1 10K R2 1 2 10K R3 1 3 20K R4 1 0 100K * C2 3 0 0.5u C1 1 0 0.02u * * Build separate switch control

Transient Analysis

123

* V3 97 0 PWL(0,0 9.99m,0 10m,+5 47.99m,+5 48m,0) RL 97 0 10K SQ1 2 98 97 0 SMOD .MODEL SMOD VSWITCH(RON=0.5 ROFF=10MEG VON=+5 VOFF=0) .TRAN 0.1m 40m 0 50u .PRINT TRAN V(99) V(98) V(1) V(3) .OPTIONS NOMOD NOECHO NOPAGE .END Tnom := READPRN(“c:\SPICEapps\datfiles\n2tran.txt”) N := rows(Tnom) N = 401 k := 1..N

Spice verification 30 25

Volts

Tnomk,2 Tnomk,3

20 15 10

Tnomk,4

5

Tnomk,5

0 –5 –10 –15

0

5

10

15

Ein1 Ein2 V1 V3

20 25 Tnomk,1 m Time(ms)

6.4 COMPARATOR 100-HZ OSCILLATOR K := 103 V := 1

u := 10–6 Hz := 1

Meg := 106

m := 10–3

30

35

40

124

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

LM339 comparator circuit

Redrawn explanatory circuit Ein

C1

2

3 R1 Ein +5V

Vp

Ein R5 +5V

Vn – +

R5 Vn

R4 11 V– V+

1

Vc

C1

R4

Vc

R3

Vp

R1 Ein

1 R2

Q1 2

4

R3 Q1 internal

R2

R1 := 100·K R5 := 3.3·K

R2 := 100·K Q1on := 150

R3 := 100·K R4 := 5.75·K Qloff := 10·Meg C1 := 1.15·u

Switch Q1 is the open-collector (OC) transistor output of an LM339 comparator. Vn is the inverting input, and Vp is the noninverting input to the LM339. Hence, when Vn > Vp, Q1 will be ON (switch closed), and when Vn < Vp, Q1 will be OFF (switch open). When power is applied (Ein = +5 V DC), C1 will charge up to a voltage greater than Vp, closing switch Q1, and then discharging C1 towards a voltage less than Vp, which opens the switch, and the cycle repeats. Hence, the output of the LM339 will go high (Q1 OFF) and low (Q1 ON) at a rate determined by the circuit time constants. With the given, component values the frequency of oscillation is about 100 Hz. From the plot in the following text, the falling edges of Vc are about 10 ms apart, for a period of 100 Hz. Note that max Vce(sat) is given on the LM339 data sheet as 0.25 V. This is simulated by setting the ON resistance of Q1 to 150 Ω. U := 3 LL := 0

Y := (1 2 EE := 0

3)T CC := (1 0 C1) GG := 0 Ein := (99 5)

Note: Vn = V1 = VC1 = minus input to LM339, Vc = V2 = Vcollector, Vp = V3 = plus input to LM339.

Transient Analysis

125

 99  3   3 RR :=   2  99   2

3 0 2 0 2 1

R1  R2   R3  Q1off  R5   R4 

with switch Q1 OFF → Reference:C:\mcadckts\CaNL11\comm42.mcd Aoff := A Boff := B Save OFF arrays.

Doff := D

Eoff := E

RR4,3 := Q1on

Repeat with switch Q1 ON.

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Aon := A Bon := B Save ON arrays. ∆t := 0.05·m

Don := D

Per := 50·m

Eon := E

 Per  kmax = floor   ∆t 

kmax = 100 pulse(x) := φ(x) (φ(x) is Mathcad’s unit step function.) bpf(x, f, Ein) := pulse(x – f) Eapp(t) := bpf(t, 0.005·Per,1)

126

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Program

Comments

Vo := V11 ← 0

Initialize

Vn1 ← 0 Vc1 ← 0 Vp1 ← 0 for k ∈ 2..kmax if Vn k −1 > Vp k −1 V1k ← Aon ⋅ V1k −1 ⋅ ∆t + Bon ⋅ Eapp ( k ⋅ ∆t ) ⋅ ∆t + V1k −1

Iterate from 2 to kmax Q1 to switch ON

Vn k ← Don1 ⋅ V1k + Eon1 ⋅ Eapp ( k ⋅ ∆t ) Vc k ← Don 2 ⋅ V1k + Eon 2 ⋅ Eapp ( k ⋅ ∆t ) Vp k ← Don 3 ⋅ V1k + Eon 3 ⋅ Eapp ( k ⋅ ∆t ) otherwise V1k ← Aoff ⋅ V1k −1 ⋅ ∆t + Boff ⋅ Eapp ( k ⋅ ∆t ) ⋅ ∆t + V1k −1 Vn k ← Doff1 ⋅ V1k + Eoff1 ⋅ Eapp ( k ⋅ ∆t ) Vc k ← Doff2 ⋅ V1k + Eoff2 ⋅ Eapp ( k ⋅ ∆t ) Vp k ← Doff3 ⋅ V1k + Eoff3 ⋅ Eapp ( k ⋅ ∆t )  Vn     Vc     Vp 

Q1 to swittch OFF

Transient Analysis

127 Oscillator waveforms

5

Volts

4 |(Vo1)k| 3 |(Vo2)k| 2 1 0

0

10

20

Vn Vc

k . ∆t m Time(ms)

30

40

50

Oscillator waveforms

5

Volts

4 |(Vo1)k| 3 |(Vo3)k| 2 1 00

10

20

Vn Vp

k . ∆t m Time(ms)

30

40

6.5 TRANSIENT ANALYSIS OF PULSE TRANSFORMER ns := 10–9

ps := 10–12

MHz := 106

For the schematic, see Section 2. 6. Insert AC circuit analysis file: → Reference:C:\mcadckts\CaNL11\xformerrs5.mcd Y := (1

3

5)T

Insert subprogram file: → Reference:C:\mcadckts\CaNL11\comm42.mcd

50

128

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Time constants of A: 1 max ( A )

tau1 : =

tau 2 : =

Specify time parameters: Choose ∆t < tau, ∆t := 2·ps m := 1..Npp  Tper  kmax := floor   ∆t 

1 min ( A )

 2.5  tau   ps  2.5 

Tper := 200·ns

Npp := 200

kmax = 100000

 kmax  Npp = number of plotting points. rto := floor   Npp  Create delayed input pulse using Mathcad’s unit step function φ(x): pulse(x, w) := φ(x) – φ(x – w) bpf(x, f, w) := pulse(x – f, w) Eapp(t) := bpf(t, 0.02·Ter, 0.5·Tper) Vo : = V11 ← ( 0

0

0

0

0

0)

T

for k ∈ 2..kmax V12 ← A ⋅ V11 ⋅ ∆t + B ⋅ Eapp ( k ⋅ ∆t ) ⋅ ∆t + V11 Vx1 ← D ⋅ V11 + E ⋅ Eapp ( k ⋅ ∆t ) V11 ← V12 tx ←

k rto

vo tx ← Vx1 if tx = floor ( tx ) vo

Volts

Delayed input pulse 1.2 1 0.8 Eapp(m. ∆t ⋅rto) 0.6 0.4 0.2 0 −0.2

0

50

100 m. ∆t ⋅rto n Time(ns)

150

200

Transient Analysis

129 Output at node Y

15

Volts

(Vom)1 (Vom)2

10 5

(Vom)3 0 –5

0

Length(Vo) = 200

25

50

75

100 125 m. ∆t⋅rto ns

V1 V3 V5

Time(ns)

Npp = 200

 1 Y :=  3    5 

150

175

200

Note the distortion on V3 and V5. Because the bandwidth is approximately 10 MHz (see Section 2.6), the rise or fall times of the input pulse should be greater than

Tr :=

ln ( 3) π ⋅ 10 ⋅ MHz

Tr = 34.97ns

The rise or fall time used here is 10 ps. SPICE Verification TRANSFORMER PULSE RESPONSE * File: xformer_tran.cir VEin 99 0 PWL(0,0 4ns,0 4.012ns,10 104.012ns,10 104.022ns,0) * 10ps rise & fall time; 100ns PW * 4.012ns - 4ns = 0.012ns = 12ps; 10% to 90% = 10ps * R1 99 1 10 R2 1 2 1.5 R3 3 0 20K

130

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

R4 3 4 1.5 R5 5 0 1K R6 1 6 0.5 R7 3 7 1 * C1 1 0 20pF C2 6 5 5pF C3 5 0 20pF * L1 2 3 1uH L2 7 0 2mH L3 4 5 1uH * .TRAN 1ns 200ns 0ns 2ps .PRINT TRAN V(99) V(1) V(3) V(5) .OPTIONS ITL5=0 .OPTIONS NOECHO NOPAGE NOMOD .END Tnom := READPRN(“c:\SPICEapps\datfiles\xformer_tran.txt”) N := rows(Tnom) N = 201 k := 1..N Spice verification

15

Volts

Tnomk,3 Tnomk,4

10 5

Tnomk,5 0 –5

0

50 V1 V3 V5

100 Tnomk,1 ns Time(ns)

150

200

Transient Analysis

131

6.6 PASSIVE RCL CIRCUIT TRANSIENT ANALYSIS The same circuit was used in Section 2.1 (Introduction). L3 R1

V1

C1

R2

V2

V3

Ein

R1 := 10 C1 := 0.1·u

R2 := 100 C2 := C1

 99  1 RR :=   2  3 

1 2 3 0

Ein := (99

1)

R1  R4  R2 R 3

C2

R3

R4

L4

R3 := 50·K R4 := 10·K L3 := 2533.03·u L4 := 25.3303·u 1 CC :=  3

EE := 0

2 0

GG := 0

C1  C2 

1 LL :=  3

U := 3

L 3 L 4 

2 0

Y := (1

2

3)T

→ Reference:C:\mcadckts\CaNL11\comm42.mcd 1 = 25.33 u max ( A )

1 = 0.1 u min ( A )

Select ∆t as: ∆t := 0.02·u Set period: Tper := 100·u

 Tper  kmax := floor   ∆t 

kmax = 5000

Create delayed input pulse as before: pulse(x, w) := φ(x) – φ(x – w) bpf(x, f, w) := pulse(x – f, w) Pulse width = Tper (0.5) = 50 u

Eapp(t) := bpf(t, 0.05·Tper, 0.5·Tper)

Instead of looking at the output voltage nodes Y, we have the option of looking at the capacitor voltages and inductor currents using the following seeded iteration method. V1 is the voltage across C1, V2 on C2, I3 is the current in L3, and I4 in L4.

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

k := 2..kmax Initialize:  V11   0       V21   0    :=    I31   0       I4   0  1 Iterate:  V1k   V1k −1   V1k −1         V2 k   V2 k −1   V2 k −1    := A ⋅   ⋅ ∆t + B ⋅ Eapp ( k ⋅ ∆t ) ⋅ ∆t +    I3k   I3k −1   I3k −1         I4   I4   I4  k k −1 k −1 Output plots: Input pulse and transients on C1 & C2

1.2 0.8 V1k Volts

132

Eapp(k . ∆t) 5 . V2k

0.4 0 –0.4 –0.8

0

20

V1 Input pulse 5 x V2

V2 is scaled by 5

40

60

k . ∆t u Time(us)

80

100

Transient Analysis

133 Transient currents thru L3 & L4

15

Current (mA)

12.5 10

I3k

7.5

m

5

I4k

2.5

m

0 –2.5 –5

0

20

40

I3 I4

60

80

100

k . ∆t u Time(us)

6.7 MATHCAD’S DIFFERENTIAL EQUATION SOLVERS Consider passive RCL circuits (compare with the NDS method). For schematic and component values, see Section 6.6. → Reference:C:\mcadckts\CaNL11\LCtran.mcd Transient Analysis Using rkfixed or Rkadapt Functions Only step functions can be used. Pulse, ramp, and triangular input waveshapes require use of the NDS transient analysis method. Set time period T as: T := 100·u Set maximum number of time points: kmax := 200 Initialize x and form the {N 1}array D(t,x) from elements of the A and B arrays obtained from comm42.mcd.  0    0 x :=    0    0 

 A1,1x1 + A1,2 ⋅ x 2 + A1,3 ⋅ x 3 + A1,4 ⋅ x 4 + B1     A 2,1x1 + A 2,2 ⋅ x 2 + A 2,3 ⋅ x 3 + A 2,4 ⋅ x 4 + B2  D ( t, x ) : =    A 3,1x1 + A 3,2 ⋅ x 2 + A 3,3 ⋅ x 3 + A 3,4 ⋅ x 4 + B3     A x + A ⋅ x + A ⋅ x + A ⋅ x + B  4 ,1 1 4 ,2 2 4 ,3 3 4 ,4 4 4

134

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Call rkfixed: Z := rkfixed(x, 0, T, kmax, D) “rkfixed” uses a constant internally calculated ∆t. The Mathcad ordinary differential equation (ODE) solver “Rkadapt” uses a variable ∆t that can be faster because ∆t is large for slowly-varying outputs and small for fast-varying outputs. It is called in the same manner as “rkfixed.” Z : = Rkadapt(x, 0, T, kmax, D)

n := 1..kmax

(Note: To verify identical outputs with rkfixed and Rkadapt, right-click on Z statement, and then click “Disable Evaluation.” A black square will appear denoting disabled. Then compare with the following plots.) C1 & C2 voltage waveforms 1.2

Volts

0.8 Zn,2

0.4

5 . Zn,3

0 −0.4 −0.8

0

20

40

60

80

100

Zn,1 u Time(us)

Vc1 Vc2

L3 & L4 inductor current

15

Current (mA)

12.5 Zn,4 mA Zn,5 mA

10 7.5 5 2.5 0 −2.5 −5

0

20 L3 L4

40

60 Zn,1 u Time(us)

80

100

Transient Analysis

135

Stiff ODEs can be defined as a large disparity between absolute minimum and maximum values of the elements of the A matrix, i.e., very slow and very fast time constants in the circuit (the slow ones are “stiff”). This circuit is not stiff, but the pulse transformer model given earlier is, and the function rkfixed did not provide the correct output. For stiff circuits, use “Stiffb” as follows: initialize and form the {N N+1} Jacobian array function J(t,x) using the elements from the A matrix:  0    0 x :=    0    0 

0  0 J ( t, x ) : =  0   0

A1,1

A1,2

A1,3

A 2,1

A 2 ,2

A 2,3

A 3,1

A 3,2

A 3,3

A 4 ,1

A 4 ,2

A 4 ,3

A1,4   A 2,4   A 3,4   A 4 ,4 

Call the function: Z := Stiffb(x, 0, T, kmax, D, J) Same output: Compare these step input waveforms with the plots in Section 6.6. C1 & C2 voltage waveforms

1.2

Volts

0.8 0.4

Zn,2 5 . Zn,3

0 −0.4 −0.8 0

20

40

60

80

100

Zn,1 u Time(us)

6.8 A MATHEMATICAL PULSE WIDTH MODULATOR (PWM) us := 10–6

KHz := 103

This PWM will be used as the switching function for the power supply presented in Section 6.9.

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

User inputs: Fsw := 50·KHz

Nper := 4 (number of periods)

Du := 0.5 (duty cycle)

Per :=

1 Fsw

Per = 20us

 Nper ⋅ Per  + 0.5  kmax : = floor    ∆t

∆t := 0.1·us

kmax = 800

 (1 − Du ) ⋅ kmax    Du ⋅ kmax K2 : = floor  + 0.5  K1 : = floor  + 0.5  Nper   Nper   K1 = 100 K2 = 100 kper := K1 + K2 kper = 200 po : = c ← 1 p1 ← 1 for k ∈ 2..kmax p k ← 1 if  k ≥ 1 + ( c − 1) ⋅ kper  ∧  k ≤ K 2 + ( c − 1) ⋅ kper  p k ← 0.05 otherwise c ← c + 1 if k ≥ c ⋅ kper p k := 1..kmax PWM output 1 Switch on/off

136

pok

Du = 0.25

0.5 0

0

10

20

30

40 50 k . ∆t us Time(us)

60

70

80

Transient Analysis

137 PWM output

Switch on/off

1

pok

0.5 0

0

10

20

30

40 50 k ⋅ ∆t us Time(us)

60

70

80

Du = 0.5

6.9 SWITCHING POWER SUPPLY OUTPUT STAGE — BUCK REGULATOR This section analyses the turn-on (start-up) transient of a switched-mode power supply. us := 10–6 ms := 10–3

uF := 10–6 mV := 10–3

uH := 10–6 Meg := 106 3 KHz := 10

Sw1 represents the switch internal to the pulse width modulator (PWM). Sw2 represents the flywheel diode. When Sw1 is ON, Sw2 will be OFF, and vice versa. This section utilizes the Pulse Width Modulator (PWM) of Section 6.8. Ein

1

Sw1

2

V1

R1

V2

L1

1

R2



Sw2 2

V3 R3 V4

+ C1

R1 := 0.3 R2 := 0.085 R3 := 38 L1 := 20·uH U := 4 Y := 3

C1 := 47·uF

User inputs:

Fsw := 50·KHz

Nper := 20

Du := 0.5 (50% duty cycle)

Per :=

1 Fsw

Per = 20us

138

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

∆t = 1·us

 Nper ⋅ Per  kmax : = floor  + 0.5    ∆t

kmax = 400

Ein := (99

1)

 (1 − Du ) ⋅ kmax  K1 := floor  + 0 Nper  

 Du ⋅ kmax  K2 : = floor  + 0.5   Nper  kper := K1 + K2 Switch ON/OFF resistances: Q1on := 1

Q1off := 10·Meg

 99  1  RR :=  1  3   3

1

EE := 0

0 2 4 0

Q1on  Q 2 off   R1  R 2  R 3 

Q2on := 1

CC := (4

0

Q2off := 10·Meg

C1)

LL := (2

3

GG := 0

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Aon := A

B := B

Don := D

Eon := E

Change switch positions: RR1,3 := Q1off

RR2,3 := Q2on

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Aoff := A

Boff := B

Doff := D

Eoff := E

Ein := 15

L1)

Transient Analysis

139

Vo : = c ← 1  0 Vc1 ←    0 Vo1 ← 0 p1 ← 1 for k ∈ 2..kmax p k ← 5 if  k ≥ kper ⋅ ( c − 1) + 1 ∧  k ≤ K 2 + ( c − 1) ⋅ kper  p k ← 0 otherwise c ← c + 1 if k ≥ c ⋅ kper if p k = 5 Vc k ← Aon ⋅ Vc k −1 ⋅ ∆t + Bon ⋅ Ein ⋅ ∆t + Vc k −1 Vo k ← Don ⋅ Vc k + Eon ⋅ Ein if p k = 0 Vc k ← Aoff ⋅ Vc k −1 ⋅ ∆t + Boff ⋅ Ein ⋅ ∆t + Vc k −1 Vo k ← Doff ⋅ Vc k + Eoff ⋅ Ein  Vo    p  Pulse height is set to 5 V, see on the following plot. K := 1..kmax

M1 := Ein·Du

M1 = 7.5

Theoretical output = M1 = input times duty cycle.

140

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad 10 M1

|(Vo1)k| (Vo2)k

5

0

0

50

100

150

200 k . ∆t us

250

300

350

400

M3 := 7.42 M2 := 7.08 Ripple amplitude M3 – M2 = 340 mV 7.5

|(Vo1)k| (Vo2)k

M3

7.25 M2 7 300

320

340

360

380

400

k ⋅∆t us

6.10 STATE SPACE AVERAGING State Space Averaging was developed by Dr. R.D. Middlebrook of the California Institute of Technology in the early 1980’s. The concept itself is not difficult, but in those days the difficult part was the amount of algebra one had to resort to in obtaining the state space arrays. (See Section 1.1.1., Introduction, and Section 2.2). The NDS method now provides a painless method of obtaining the state space arrays, A, B, D, & E, greatly simplifying the process of State Space Averaging, as will be seen in this section. uF := 10–6 mV := 10–3 C1 := 47·uF

uH := 10–6 Meg := 106 us := 10–6 V := 1 R1 := 0.3 R2 := 0.085 L1 := 430·uH U := 6 Y := 6

V99 1

2

V1

Ein1 Sw1

Vs

R1

V2

+ −

+

V98

L1

V6

1 R2

Sw2 Ein2

V4

ms := 10–3 R3 := 38

V3

2

C1



− +

+

Vf

R3 V5

Transient Analysis

141

User inputs: 15  1 

 99 Ein :=   98

Du := 0.63

Switch ON/OFF resistances: Q1on := 0.001  99  2  RR :=  2  6   6 GG := 0

Q1off := 10·Meg

1 3 4 5 0

Q1on  Q 2 off   R1  R 2  R 3 

Vs := 0.1

Q2on := 0.001

CC := (5

0

C1)

1 EE :=  3

Vf := 0.7

Q2off := 10·Meg

LL := (4

2 0

98 0

0 98

6

L1)

Vs Vf 

Vs is switch drop (e.g., Vcesat) Vf is diode forward drop. → Reference:C:\mcadckts\CaNL11\comm42.mcd Aon := A

Bon := B

Don := D

Eon := E

Change switch positions: RR1,3 := Q1off

RR2,3 := Q2on

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Aoff := A

Boff := B

Doff := D

Eoff := E

Averaging the arrays with duty cycle Du: A := Du·Aon + (1 – Du)·Aoff D := Du·Don + (1 – Du)·Doff

B := Du·Bon + (1 – Du)·Boff E := Du·Eon + (1 – Du)·Eoff

Multiplying the state space arrays by the duty cycle (Du) and (1 – Du) as above, is the essence of the State Space Averaging concept. DC Analysis

X := –A–1·B

 9.06  X=   0.24 

vC1 i L1

Vodc := D·X

Vodc = 9.056V

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Theoretical no-loss output: Vt := Ein1,2·Du

Vt = 9.45V

AC Analysis BF := 2

ND := 2

i −1 PD Voi := db(cvi) L i := BF +

PD := 40

i := 1..ND·PD + 1

s := 2 ⋅ π ⋅ 10 L ⋅ −1

cvi := D·(si·I – A)–1·B + E

M3 := db(Vodc) DC & AC buck converter output y/u

40 30

M3

20 dBV

142

Voi

10 0 −10 −20

2

2.5

3 Li

3.5

4

Log freq(Hz)

Compare results with conventional state space methods [1] [2]:  R2 W :=   −R 3  Ein1,2  u : =  Vs     Vf 

B1 := C·S1·U B2 := C·S2·u

1 1

 −1 Q :=  0

 C1 P :=   0  15  u =  0.1    0.7 

0 L1

− R1  − ( R1 + R 3) 

1 S1 :=  1

C := (W·P)–1

0 S2 :=  0

0 0

−1 −1

A1 := C·C

−1 −1

A2 := A1

Compare arrays from conventional and NDS methods:

0 0 

Transient Analysis

143

As := Du·A1 + (1 – Du)·A2  −558.66 As =   −2320.39

Bs := Du·B1 + (1 – Du)·B2  −558.66 A=  −2320.39

21229.11 −894.91 

 1.04 × 10 −12  Bs =    21227.91 

21229.11 −897.23 

0   B=  21227.91

6.11 SIMPLE TRIANGULAR WAVEFORM GENERATOR This section shows the implementation of a simple triangular wave generator that can be used as an input for transient analysis of other circuits. This analysis uses the PWM given in Section 6.8. K := 103

uF := 10–6

us := 10–6

Meg := 106

ms := 10–3

Hz := 1

C1 V2 Ein1

Ein2

2 2

1

V1 R1

11 2 − V−

1

3 +

V3 1

V+ 4

R1 := 10·K C1 := 0.05·uF U := 3 Y := 3 CC := (2 GG := 0 EE := (3 0 0 2 106) LL := 0

3

C1)

Switch is a SPDT CMOS type.

Fsw := 500·Hz ∆t := 5·us  99 Ein :=   98

Du := 0.5

Nper := 5

Per :=

 Nper ⋅ Per  kmax : = floor  + 0.5    ∆t 1 −1

1 Fsw

Per = 2ms

kmax = 2000

 Du ⋅ kmax  K2 : = floor  + 0.5   Nper 

 (1 − Du ) ⋅ kmax  K1 := floor  + 0 Nper  

kper := K1 + K2

Switch ON/OFF resistances: Q1on := 50

Q1off := 10·Meg

kmax·∆t = 10 ms

Einampl := 5

144

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

 1 RR :=  99   98

2 1 1

R1  Q1on   Q1off 

→ Reference:C:\mcadckts\CanL11\comm42.mcd Aon := A

Bon := B

Don := D

Eon := E

Bon = (1990)

Change switch positions: RR2,3 := Q1off

RR3,3 := Q1on

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Aoff := A

Boff := B

Doff := D

Eoff := E

Boff = (–1990)

Vo : = c ← 1 Vc1 ← 0 Vo1 ← 0 p1 ← 1 Hi ← 4.8 Lo ← 0.2 for k ∈ 2..kmaax p k ← Hi if  k ≥ kper ⋅ ( c − 1) + 1 ∧  k ≤ K 2 + ( c − 1) ⋅ kper  p k ← Lo otherwise c ← c + 1 if k ≥ c ⋅ kper Vc k ← Aon ⋅ Vc k −1 ⋅ ∆t + Bon ⋅ Einampl ⋅ ∆t + Vc k −1 if p k = Hi Vc k ← Aoff ⋅ Vc k −1 ⋅ ∆t + Boff ⋅ Einampl ⋅ ∆t + Vc k −1 if p k = Lo  Vc    p  k := 1..kmax (switch position shown for reference)

Transient Analysis

145 Output at node Y

Volts

10 |(Vo1)k|

5

(Vo2)k

0

1

0

2

3

4

5 6 . k ∆t ms Time(ms)

7

8

9

10

6.12 QUADRATURE OSCILLATOR This section shows how the NDS transient analysis method can be used to analyze oscillators. Since there is no independent inputs in oscillator circuits, we must provide non-zero initial voltage conditions on the capacitors. This is illustrated below. K := 103

Hz := 1

nF := 10–9

us := 10–6

ms := 10–3

C1 R1 V1

2 − 3 +

11 V−

V2 1

V+ 4

R2 V3

3

C2

2 R3

V5

+ −

4 V+

1

V− 11

V4 C3

V4

R1 := 10·K

R2 := R1

4 Y := 4 RR :=  2   0

C3 := C1

U := 5

Ao := 106

GG := 0

2 EE :=  4

0 0

R3 := R1

0 3

LL := 0 1 5

Ao  Ao 

C1 := 1 3 5

Ein := (99

100 ⋅ nF 2⋅π R1  R 2  R 3

C2 := C1 1 CC :=  3   4

2 0 5

C1  C2   C 3

0) Ein is a dummy variable here.

146

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

→ Reference:C:\mcadckts\CaNL11\comm42.mcd  0   B =  0    0 

D = (0

1

1)

E = (0)

Because there is no independent input, B is a null array. tau1 : =

1 max ( A )

 V11   1      V21  : =  1      V3   1 1

tau 2 : =

1 min ( A )

 159.16  tau =   us  159.15 

Initial capacitor voltages = 1 V.

∆t := 5·us

kmax := 500

 V1k   V1k −1   V1k −1         V2 k  : = A ⋅  V2 k −1  ⋅ ∆t + B ⋅ ∆t +  V2 k −1         V3   V3   V3  k k −1 k −1

k := 2..kmax

 V1k    Vo k := D ⋅  V2 k     V3  k

Per := kmax·∆t

Per = 2.5 ms

Capacitor voltages 4

Volts

V1k V2k V3k

2 0 −2 −4

0

500

V1 V2 V3

1000

1500 k ⋅ ∆t us Time(us)

2000

2500

Transient Analysis

147

All values are initialized at 1 V as before. M1 := 690

M2 := 1690

F := M2 – M1

F = 1000Hz

Output at node Y 5

Volts

M1 Vok

M2

0

−5

0

500

1000

1500

2000

2500

k⋅ ∆t us Time(us)

Verification of A matrix using algebraic method

1 W :=  0   0

0 1 0

0 0  1 

 0   −1 Q :=   R2   0 

1 R1 −1 R2 1 R3

1  R1   0    0  

  C1     P := diag   C2       C 3 

As := (W·P)–1·Q 0   As = −6283.185   0  −0.006 A =  −6283.179   0 eigenvals ( A ) Le := 2⋅π

6283.185 −6283.185 6283.185 6283.179 −6283.185 6283.179

6283.185   0   0 6283.179   0  −0.006 

 −0 + 1000 i Le =  −0 − 1000 i    −1000 

|Le1| = 1000

Eigenvalues indicate the frequency of oscillation (triple pole at 1000 Hz).

148

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

6.13 WEIN BRIDGE OSCILLATOR This section shows one more example of oscillator transient analysis using the NDS method. K := 103

nF := 10–9

KHz := 103

us := 10–6

R5

R6

V1

11 2 − V− + V+

3 V2

C4 := 10·nF

EE := (4

0

R6 := 20·K R1 :=

2

1

V3 R1

R2

ms := 10–3

1 2 ⋅ π ⋅ fo ⋅ C 3

106)

4

C3

C4

R5 := 10·K

V4 1

fo := 10·KHz C3 := 10·nF

R2 := R1

1 4 RR :=  4 2 

LL := 00

GG := 0

R 5 R 6  R1  R 2 

0 1 3 0

 3 2 C 3 CC :=  U := 4 Y := 4  2 0 C 4  (Ein is a dummy variable) Ein := (99 0) → Reference:C:\mcadckts\CaNL11\comm42.mcd  −62831.9 A=  −62831.9

125663.1 62831.3 

 0 B=   0

D = (0

3) E = (0)

No independent input, B = 0. ∆t := 0.01·us Per := 500·us

kmax :=

Per ∆t

kmax = 50000

k := 2..kmax There is no independent input; hence, an initial condition voltage to start the oscillation must be given to one or both capacitors.

Transient Analysis

V11 := (1

149

1)T

V1k := A·V1k–1·∆t + V1k–1 1 = 100 us 10 ⋅ KHz

Vok := D·V1k

Volts

Output at node Y

Vok

4 3 2 1 0 −1 −2 −3 −4

0

50

100

150

200

250

300

350

400

450

500

k⋅ ∆t us Time(us)

Verification of A matrix (assumes ideal opamp):

 1 W :=   R1

−1 0 

 0  Q :=   −1 

1  R2   R6  R5 

  C3   P := diag       C 4  

As := (W·P)–1·Q  −62831.9 As =   −62831.9

125663.7  62831.9 

 −62831.9 A=  −62831.9

125663.1 62831.3 

The oscillation frequency is the geometric mean of the two eigenvalues:

Le := eigevals(A)

 −0.283 + 62831.853i Le =    −0.283 − 62831.853i

fo :=

Le1 ⋅ Le 2 2⋅π

fl = 10KHz

REFERENCES 1. R.D. Middlebrook, et al., Using Small Computers to Model and Measure Magnitude and Phase of Regulator Transfer Functions and Loop Gain, Advances in SwitchedMode Power Conversion, Vols I & II, TESLACo, 1983. 2. R. Boyd, State Space Averaging with a Pocket Calculator, Proceedings of High Frequency Power Conversion Conference, Santa Clara, CA, 1990, p. 283.

This page intentionally left blank

7

DC Circuit Analysis

DC analysis has been demonstrated in the introductory RCL circuit (see Section 2.1). What follows are DC analyses that will further illustrate how to use the NDS method.

7.1 RESISTANCE TEMPERATURE DETECTOR (RTD) CIRCUIT R8 Eref

V6

R9

11 2 − V− 3 +

Eref

V7

R2

R1

V+

1 4

R3

V1 R4 V3 RT V2 R5 R6

V4

11 2 − V− 3 +

V5 1

V+ 4

R7

Eref

R1 := 4.53 R2 := 34.8 R3 := 132 R4 := 9.09 R7 := 27.4 R8 := 20 R9 := 20 RT := 1.915 Eref := 5

R5 := 9.09

R6 := 4.53

Values in kohms: Opamp open loop gain: Ao := 106 RTD value (RT) varies from 1 K (Vo is approximately –5 V at 0°C) to 2 K (Vo is approximately +5 V at +260°C).

151

152

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

 7  99   3  1   2 RR :=   99  4   99  6   1 U := 7

R1  R2  R 3 R 4  R5  R6 R 7  R8 R9  RT

1 3 5 3 4 2 0 6 7 2

Y := 5

7 EE :=  5

GG := 0

0 0

Ein := (99

0 4

Ao  Ao 

6 3

Eref)

Note: For DC analysis, CC and LL component arrays are not required. Hence, only six inputs, RR, EE, U, Y, GG, and Ein, are now required for the subprogram dccomm42.mcd. Get A1 and B2 DC arrays, and solve for node voltages Vn. → Reference:C:\mcadckts\CaNL11\comm42.mcd Vn :=1solve(A1, B2) V1

(

Vn T = −0.535

V2

V3

1.07

0.803

Vo = 4.326

Vo := VnY

V4

V5

V6

V7

0.803

4.326

5 × 10 −6

−5

)

Y=5

Note that nodes V3 (Vn3) and V4 (Vn4) are equal owing to the opamp, and that node V6 is approximately zero as expected.

7.2 AN UNDERGRADUATE EE TEXTBOOK PROBLEM Unit suffixes: V := 1

Amps := 1

All four types of controlled sources: VCVS, CCVS, CCCS, VCCS. R7

EE1

Ein

V1

+ −

V2

EE2

V3

+ −

V4 R3

V6

R4 R5

+

GG1

+





R6

R1 := 2 R7 := 1

R2

V5

R2 := 2 R3 := 4 Ein := (99 24.5)

R4 := 3

R5 := 6

R6 := 2

GG2

R1

DC Circuit Analysis

153

The controlled source equations are as follows:

EE1 = (VCVS)

EE2 = 8.la (CCVS)

Ia =

V6 R1

GG1 := 6.la (CCCS)

GG2 = 2·V6 (VCCS)

7.2.1 MATRIX SOLUTION TO DEMONSTRATE NDS METHOD

THE

UTILITY

OF THE

Igg1 is the current of GG1, Igg2 is GG2 current. Note column headers for A. V1

 1  R5        A :=          

+

1 R6

V2 +

1

1

R7

R4

V3 −

 1  R4

−1

−1

1

R5

R4

R4

0

0

0

+ +

V4 1



R5 

0

1 0

0

1

−1 R3

1

−1

−1

R3

R3

R1

0

0

0

0

1

1

−1

0

R3

0

1

0

−1

0

0

0

0



Igg1 Igg 2

0

1

R2 0

V6

R5

0

0

0

V5

 1 +  R1

0

 R2  1

−8

0

0

R1

0

−3

9

−6

1

R1 0

 Ein1,2   R7     0   0    B :=  0   0     0   0     0  V1 Vn T = (14.50

0

0

0

0

−2

0

Vn := 1solve(A, B)

V2

V3

V4

V5

V6

13.00

8.00

6.00

1.00

0.50

Igg1 1.50

Igg 2 1.00 )

   0   −1   0   0  0  0  1  0

154

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Using the NDS method: 1 EE :=  3 

2

6

0

4

6

0

 6  5   4  RR :=  2  1   1  99

3 8   R1 

R1  R2  R 3 R 4  R5  R6 R 7 

0 6 5 3 3 0 1

 3 GG :=   5

0

6

0

0

6

0

6  R1   2 

U := 6

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Vdc := 1solve(A1, B2) V1 VDC T = (14.5 Igg1 := Vdc7

V2

V3

V4

V5

13.0

8.0

6.0

1.0

Igg2 := Vdc8

V6

Igg1 Igg 2

0.5

Igg1 = 1.5 Amps

1.0 )

1.5

Igg2 = 1 Amps

7.3 DC TEST CIRCUIT This section exercised the NDS method using a DC circuit with multiple inputs and four VCVS’s and three VCCS’s embedded in a resistive network. The solutions are then compared to a SPICE simulation. K := 103

mA := 10–3 R12

V10 R15 V11

Ein4 (96) GG3

EE4 + −

R1 Ein1 (99)

Ein3 (97)



R2

V2

− +

EE3

R13

V14 +

V1

V4 R6

R17

R16

V13

R5

V5

− +

R9

R7

V12

GG1 V3 R3

GG2

V6 + −

EE2

R4

V9 +

Ein2 (98)



V7 R11 V8 EE1

+ −

R14

DC Circuit Analysis

155

R1 := 1·K R2 := R1 R3 := R1 R4 := R1 R5 := R1 R6 := R1 R7 := R1 R9 := R1 R11 := R1 R12 := R1 R13 := R1 R14 := R1

R15 := R1

R16 := R1 U := 14

 99  2   3  9   5   4  3  RR :=  2  7   96   4  12   10  13   5

1 3 9 98 4 97 0 6 8 10 12 0 11 0 14

R1  R2   R3  R 4  R5   R6  R7   R9  R111  R12   R13 R14   R15  R16   R17 

 14 GG : =  7   13

3 9 10

12 3 96

R17 := R1

8 6 EE :=  2 5 

0 0 0

0 0 1 11

0.02  0.04   0.01

→ Reference:C:\mcadckts\CaNL11\comm42.mcd Vn := 1solve(A1,B2) p := 1..U Vndsp := Vnp See SPICE listing in the following section.

 99  98 EIN :=   97  96 

4 3 12 4

0 4 4 0

5 −3  8 13 

10  2  4 −2 

156

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

NDS  2.8613   −9.2842     −2.8539   6.0727     7.1818     −17.8532   174.8829   Vnds p =   60.7273   −60.0048     81.1636     19.3273   3.0364     −130.0000   −53.5455 

SPICE  2.8613   −92842     −28539   6.0727     7.1818     −17.8530   174.8800   Vsp : =   60.7270   −60.0050     81.1640     19.3270   3.0364     −130.0000   −53.5450 

 Vnds −1 pce := Vsp

Percent error  −0.001  −0     −0   0     0     0.001   0.002   pce =   0   −0     −0     0.001   −0.001    0   0.001  The last three entries (not shown) in Vn are the currents through GG1, GG2, and GG3, respectively. Igg1 := Vn15 Igg2 := Vn16 Igg3 := Vn17

Igg1 = 60.73 mA Igg2 = –114.16 mA Igg3 = 130 mA

DC Circuit Analysis

SPICE Comparison Testdc4a VEin1 99 0 DC 5 VEin2 98 0 DC -3 VEin3 97 0 DC 8 VEin4 96 0 DC 13 R1 99 1 1K R2 2 3 1K R3 3 9 1K R4 9 98 1K R5 5 4 1K R6 4 97 1K R7 3 0 1K R9 2 6 1K R11 7 8 1K R12 96 10 1K R13 4 12 1K R14 12 0 1K R15 10 11 1K R16 13 0 1K R17 5 14 1K * EE1 8 0 4 0 10 EE2 6 0 3 4 2 EE3 2 1 12 4 4 EE4 5 11 4 0 -2 * GG1 14 3 12 0 0.02 GG2 7 9 3 0 0.04 GG3 13 10 96 0 0.01 *

157

158

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

.OPTIONS NOMOD NOPAGE NOECHO .END **** SMALL SIGNAL BIAS SOLUTION TEMPERATURE = 27.000 DEG C NODE VOLTAGE NODE VOLTAGE NODE VOLTAGE NODE VOLTAGE (1) 2.8613 (2) -9.2842 (3) -2.8539 (4) 6.0727 (5)

7.1818

(6)

-17.8530

(9)

-60.0050

(10)

81.1640

(11)

(13) -130.0000

(14)

-53.5450

(96)

(98)

(99)

5.0000

-3.0000

(7) 174.8800

(8)

60.7270

19.3270

(12)

3.0364

13.0000

(97)

8.0000

VOLTAGE SOURCE CURRENTS NAME

CURRENT

VEin1

-2.139E-03

VEin2

-5.700E-02

VEin3

-1.927E-03

VEin4

6.816E-02

7.4 STACKING VCVS’s AND PARALLELING VCCS’s This DC circuit shows that VCCS’s can be paralleled and VCVS’s can be connected in series (stacked). K := 103

mA := 10–3 R1 Ein1

V1 + −

GG2

R2

V2

Ein2

GG1 R4 −

+

R5 V3

+ −

V4

+ −

R1 := 1·K

R2 := R1

R3 := R1

R3

R4 := R1

EE1 EE2

R5 := R1

U := 4

DC Circuit Analysis

 99  1  RR :=  2  1   2 1 GG :  1

0 0

159

1 2 98 0 3 2 3

0 0

R1  R2  R 3 R 4  R 5  0.1 0.2 

3 EE : =  4

4 0

2 1

0 0

2 3

 99 Ein :   98

2 −3

→ Reference:C:\mcadckts\CaNL11\comm42.mcd

Vn := A1–1·B2

 0.5768     −06930     0.3444   Vn =   1.7303     −0.0693    0.0689 

Igg1 is the current in GG1, and Igg2, the current in GG2. Igg1 := Vn5

Igg2 := Vn6

 −69.30  Igg =  mA  68.87 

7.5 DC VOLTAGE SWEEP (RTD CIRCUIT) For the schematic and component values, see Section 7.1. (Get circuit data from Section 7.1.) → Reference:C:\mcadckts\CaNL11\dctrd.mcd Ein := (99 1) Reset Ein to 1 V for new inputs u: → Reference:C:\mcadckts\CaNL11\comm42.mcd Sweep the DC input (always initialized at 1 V as mentioned earlier) from 4.8 V to 5.2 V in 0.1V increments:

160

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

u : = for j ∈1..5 u1, j ← 4.7 +

j 10

u Vn := A1–1·B2·u

k := 1..cols(u)

Display node Y: Y=5 Input  4.8     4.9    u T =  5.0     5.1     5.2  Output

Vn Y,k

 4.153     4.239    =  4.326     4.412     4.499 

Nominal value of u is 5.0 V Display for all U nodes: u = (4.8

4.9

5.0

 −0.514  1.027   0.771  Vn =  0.771  4.153  −6  4.9 × 10  −4.8

5.1

5.2)

−0.525 1.048 0.787 0.787 4.239 4.9 × 10 −6 −4.9

−0.535 1.07 0.803 0.803 4.326 5 × 10 −6 −5

−0.546 1.091 0.819 0.819 4.412 5.1 × 10 −6 −5.1

−0.557  1.113   0.835  0.835  4.499   5.2 × 10 −66  −5.2 

DC Circuit Analysis

161

7.6 RTD CIRCUIT — STEP RESISTOR VALUE R8

R9

V6

Eref

11 2 − V− 3 +

Eref

V7

R2

R1

V+

1 4

R3

V1 R4 V3 RT V2 R5 R6

V4

11 2 − V− 3 +

V5 1

V+ 4

R7

Eref

R1 := 4.53 R6 := 4.53

R2 := 34.8 R7 := 27.4

R3 := 132 R4 := 9.09 R5 := 27.4 R8 := 20 R9 := 20 RT := 1.915

Values in kohms: RTD value (RT) varies from 1 K (Vo is approximately –5 V at 0°C) to 2 K (Vo is approximately +5 V at +260°C).  7  99   3  1   2 RR :=   99  4   99  6   1

1 3 5 3 4 2 0 6 7 2

R1  R2  R 3 R 4  R5  R6 R 7  R8 R9  RT

Ao := 106

7 EE :=  5

0 0

0 4

6 3

U := 7 Y := 5 GG := 0 Ein := (99 5) Get A1 and B2 DC arrays, and solve for node voltages Vn. → Reference:C:\mcadckts\CaNL11\comm42.mcd vn := 1solve(A1, B2)

Vo := VnY

Vo = 4.326

Now, sweep RT value from 1 K to 2 K in 0.1 K increments. RT := (1

1.1

1.2

1.3

1.4

1.5

1.6

1.7

1.8

1.9

2)T

Ao  Ao 

162

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Ndc := rows(RT)

k := 1..Ndc

Vn ( U, EE, GG, RR, Ein ) : = for k ∈1..Ndc RR10,3 ← RTk AE ← G ( U, EE, GG, RR, Ein ) A1 ← AE1 B2 ← AE 2 vn k ← lsolve ( A1, B2 ) v5 k ← ( vn k )5 vr The line RR10,3 ← RTk loads new values of RT into the RR array. For the line AE ← G(U, EE, GG, RR, Ein); the G function is from the dccomm42.mcd subprogram. Plot: V5 := Vn(U, EE, GG, RR, Ein) Check linearity with straight line equation:

V5k yk

5 3.75 2.5 1.25 0 −1.25 −2.5 −3.75 −5

RTD Ckt linearity

Linearity delta

0.3 0.2 Volts DC

Volts DC

yk := 10(RTk – 1) – 5

yk − V5k

0.1 0 −0.1 −0.2

1

1.2 1.4 1.6 1.8 RTk RT (K Ohms)

2

−0.3

1

1.2 1.4 1.6 1.8 RTk RT (K Ohms)

The maximum linearity temperature error is  260 ⋅ deg C  maxerr : = 0.3 ⋅ V ⋅   10 ⋅ V 

maxerr = 7.8 degC

2

DC Circuit Analysis

163

We can step two resistor values simultaneously as shown here: Step R4 and R5 from 8K to 10K in 0.2 K increments: Ra := (8

8.2

8.4

8.6

Ndc := rows(Ra)

8.8

9

9.2

k := 1..Ndc

9.4

9.6

9.8

10)T

(Ra in kohms)

Vn ( U, EE, GG, RR, Ein ) : = for k ∈1..Ndc RR 4 ,3 ← Ra k RR 5,,3 ← Ra k AE ← G ( U, EE, GG, RR, Ein ) A1 ← AE1 B2 ← AE 2 vn k ← lsolve ( A1, B2 ) v5 k ← ( vn k )5 v5 Plot: V5 := Vn(U, EE, GG, RR, Ein) Marker for nominal values: M1 := 9.09

M2 := 4.326 V5 vs. R4 & R5

8

Volts DC

M1 6 V5k

M2 4

2

8

8.5

9 9.5 Rak R4, R5 (K Ohms)

10

164

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

7.7 FLOATING 5-V INPUT SOURCE K :=103 At times it may be desired to have an input voltage source floating. The restriction of all Ein inputs being single-ended can be overcome as shown. R1

V6 +

V1

R4

V2

EE1

11 2 − V−

R2



V7 R3

+ −

R6

V4

V3

V99

R5

3 +

V5 1

V+ 4

R7

Ein

R1 := 1·K R2 := 20 R3 := 1·K R4 := 20·K R5 := 200·K R6 := 20·K R7 := 200·K Ao := 106 U := 7 Y := 5 6 1  7  RR :=  1 2  3  4

1 3 3 2 5 4 0

R1  R2  R 3 R 4  R5  R6 R 7 

6 EE :=  5

7 0

99 4

GG := 0

0 2

Ein := (99

1)

5  Ao 

→ Reference:C:\mcadckts\CaNL11\comm42.mcd V := 1solve(A1, B2) VT = (–0.223 –0.247

–0.272

–0.247

Input voltage: V6 – V7 = 5

Vo := VY

Vo = –0.495

–0.495

2.253

–2.747)

DC Circuit Analysis

165

Matrix solution: 1 1  1  R1 + R 3 + R 2 + R 4  −1   R4  Am :=   1 1  − +   R 2 R1 + R 3    0   0 

−1

1  1  +  R 2 R1 + R 3 

−

R4 1 R4

+ 0

1

0

R5 1 R1 + R 3

0 Ao

+

1 R2

+

0



Vm := 1solve(Am, Bm)

−1 

0

R5 

1

−1

R6

R6

0 

−1 R6 0

1 1 + R6 R 7 − Ao

5    R1 + R 3    0   Bm :=  −5     R1 + R 3  0    0    −0.223     −0.247    Vm =  −0.272     −0.247     −0.495 



0 

Vo := Vm5

Vo = –0.495



  0   1 

This page intentionally left blank

8

Three-Phase Circuits

8.1 CONVERT ∆ FLOATING VOLTAGE INPUTS TO SINGLE-ENDED Y INPUTS Circuits with single-ended inputs are easier to solve than those with floating inputs. Setup: pr(E, θ) := E·(cos(θ) + i·sin(θ)) 180 (convert radians to degrees) π mp(x) := (|x| rd·arg(x)) (get magnitude and phase) Line-to-line voltages are (in polar form): (convert polar to rectangular) rd :=

A – B = 115 1, because the sensitivities are no longer 1.0 %/% Call tolerance array subprogram TolArray: → Reference:C:\crc_book_ms\Ref_files_v11\TolArray.mcd Display tolerance array T as a check: The tolerances are in the order RR, CC, LL (if any) and Ein.

252

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

R1

R2

R3

C1

C2 Ein

Tr

Tr

Tr

Tc

Tc

Te

−0.02 0.02

−0.02 0.02

−0.1 0.1

−0.1 0.1

0 0 

 −0.02 T=  0.02

Specify log AC frequency sweep and number of Monte Carlo samples Nk: BF := 2

ND := 2

PD := 50

Nk := 2000

Call the AC MCA subprogram: → Reference:C:\crc_book_ms\Ref_files_v11\mcalog.mcd Create plots: Note the plot parameters — MPmca (for magnitude/phase MCA) column 1 is the output due to uniform distribution inputs; column 2 is for the normal distribution. Nk = 2000

dBV

db[(MPmca1,1)i] db[(MPmca2,1)i] db[(MPmca3,1)i]

Y=3 25 20 15 10 5 0 −5 −10 −15 −20 −25

Uniform MCA at node Y

2

2.25

2.5

Unif MCA Lo Nom Unif MCA Hi

2.75

3 3.25 Li Log freq(Hz)

3.5

3.75

4

AC Circuits

253

dBV

db[(MPmca1,2)i] db[(MPmca2,2)i] db[(MPmca3,2)i]

25 20 15 10 5 0 −5 −10 −15 −20 −25

Normal MCA at node Y

2

2.25

2.5

Norm MCA Lo Nom Norm MCA Hi

2.75

3 3.25 Li Log freq(Hz)

3.5

3.75

4

11.6 BUTTERWORTH LOW-PASS FILTER EVA See Section 11.4 for the schematic. The calculation sequence is the same as that of MCA except for the last analysis subprogram called. → Reference:C:\crc_book_ms\wca_mcd\bwlpf_ckt.mcd → Reference:C:\mcadwca\wcaref11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

→ Reference:C:\mcadwca\wcaref11\TolArray.mcd BF := 2

ND := 2

PD := 50

Call EVA analysis subprogram for log frequency sweep. → Reference:C:\crc_book_ms\Ref_files_v11\acwcalog.mcd Plot sensitivities: Note the slight bipolarity of R2 and C2 sensitivities — more on this later.

254

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad Sensitivities, R1, R2, R3

1 0

%/%

%/%

Sensi,1 Sensi,2 Sensi,3

−1 −2

2

2.5

3 3.5 Li Log freq(Hz)

R1 R2 R3

Sensitivities, C1, C2

0.5 Sensi,4 Sensi,5

0 −0.5 −1 −1.5

4

2

2.5 C1 C2

3 3.5 Li Log freq(Hz)

4

Y=3 EVA at node Y

25 20 15

dBV

db[(MPeva1)i] db[(MPeva2)i] db[(MPa1)i]

10 5 0 −5 −10 −15 −20 −25

2

2.25

2.5

EVA Lo EVA Hi Nom

2.75

3 3.25 Li Log freq(Hz)

3.5

3.75

4

This plot is virtually the same as the uniform MCA plot in Section 11.5.

11.7 BUTTERWORTH LOW-PASS FILTER FMCA See Section 11.4 for the schematic. The calculation sequence is the same as that of MCA except for the last analysis subprogram called. → Reference:C:\crc_book_ms\wca_mcd\bwlpf_ckt.mcd → Reference:C:\mcadwca\wcaref11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

AC Circuits

255

→ Reference:C:\mcadwca\wcaref11\TolArray.mcd BF := 2

ND := 2

PD := 50

Call FMCA analysis subprogram for log frequency sweep. → Reference:C:\crc_book_ms\Ref_files_v11\fmcalog.mcd Y=3 FMCA at node Y

25 20 15 10 dBV

db[(MPfmca1)i]

5

db[(MPfmca2)i]

0

db[(MPfmca3)i]

−5 −10 −15 −20 −25

2

2.25

2.5

2.75

FMCA Lo Nom Norm Hi

3 3.25 Li Log freq(Hz)

3.5

3.75

4

Because the sensitivities are not significantly bipolar, there is no discernible difference between (uniform input) MCA, EVA, and FMCA.

11.8 MULTIPLE-FEEDBACK BAND-PASS FILTER (BPF) CIRCUIT A Multiple-Feeback Band-Pass filter circuit is now used for another example. This band-pass filter has a center frequency of 500 Hz, and Q of 20. The same calculation sequence as in Section 11.7 for the Butterworth low-pass filter will be performed. C2

R3 C1

R1 Ein

V1 R2

K :=103

uF := 10–6

Hz := 1

V2

11 2 − V− 3 +

V3 1

V+

V := 1

4

256

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

R1 := 6.34·K R2 := 80.6 R3 := 127·K C2 := C1 U := 3 Y := 3 Ein := (99  99 RR :  1   3

1 0 2

R1  R 2  R 3

GG := 0

EE := (3

1 CC :=  3 0

0

2

2 1

C1 := 0.1·uF 1)

C1  C2 

LL := 0

106)

11.9 MULTIPLE-FEEDBACK BPF MCA See Section 11.8 for the schematic and component values. The same calculation sequence (except for the last subprogram) is called. → Reference:C:\crc_book_ms\wca_mcd\mfb_ckt.mcd → Reference:C:\mcadwca\wcaref11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

→ Reference:C:\mcadwca\wcaref11\TolArray.mcd Display T for tutorial purposes: R1  −0.02 T=  0.02

R2

R3

C1

−0.02 0.02

−0.02 0.02

−0.1 0.1

C2 Ein −0.1 0.1

0 0 

This can be overwritten by an asymmetric T array if desired:  −0.02 T=  0.02

−0.02 0.02

−0.03 0.05

−0.05 0.15

−0.05 0.15

0 0 

Specify linear frequency sweep and Nk: BF := 400

LF := 600

DF := 2

Nk := 2000

Call the MCA analysis subprogram for linear frequency sweep. → Reference:C:\crc_book_ms\Ref_files_v11\mcalin.mcd Extreme center frequency markers from EVA analysis: M1 := 447

M2 := 568

Y=3

Nk = 2000

AC Circuits

257 Uniform MCA at node Y

12 M1

Volts

10 (MPmca3,1)i

8

(MPmca2,1)i

6

(MPmca1,1)i

4

M2

2 0 400

420

440

460

480

Uniform MCA Hi Nominal Uniform MCA Lo

F41 = 480Hz

500 520 Fi Freq(Hz)

540

560

580

600

(MPmca3,1)41 = 10.794V

This is to be compared with the EVA at this same 480-Hz frequency of 3.38 V (see Section 11.10) and the FMCA value of 7.73 V (Section 11.11). Hence, MCA gives the best answer. Normal MCA at node Y

12

M1

Volts

10 (MPmca3,2)i

8

(MPmca2,2)i

6

(MPmca1,2)i

4

M2

2 0 400

420

440

460

480

Normal MCA Hi Nominal

500 520 Fi Freq(Hz)

540

560

580

600

Normal MCA Lo

F41 = 480

(MPmca3,2)41 = 10.586V

The normal distribution maximum is at 480 Hz.

11.10 MULTIPLE-FEEDBACK BPF EVA See Section 11.8 for the schematic and component values. The same calculation sequence except for the last subprogram is called.

258

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

→ Reference:C:\crc_book_ms\wca_mcd\mfb_ckt.mcd → Reference:C:\mcadwca\wcaref11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

→ Reference:C:\mcadwca\wcaref11\TolArray.mcd Specify linear frequency sweep: BF := 400

LF := 600

DF := 2

Call the EVA analysis subprogram for linear frequency sweep. → Reference:C:\mcadwca\wcaref11\acwcalin.mcd

Sensi,1

5

Sensi,2

0

Sensi,3

−5

Sensitivities, R1, R2, R3

−10 400

450 R1 R2 R3

500 550 Fi Freq(Hz)

Sensitivities, C1, C2

10

%/%

%/%

10

5

Sensi,4 Sensi,5

0 −5 −10 400

600

450 C1 C2

500 550 Fi Freq(Hz)

600

With the exception of R1, note the significant bipolarity of the aforementioned sensitivities. Extreme center frequency markers for symmetric tolerances: M1 := 447

M2 := 568 EVA Outputs

12

M1

Volts

10 (MPeva1)i

8

(MPeva2)i

6

(MPa1)i

4

M2

2 0 400

420

440

460

480

500 520 Fi Freq(Hz)

540

560

580

600

AC Circuits

259

This plot indicates that maximum amplitudes will only be obtained at 447 and 568 Hz. What about at, say, 480 Hz? F41 = 480Hz

(MPeva2)41 = 3.38V

Is 3.38 V the maximum this circuit will ever see at 480 Hz? The answer is no. See the FMCA analysis in Section 11.11.

11.11 MULTIPLE-FEEDBACK BPF FMCA See Section 11.8 for the schematic and component values. The same calculation sequence as in Section 11.8, except for the last subprogram, is called. → Reference:C:\crc_book_ms\wca_mcd\mfb_ckt.mcd → Reference:C:\mcadwca\wcaref11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

→ Reference:C:\mcadwca\wcaref11\TolArray.mcd Specify linear frequency sweep: BF := 400 LF := 600 (1-Hz increments)

DF := 1

Call FMCA analysis subprogram for linear frequency sweep. → Reference:C:\crc_book_ms\Ref_files_v11\fmcalin.mcd Y=3 Extreme center frequency markers: M1 := 447

M2 := 568

480-Hz amplitude marker: M3 := 7.73·V

260

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad Band pass filter FMCA

14 M1

12

Volts

(MPfmca1)i

M2

10

M3

8

(MPfmca2)i

6

(MPfmca3)i

4 2 0 400

420

440

460

FMCA Lo Nom FMCA Hi

F81 = 480

480

500 520 Fi Freq(Hz)

540

560

580

600

(MPfmca3)81 = 7.73V

Peak responses are shown here for 9 of the 32 possible tolerance combinations. This analysis says that 7.73 V is the maximum we will ever see at 480 Hz. This obviously contradicts the EVA, where 3.38 V was predicted as the maximum amplitude. The FMCA, although showing interesting plots, is also incorrect. For the best answer, see the previous MCA (Section 11.9).

11.12 SWITCHING POWER SUPPLY COMPENSATION CIRCUIT A switching power supply compensation circuit is now used for a third example. Again, the same calculation sequence as in Section 11.7 for the Butterworth lowpass filter will be perfomed. K := 103 Meg := 106 u := 10–6 n := 10–9 p := 10–12 C4 R3 V4 C2 R1 Ein

L1

R4

V2

R5 V6 C3 V5

R6

V1 R2

RL V3

C1

V7

11 2 − V− 3 +

1

V+ 4

R1 := 0.2 RL := 9 R2 := 0.01 R3 := 4.99·K R4 := 100·K R5 := 100·K R6 := 1·Meg C1 := 47·u C2 := 1·n C3 := 1·n C4 := 100·p L1 := 180·u U := 7 Y := 7 LL := (1 2 L1) Ein := (99 1)

AC Circuits

261

 99  2   2  RR :=  2  2   5  5

1 3 0 4 5 6 7

Ao := 106

EE := (7

R1  R2  RL  R 3  R4  R5  R 6 

3 4 CC :=  6 5 

0

0

5

0 5 7 7

C1  C2   C 3 C 4 

GG := 0

Ao)

11.13 SWITCHING POWER SUPPLY COMPENSATION MCA For the schematic and component values, see Section 11.12. Call data from that circuit. → Reference:C:\crc_book_ms\wca_mcd\srcmod_ckt.mcd → Reference:C:\mcadwca\wcaref11\comm42.mcd Component tolerances: Tr := 0.02

Tc := 0.1

Ti := 0.2

Te := 0

→ Reference:C:\mcadwca\wcaref11\TolArray.mcd Display tolerance array T from TolArray.mcd: Tr  −2 T=  2

−2 2

−2 2

Tc −10 10

−2 2

−2 2 Ti

−10 10

−10 10

−20 20

−2 2

−2 2

−10 10

Te 0 % 0 

Tolerance array T in RR, CC, LL, and Ein order. R1 R2 RL R3 R4 R5 R6 C1 C2 C3 C4 L1 Ein BF : = 2

ND : = 2

PD : = 40

Nk : = 2000

262

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

→ Reference:C:\crc_book_ms\Ref_files_v11\mcalog.mcd Y=7 Uniform & normal MCA at node Y

20

dBV

15 db[(MPmca3,1)i]

10

db[(MPmca2,1)i]

5

db[(MPmca1,1)i]

0

db[(MPmca3,2)i]

−5

db[(MPmca1,2)i] −10 −15 −20

2

2.2

2.4

2.6

Uniform MCA Hi Nominal Uniform MCA Lo Normal MCA Lo Normal MCA Hi

2.8

3 3.2 Li Log Freq(Hz)

3.4

11.14 SWITCHING POWER SUPPLY COMPENSATION EVA See Section 11.12 for the schematic. Call circuit data from that file: KHz = 103 → Reference:C:\crc_book_ms\wca_mcd\srcmod_ckt.mcd → Reference:C:\crc_book_ms\Ref_files_v11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0.2

Te := 0

→ Reference:C:\mcadwca\wcaref11\TolArray.mcd BF := 2

ND := 2

PD := 50

→ Reference:C:\crc_book_ms\Ref_files_v11\fmcalog.mcd Notch marker: Mn := 3.23

3.6

3.8

4

AC Circuits

263

Plot sensitivities on same vertical scale: R1, R2, RL, R3

2

R4, R5, R6, C1

2

Mn

Sensi,2 Sensi,3 Sensi,4

0

Sensi,6

2

3 Li

R1 R2 RL R3

0

Sensi,7 Sensi,8

−1 −2

1

Sensi,5 0 %/%

%/%

Sensi,1

Mn

1

−1 −2

4

2 R4 R5 R6 C1

3 Li

4

C2, C3, C4, L1

2

Mn

%/%

Sensi,9 Sensi,10 Sensi,11 Sensi,12

1 0 0 −1 −2

2 C2 C3 C4

3 Li

4

L1

Note that C1 and L1 are significantly bipolar and, therefore, nonmonotonic. Also note that in the following plot, there is a notch in the EVA Hi trace, which is due to the nonmonotonicity of C1 and L1. Hence, the EVA is incorrect in the vicinity of the notch. The notch is at Mn = 3.23 Y=7

fnotch := 10Mn

fnotch = 1.698KHz

264

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad EVA at node Y

20

Mn

15

dBV

db[(MPeva2)i] db[(MPeva1)i] db[(MPa1)i]

10 5 0 −5 −10 −15 −20

2

2.2

2.4

2.6

EVA Hi EVA Lo Nom

2.8

3 3.2 Li Log Freq(Hz)

3.4

3.6

11.15 SWITCHING POWER SUPPLY COMPENSATION FMCA For the schematic see Section 11.12. Call circuit data from that file. → Reference:C:\crc_book_ms\wca_mcd\srcmod_ckt.mcd → Reference:C:\crc_book_ms\Ref_files_v11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0.2

Te := 0

Specify component tolerances. → Reference:C:\crc_book_ms\Ref_files_v11\TolArray.mcd BF := 2

ND := 2

PD := 50

Specify AC log frequency sweep. → Reference:C:\crc_book_ms\Ref_files_v11\fmcalog.mcd Call AC FMCA subprogram. Y=7

3.8

4

AC Circuits

265

FMCA at Node Y

20 15 10

dBV

db (MPfmca3)i

5

db (MPfmca2)i

0

db (MPfmca1)i

5 10 15 20

2

2.2

2.4

2.6

2.8

3

3.2

3.4

3.6

3.8

4

Li

Log Freq (Hz)

FMCA Hi Nom FMCA Lo

11.16 SALLEN AND KEY BAND-PASS FILTER (BPF) CIRCUIT This circuit will show an unusual response to MCA with common component tolerances but not with precise component tolerances. An explanation for this anomaly will be given. uF := 10–6

K := 103 R2 R1 Ein

V1 C1

C2

V2

3

R3

+

2 − V3 R4

4 V+

V4

1

V− 11 R5

R1 := 15.8·K R2 := 5.11·K R3 := 2.61·K C1 := 0.1·uF C2 := C1 U := 4 Y := 4

R4 := 3.32·K R5 := 13.3·K Ein := (99 1)

 99  4  RR :=  2  3   4

C1  C2 

GG := 0

1 1 0 0 3

R1  R2  R 3 R 4  R 5 

EE := (4

1 CC :=  1

0 2

3

106)

0 2

LL := 0

266

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

11.17 SALLEN AND KEY BPF MCA See Section 11.16 for the schematic and component values. Call subprograms per previous sequences: → Reference:C:\crc_book_ms\wca_mcd\bpfs&k_ckt.mcd → Reference:C:\mcadwca\wcaref11\comm42.mcd The MCA outputs are first given using precision tolerances and then with common tolerances: Precision tolerances: Tr := 0.002

Tc := 0.01

Ti := 0.

Te := 0

→ Reference:C:\mcadwca\wcaref11\TolArray.mcd R1

R2

R3

R4

R5

C1

 −02 T=  0.2

−02 0.2

−02 0.2

−02 0.2

−02 0.2

−1 1

C2 Ein −1 1

0 % 0 

Displayed in percentage. Specify linear frequency sweep and Nk: BF := 400

LF := 600

DF := 1

Nk := 2000

Call MCA analysis subprogram for linear frequency sweep. → Reference:C:\crc_book_ms\Ref_files_v11\mcalin.mcd 10

Volts

(MPmca3,1)i (MPmca2,1)i (MPmca1,1)i

Precision tolerances

8 6 4 2 0 400 425 450 475 500 525 550 575 600 Fi Freq(Hz) MCA Hi Nom MCA Lo

AC Circuits

267

Note that the center frequency of 500 Hz does not vary. Only the amplitude varies. Change to common tolerances: Tr := 0.02

Tc := 0.1

Call tolerance array subprogram again: → Reference:C:\mcadwca\wcaref11\TolArray.mcd  −2 T=  2

−2 2

−2 2

−2 2

−2 2

−10 10

−10 10

0 % 0 

Call MCA subprogram again. → Reference:C:\crc_book_ms\Ref_files_v11\mcalin.mcd Note change of vertical scale! Nk = 2000 1500

Volts

(MPmca3,1)i (MPmca2,1)i (MPmca1,1)i

Common tolerances

1200 900 600 300 0 400 425 450 475 500 525 550 575 600 Fi Freq(Hz) MCA Hi Nom MCA Lo

See the following text for an explanation of what causes the MCA spikes with common tolerances.

11.17.1 SALLEN AND KEY BPF — MCA AND PRECISION TOLERANCES

WITH BOTH

COMMON

This circuit is designed for a center frequency fo of 500 Hz, a peak gain of 10 V/V, and a Q of 10. Two output plots were shown. The first is with precision resistor tolerances of 0.2% and capacitor tolerances of 1%.

268

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Compare this plot with the second one, which uses common tolerances of 2% and 10% for resistors and capacitors, respectively. The common tolerance plot becomes “pathological” in that there are numerous spikes in the output. The reason for this can be found by looking at the transfer function for this circuit. The standard form of the band-pass transfer function is: G (s) =

N1s s2 + D1s + D 0

in which for this circuit, D1 =

1  1 2 R5  R 4 + R5 + −   and N i = R1 ⋅ R 4 ⋅ C1 C1 R1 R 3 R 2 ⋅ R 4

The peak gain is given by Gpk =

N1 . Obviously, if D1 is ever zero or close to D1

it, Gpk will “blow up.” 1 2 R5 + = . R1 R 3 R 2 ⋅ R 4 By assigning tolerance multipliers of 0.982 for R2, 0.9816 for R4, and 1.02 for R5 (all at or within the ±2% tolerance), it will be found that D1 = 0.166, N1 = 3267.56, and Gpk = 19,688 or about 85 dBV. Given Nk Monte Carlo samples, it can be seen from the second plot that there are many more random tolerance combinations that will cause Gpk to become extremely high. Hence, the culprit here is the minus sign in D1, for which the analog circuit designer should be wary of in band-pass filter circuits using this topology. Because of the random nature of MCA, the size of the spikes will be different for each run. It was stated in the introduction to Part II that Monte Carlo analysis (MCA) will produce realistic results for virtually any circuit that has a reasonably accurate and stable mathematical model. Because one term (D1) of the transfer function can become negative, this causes unstable roots in the right-half s-plane. Hence, with the common tolerances, this circuit does not qualify. The reader is cautioned that in using the NDS method, this instability would not have been foreseen. Hence, the transfer functions G(s) still serve a useful purpose and should be examined when any erratic circuit analysis behavior is observed. D1 will be zero when

11.18 SALLEN AND KEY BPF EVA See Section 11.16 for the schematic and component values.

AC Circuits

269

→ Reference:C:\crc_book_ms\wca_mcd\bpfs&k_ckt.mcd → Reference:C:\crc_book_ms\Ref_files_v11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

→ Reference:C:\crc_book_ms\Ref_files_v11\TolArray.mcd BF := 400

LF := 600

DF := 2

→ Reference:C:\crc_book_ms\Ref_files_v11\acwcalin.mcd R1 is the middle trace in the following plot. Sign-change markers: M1 := 456

20 Sensi,1 Sensi,2 Sensi,3

M2 := 554

Sensitivities, R1 thru R5 10

10

M2

M1

5 Sensi,6

0

Sensi,7

Sensi,4

Sensi,5 −10 −20 400

Sensitivities, C1 & C2

0 −5

450 R1 R2 R3 R4 R5

500 Fi

550

600

−10 400

450 C1 C2

500 Fi

550

600

The following large ugly gap is caused by the sign changes of C1 and C2 sensitivities. Note markers M1 and M2. Again, nonmonotonic components = bipolar sensitivities, and EVA results are rendered meaningless.

270

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad EVA output at node Y

20

M1

Volts

(MPeva1)i

M2

15

(MPeva2)i 10 (MPa1)i

5 0 400

425

450

475

EVA Lo EVA Hi Nom

500 525 Fi Freq(Hz)

550

575

600

11.19 SALLEN AND KEY BPF FMCA See Section 11.16 for the schematic and component values. → Reference:C:\crc_book_ms\wca_mcd\bpfs&k_ckt.mcd → Reference:C:\crc_book_ms\Ref_files_v11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

→ Reference:C:\crc_book_ms\Ref_files_v11\TolArray.mcd BF := 400

LF := 600

DF := 2

→ Reference:C:\crc_book_ms\Ref_files_v11\fmcalin.mcd Y=4 FMCA at node Y

80

Volts

(MPfmca3)i 60 (MPfmca2)i 40 (MPfmca1)i

20 0 400

425

450

FMCA Hi Nom FMCA Lo

475

500 525 Fi Freq(Hz)

550

Number of components in this circuit including the input: Nc := 8

575

600

AC Circuits

271

With common tolerances, some of the 2Nc = 256 tolerance combinations will cause Gpk (FMCA Hi) to be large.

11.20 STATE VARIABLE FILTER CIRCUIT This circuit is used to show the affects of increasing the number of Monte Carlo samples Nk. It will be shown that Nk and the tolerance band are of course directly proportional, but nonlinear. For example, doubling Nk does not double the width of the tolerance band. n := 10–9 K := 103 R3

V7

C1 R2

V2 2

R1 V1 Ein

3

− +

11

V3

V−

1

V+ 4

C2

V4 R4 2



3 +

11

V6

V5 R5

V− 1

V+

2

4



3 +

11

V7

V−

1

V+ 4 R8

V9 V1

R6

V5

R7 2 R9 V8 3

− +

11

V10

V− V+

1 4

R10

V7

R1 := 10·K R2 := 20·K R3 := 10·K R4 := 182·K R5 := 2.2·K R6 := 20·K R7 := 10·K R8 := 100·K R9 := 10·K R10 := 100·K C1 := 1.125·n C2 := C1 U := 10 Y := 10 Ao := 106 LL := 0 GG := 0  99  7   2  3   5 RR :=   1  5   9  3   8

1 2 3 4 6 5 9 10 8 7

R1  R2   R3  R 4  R5   Ein := (99 R6  R7   R8  R9   R10 

1)

4 CC :=  6

5 7

C1  C2 

272

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

 3 5 EE :=  7  10 

0 0 0 0

1 0 0 8

Ao  Ao   Ao  Ao 

2 4 6 9

11.21 STATE VARIABLE FILTER MCA For the schematic and component values see Section 11.20. → Reference:C:\crc_book_ms\wca_mcd\ieeesvrs_ckt.mcd → Reference:C:\crc_book_ms\Ref_files_v11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

→ Reference:C:\crc_book_ms\Ref_files_v11\TolArray.mcd T=

 −2  2

−2

−2

−2

−2

−2

−2

−2

−2

−2

−10

−10

2

2

2

2

2

2

2

2

2

10

10

BF := 3000

LF := 7000

NP := 100

DF :=

LF − BF NP

0



0

%

Nk := 2000

→ Reference:C:\crc_book_ms\Ref_files_v11\mcalin.mcd The following plots show the effects of increasing Nk on the tolerance bands. Extreme center frequency markers from EVA 11.22: M1 := 4388 M2 := 5795 Nk = 20 Y = 10

Volts

140 120

Uniform MCA at node Y M1

M2

(MPmca1,1)i 100 80 (MPmca2,1)i 60 (MPmca3,1)i 40 20 0 3000 3500 4000 4500 5000 5500 6000 6500 7000 Fi Freq(Hz) MCA Lo Nom MCA Hi

AC Circuits

273

Nk = 200 140

Volts

120

Uniform MCA at node Y M1

M2

(MPmca1,1)i 100 80 (MPmca2,1)i 60 (MPmca3,1)i 40 20 0 3000 3500 4000 4500 5000 5500 6000 6500 7000 Fi Freq(Hz)

Nk = 2000

Volts

140 120

Uniform MCA at node Y

M1

M2

(MPmca1,1)i 100 80 (MPmca2,1)i 60 (MPmca3,1)i 40 20 0 3000 3500 4000 4500 5000 5500 6000 6500 7000 Fi Freq(Hz)

11.22 STATE VARIABLE FILTER EVA For the schematic and component values, see Section 11.20. → Reference:C:\crc_book_ms\wca_mcd\ieeesvrs_ckt.mcd → Reference:C:\crc_book_ms\Ref_files_v11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

→ Reference:C:\crc_book_ms\Ref_files_v11\TolArray.mcd BF := 3000

LF := 7000

DF := 20

→ Reference:C:\crc_book_ms\Ref_files_v11\acwcalin.mcd

274

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad Sensitivities

10

Sensi,3 Sensi,4 Sensi,5

5

Sensi,11 %/%

%/%

Sensi,2

0 −5 −10

3

4

R2 R3 R4 R5

Sensitivities

10

5 6 Fi K Freq(KHz)

5

Sensi,12

0

Sensi,13

−5 −10

7

3

4

C1 C2 Ein

5 Fi

6

7

K Freq(KHz)

The preceding plots show that 6 of the 13 components are nonmonotonic. Ein sensitivity is +1 as expected. Extreme center frequency markers: M1 := 4388

M2 := 5795 EVA at node Y

140

Volts

(MPeva2)i (MPeva1)i (MPa1)i

M2

M1

120 100 80 60 40 20 0 3000

3500

4000

EVA Hi EVA Lo Nom

4500

5000 5500 Fi Freq(Hz)

6000

6500

7000

The “spike” at 5 KHz is caused by the asynchronous polarity change of the nonmonotonic components. From the zoomed sensitivity plots below, all zero crossovers do not take place at the same frequency.

AC Circuits

275 Sensitivities

10 Sensi,3

5

Sensi,4

0

Sensi,5

−5 −10 4.9

5 %/%

%/%

Sensi,2

Sensitivities

10

Sensi,11

0

Sensi,12

−5 4.95

R2 R3 R4 R5

5 5.05 Fi K Freq(KHz)

−10 4.9

4.95

C1

5 5.05 Fi K Freq(KHz)

C2

Hence, at 5.00 KHz to 5.02 KHz, the polarity of the sensitivities are not changing sign together. This causes the EVA process, which detects sensitivity sign changes, to show a different magnitude in this 20-Hz frequency band.

11.23 STATE VARIABLE FILTER FMCA AND MCA COMBINED For the schematic and component values see Section 11.20. → Reference:C:\crc_book_ms\wca_mcd\ieeesvrs_ckt.mcd → Reference:C:\crc_book_ms\Ref_files_v11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

→ Reference:C:\crc_book_ms\Ref_files_v11\TolArray.mcd BF := 3000

LF := 7000

DF := 20

Nk := 2000

→ Reference:C:\crc_book_ms\Ref_files_v11\fmcalin.mcd → Reference:C:\crc_book_ms\Ref_files_v11\mcalin.mcd

276

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad FMCA & MCA at node Y

140 120

Volts

(MPmca3,1)i (MPfmca2)i (MPfmca3)i

100 80 60 40 20 0 3000

3500

4000

MCA Hi Nom FMCA Hi

4500

5000 5500 Fi Freq(Hz)

6000

6500

7000

Another telltale sign of nonmonotonic components is that MCA is greater than FMCA. This occurs at about 5400 Hz, as the following plot shows.

140

FMCA & MCA (Zoomed)

Volts

(MPmca3,1)i (MPfmca2)i 120 (MPfmca3)i 100 4000

4500

5000

5500

6000

Fi Freq(Hz)

11.24 HIGH-Q HUM NOTCH FILTER CIRCUIT The following circuit has an extremely sharp notch. This notch would be very difficult to realize on a circuit board due to temperature drift of the components. In spite of this, the circuit is interesting to analyze and show the response to component tolerance variation. K := 103

nF := 10–9

AC Circuits

277 RS RB

R7

V10

V5 2



3+

FNOTCH R1

C1

11

V6

V−

V7

R9

R10 V8

1

V+ 4

2

C2

1K R3

4 V+

1

V−

− 11 V9

R2

V4

3 +

R4

Ein 2 QNOTCH R6A



3+ V3

11 V− V+ 4 R6B

1 V9

R1 := 4.73·K R2 := 100·K R3 := 100·K R4 := 200·K R6 := 100·K R7 := 100·K R8 := 4.99·K R9 := 681·K R10 := 681·K Rs := 0.01 C1 := 3.9·nF C2 := C1 a := 0.01 (Qnotch (R6) pot setting factor can be set from 0.01 to 0.99.) R6A := a·R6 R6B := (1 – a)·R6 U := 10 Y := 9 Ao := 106 Ein :=(99 1)  99  4   99  1   3  RR :=  3  5   5  6   7   99 2 EE :=  6   9

R1  R2   R3  R 4  R 6 A  R 6B R7   R8  R9   R10   Rs 

4 0 1 2 0 9 0 6 7 8 10 0 0 0

3 4 8

1 5 9

 10 CC :=  2

Ao  Ao   Ao 

8 7

C1  C2 

LL := 0

GG := 0

278

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

11.25 HIGH-Q HUM NOTCH FILTER MCA For the schematic and component values, see Section 11.24. Get circuit data. → Reference:C:\crc_book_ms\wca_mcd\hiqhum_ckt.mcd Get A, B, D, and E state space arrays. → Reference:C:\crc_book_ms\Ref_files_v11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

Component tolerances in decimal percent → Reference:C:\crc_book_ms\Ref_files_v11\TolArray.mcd Display tolerance array T:  −2  2

−2

−2

−2

−2

−2

−2

−2

−2

−2

−2

−10

−10

2

2

2

2

2

2

2

2

2

2

10 0

10

BF := 50

LF := 70

DF := 0.1

0



0

Nk := 2000

→ Reference:C:\crc_book_ms\Ref_files_v11\mcalin.mcd The following plot shows both uniform and normal minimums. Y=9 MCA at node Y

−10 −30 db[(MPmca1,1)i] dBV

T=

db[(MPmca2,1)i] db[(MPmca3,1)i] db[(MPmca1,2)i]

−50 −70 −90 −110 50

52

54

56

Uniform MCA Lo Nominal Uniform MCA Hi Normal MCA Lo

58

60 62 Fi Freq(Hz)

64

66

68

70

%

AC Circuits

279

11.26 HIGH-Q HUM NOTCH FILTER EVA See Section 11.19 (MCA) for schematic. Get circuit data → Reference:C:\crc_book_ms\wca_mcd\hiqhum_ckt.mcd Get A, B, D, & E state space arrays → Reference:C:\crc_book_ms\Ref_files_v11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

Component tolerances in decimal percent → Reference:C:\crc_book_ms\Ref_files_v11\TolArray.mcd BF := 50

LF := 70

DF := 0.1

→ Reference:C:\crc_book_ms\Ref_files_v11\acwcalin.mcd 200

C1 sensitivity

200

Sensi,12

100 %/%

%/%

100

C2 sensitivity

0

Sensi,13

0

−100

−100

−200 54 56 58 60 62 64 66 Fi Hz

−200 54 56 58 60 62 64 66 Fi Hz

Note the extreme bipolarity. Also note that Vo approaches zero at F = 60 Hz. Hence, dividing by Vo here causes the sensitivities to be very large. Extreme notch frequency markers: M1 := 53.5 Y=9

M2 := 68.3

280

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad EVA at node Y

−10

dBV

db[(MPeva1)i] db[(MPeva2)i] db[(MPa1)i]

M2

M1

−30 −50 −70 −90 −110 50

52

54

56

58

EVA Lo EVA Hi Nom

60 62 Fi Freq(Hz)

64

11.27 HIGH-Q HUM NOTCH FILTER FMCA For the schematic and component values, see Section 11.24. → Reference:C:\crc_book_ms\wca_fmcd\hiqhum_ckt.mcd → Reference:C:\crc_book_ms\Ref_files_v11\comm42.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

→ Reference:C:\crc_book_ms\Ref_files_v11\tolArray.mcd BF := 50

LF := 70

DF := 0.1

EVA notch markers: M1 := 53.5

M2 := 68.3

→ Reference:C:\crc_book_ms\Ref_files_v11\fmcalin.mcd Y=9

Y=9

66

68

70

AC Circuits

281

−10

FMCA at node Y

M2

M1

−30

dBV

db[(MPfmca1)i] db[(MPfmca2)i] db[(MPfmca3)i]

−50 −70 −90 −110 50

52

54

56

FMCA Lo Nom FMCA Hi

58

60 62 Fi Freq(Hz)

64

66

68

70

11.28 LTC 1562 MCA See Part I (Section 3.15) for a schematic of the four connected sections and opamp rolloff subcircuit. Component count = 68. → Reference:C:\mcadckts\CaNL11\ltc1562.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

Nk := 2000

→ Reference:C:\mcadwca\wcaref11\tolArray.mcd Markers for EVA extreme center frequencies (see Section 11.29): → Reference:C:\crc_book_ms\Ref_files_v11\mcalin.mcd M1 := 87

M2 := 116

Y = 20

282

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad LTC 1562 MCA at node Y

30 20

dBV

db[(MPmca3,1)i]

Y = 20

M2

M1

10 0

db[(MPmca2,1)i] −10 −20 db[(MPmca1,1)i] −30 db[(MPmca3,2)i] −40 −50 −60 −70 40

60

80

Uniform MCA Hi Nominal Uniform MCA Lo Normal MCA Hi

100

120 Fi K Freq(KHz)

140

160

180

11.29 LTC 1562 EVA In this section an Extreme Value Analysis (EVA) of the 68-component LTC 1562 circuit is performed. The EVA markers M1 and M2, used in the previous section, are calculated here for MCA comparison. → Reference:C:\mcadckts\CaNL11\ltc1562.mcd Tr := 0.02

Tc := 0.1

Ti := 0

Te := 0

→ Reference:C:\mcadwca\wcaref11\tolArray.mcd → Reference:C:\mcadwca\wcaref11\acwcalin.mcd

AC Circuits

283 Some (Bipolar) sensitivities

%/%

4 Sensi,3

2

Sensi,6

0

Sensi,39

−2 −4

40

60

80

R1A R6 C2D

M1 := 87

100

120 Fi K Freq(KHz)

140

160

180

M2 := 116

These are the extreme frequency markers. Y = 20 EVA at node Y

dBV

30 20 10 0

db[(MPeva1)i] −10 db[(MPeva2)i] −20 −30 db[(MPa1)i] −40 −50 −60 −70 40

M2

M1

60

EVA Lo EVA Hi Nom

80

100

120 Fi K Freq(KHz)

140

160

180

284

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

REFERENCES 1. Spence and Soin, Tolerance Design of Electronic Circuits, Addison-Wesley, Wokingham, England, 1988, p. 31. 2. Improving the Manufacturability of Electronic Designs, IEEE Spectrum, June 1999, p. 70. 3. Boyd, R., Tolerance Analysis of Electronic Circuits Using MATLAB, CRC Press, Boca Raton, FL., 1999, p. 115.

12

Transient Tolerance Analysis

12.1 TRANSIENT MCA — TWIN-T RC NETWORK Tolerance analysis in the time domain is explored in this and subsequent sections. The first circuit analyzed is a passive 60-Hz notch filter. C2 V4

C3

V1 R5

Rs R1

R3

V2

V3

Ein C1

R7

K := 103 u := 10–6 Meg := 106 m := 10–3 R1 := 265·K R3 := 265·K R5 := 133·K R7 := 10·Meg Rs := 0.01 C1 := 0.02·u C2 := 0.01·u C3 := 0.01·u U := 4 Y := 3 Ein := (99 1)  99  2  RR :=  1  3   99 LL := 0

R1  R 3  R5 R 7  Rs 

2 3 0 0 4

2 CC :=  4   1

0 1 3

C1  C2   C 3

GG := 0

EE := 0

→ Reference:C:\mcadwca\wcaref11\comm42.mcd See Part I for a review of the nominal Mathcad transient analysis method. 1 = 877.78 u min ( A ) kmax :=

Tper ∆t

1 = 5.3m max ( A )

∆t := 50·u

Tper := 80·m

Nk := 500

285

286

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Note that ∆t is 1), the tolerance analysis answers cannot merely be multiplied by 1 + Te, as they can for the M = 1 case. Thus, input tolerances become significant when M > 1. Te = 0.05 EVA magnitude

200

M1

M2

150 Volts

(MPeva1)i (MPeva2)i 100 (MPa1)i 50 0

2

2.5

3

M1

−70

Deg

(MPeva4)i (MPa2)i

4

4.5

5

EVA phase angle

−50

(MPeva3)i

3.5 Li Log freq(Hz)

M2

−90 −110 −130 −150

2

2.5

3

3.5 Li Log freq(Hz)

4

4.5

5

300

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

13.3 THREE-PHASE Y-CONNECTED UNBALANCED LOAD FMCA deg := 1

uH := 10–6

uF := 10–6

Single-ended two phase Y input as before. For the schematic, see Section 13.1. R1 := 12

R2 := 20

L1 := 636.62·uH

R3 := 3

C1 := 9.947·uF  99  1  RR :=  3  4   98

log (fo) = 3.3

LL := (5

4

U := 5

Y := 3

R4 := 0.01

L1)

1 2 0 3 5

 99 Ein :=   98

fo :=

R5 := 0.01

1 2 ⋅ π ⋅ L1 ⋅ C1

fo = 2000

R5 R1   R2 R 3 R 4 

CC := (2

3

1 1

EE := 0

GG := 0

C1)

→ Reference:C:\mcadwca\wcaref11\comm42m.mcd BF := 2 ND := 3 PD := 40 Tr := 0.02 Tc := 0.1 Ti := 0.2

Te := 0.05

→ Reference:C:\mcadwca\wcaref11\TolArray.mcd → Reference:C:\mcadwca\wcaref11\3ph_ac_fmcalog.mcd Display input amplitude and phase:  100 − 173.205 i  u= |u1| = 200  −100 − 173.205 i |u2| = 200 rd·arg(u2) = –120 deg

rd·arg(u1) = –60 deg

Three-Phase Circuits

301 FMCA magnitude

200 150 Volts

(Vfmca1)i (Vfmca2)i 100 (Vfmca3)i

50 0

2

2.5

3

3.5 Li Log freq(Hz)

FMCA Lo Nom FMCA Hi

4

4.5

5

FMCA phase angle

−50 −70 Deg

(Vfmca4)i (Vfmca5)i

−90

(Vfmca6)i −110 −130 −150

2

2.5

3

3.5 Li Log freq(Hz)

4

4.5

5

This page intentionally left blank

14

Miscellaneous Topics

14.1 COMPONENTS NOMINALLY ZERO Section 14.1 is background information for tolerance analysis of opamp offsets given in Section 14.2. mV := 10–3 Let the function be: G(A, B, C) := (A + B)·C Let the nominal component values be: A := 0

B := 0

C := 20

Vo := G(A, B, C)

Vo = 0

Then

Let the tolerances of the components be: Va := 0.02

Vb := 0.01

Tc := 0.03

The tolerances of A and B are in component units, e.g., Volts; the tolerance of C is in %. The tolerances of A and B cannot be in percentages, because X% of zero is zero. The derivatives of Vo wrt the components are: da := C

db := C

dc := A + B

Formal definition of RSS, the variance: Var := (da·A·Va)2 + (db·B·Vb)2 + (dc·C·Tc)2

Var = 0

We cannot use this form because A = B = 0. 3σA is Va, not the product of A and Va. Hence, Var := (da·Va)2 + (db·Vb)2 + (dc·C·Tc)2 Vs := Var

Var = 0.200

Vs = 0.447

303

304

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

RSS:  −Va T :=   Va

Nc := 3

−Vb Vb

− Tc  Tc 

 0.0001 Q= 0   0

Q := dpf·identity(Nc)

Vrp := G[Qp,1, Qp,2, C·(Qp,3 + 1)]

dpf := 0.0001 0 0.0001 0

p := 1..Nc

0  0   0.0001

 2 Vr =  2  mV    0 

Vr contains the nonnormalized sensitivities. It cannot be normalized, because the nominal value of Vo = 0. The RSS values are: Vrss : =

1 ⋅ dpf

∑ (Vr ⋅ T p

2 ,p

)2

Vrss = 0.447

p

This is the same as the formal definition Vs. MCA w := 1..Nc

Nk := 30000

zw := rnorm(Nk, 0, 1)

(Mathcad’s normal distribution function) k := 1..Nk Normally distributed random tolerances: T2,w − T1,w ⋅ ( z w )k + 3 + T1,w 6 Vmcak := G[Trnk,1, Trnk,2, C·(Trnk,3 + 1)] Vavg := mean(Vmca) Vavg = 0.407 mV Vsm := 3·stdev(Vmca) Vsm = 0.449 Trn k ,w =

The value Vsm = 0.449 is very close to the value of Vrss = 0.447. Hence, this is another example of how MCA with normal distribution inputs very closely approximates RSS. By repeating the MCA ten times, for example, Vs will show an average closer to Vrss = 0.447. EVA m :=1..2

Mm,p := if(m = 1, if(Vrp < 0, T2,p, T1,p), if(Vrp ≥ 0, T2,p, T1,p))

Miscellaneous Topics

 −0.02 M=  0.02

305

−0.01 0.01

−0.03 0.03   −0.582  Vev =    0.618 

Vevm := G[Mm,1, Mm,2, C·(Mm,3 + 1)]

FMCA Nf := 2Nc

Nf = 8

m := 1..Nf

 Re  Re w+1,m : = floor  w,m   2  0 Dr =  0   0

1 0 0

0 1 0

1 1 0

Rew,m := m – 1

Drw,m := Rew,m – 2·Rew+1,m 0 0 1

1 0 1

0 1 1

1 1  1

Binary array counting from 0 to Nf – 1. Tf is all eight possible tolerance combinations based on binary array Dr: Tfw,m := if(Drw,m = 0, T1,w, T2,w)  −0.02 Tf =  −0.01   −0.03

0.02 −0.01 −0.03

−0.02 0.01 −0.03

0.02 0.01 −0.03

−0.02 −0.01 0.03

0.02 −0.01 0.03

−0.02 0.01 0.03

0.02  0.01  0.03

Vfm := G[Tf1,m, Tf2,m, C·(Tf3,m + 1)]  min ( Vf )  Vfmca : =    max ( Vf ) VfT = (–0.582

0.194

 −0.618  Vfmca : =   0.618  –0.194

0.582

–0.618

 −0.582  Vev =    0.618  0.206

0.618)

Hence, FMCA is correct in choosing Vf5 = –0.618 as the minimum and not Vf1 = –0.582 as in EVA. Why did FMCA produce a slightly wider tolerance band than EVA?  2 Hint: Vr =  2  mV .    0 

14.2 TOLERANCE ANALYSIS OF OPAMP OFFSETS Input sources nominally zero. K := 103 nA := 10–9 mV := 10–3

306

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad R1

R2 V1

Vos +

V2



2

lb1



V−

+ −

3 R3

V4

11

+

1

V+ 4

V3 lb2 +

R4



R1 := 10·K R2 := 200·K R3 := 10·K R4 := 200·K Ib := 100·nA los := 20·nA Vos := 5·mV (LM156 data sheet) Maximum offsets: los los Ib 2 := Ib + 2 2 Ib1 = 90nA Ib2 = 110nA Ib1 := Ib −

The Resistor tolerance is Tr := 0.02 Ein := (99

1)

Ao := 106

U := 4

Y := 4

Under the broad assumption that the average value of Vos = 0 and that the average bias currents are half of the maximum: Vos := 0 1 1 RR :=  3 3 

0 4 0 0

R1  R2  R 3 R 4 

4 EE :=  1

0 2

3 99

2 0

Ao  Vos

Miscellaneous Topics

 1  GG :=  3 

307

0

99

0

0

99

0

Ib1  2   Ib 2  2 

→ Reference:C:\mcadwca\wcaref11\dccomm42.mcd Vn := 1solve(A1, B2) VnY = –2mV Ig1 := Vn5 Ig1 = 45nA Ig2 := Vn6 (bias currents)

Ig2 = 55nA

Neither the NDS method nor SPICE is designed for tolerance analysis with nominal zero value components. Hence, we must resort to “manual” methods. Circuit function: Ib1 ⋅ R1 ⋅ R 2 Ib 2 ⋅ R 3 ⋅ R 4   R2   G ( R1, R 2, R 3, R 4, Vos, Ib1, Ib 2 ) : =  Vos + −  ⋅ 1 +   R1 + R 2 R3 + R4   R1  Reset Vos to maximum: Vos := 5·mV Tolerance array T:  − Tr − Tr − Tr T :=  Tr Tr  Tr Nc := cols(T) Nc = 7

− Tr Tr

−Vos Vos

0 Ib1

0  Ib 2 

p := 1..Nc

RSS dpf := 0.0001

Q := dpf·identity(Nc)

Again, under the assumption that the average value of Vos = 0 and that the average bias currents are half of the maximum: Ib1 Ib 2   Va : =  R1, R 2, R 3, R 4, 0, ,   2 2 

Va = –2mV

This confirms the aforementioned NDS answer. Nonnormalized sensitivities: Vrp := G[R1·(Qp,1 + 1), R2·(Qp,2 + 1), R3·(Qp,3 + 1), R4·(Qp,4 + 1), Qp,5, Qp,6, Qp,7] VrT = (0 0 0 0 0.002 20 –20)

308

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

 Ta :=  Tr  Vrssm :=

Tr

( −1)m ⋅ dpf

Tr

Tr

Vos

∑ (Vr ⋅ Ta ) p

2

p

p

Ib1 2

Ib 2   2 

T

m := 1..2

 −106  Vrss =   mV  106 

MCA w := 1..Nc Nk := 30000 (normal distribution) k := 1..Nk

zw := rnorm(Nk, 0, 1)

T2,w − T1,w ⋅ ( z w )k + 3 + T1,w 6 Vmk = G[R1·(Tnk,1 + 1), R2·(Tnk,2 + 1), R3·(Tnk,3 + 1), R4·(Tnk,4 + 1), Tnk,5, Tnk,6, Tnk,7] Vavg := mean(Vm) Vavg = –2mV Vsm := (–1)m·3·stdev(Vm) Tn k ,w :=

 −106  Vs =   mV  106  Compare this with RSS. EVA Mm,p := if[(m) = 1, if(Vrp < 0, T2,p, T1,p), if(Vrp ≥ 0, T2,p, T1,p)]

1  m=   2

Vevam := G[R1·(Mm,1 + 1), R2·(Mm,2 + 1), R3·(Mm,3 + 1), R4·(Mm,4 + 1), Mm,5, Mm,6, Mm,7]  −127  Veva =   mV  123  FMCA Nf := 2Nc

Nf = 128

Rew,k := k – 1

k := 1..Nf

 Re  Re w+1,k : = floor  w,k   2 

Drw,k := Rew,k – 2·Rew+1,k Tfw,k := if(Drw,k = 0, T1,w, T2,w Vmfk := G[R1·(Tf1,k + 1), R2·(Tf2,k + 1), R3·(Tf3,k + 1), R4·(Tf4,k + 1), Tf5,k, Tf6,k, Tf7,k]

Miscellaneous Topics

309

Vfmca1 := min(Vmf)

Vfmca2 := max(Vmf)

 −132  Vfmca =   mV  127 

A slightly wider tolerance band than EVA is obtained.

14.3 BEST-FIT RESISTOR RATIOS Find the best parallel resistor values for Rp out of all the 96 or 192 resistor value combinations (choice 1), find the best noninverting gain values for gain Gp (choice 2), find the best inverting gain values for gain –Gn (choice 3), or find the best voltage divider values for gain D (choice 4). Choose B: B = 48 (2% values), or B = 96 (1% values), or B = 192 (0.1% values). B := 96 Required functions: frac(x) := x – trunc(x) Rx ( x ) : = 10

 x trunc   B

Lx(x) := round(B·log(x))

 frac x   ⋅ round  10  B  , 2   

User input: (choice = 1, or choice = 2, or choice = 3, or choice = 4) choice := 2 Rp := 55.86 Gp := 9.56 Gn := –3.861 D := 0.26 (example inputs for choices 1 to 4.)

310

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Rv : = E ← 10 6 for m ∈1..B + 1 R1x ← Rx ( B + m ) if choice = 1 R1x ← Rx ( Lx ( Rp ) + m ) R2t ←

Rp ⋅ R1x R1x − Rp

R2t ←

R1x if choice = 2 Gp − 1

R2t ←

R1x if choice = 3 −Gn

R2t ←

R1x ⋅ D if choice = 4 1− D

R 2 x ← Rx ( Lx ( R 2 t ) ) E1 ← R 2 x − R 2 t if E1 < E E ← E1 R1 ← R1x R 2 ← R 2x  R1     R 2  11.8  Rv =    1.37  Use appropriate decade values.

Miscellaneous Topics

311

Ans := R ←

Rv1 ⋅ Rv2 Rv1 + Rv2

R ←1+

Ans = 9.613

Rv1 Rv2

if choice = 1 iff choice = 2

R←

− Rv1 Rv2

R←

Rv2 Rv1 + Rv2

if choice = 3 if choice = 4

Gp = 9.560

Percentage error: pce := 1 −

Ans Gp

pce = —0.56%

Changing B to 192 yields pce = 0. Using a “convenient value” method: Gpx : = 1 +

14.4

10 1.15

Gpx = 9.696

pce := 1 −

Gpx Gp

pce = –1.42%

TRUNCATED GAUSSIAN DISTRIBUTION

In this distribution, Gaussian probability densities less than –3σ and greater than 3σ are rejected. It does not use transcendental functions as does the Box–Muller form (see Reference 1) and is hence faster. This could be useful in manufacturing yield analyses to simulate using all in-spec components.

312

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

R := k ← 1 while k ≤ Nk x1 ← 2 ⋅ rnd (1) − 1 x 2 ← 2 ⋅ rnd (1) − 1 w ← x1 ⋅ x1 + x 2 ⋅ x 2 if w < 1 w←

−2 ⋅ 1n ( w ) w

y 2 ← w ⋅ x1 if ( y 2 > −3) ∧ ( y 2 < 3) y1k ← y 2 k ← k +1 y1 Create histogram: nb := 30 Nk := 30000 q := 1..nb + 1 nh := 1..nb VL := min(R) VH := max(R) VL = –2.995 VH = 2.988 VH − VL binq := VL + intv·(q – 1) pr := hist(bin,R) nb Vs := stdev(R) Vavg := mean(R) Vavg = 0.012 3·Vs = 2.966 E(R) := Nk·intv·dnorm(R, Vavg, Vs) intv :=

3000 3.Vs

−3.Vs prnh E(binnh)

2000 1000 0 −5

−4

−3

−2

Histogram Ideal Gaussian

−1

0 binnh

1

2

3

4

5

Miscellaneous Topics

313

14.5 LTC1060 SWITCHED CAPACITOR FILTER MCA with one and three stages K := 103

Hz := 1

KHz := 103

There are times when no circuit topology is available to construct the node list arrays. An example is the LTC1060 switched capacitor filter. Here, we must rely on information from the data sheet to perform a worst-case analysis. The diagram from the vendor’s data sheet is shown in the following. R4 R3 R2 R1 VIN

4 (17)

N S1A 3 (18) 5 (16)



+

+



LP 1 (20)

– –



SA/B 6

BP 2 (19)



TLC1060-MO006

1/2 LTC1060

15

V– f0 =

fCLK 100(50)

R2 R3 ;Q= R4 R2

R2 ;H = –R2/R1; H0BP = –R3/R1; H0LP = –R4/R1 R4 0HP

Mode 3: 2nd order filter providing highpass, bandpass, lowpass.

14.5.1 DESIGN PROCEDURE

FROM THE

DATA SHEET

H := 1

fc := 51·KHz

fo := 640·Hz

Q1 := 100

wo := 2·π·fo

R1 := 412·K

 wc  R 4 := R 2 ⋅   wo 

R 2 :=

H ⋅ R1 ⋅ wo Q1 ⋅ wc

wc := R 3 :=

2 ⋅ π ⋅ fc 50

wc ⋅ Q1 ⋅ R 2 wo

2

R2 = 2.585K

R3 = 412K

R4 = 6.566K

AC Analysis BF := 560

LF := 720

NP := 160

i := 1..NP + 1

DF :=

LF − BF NP

314

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Fi := BF + DF·(i – 1) Tr := 0.02 Resistor tolerance 2% Twc := 0.075 Switching frequency tolerance 7.5% Construct component vector X and tolerance array T: X := (R1

R2

 − Tr T :=   Tr

R3

− Tr Tr

R4 wc)T − Tr Tr

− Tr Tr

− Twc  Twc 

Magnitude function:

G ( X, ω ) : =

X5 ⋅ X2 ⋅ ω X1  ( X 5 )2 ⋅ X 2   X ⋅ X ⋅ω2 − ω2  +  5 2    X3 X4    2

Convert to rad/sec: ω := 2·π·F MCA V1i := G(X, ωi) Nominal output. Nc := length (X) w := 1..Nc Nk := 4000 k := 1..Nk Tnw,k := (T2,w – T1,w)·rnd (1) + T1,w + 1 Random tolerance array, dim {Nc Nk} Uniform distribution. BWw,k := Xw·Tnw,k Random component array, dim {Nc Nk} Vck,1 := G(BW〈k〉,ωi) Random output array, dim {Nk NP + 1} Vmca1i := max(Vc〈i〉) The maximums of the output array at each of NP + 1 frequencies. Three stages Q3 := 51.1096 Design for overall Q of 100 for the three stages. H ⋅ R1 ⋅ wo Q 3 ⋅ wc

R1 := 412·K

R 2 :=

R3 = 412 K

 wc  R 4 := R 2 ⋅   wo 

R5 := R1

R6 := R2

R2 = 5.058K

2

R7 := R3

R4 = 12.847 K R8 := R4

R 3 :=

wc ⋅ Q 3 ⋅ R 2 wo

Miscellaneous Topics

315

Same values for second stage. R9 := R1

R10 := R2

R11 := R3

R12 := R4

Same values for third stage. X := (R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

wc)T

Magnitude function for the three stages

G 3 ( X, ω ) : = a ←

b←

c←

X13 ⋅ X 2 ⋅ ω X1  ( X13 )2 ⋅ X 2   X ⋅ X ⋅ω2 − ω 2  +  13 2    X4 X3    2

X13 ⋅ X 6 ⋅ ω X5  ( X13 )2 ⋅ X 6   X ⋅ X ⋅ω2 − ω 2  +  13 6    X8 X7    2

X13 ⋅ X10 ⋅ ω X9  ( X13 )2 ⋅ X10   X ⋅ X ⋅ω2 − ω 2  +  13 10    X12 X11    2

Tf ← a ⋅ b ⋅ c  − Tr − Tr − Tr − Tr − Tr − Tr − Tr − Tr − Tr − Tr − Tr − Tr – Twc  T :=   Tr Tr Tr Tr Tr Tr Tr Tr Tr Tr Tr Twc   Tr V3i := G3(X, ωi) Nominal output for three stages. Nc := length(X) w := 1..Nc Tnw,k := (T2,w – T1,w)·rnd (1) + T1,w + 1 BXw,k := Xw·Tnw,k Vck,1 := G3(BW〈k〉,ωi) Vmca3i := max(Vc〈i〉) EVA markers: M1 := 580.3·Hz

M2 := 701.9·Hz

316

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

Bandpass Filter MCA

1.2 1

Volts

V1i

M1

M2

0.8

Vmca1i Vmca3i V3i

0.6 0.4 0.2 0 560

580

600

620

640 Fi Freq (Hz)

660

680

700

720

Nom_1 1 Stage MCA 3 Stage MCA Nom_3

Nk = 4000 This plot illustrates an important principle of statistical tolerance analyses. The question may well be asked as to why one stage with 5 components or variables has a wider frequency tolerance band than three stages with 13 variables. Also, note that the amplitude of the three stages shows a higher variance than the single stage, but the average is lower. The center frequency in Hz is given by fo =

D0 wc 2 ⋅ R 2 , in which D01 = for 2⋅π R4

wc 2 ⋅ R 6 wc 2 ⋅ R10 for the second, and D0 3 = for the third stage. R8 R12 Due to the separate tolerances on R2 through R12, each of these fo’s will be different for one frequency sweep, and different again for subsequent Nk frequency sweeps because of new random tolerances assigned by the Monte Carlo process. When ω2 = D01, the first term in the transfer function denominator radical

the first stage, D0 2 =

R3 , but D02 and D03 in the R1 second and third stages will not equal ω2, and the denominators here will be larger, pulling down the average peak gain of the three combined stages. The nominal peak gain is: becomes zero, and the peak gain is given by Gpk =

G 3pk :=

R 3 R 7 R11 ⋅ ⋅ R1 R 5 R 9

G3pk = 1

A numerical example will help illustrate.

Miscellaneous Topics

317

In the transfer function G ( s ) =

N1 :=

wc ⋅ R 2 R1

N1 = 78.7

D1 :=

wc ⋅ R 2 R3

D1 = 78.7

N1 ⋅ s s2 + D1 ⋅ s + D0

Assume the following random values for wc, R2, R4, ... , R12: R2 := R2·(1.015) R4 := R4·(0.998) R6 := R6·(1.006) R8 := R8·(0.991) R10 := R10·(0.993) R12 := R12·(0.982) wc := wc·(1.071) Then:

f1 :=

wc R2 ⋅ 2 ⋅ π R4

f1 = 691.3Hz

f 2 :=

wc R6 ⋅ 2 ⋅ π R8

f2 = 690.6Hz

f 3 :=

wc R10 ⋅ 2 ⋅ π R12

f3 = 689.3Hz

Use nominal values for the other components and convert to rad/sec: ω1 := 2·π·f1 Tfa :=

Tfb :=

N1 ⋅ ω1 2

 wc 2 ⋅ R 2 2 2  R 4 − ω1  + ( D1 ⋅ ω1) N1 ⋅ ω1 2

 wc 2 ⋅ R 6 2 2  R 8 − ω1  + ( D1 ⋅ ω1)

318

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

N1 ⋅ ω1

Tfc :=

2

 wc 2 ⋅ R10 2 2  R12 − ω1  + ( D1 ⋅ ω1)

Tfa = 1 Tfb = 0.995 Tfc = 0.953 Tf := Tfa·Tfb·Tfc Tf = 0.948 Tfa = 1, but the product of all three is less. As to the wider center frequencies for the single stage, the chances of wc, R2, and R4 having random values approaching the minimum and maximum center frequencies are much greater than the likelihood of wc, R2, R4, R6, R8, R10, and R12 all having one set of random values for an extreme center frequency. The larger variance, not the mean, of the three-stage gain is again due to the larger number of components involved. Showing that the overall Q for the three stages is 100:

Q1 = 100

 1  M 3 := fo ⋅  1 −  2 ⋅ Q1 

 1  M 4 := fo ⋅  1 +  2 ⋅ Q1 

M3 = 636.8

M4 = 643.2

M5 :=

1 2

1 0.9 0.8 M5

V3 i 0.7 0.6 0.5 630

632

634

636

638

640 Fi

fo Q2 := M4 – M3

 100  Q =  100     51.11

REFERENCES 1. www.taygeta.com/random/gaussian.html.

642

644

646

648

650

Appendix II SUMMARY OF TOLERANCE ANALYSIS METHODS DC It has been demonstrated that the conventional sensitivity-sign-based method of extreme value analysis (EVA) does not always yield the “extreme values.” Hence, the fast Monte Carlo analysis (FMCA) method must be used to guarantee accurate and reliable output tolerance spreads. However, this method may not be practical for large DC circuits because the number of required iterations is 2Nc, where Nc is the number of components. For small-to-medium-sized circuits, however, it is the preferred method. Normal distribution input MCA can be used to closely approximate RSS tolerance bands (Nk > 5000 as a guideline) but not for EVA or FMCA, as has been empirically demonstrated.

AC With AC circuits that have nonmonotonic components, RSS, EVA, and FMCA methods become unreliable and should not be used. Hence, prudence dictates that these methods should not be used for any AC circuit. That leaves MCA as the method of choice. A large number of samples of Nk must be used to obtain tolerance bands greater than those in RSS but less than those in EVA, using uniform distribution inputs. As in DC circuits, the normal (Gaussian) distribution will approximate the RSS 3 σ values for monotonic circuits. A rule of thumb is to use no less than Nk = 1000 samples for large circuits and Nk greater than 10,000 for small circuits.

TRANSIENT Several examples of transient Monte Carlo analysis have been given. The author has discovered that EVA, RSS, or FMCA methods, when applied to transient analysis, yield erroneous results. This is due to the bipolar sensitivities encountered with oscillatory waveforms, which many RC and RCL circuits exhibit. Hence, MCA is once again the recommended method. The execution time is a direct function of kmax (the total number of time increments), Nk (number of Monte Carlo samples), and N (the total number of capacitors and inductors in the circuit). The number N determines the dimensions of the A matrix to be {N N}, which, of course, has a direct effect on execution time.

319

320

Node List Tolerance Analysis: Enhancing SPICE Capabilities with Mathcad

TABLE OF SUBPROGRAMS PART I NOMINAL ANALYSIS SUBPROGRAMS Lin or Log Frequency

File Namea

Function

comm42 comm42m dccomm42 dccomm42m FindU

AC Nominal AC Nominal DC Nominal DC Nominal Finds total number of circuit nodes

Either Either N/Ab N/A N/A

PART II TOLERANCE ANALYSIS SUBPROGRAMS (USED SUBPROGRAMS) File Namea

Function

Lin or Log Frequency

acwcalin acwcalog dc_beta dc_fmca dc_gap dc_mca

AC EVA AC EVA DC DC FMCA DC DC MCA

Lin Log N/A N/A N/A N/A

dcwca fmcalin fmcalog mcalin mcalog TolArray tranlin 3_ph_ac_evalog 3_ph_ac_fmcalog 3_ph_ac_mcalog

DC EVA AC FMCA AC FMCA AC MCA AC MCA T Array TA 3-Phase EVA 3-Phase FMCA 3-Phase MCA

N/A Lin Log Lin Log N/A N/A Log Log Log

a b

Comments

Superposed outputs for M > 1 Superposed outputs for M > 1 Optional use WITH

PART I

Comments Sensitivity outputs included Sensitivity outputs included Uses Mathcad rbeta functions Uses bimodal input distributions Histogram outputs; normal and uniform distributions EVA and sensitivity outputs

Normal and uniform distribution inputs Normal and uniform distribution inputs Creates symmetric tolerance array T Transient analysis; pulse input Sensitivity outputs included Magnitude and phase outputs Magnitude and phase outputs

All have the file extension mcd. Not applicable.

For required inputs, see example worksheet files.

IN CASE OF DIFFICULTY A checklist if comm42.mcd will not return A, B, D, and E: 1. Check nodes for sequence, i.e., they must be 1, 2, 3, 4, …, U. Make sure no node numbers are skipped or omitted.

Appendix II

321

2. The input source node sequence must be in descending order from 99, 98, …, 90. 3. Check that U is the same as the maximum number of nodes in the circuit. 4. Make sure that Y is at least one of the nodes in the circuit. 5. For AC, make sure that RR, CC, LL, U, Y, Ein, EE, and GG are all created or set to zero as required. 6. For DC, make sure that RR, U, Y, Ein, EE, and GG are all created or set to zero. 7. U, Y, RR, and Ein must all be nonzero. 8. Make sure that all the node numbers in RR, CC, LL, EE, Ein, and GG exist in the circuit and are connected properly. 9. Ensure that autocalculate is ON (Tools, Calculate). As a check, press CTRL + F9. 10. Check for all-capacitive loops and all-inductive cutsets. 11. Check for at least one ground (node 0) in the circuit (also a SPICE requirement). 12. Ensure that none of the four rules of circuit construction given on p. 37 are being violated.

ABBREVIATIONS BPF BJT dpf EVA FMCA HPF HV LPF MCA MFB MOSFET RNG RSS rv TA TTA WCA

Band-pass filter Bipolar junction transistor Derivative perturbation factor Extreme value analysis Fast Monte Carlo analysis High-pass filter High-voltage Low pass filter Monte Carlo analysis Multiple feedback Metal-oxide semiconductor field effect transistor Random number generator Root sum square Random variable Tolerance analysis Transient tolerance analysis Worst-case analysis (a generic term that includes EVA, RSS, FMCA, and MCA)

This page intentionally left blank

Index A A and ß slope intersection method, 103 to 105 AC analysis ACLs, 33 to 34 all-capacitive circuits, 22 to 23 all-inductive circuits, 23 to 24 broadband pulse transformer models, 28 fifth-order active filter, 60 floating VCVSs, 39 HV (200 V) shunt MOSFET regulator, 77 LTC 1562 quad band filter IC, 83 MOSFET model (first-order), 46 output plots, 11 to 13 seventh-order elliptical low-pass filters, 65, 69 to 70, 72 to 73 square root of frequency (+10dB/decade) circuits, 75 State Space Averaging, 142 state variable filters, 62 subcircuits schemes, 57 to 58 third-order opamp models, 56 tolerance analysis, 213 to 216 twin-T RC networks, 26 two inputs, three outputs, 51 unity gain differential amplifiers, 104, 108 to 109 VCVS example, 48 AC and transient MCA — Bessel HPF, 288 to 291 AC circuits, tolerance analysis, 241 to 284 Butterworth low-pass filter circuits, 250 to 255 circuit output vs. component value, 241 to 246 CI sensitivity, exact values, 247 to 248 high-Q hum notch filter circuits, 276 to 281 LC 1562, 281 to 283 multiple-feedback BPF circuits, 255 to 260 multiple output EVA, 248 to 250 Sallen and Key BPF circuits, 265 to 271 state variable filter circuits, 271 to 276 switching power supply compensation circuits, 260 to 265 AC floating VCVS (voltage controlled voltage current), 199 to 202 ACLs (all-capacitive loops), 30 to 31, 32 to 34 Algorithms, Leverrier’s, 97 to 101 All-capacitive circuits, 21 to 23 All-capacitive loops, see ACLs

All-inductive circuits, 23 to 24 All-inductive cutsets, see ICS Amplifiers, video (uA733), 89 to 95, 212 Asymmetric tolerances, 217, 221 to 222

B Balanced Y-load, 181 to 186 Bessel HPF, AC and transient MCA, 288 to 291 Beta distributions [4-6], 232 to 234 Bimodal (gapped) distribution inputs, 236 to 239 Bipolar junction transistors, see BJTs BJTs (bipolar junction transistors), 46 to 47, 87 to 88, 211 to 212 Broadband pulse transformer models, 27 to 30 Buck regulator, switching power supply output stage, 137 to 140 Butterworth low-pass filter circuits, 250 to 255

C CASE FMCA greater than EVA, 228 to 230 CCCS (current-controlled current source), 35, 36 to 37 CCVS (current-controlled voltage source), 36 Centered difference approximation — sensitivities, 222 to 224 Circuit output vs. component value, 241 to 246 Circuits, discrete components, 211 to 212 Circuits with M