Ata_sa16
Full Member level 6
- Joined
- Mar 29, 2016
- Messages
- 343
- Helped
- 0
- Reputation
- 118
- Reaction score
- 58
- Trophy points
- 28
- Location
- Milky Way Galaxy, 179° 56′ 39.4″
- Activity points
- 2,221
Hi all,
I need to write a verilog AMS code for Voltage controlled delay line.
There is an available code but this is made for pulse input and ouput.
I need to have sine wave input and output.
Thank you.
I need to write a verilog AMS code for Voltage controlled delay line.
There is an available code but this is made for pulse input and ouput.
I need to have sine wave input and output.
Code:
module vcdl ( VC, CK_IN, CK_OUT );
input VC, CK_IN; output CK_OUT;
electrical VC, CK_IN, CK_OUT;
parameter real Fref=200M from (0:inf);
parameter real Vlo=0, Vhi=1.8;
parameter real tt=50p from (0:inf);
parameter real ttol=1f from (0:(1/Fref));
parameter integer seed0=-500;
parameter real Da1=1.29e+7, Db1=-10.08,
Dc1=828.5, Dd1=-1.065;
parameter real Ja1=6.753e+10, Jb1=-17.18,
Jc1=2194, Jd1=-2.164;
real Delay,jitter, dTp, dT, vout;
integer seed;
analog begin
@(initial_step) begin
seed=seed0;
end
@(cross(V(CK_IN)-0.9,+1,ttol))begin
jitter = ( (Ja1*exp(Jb1*V(VC)))
+(Jc1*exp(Jd1*V(VC))) )*1f;
Delay = ( (Da1*exp(Db1*V(VC)))
+(Dc1*exp(Dd1*V(VC))) )*1p;
dT=jitter*$rdist_normal(seed,0,1);
dTp=dT+Delay-tt/2;
vout=Vhi;
end
@(cross(V(CK_IN)-0.9,-1,ttol))begin
jitter = ( (Ja1*exp(Jb1*V(VC)))
+(Jc1*exp(Jd1*V(VC))) )*1f;
Delay = ( (Da1*exp(Db1*V(VC)))
+(Dc1*exp(Dd1*V(VC))) )*1p;
dT=jitter*$rdist_normal(seed,0,1);
dTp=dT+Delay-tt/2;
vout=Vlo;
end
V(CK_OUT)<+ transition(vout,dTp,tt);
end
Thank you.