In-Line Equations Describe Circuits in a Snapshot
Apr 1, 2002 12:00 PM
By Christophe Basso, ON Semiconductor, Toulouse, France
News & Features From Auto Electronics
Committed to improving hybrid electric cars
New Motors for Hybrid Vehicles
Battery Firms Battle for Hybrid Hegemony
Innovative Bipolar Plates for Fuel Cells
See More Headlines
Top Articles
Exploring Current Transformer Applications
Ultracapacitor Technology Powers Electronic Circuits
Buck-Converter Design Demystified
Sensorless Motor Control Simplifies Washer Drives
PET Resources
Buyer's Guide
Conferences
Engineering Jobs
Power Electronics Events
Rent Our Lists
Spotlight on Digital Power
Analog behavioral modelling (ABM) allows designers to implement their own devices when only first order effects are necessary. In-line equation syntax differs from editor to editor. IsSpice4 uses the original Berkeley B elements, while PSpice has modified the standard E/G sources to either generate voltage or current. Although the style is different, the results are similar. To use these equations without falling into “syntax error” traps, a brief review is necessary. Let's begin with simple multiplications:
IsSpice4: B1 1 0 V=V(2,3)×4; multiply voltage of V(2,3) by 4 and deliver voltage
B1 1 0 I=I(V1)×5; the current flowing through V1 is multiplied by 5
PSpice: E1 1 0 Value={ V(2,3)×4}
G1 1 0 Value={ I(V1)×5 }
More complicated equations involving mathematical functions can be written here like a simple 100 kHz oscillator where the keyword time represents the simulation internal timer:
IsSpice4: B1 1 0 V=2×sin (time×100k×6.28)
PSpice: E1 1 0 value={2×sin (time×100k×6.28)}
Use if-then-else expressions as the real basis when you write your own models including logical operations:
IsSpice4: B1 1 0 V=V(plus)> V(minus)? 10 : 100m; the simplest comparator
PSpice: E1 1 0 Value={if (V(plus) >V(minus), 10, 100m)}
You read this as: if V(plus) is greater than V(minus), then V(1,0) =10V else V(1,0)=100mV. Those perfect generators toggle in a zero time span. It's good practice to slow down their output by inserting an RC network (e.g. 10Ω/100pF) before connecting them to other elements.
More complicated expressions are possible, nesting two expressions into one line — e.g. for a limiter that clamps a voltage between 5V and 100mV:
IsSpice4: B1 1 0 V=V(3)>5 ? 5 : V(3)<100m ? 100m : V(3)
PSpice: E1 1 0 Value={if (V(3)> 5, 5, if (V(3)<100m, 100m, V(3)))}
PSpice: E1 1 0 Value={limit (V(3), 5,100m)}
You read this as: If V(3) is greater than 5V, then V(1,0)=5V else if V(3) is less than 100mV, then V(1,0) =100mV else V(1,0)=V(3).
If IsSpice4 needs no parentheses, PSpice does and the parser will notify you if you position them improperly.
IsSpice4: B1 69 14 V=V(27,14)> V(18,14)/2 ? V(18,14) : V(26,14)>0.44 ?
+ V(18,14) :
(V(13,14)+V(26,14)+V(12,14)) > V(31,14) ? V(18,14) : 0
PSpice: E1 69 14 Value={if (V(27,14) > V(18,14)/2, V(18,14), if ( V(26,14) > 0.44, + V(18,14), if ((V(13,14)+V(26,14)+V(12,14)) > V(31,14), V(18,14), 0 ) ) )}
IsSpice4 accepts parameter passing for SPICE primitives like E or G; however, PSpice doesn't. Thus, you must adapt them with a VALUE keyword:
IsSpice: E1 1 2 3 4 { gain }
G1 1 2 3 4 { gm }
Pspice: E1 1 2 Value ={V(3,4) × gain}
G1 1 2 Value={ V(3,4)×gm }
To illustrate in-line equations, use the input-to-output transfer ratio of a BOOST converter operating in continuous conduction mode (CCM), which is affected by some ohmic losses. The traditional equation states:
Where:
D'=1 — D
Rlf=inductor series resistance
Rload the converter load.
An interesting exercise is to sweep the duty-cycle D for different ratios
Fig. 1 shows how to implement this equation via a simple in-line equation, whereas the duty-cycle is obtained using the current simulator time in seconds and bounded below 1 for a 100µs run. When sweeping the ratio parameter, the Fig. 2 family of curves shows the standard BOOST behavior, where latch-up takes place sooner for lossy inductors.
For more information on this article, CIRCLE 339 on Reader Service Card

