EEC210 Diff. Pair Simulation - Problem Set #3 Problem #4

*
* Amplifier parameters
*
.param   gm1=1m   gm2=1m
.param   r1=10.1k  r2=9.9k
.param   rtail=1meg

*
* Amplifier Circuit
*
.subckt  amp (i1 i2 o1 o2)
gm1   o1 t  i1  t  gm1
gm2   o2 t  i2  t  gm2
r1    o1 0  r1
r2    o2 0  r2
rtail t  0  rtail

.ends amp

*
* Two identical copies of the amplifier are used.  One is used for a
* pure dm input.  The other is used for a pure cm input.

*
* AMPLIFIER WITH DM INPUT
*
xdm (i1d i2d o1d o2d) amp
vi1d i1d  0  halfvdm
ei2d i2d  0  i1d 0     -1
.param halfvdm=0.5

*
* AMPLIFIER WITH CM INPUT
*
xcm (i1c i2c o1c o2c) amp
ei1c i1c  0  i1d 0     2
ei2c i2c  0  i1c 0     1

*
* ANALYSIS
*
.dc vi1d 0 halfvdm halfvdm
.print dc v(o1d, o2d) v(o1d) v(o2d)
.print dc v(o1c, o2c) v(o1c) v(o2c)
.measure dc a_dm find v(o1d, o2d) at=halfvdm
.measure dc a_cm find par('(v(o1c)+v(o2c))/2.') at=halfvdm
.measure dc a_cm2dm find v(o1c, o2c) at=halfvdm
.measure dc a_dm2cm find par('(v(o1d)+v(o2d))/2.') at=halfvdm
.measure a_dm/a_cm param='a_dm/a_cm'
.measure a_dm/a_cm2dm param='a_dm/a_cm2dm'
.measure a_dm/a_dm2cm param='a_dm/a_dm2cm'

.end
