Data_Assignment 04_sol
Data_Assignment 04_sol
ASSIGNMENT 4
SUNDARAIAH GURINDAGUNTA
EE10M086
Signal bandwidth=1M
SQNR>100dB
SNR>84dB
∆=2
a)
Order=3
OBG=1.5
OSR=128
b)
clear clear
clc
path(path,'D:\delsig\delsig');
w=linspace(0,pi,10000);
order=3;
osr=128;
obg=1.5;
nlev=2;
ntf=synthesizeNTF(order,osr,0,obg,0);
ntf_mag=abs(evalTF(ntf,exp(j*w)));
( − 1)
=
( − 0.6694) ( − 1.531 + 0.6639)
Plot of NTF in Db scale
∆
= | ( )|
12
Theoritical
noisepower= 1.3952e-013
inband_noisepower= 1.48e-014=-138Db
practical
c)
MSA Calculation
clear clear
clc
path(path,'D:\delsig\delsig');
w=linspace(0,pi,10000);
order=3;
osr=128;
obg=1.5;
nlev=2;
ntf=synthesizeNTF(order,osr,0,obg,0);
ntf_mag=abs(evalTF(ntf,exp(j*w)));
u=0:nlev/1e6:nlev;
[v,xn,xmax,y]=simulateDSM(u,ntf,nlev,randn(order,1));
MSA=(1/(nlev-1))*u(min(find((y>50))))
plot(log10(abs(y)));
MSA = 0.7976
clear clear
clc
path(path,'D:\delsig\delsig');
w=linspace(0,pi,10000);
order=3;
osr=128;
obg=1.5;
nlev=2;
ntf=synthesizeNTF(order,osr,0,obg,0);
ntf_mag=abs(evalTF(ntf,exp(j*w)));
[snr,amp]= simulateSNR(ntf,osr,-3.74,0,nlev,1/(4*osr),14);
[snr,amp] = simulateSNR(ntf,osr);
figureMagic([-100 0], 10, 1, ...
[0 100], 10, 1);
xlabel('Input Level, dB')
ylabel('SNR dB');
title('SNR curve');
s=sprintf('peak SNR = %4.1fdB\n',...
max(snr));
text(-49,15,s);
Peak snr=107.34db
clear clear
clc
path(path,'D:\delsig\delsig');
w=linspace(0,pi,10000);
order=3;
osr=128;
obg=1.5;
nlev=2;
ntf=synthesizeNTF(order,osr,0,obg,0);
ABCDc=realizeNTF_ct(ntf,'FF')
ABCDc =
0 0 0 1.0000 -1.0000
1.0000 0 0 0 0
0 1.0000 0 0 0
K1=0.6703
K2=0.2442
K3=0.0440
2 3
0′ = 1 + + = 0.3666
2 6
3
1′ = 1 + 2 + = 0.7979
2
2′ = 2 + 3 = 0.2662
3′ = 3 = 0.0440
1′ 2′ 3′
( ) = 0′ + + +
0.7979 0.2662 0.0440
( ) = 0.3666 + + +
2)
3)
*simulation of DSM
v3 n12 0 pulse(0 5 1f 1f 1f 1.953125e-9 3.90625e-9)
v2 n13 0 pulse(5 0 1f 1f 1f 1.953125e-9 3.90625e-9)
v1 1 0 SIN 0 0.65 250k
*quantize inversion
rq1 out inq 5k
rq2 inq outq 5k
Gq outq 0 0 inq 10000000000 *out is int output
*k0 inversion
ruv1 1 inuv 5k
ruv2 outq inuv 5k
Guv outuv 0 0 inuv 10000000000 *out is int output
ruvfeed outuv inuv 5k
*k0 inversion
rkuv outuv inuvinv 5k
rkuv1 inuvinv outuvinv 5k
Guvinv outuvinv 0 0 inuvinv 10000000000 *out is int output
*integrator1
rint1 outuvinv in1 1k/6.2832
cint1 in1 out1 3.9025e-13
rint11 in1 out1 1Meg
Gint1 out1 0 0 in1 10000000000 *out is int output
*integrator2
rint2 out1 in2 8k/6.2832
cint2 in2 out2 0.5e-12
rint21 in2 out2 1Meg
Gint2 out2 0 0 in2 10000000000 *out is int output
*integrator3
rint3 out2 in3 40k/6.2832
cint3 in3 out3 0.5e-12
Gint3 out3 0 0 in3 10000000000 *out is int output
rint31 in3 out3 1Meg
*k0 inversion
rk01 1 ink0 5k
rk02 ink0 outk0 5k
Gk0 outk0 0 0 ink0 10000000000 *out is int output
*k2 inversion
rk21 out2 ink2 5k
rk22 ink2 outk2 5k
Gk2 outk2 0 0 ink2 10000000000 *out is int output
*summing
rk0 outk0 insum 13.64k
rk1 out1 insum 6.27k
rk2 outk2 insum 18.78k
rk3 out3 insum 113.64kk
rfeed insum outsum 5k
Gsum outsum 0 0 insum 10000000000 *out is int output
routsum outsum 0 1Meg
*switch
Y1 VSWITCH outsum outswitch1 n13 0
cswitch1 outswitch1 0 1p
Y2 VSWITCH outswitch1 outswitch2 n12 0
cswitch2 outswitch2 0 1p
E1 out 0 outswitch2 0 10000000000 MIN=-1 MAX=1
r2 out 0 1k
*Gquantize outswitch1 0 outquantize 0 100000000000 MIN=-1
MAX=1
*output
*r2 outquantize 0 1k
.tran .01u 10u
*.ac dec 100 1 100Meg
.plot v(out1) v(out2) v(out3) v(outswitch1) v(outswitch2)
v(out) v(outsum) v(n12) v(n13) v(outuvinv) v(1) v(outq)
.end
*quantize inversion
rq1 out inq 5k
rq2 inq outq 5k
Gq outq 0 0 inq 10000000000 *out is int output
*k0 inversion
ruv1 1 inuv 5k
ruv2 outq inuv 5k
Guv outuv 0 0 inuv 10000000000 *out is int output
ruvfeed outuv inuv 5k
*k0 inversion
rkuv outuv inuvinv 5k
rkuv1 inuvinv outuvinv 5k
Guvinv outuvinv 0 0 inuvinv 10000000000 *out is int output
*v1 1 0 ac 2
*integrator1
rint1 outuvinv in1 1k/6.2832
cint1 in1 out1 3.9025e-13
rint11 in1 out1 1Meg
Gint1 out1 0 0 in1 10000000000 *out is int output
*integrator2
rint2 out1 in2 8k/6.2832
cint2 in2 out2 0.5e-12
rint21 in2 out2 1Meg
Gint2 out2 0 0 in2 10000000000 *out is int output
*integrator3
rint3 out2 in3 40k/6.2832
cint3 in3 out3 0.5e-12
Gint3 out3 0 0 in3 10000000000 *out is int output
rint31 in3 out3 1Meg
*k0 inversion
rk01 1 ink0 5k
rk02 ink0 outk0 5k
Gk0 outk0 0 0 ink0 10000000000 *out is int output
*k2 inversion
rk21 out2 ink2 5k
rk22 ink2 outk2 5k
Gk2 outk2 0 0 ink2 10000000000 *out is int output
*summing
rk0 outk0 insum 13.64k
rk1 out1 insum 6.27k
rk2 outk2 insum 18.78k
rk3 out3 insum 113.64kk
rfeed insum outsum 5k
Gsum outsum 0 0 insum 10000000000 *out is int output
routsum outsum 0 1Meg
*switch
Y1 VSWITCH outsum outswitch1 n13 0
cswitch1 outswitch1 0 1p
Y2 VSWITCH outswitch1 outswitch2 n12 0
cswitch2 outswitch2 0 1p
E1 out 0 outswitch2 0 10000000000 MIN=-1 MAX=1
r2 out 0 1k
*Gquantize outswitch1 0 outquantize 0 100000000000 MIN=-1
MAX=1
*output
*r2 outquantize 0 1k
.tran .01u 10u
*.ac dec 100 1 100Meg
.plot v(out1) v(out2) v(out3) v(outswitch1) v(outswitch2)
v(out) v(outsum) v(n12) v(n13) v(outuvinv) v(1) v(outq)
.end
f)
Jitter noise
∆ ∆
= ( ) ∗ (1 − )
12 ∗
clear all
w=(0:0.0001:pi);z=exp(j*w);
mag=((((z-1).^3).*(1-z.^-1))./((z-0.6694).*(z.^2 - 1.531*z
+ 0.6639)));
mag=abs(mag); mag=mag.^2;
power=trapz(mag,w)
power =14.2165
∆ ∆
= ∗ 14.2165
∗
1 = −137 = 1.99 ∗ 10
4
= ∆ ∗ 14.2165
12 ∗ 128 ∗ (3.90625 − 9)
∆ =5