Differences

This shows you the differences between two versions of the page.

Link to this comparison view

gnucap:manual:examples:multiplying_two_voltages_using_diode_nonlinearity [2015/12/11 15:39] (current)
Line 1: Line 1:
 +====== Multiplying Two Voltages Using Diode Nonlinearity ======
 +
 +The above example shows diode voltage drop behaviour but the diode can
 +also be used as an exponential function. In this example, a group of
 +diodes are used to construct a voltage multiplier. Most circuit components
 +add and subtract voltages and currents but multiplication is a bit special.
 +What is done in this circuit is to use the exponential behaviour of the
 +diodes to take the logarithm of two input voltages, then add those up and
 +use another diode to find the exponential of the sum. This works in the same
 +way as a slide rule does.
 +
 +eg7.ckt
 +
 +<code>
 +MULTILPLY TWO NUMBERS
 +
 +.subckt multiplier 1 2 3
 +*                        1 = input A (voltage)
 +*                        2 = input B (voltage)
 +*                        3 = output  (voltage)
 +* Note that there are scaling factors on inputs and output to keep
 +* diodes in the exponential region.
 +.model dexp D EG=0 CJ=0 FC=0 gparallel=0
 +G1 0 4 1 0 1e-3
 +D1 4 0 dexp
 +G2 0 5 2 0 1e-3
 +D2 5 0 dexp
 +I3 0 6 1
 +D3 6 0 dexp
 +E1 7 0 4 0 1
 +E2 8 7 5 0 1
 +E3 8 9 6 0 1
 +V1 9 10 0
 +D4 10 0 dexp
 +H1 3 0 V1 1e6
 +.ends
 +
 +V1 1 0 0
 +V2 2 0 0.5
 +X1 1 2 3 multiplier
 +R1 3 0 1
 +
 +.options vmin=-1e5 vmax=1e5
 +.print dc V(3) V(2) V(X1.E1) V(X1.E2) V(X1.E3)
 +.!rm eg7_1.dat eg7_2.dat eg7_3.dat
 +.dc v1 0 1 0.01 > eg7_1.dat
 +.modify V2=100
 +.dc v1 0 1 0.01 > eg7_2.dat
 +.dc v1 0 1000 1 > eg7_3.dat
 +.end
 +</code>
 +
 +This example does not attempt to go beyond the multiplication of two
 +numbers, using the DC sweep to test a few ranges of the inputs.
 +The output files can be plotted to check the linearity of the outputs.
 +If you wanted to build a real circuit to perform analog multiplication,
 +you would need something a lot more complex than the above example
 +because the dependent voltage and current sources used in this example
 +would not be possible to construct in a real circuit.
 +
 +Even with those ideal simulator components available, this example will
 +still only multiply correctly within a limited range. Using it outside
 +that range requires adjustment of the input and output scaling factors
 +so that the diodes themselves stay close to exponential functions.
 +
 +This example introduces the concept of a subcircuit which is like a macro
 +facility for circuit simulation. The subcircuit is contained between the
 +".subckt" and ".ends" lines and nodes within the subcircuit can use their
 +own numbering, independent of the outside world. The subcircuit gets a
 +name (in this case "multiplier") and the component "X1" becomes an 
 +instance of that subcircuit. Note the way that probes can be put on devices
 +inside the subcircuit, for example "X1.E1" refers to the sub-component
 +named "E1" inside the subcircuit "X1".
 +
 +Another new command here is ".modify". In this example, we want to test
 +the multiplier on a few DC sweeps but want to change the value of "V2"
 +between the sweeps. This allows a single batch run to test multiple
 +possibilities, or it can also be used interactively to trim a component
 +value into the value that gives the desired operating point.
 +
  
gnucap/manual/examples/multiplying_two_voltages_using_diode_nonlinearity.txt · Last modified: 2015/12/11 15:39 (external edit)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Run by Debian Driven by DokuWiki