Version 4 SHEET 1 1680 680 WIRE 512 -336 496 -336 WIRE 688 -336 592 -336 WIRE 752 -336 688 -336 WIRE 32 -304 -32 -304 WIRE 96 -304 32 -304 WIRE 128 -304 96 -304 WIRE 960 -288 928 -288 WIRE -32 -272 -32 -304 WIRE 32 -272 32 -304 WIRE 752 -272 720 -272 WIRE -224 -208 -224 -240 WIRE -128 -208 -224 -208 WIRE -80 -208 -128 -208 WIRE -32 -176 -32 -192 WIRE 32 -176 32 -192 WIRE 176 -144 160 -144 WIRE 336 -144 320 -144 WIRE 512 -144 496 -144 WIRE 688 -144 592 -144 WIRE 752 -144 688 -144 WIRE -224 -128 -224 -208 WIRE -128 -112 -128 -144 WIRE 960 -96 928 -96 WIRE 720 -80 720 -272 WIRE 752 -80 720 -80 WIRE -224 48 -224 -48 WIRE 512 48 496 48 WIRE 688 48 592 48 WIRE 752 48 688 48 WIRE 960 96 928 96 WIRE 352 112 320 112 WIRE 720 112 720 -80 WIRE 752 112 720 112 WIRE -224 176 -224 48 WIRE -144 176 -224 176 WIRE 64 176 0 176 WIRE 80 176 64 176 WIRE 144 176 80 176 WIRE 304 176 288 176 WIRE 320 176 320 112 WIRE 320 176 304 176 WIRE 352 176 320 176 WIRE 688 176 416 176 WIRE 720 176 720 112 WIRE 720 176 688 176 WIRE 720 208 720 176 WIRE 864 208 720 208 WIRE 992 224 928 224 WIRE 1168 224 1152 224 WIRE 80 240 80 176 WIRE 304 240 288 240 WIRE 320 240 304 240 WIRE 512 256 496 256 WIRE 624 256 592 256 WIRE 720 256 720 208 WIRE 752 256 720 256 WIRE 832 256 816 256 WIRE 864 256 832 256 WIRE 1360 272 1344 272 WIRE 1120 288 1040 288 WIRE 1168 288 1120 288 WIRE 816 384 800 384 WIRE 912 384 896 384 FLAG -80 -256 s IOPIN -80 -256 In FLAG 64 176 f FLAG 80 320 0 FLAG 128 -304 o IOPIN 128 -304 Out FLAG 304 176 S FLAG 496 -144 0 FLAG 688 -336 1 FLAG 304 240 C FLAG 496 48 0 FLAG 688 -144 2 FLAG 992 224 R FLAG 800 384 0 FLAG 912 384 THDx IOPIN 912 384 Out FLAG 960 -96 So FLAG 960 96 Co FLAG 496 -336 0 FLAG 960 -288 Po FLAG 496 256 0 FLAG -32 -176 0 FLAG 688 176 clk FLAG 688 48 3 FLAG 832 256 4 FLAG 352 112 s IOPIN 352 112 Out FLAG -224 -320 0 FLAG 624 256 per FLAG -224 48 fdist FLAG 160 -144 f FLAG -128 -112 0 FLAG 1360 272 THD IOPIN 1360 272 Out FLAG 1152 224 THDx FLAG 1040 368 0 FLAG 1120 368 0 FLAG -48 448 0 FLAG -48 368 tv FLAG 96 -240 0 FLAG -112 -304 0 FLAG 32 -176 0 FLAG 336 -144 fy SYMBOL bv 80 224 R0 WINDOW 3 -32 131 Left 0 WINDOW 0 -32 8 Left 0 SYMATTR Value V=k1*exp(round(V(tv)*stps)/stps*k2) SYMATTR InstName B1 SYMBOL SpecialFunctions\\modulate2 144 176 R0 WINDOW 3 0 112 Left 0 WINDOW 123 0 130 Left 0 WINDOW 39 0 148 Left 0 WINDOW 0 55 30 Left 0 SYMATTR Value space=0 mark={f2} SYMATTR Value2 Vhigh={sqrt(2)} SYMATTR SpiceLine Vlow={-sqrt(2)} SYMATTR InstName A1 SYMBOL Digital\\buf1 352 112 R0 WINDOW 3 0 96 Left 0 WINDOW 123 0 114 Left 0 WINDOW 0 0 34 Left 0 SYMATTR Value tripdt=1n SYMATTR Value2 ref=0 SYMATTR InstName A2 SYMBOL SpecialFunctions\\sample 832 -304 R0 WINDOW 3 16 80 Center 0 WINDOW 0 8 -48 Center 0 SYMATTR Value tripdt=1n SYMATTR InstName A3 SYMBOL SpecialFunctions\\sample 832 -112 R0 WINDOW 3 16 80 Center 0 WINDOW 0 8 -48 Center 0 SYMATTR Value tripdt=1n SYMATTR InstName A4 SYMBOL SpecialFunctions\\sample 832 80 R0 WINDOW 3 16 80 Center 0 WINDOW 0 8 -48 Center 0 SYMATTR Value tripdt=1n SYMATTR InstName A5 SYMBOL bv 608 -336 M270 WINDOW 3 -30 128 VBottom 0 WINDOW 0 32 56 VTop 0 SYMATTR Value V=(sdt(V(o)**2,0,V(R))/V(per))-(sdt(V(o),0,V(R))/V(per))**2 SYMATTR InstName B2 SYMBOL bv 608 -144 M270 WINDOW 3 -32 74 VBottom 0 WINDOW 0 32 56 VTop 0 SYMATTR Value V=sdt(V(s)*V(o),0,V(R))/V(per) SYMATTR InstName B3 SYMBOL bv 608 48 M270 WINDOW 3 -30 58 VBottom 0 WINDOW 0 32 56 VTop 0 SYMATTR Value V=sdt(V(C)*V(o),0,V(R))/V(per) SYMATTR InstName B4 SYMBOL bv 608 256 M270 WINDOW 3 -32 56 VBottom 0 WINDOW 0 32 56 VTop 0 SYMATTR Value V=sdt(1,0,V(R)) SYMATTR InstName B5 SYMBOL bv 912 384 M270 WINDOW 3 -44 19 VBottom 0 WINDOW 0 32 56 VTop 0 SYMATTR Value V=100*sqrt(V(Po)-(V(So)**2+V(Co)**2))/SQRT(V(So)**2+V(Co)**2) SYMATTR InstName B6 SYMBOL Digital\\inv 752 192 R0 WINDOW 0 0 34 Left 0 WINDOW 3 0 96 Left 0 WINDOW 123 0 114 Left 0 SYMATTR InstName A6 SYMATTR Value tripdt=0.1n SYMATTR Value2 Td=0.3n SYMBOL Digital\\and 896 176 R0 WINDOW 0 -32 18 Left 0 WINDOW 123 -28 115 Left 0 WINDOW 39 -34 136 Left 0 SYMATTR InstName A7 SYMATTR Value2 Td=50p SYMATTR SpiceLine tripdt=0.5n SYMBOL SpecialFunctions\\modulate2 0 176 M0 WINDOW 3 0 112 Left 0 WINDOW 123 0 130 Left 0 WINDOW 39 0 148 Left 0 WINDOW 0 56 25 Left 0 SYMATTR Value space=0 mark={3*f2} SYMATTR Value2 Vhigh={sqrt(2)} SYMATTR SpiceLine Vlow={-sqrt(2)} SYMATTR InstName A8 SYMBOL res -240 -336 R0 SYMATTR InstName R2 SYMATTR Value {a*1k} SYMBOL res -240 -144 R0 SYMATTR InstName R3 SYMATTR Value {(1-a)*1k} SYMBOL SpecialFunctions\\modulate2 176 -144 R0 WINDOW 3 -51 114 Left 0 WINDOW 0 53 28 Left 0 SYMATTR Value space=0 mark={50*f2} SYMATTR InstName A9 SYMATTR Value2 Vhigh=1 SYMATTR SpiceLine Vlow=-1 SYMBOL Misc\\jumper -192 -176 R270 WINDOW 0 2 38 Bottom 0 SYMATTR InstName X1 SYMBOL SpecialFunctions\\sample 1248 256 R0 WINDOW 3 16 80 Center 0 WINDOW 0 8 -48 Center 0 SYMATTR Value tripdt=1n SYMATTR InstName A10 SYMBOL bi 1040 368 R180 WINDOW 0 24 88 Left 0 WINDOW 3 -120 -34 Left 0 SYMATTR InstName B7 SYMATTR Value I=u(ddt(V(f))) SYMBOL voltage 1120 272 R0 WINDOW 0 -17 -7 Left 0 WINDOW 39 -43 77 Left 0 WINDOW 123 0 0 Left 0 SYMATTR InstName V1 SYMATTR SpiceLine Rser=1 SYMATTR Value PULSE(0 2 {kd*0.95} 1n 1n 10n) SYMBOL bv -48 352 R0 WINDOW 3 -88 132 Left 0 SYMATTR Value V=if(time>kd,((time-kd)/Ts)**8,k1) SYMATTR InstName B8 SYMBOL res -128 -288 R270 WINDOW 0 32 56 VTop 0 WINDOW 3 0 56 VBottom 0 SYMATTR InstName R1 SYMATTR Value 1k SYMBOL cap 80 -304 R0 WINDOW 0 28 20 Left 0 WINDOW 3 24 54 Left 0 SYMATTR InstName C1 SYMATTR Value {Cf} SYMBOL g -32 -288 R0 WINDOW 0 6 11 Left 0 WINDOW 3 4 98 Left 0 SYMATTR InstName G1 SYMATTR Value 1m SYMBOL current 32 -192 R180 WINDOW 0 -40 86 Left 0 WINDOW 3 -41 -3 Left 0 SYMATTR InstName Idc SYMATTR Value 1m TEXT -208 -384 Left 0 !.tran 0 {Ts+kd} {kd} uic TEXT 200 424 Left 0 !.param f1=20 f2=20k Ts=0.2 TEXT 1072 -16 Left 0 ;To plot freq on the horiz axis \nchange the quantity plotted to \n"V(f)*Hz/1V" (e.g. f2=20k) \nand click "Logarithmic" TEXT 48 32 Left 0 ;Sweep Parameters:\nf1 = start freq f2= stop freq\nTs = sweep duration TEXT -48 0 Left 0 ;.options plotwinsize=0 numdgt=8 reltol=10u TEXT 968 152 Center 0 ;Delayed\nIntegrator\nReset TEXT 968 8 Center 0 ;"DFT"\ncosine\noutput TEXT 968 -192 Center 0 ;"DFT"\nsine\noutput TEXT 968 -376 Center 0 ;Averaged\nraw\noutput TEXT 552 192 Center 0 ;Cycle sample period TEXT 552 152 Center 0 ;Cycle synchronous S/H clock TEXT 1400 192 Center 0 ;THD output\n(in percent) TEXT 552 -208 Center 0 ;"DFT" sine integrator TEXT 552 -16 Center 0 ;"DFT" cosine integrator TEXT 528 -264 Center 0 ;cycle-by-cycle average, remove DC TEXT 392 -440 Center 0 ;Swept Sine Audio THD Measurement Generator - Rev 0 - Aug 2006 - analogspiceman@yahoo.com\n-attempt to step frequency in a more time optimal manner, continuous sweep mode is too slow /G.M.19-Aug-06- TEXT 200 104 Center 0 ;Swept Sine-Cosine Source TEXT -96 -136 Left 0 !.param K=1m TEXT -88 -56 Left 0 !.param a=0.01 TEXT -88 -80 Left 0 ;3f-Distorsion: TEXT 200 400 Left 0 ;.param f1=1k f2=f1 Ts=2/f1 TEXT -168 128 Left 0 ;Distortion source TEXT 160 -224 Left 0 ;Dummy generator\nto set timestep(f) TEXT 200 448 Left 0 !.param k1=f1/f2 k2=ln(f2/f1) TEXT 456 368 Left 0 !.param stps=6 ;Frequ-Steps TEXT 1112 112 Left 0 ;THD is sampled\nto remove transients.\nV1 triggers first sample TEXT -152 48 Left 0 !.param kd=3/f1 TEXT -80 -352 Left 0 !.param Cf=1m/2/pi/fg fg=1k TEXT 1056 -448 Left 0 ;---NOTES:\n-"Inherent" numeric THD is\nabout 0.06....0.13% @2kHz\n-when D.U.T. contains time constants\nthen increase param. kd ! Esp. critical\nwith DC components !\n---CHANGES:\n-THD-formula, formula for Po\n-Reset-timing\n-Frequency(time);\n needs more optimizing!\n-added sampled THD\n-added timestep generator\n-DC component removed\n from Po TEXT 944 -256 Left 0 ;"Power"! TEXT 936 -64 Left 0 ;"Voltage" TEXT 360 -168 Left 0 ;needed\nnode!