54 lines
1.5 KiB
Plaintext
54 lines
1.5 KiB
Plaintext
Examples of XSPICE analog delay
|
|
|
|
.param freq=1k
|
|
|
|
** constant delay
|
|
a1 in1 out1 cntrl1 newdelay
|
|
.model newdelay delay(delay=400u)
|
|
V1 in1 0 dc 0 sin(0 1 'freq')
|
|
Vc1 cntrl1 0 0
|
|
|
|
** delay of one sin period distributed between 2 and 8 ms
|
|
a2 in2 out2 cntrl2 newdelay2
|
|
.model newdelay2 delay(has_delay_cnt=TRUE)
|
|
V2 in2 0 dc 0 sin(0 1 1k)
|
|
Vc2 cntrl2 0 dc 0.01 Pulse (0.00 0.1 2m 6m 2m 1 1)
|
|
|
|
** delay controlled between delmin and delmax
|
|
a3 in3 out3 cntrl3 newdelay3
|
|
.model newdelay3 delay(delmin=0.05m delmax=0.2m has_delay_cnt=TRUE)
|
|
V3 in3 0 dc 0.05 pulse(0 0.95 0.1m 10u 10u 0.3m 0.6m)
|
|
Vc3 cntrl3 0 dc 0.01 Pulse (0 1 3m 4m 2m 1 1)
|
|
|
|
** delay of one period
|
|
a4 in4 out4 cntrl4 newdelay4
|
|
.model newdelay4 delay(delay=0.6m)
|
|
V4 in4 0 dc 0.05 pulse(0 0.95 0.1m 10u 10u 0.3m 0.6m)
|
|
Vc4 cntrl4 0 dc 0.01 Pulse (0.01 0.02 4m 2m 2m 1 1)
|
|
|
|
** sin distortion estimate:
|
|
a5 in5 out5 cntrl5 newdelay5
|
|
* delay of a half cycle
|
|
.model newdelay5 delay(delay='1/freq/2')
|
|
V5 in5 0 dc 0 sin(0 1 'freq')
|
|
Vc5 cntrl5 0 0
|
|
*results
|
|
* < 0.05% for 10000 steps per sin cycle
|
|
* < 0.3% for 1000 steps per sin cycle
|
|
* < 5% for 100 steps per sin cycle
|
|
|
|
.control
|
|
tran 1u 10m
|
|
rusage
|
|
set xbrushwidth=2
|
|
plot v(in1) V(out1) title 'Const delay'
|
|
plot v(in2) V(out2) title 'Variable delay'
|
|
plot v(in3) V(out3) title 'Variable delay'
|
|
plot v(in3)*V(out3) title 'Variable delay, pulse overlap'
|
|
plot v(in4) V(out4) xlimit 3m 7m title 'One period delay'
|
|
plot v(in5)+V(out5) ylimit -0.01 0.01 xlimit 3m 7m title 'Half period delay plus Input'
|
|
|
|
.endc
|
|
|
|
.end
|