I did manage to find the spice model for LM3875
After much searching
There is an oddity in the order of input here:
2 Non inverting input
1 Inverting input
3 VCC
4 VEE
5 Output
Enjoy! 🙂
After much searching
There is an oddity in the order of input here:
2 Non inverting input
1 Inverting input
3 VCC
4 VEE
5 Output
Enjoy! 🙂
Code:
.SUBCKT LM3875 Vinm Vinp VCC VEE Vout
X1 VCC VEE Vinp Vinm Vout AMP
.ENDS
.SUBCKT AMP VDD VSS VIP VIM VO
Iq VDD VSS 30E-3
IS2 VDD 6 -0.205uA
IS3 5 VSS 0.195uA
Vos 6 17 1.22E-3
*XD4 VSS 5 IDEAL_DIODE
*+PARAMS: EMCO = 0.01 BRKV = 60 IBRKV = 0.001
*XD3 5 VDD IDEAL_DIODE
*+PARAMS: EMCO = 0.01 BRKV = 60 IBRKV = 0.001
*XD2 VSS 6 IDEAL_DIODE
*+PARAMS: EMCO = 0.01 BRKV = 60 IBRKV = 0.001
*XD1 6 VDD IDEAL_DIODE
*+PARAMS: EMCO = 0.01 BRKV = 60 IBRKV = 0.001
XU9 VDD VSS GNDF GND_FLOAT
XU6 8 VO Vimon AMETER
XU5 VDD VSS 9 10 Vimon GNDF VCLAMP_W_SENSE
+ PARAMS: VMAXIO = 1.6 VMINIO = 2.7 SLOPE = 0.1
XU11 14 9 GNDF TF
+ PARAMS: FZ1 = 1E+10 FZ2 = 1E+10 FZ3 = 1E+10 FZ4 = 1E+10 FZ5 = 1E+10
+ FP1 = 2E+6 FP2 = 1E+10 FP3 = 1E+10 FP4 = 1E+10
XU16 15 16 14 GNDF GBW_SLEW_SE
+ PARAMS: AOL = 120 GBW = 8E+6 SRP = 11E+6 SRN = 11E+6 IT = 1M
XU15 VDD VSS 5 16 GNDF VCLAMP
+ PARAMS: VMAX = 1 VMIN = 1
XU14 VDD VSS 6 15 GNDF VCLAMP
+ PARAMS: VMAX = 1 VMIN = 1
XR3 18 8 RNOISE_LESS_WILIM
+ PARAMS: RX = 0.1 IMAX = 6 IMIN = -6
RVXU1 10 18 0.01
*VXU1 10 18 0
*XU1 10 18 GNDF ZOUT
*+ PARAMS: FZ1 = 2.7916 FZ2 = 4.641E+6 FZ3 = 91.785E+6 FP1 = 0.212E+6
*+ FP2 = 3500 FEQ = 1.4 RO = 13
*VXU8 19 5 0
XU8 19 5 GNDF CMRR
+ PARAMS: CMRR = 130 FCMRR = 100
*VXU7 20 19 0
XU7 VDD VSS 20 19 GNDF PSRR
+ PARAMS: PSRR = 110 FPSRR = 100
XU4 17 20 FEMT
+ PARAMS: NLFF = 3.1 FLWF = 10 NVRF = 1.3
XU3 21 17 VNSE
+ PARAMS: NLF = 28.50 FLW = 10 NVR = 11.54
XU2 VIP VIM 21 20 GNDF INPUT
+ PARAMS: RCM = 0.1 CCM = 0.1E-12 CDM = 0.1E-12
*RDIFF 21 20 30k
DPASSTOP VDD NET126 DDEFAULT
DBLOCKTOP GNDF NET126 DBLOCK
GTOP NET126 GNDF Vimon 0 1
DPASSBOTTOM NET128 VSS DDEFAULT
DBLOCKBOTTOM NET128 GNDF DBLOCK
GBOTTOM NET128 GNDF Vimon 0 1
.MODEL DDEFAULT D IS=8E-16
.MODEL DBLOCK D IS=8E-16 BV=200
.ENDS
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT IDEAL_DIODE A C
+PARAMS: EMCO = 0.01 BRKV = 60 IBRKV = 1M
D1 A C IDIODE
.MODEL IDIODE D(N = {EMCO} BV = {BRKV} IBV = {IBRKV})
.ENDS
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT GND_FLOAT VDD VSS GNDF
EGNDF GNDF 0 VALUE = {(V(VDD)+V(VSS))*0.5}
.ENDS
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT AMETER VI VO VIMON
+ PARAMS: GAIN = 1
VSENSE VI VO DC = 0
EMETER VIMON 0 VALUE = {I(VSENSE)*GAIN}
.ENDS
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT VCLAMP_W_SENSE VDD VSS VI VO VIMON GNDF
+ PARAMS: VMAXIO = 0 VMINIO = 0 SLOPE = 0
EPCLIP VDD_CLP 0 VALUE = {V(VDD,GNDF) - SLOPE*V(VIMON) - VMAXIO}
ENCLIP VSS_CLP 0 VALUE = {V(VSS,GNDF) - SLOPE*V(VIMON) + VMINIO}
ECLAMP VO GNDF VALUE = {LIMIT(V(VI,GNDF), V(VDD_CLP), V(VSS_CLP))}
.ENDS
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT TF VI VO GNDF
+ PARAMS: FZ1 = 10G FZ2 = 10G FZ3 = 10G FZ4 = 10G FZ5 = 10G
+ FP1 = 1 FP2 = 10G FP3 = 10G FP4 = 10G
.PARAM GM = 1M
.PARAM RO = {1/GM}
.PARAM PI = 3.141592
GP1 GNDF VP1 VI GNDF {GM}
GRP1 VP1 GNDF VALUE = {V(VP1,GNDF)/RO}
CP1 VP1 GNDF {1/(2*PI*RO*FP1)}
GP2 GNDF VP2 VP1 GNDF {GM}
GRP2 VP2 GNDF VALUE = {V(VP2,GNDF)/RO}
CP2 VP2 GNDF {1/(2*PI*RO*FP2)}
GP3 GNDF VP3 VP2 GNDF {GM}
GRP3 VP3 GNDF VALUE = {V(VP3,GNDF)/RO}
CP3 VP3 GNDF {1/(2*PI*RO*FP3)}
GP4 GNDF VP4 VP3 GNDF {GM}
GRP4 VP4 GNDF VALUE = {V(VP4,GNDF)/RO}
CP4 VP4 GNDF {1/(2*PI*RO*FP4)}
GZ1 GNDF VZ1 VP4 GNDF {GM}
GRZ1 VZ1 VX1 VALUE = {V(VZ1,VX1)/RO}
LZ1 VX1 GNDF {RO/(2*PI*FZ1)}
GZ2 GNDF VZ2 VZ1 GNDF {GM}
GRZ2 VZ2 VX2 VALUE = {V(VZ2,VX2)/RO}
LZ2 VX2 GNDF {RO/(2*PI*FZ2)}
GZ3 GNDF VZ3 VZ2 GNDF {GM}
GRZ3 VZ3 VX3 VALUE = {V(VZ3,VX3)/RO}
LZ3 VX3 GNDF {RO/(2*PI*FZ3)}
GZ4 GNDF VZ4 VZ3 GNDF {GM}
GRZ4 VZ4 VX4 VALUE = {V(VZ4,VX4)/RO}
LZ4 VX4 GNDF {RO/(2*PI*FZ4)}
GZ5 GNDF VO VZ4 GNDF {GM}
GRZ5 VO VX5 VALUE = {V(VO,VX5)/RO}
LZ5 VX5 GNDF {RO/(2*PI*FZ5)}
.ENDS
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT GBW_SLEW_SE VIP VIM VO GNDF
+ PARAMS: AOL = 100 GBW = 1MEG SRP = 1MEG SRN = 1MEG IT = 1M
.PARAM PI = 3.141592
.PARAM IP = {IF(SRP <= SRN,IT,IT*(SRP/SRN))}
.PARAM IN = {IF(SRN <= SRP,-IT,-IT*(SRN/SRP))}
.PARAM CC = {IF(SRP <= SRN,IT/SRP,IT/SRN)}
.PARAM FP = {GBW/PWR(10,AOL/20)}
.PARAM RC = {1/(2*PI*CC*FP)}
.PARAM GC = {PWR(10,AOL/20)/RC}
G1 GNDF VO VALUE = {LIMIT(GC*V(VIP,VIM),IP,IN)}
C1 VO GNDF {CC}
GR1 VO GNDF VALUE = {V(VO,GNDF)/RC}
.ENDS
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT VCLAMP VDD VSS VI VO GNDF PARAMS: VMAX = 0.1 VMIN = 0.1
ECLAMP VO GNDF VALUE = {LIMIT(V(VI,GNDF),V(VDD,GNDF) - VMAX, V(VSS,GNDF) + VMIN)}
.ENDS
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT RNOISE_LESS_WILIM P N PARAMS: RX = 1K IMAX = 1M IMIN = -1M
GRES P N VALUE = {LIMIT(V(P,N)/RX, IMAX, IMIN)}
.ENDS
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT ZOUT VI VO GNDF
+ PARAMS: FZ1 = 1.4 FZ2 = 4.7E6 FZ3 = 91E6
+ FP1 = 212K FP2 = 3.5K FEQ = 1.4 RO = 5K
.PARAM GM = 1M
.PARAM RX = {1/GM}
.PARAM PI = 3.141592
GRI GNDF VEQ VALUE = {V(GNDF,VEQ)/10MEG}
GRF VIZ VEQ VALUE = {V(VIZ,VEQ)/10MEG}
CF VIZ VEQ {1/(2*PI*10E6*FEQ)}
EQ VIZ GNDF VI VEQ 100K
E0 VP0 GNDF VIZ VO 1N
GZ1 GNDF VZ1 VP0 GNDF {GM}
GRZ1 VZ1 VX1 VALUE = {V(VZ1,VX1)/RX}
LZ1 VX1 GNDF {RX/(2*PI*FZ1)}
EP1 VP1 GNDF VZ1 GNDF 1
GRP1 VP1 VP1X VALUE = {V(VP1,VP1X)/RX}
CP1 VP1X GNDF {1/(2*PI*RX*FP1)}
GZ2 GNDF VZ2 VP1X GNDF {GM}
GRZ2 VZ2 VX2 VALUE = {V(VZ2,VX2)/RX}
LZ2 VX2 GNDF {RX/(2*PI*FZ2)}
EP2 VP2 GNDF VZ2 GNDF 1
GRP2 VP2 VP2X VALUE = {V(VP2,VP2X)/RX}
CP2 VP2X GNDF {1/(2*PI*RX*FP2)}
GZ3 GNDF VZ3 VP2X GNDF {GM}
GRZ3 VZ3 VX3 VALUE = {V(VZ3,VX3)/RX}
LZ3 VX3 GNDF {RX/(2*PI*FZ3)}
E1 VOX GNDF VZ3 GNDF 1G
GR1 VOX VO VALUE = {V(VOX,VO)/RO}
.ENDS
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT CMRR VI VO GNDF PARAMS: CMRR = 130 FCMRR = 1.6K
.PARAM PI = 3.141592
.PARAM RCMRR = 1
.PARAM GCMRR = {PWR(10,-CMRR/20)/RCMRR}
.PARAM LCMRR = {RCMRR/(2*PI*FCMRR)}
G1 GNDF 1 VI GNDF {GCMRR}
R1 1 2 {RCMRR}
L1 2 GNDF {LCMRR}
E1 VI VO 1 GNDF 1
.ENDS
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT PSRR VDD VSS VI VO GNDF PARAMS: PSRR = 130 FPSRR = 1.6
.PARAM PI = 3.141592
.PARAM RPSRR = 1
.PARAM GPSRR = {PWR(10,-PSRR/20)/RPSRR}
.PARAM LPSRR = {RPSRR/(2*PI*FPSRR)}
G1 GNDF 1 VDD VSS {GPSRR}
R1 1 2 {RPSRR}
L1 2 GNDF {LPSRR}
E1 VO VI 1 GNDF 1
C2 VDD VSS 10P
.ENDS
**************************************
** **
** **
** **
** **
**************************************
* BEGIN PROG NSE FEMTO AMP/RT-HZ
.SUBCKT FEMT 1 2 PARAMS: NLFF = 0.1 FLWF = 0.001 NVRF = 0.1
* BEGIN SETUP OF NOISE GEN - FEMPTOAMPS/RT-HZ
* INPUT THREE VARIABLES
* SET UP INSE 1/F
********************
* FA/RHZ AT 1/F FREQ
* NLFF
********************
* FREQ FOR 1/F VAL
* FLWF
********************
* SET UP INSE FB
* FA/RHZ FLATBAND
* NVRF
********************
* END USER INPUT
* START CALC VALS
.PARAM GLFF={PWR(FLWF,0.25)*NLFF/1164}
.PARAM RNVF={1.184*PWR(NVRF,2)}
.MODEL DVNF D KF={PWR(FLWF,0.5)/1E11} IS=1.0E-16
* END CALC VALS
I1 0 7 10E-3
I2 0 8 10E-3
D1 7 0 DVNF
D2 8 0 DVNF
E1 3 6 7 8 {GLFF}
R1 3 0 1E9
R2 3 0 1E9
R3 3 6 1E9
E2 6 4 5 0 10
R4 5 0 {RNVF}
R5 5 0 {RNVF}
R6 3 4 1E9
R7 4 0 1E9
G1 1 2 3 4 1E-6
C1 1 0 1E-15
C2 2 0 1E-15
C3 1 2 1E-15
.ENDS
* END PROG NSE FEMTO AMP/RT-HZ
**************************************
** **
** **
** **
** **
**************************************
* BEGIN PROG NSE NANO VOLT/RT-HZ
.SUBCKT VNSE 1 2 PARAMS: NLF = 10 FLW = 4 NVR = 4.6
* BEGIN SETUP OF NOISE GEN - NANOVOLT/RT-HZ
* INPUT THREE VARIABLES
* SET UP VNSE 1/F
********************
* NV/RHZ AT 1/F FREQ
* NLF
********************
* FREQ FOR 1/F VAL
* FLW
********************
* SET UP VNSE FB
* NV/RHZ FLATBAND
* NVR
********************
* END USER INPUT
* START CALC VALS
.PARAM GLF={PWR(FLW,0.25)*NLF/1164}
.PARAM RNV={1.184*PWR(NVR,2)}
.MODEL DVN D KF={PWR(FLW,0.5)/1E11} IS=1.0E-16
* END CALC VALS
I1 0 7 10E-3
I2 0 8 10E-3
D1 7 0 DVN
D2 8 0 DVN
E1 3 6 7 8 {GLF}
R1 3 0 1E9
R2 3 0 1E9
R3 3 6 1E9
E2 6 4 5 0 10
R4 5 0 {RNV}
R5 5 0 {RNV}
R6 3 4 1E9
R7 4 0 1E9
E3 1 2 3 4 1
C1 1 0 1E-15
C2 2 0 1E-15
C3 1 2 1E-15
.ENDS
* END PROG NSE NANOV/RT-HZ
**************************************
** **
** **
** **
** **
**************************************
.SUBCKT INPUT VIP VIN VOP VON GNDF PARAMS: RCM = 1 CCM = 100F CDM = 100F
C1 VOP GNDF {CCM}
C2 VON GNDF {CCM}
C3 VOP VON {CDM}
G1 VIP VOP VALUE = {V(VIP,VOP)/RCM}
G2 VIN VON VALUE = {V(VIN,VON)/RCM}
.ENDS
- Status
- Not open for further replies.