Obvod DP-EPF (SK) s OZ

>    restart;

>    with(Syrup):

Zadání obvodu a jeho obecný přenos

>    vst_data:= TEXT(

>    `Salen-Key`,

>    `V1 1 0 `,

>    `R1 1 2  1.`,

>    `R2 2 3  1.`,

>    `C1 2 4  1.`,

>    `C2 3 0  .2`,

>    `E1 4 0 3 5 A *vystup:+ -, rizeni:+ -, hodnota`,

>    `Rk1 4 5 K-1`,

>    `Rk2 5 0 1`,

>    `.end`):

>    AA:= syrup(vst_data,ac,symbolic):

syrup:   Symbolic analysis, numeric values will be ignored

parsedeck:   Analyzing SPICE deck "Salen-Key" (ignoring this line)

>    Hu1:= collect(simplify(subs(AA, v[4]/V1)),[s,A],recursive,factor):

>    Hu:= collect(simplify(subs(Rk2=1,Hu1)),s,recursive,factor):

>    DHu:= collect(simplify(denom(Hu)/coeff(denom(Hu),s,2)),[s],recursive,factor);

DHu := s^2+(-A*C1*K*R1+A*C2*R2+A*R1*C2+A*C1*R1+K*R1*C2+K*C2*R2+K*C1*R1)/R2/C1/R1/C2/(A+K)*s+1/(R2*C1*R1*C2)

>    NHu:= collect(simplify(numer(Hu)/coeff(denom(Hu),s,2)),s,recursive,factor);

NHu := K*A/R2/C1/R1/C2/(A+K)

>    'Hu' = NHu/DHu;

Hu = K*A/R2/C1/R1/C2/(A+K)/(s^2+(-A*C1*K*R1+A*C2*R2+A*R1*C2+A*C1*R1+K*R1*C2+K*C2*R2+K*C1*R1)/R2/C1/R1/C2/(A+K)*s+1/(R2*C1*R1*C2))

Ideální přenos

>    Hi:= collect(simplify(limit(Hu,A=infinity)),s,recursive,factor):

>    DHi:= collect(simplify(denom(Hi)/coeff(denom(Hi),s,2)),s,recursive,factor);

DHi := s^2+(R1*C2-K*C1*R1+C2*R2+C1*R1)/R2/C1/R1/C2*s+1/(R2*C1*R1*C2)

>    NHi:= collect(simplify(numer(Hi)/coeff(denom(Hi),s,2)),s,recursive,factor);

NHi := K/R2/C1/R1/C2

>    'Hi' = NHi/DHi;

Hi = K/R2/C1/R1/C2/(s^2+(R1*C2-K*C1*R1+C2*R2+C1*R1)/R2/C1/R1/C2*s+1/(R2*C1*R1*C2))

Substituce R2 = r.R1, C2 = c.C1:

>    Hi1:= collect(subs(R2=r*R1,C2=c*C1,Hi),s,recursive,factor):

>    DHi1:= collect(simplify(denom(Hi1)/coeff(denom(Hi1),s,2)),s,recursive,factor);

DHi1 := s^2+1/C1/R1*(c-K+c*r+1)/r/c*s+1/(r*R1^2*C1^2*c)

>    NHi1:= collect(simplify(numer(Hi1)/coeff(denom(Hi1),s,2)),s,recursive,factor);

NHi1 := K/r/R1^2/C1^2/c

>    'Hi1' = NHi1/DHi1;

Hi1 = K/r/R1^2/C1^2/c/(s^2+1/C1/R1*(c-K+c*r+1)/r/c*s+1/(r*R1^2*C1^2*c))

Porovnání s ideálním obecným přenosem DP 2.řádu

>    HDP:= h*omega0^2/(s^2+s*omega0/Q+omega0^2);

HDP := h*omega0^2/(s^2+s*omega0/Q+omega0^2)

>    XDi:= solve({omega0^2=coeff(DHi1,s,0),omega0/Q=coeff(DHi1,s,1)},{omega0,Q});

XDi := {Q = RootOf(-1+_Z^2*r*c,label = _L3)*c*r/(c-K+c*r+1), omega0 = RootOf(-1+_Z^2*r*c,label = _L3)/C1/R1}

>    allvalues(XDi);

{Q = (1/(c*r))^(1/2)*c*r/(c-K+c*r+1), omega0 = (1/(c*r))^(1/2)/C1/R1}, {Q = -(1/(c*r))^(1/2)*c*r/(c-K+c*r+1), omega0 = -(1/(c*r))^(1/2)/C1/R1}

>    Q1:= sqrt(c*r)/(c+1+c*r-K);

Q1 := (c*r)^(1/2)/(c-K+c*r+1)

>    K1:= collect(solve(Q=Q1,K),Q,recursive);

K1 := c+c*r+1-(c*r)^(1/2)/Q

Citlivosti Q1:

>    Q1RC:= subs(r=R2/R1,c=C2/C1,Q1);

Q1RC := (C2/C1*R2/R1)^(1/2)/(C2/C1-K+C2/C1*R2/R1+1)

>    SQr:= collect(simplify(diff(Q1,r)*r/Q1),c,recursive,factor);

SQr := -1/2*((-1+r)*c+K-1)/((1+r)*c-K+1)

>    SQR1:= collect(simplify(diff(Q1RC,R1)*R1/Q1RC),[K,C1],recursive,factor);

SQR1 := -1/2*(-K*C1*R1+C1*R1+C2*(R1-R2))/(-K*C1*R1+C1*R1+C2*(R1+R2))

>    SQc:= collect(simplify(diff(Q1,c)*c/Q1),c,recursive,factor);

SQc := -1/2*((1+r)*c+K-1)/((1+r)*c-K+1)

>    SQC1:= collect(simplify(diff(Q1RC,C1)*C1/Q1RC),[K,R1],recursive,factor);

SQC1 := 1/2*(K*C1*R1+(C2-C1)*R1+C2*R2)/(-K*C1*R1+(C2+C1)*R1+C2*R2)

>    SQK:= collect(simplify(diff(Q1,K)*K/Q1),c,recursive,factor);

SQK := 1/((1+r)*c-K+1)*K

>    Gamma1:= K*SQK;

Gamma1 := K^2/((1+r)*c-K+1)

>    Gamma[QK]:= collect(simplify(subs(K=K1,Gamma1)),Q,recursive,factor);

Gamma[QK] := (c+c*r+1)^2/(c*r)^(1/2)*Q-2*c-2*c*r-2+(c*r)^(1/2)/Q

>    ropt := 1/18*(6*Q^2+6*Q^2*c+1+sqrt(12*Q^2+12*Q^2*c+1))/(Q^2*c);

ropt := 1/18*(6*Q^2+6*Q^2*c+1+(12*Q^2+12*Q^2*c+1)^(1/2))/Q^2/c

Návrhový blok

Vstupní návrhové parametry

>    omega[0]:= 1.25; Q:= 4.5;

omega[0] := 1.25

Q := 4.5

Navrh pro K=1: zadane parametry  omega[0],  Q, K1, C2

Volitelné parametry

>     C2:= 1; r:= 1; K:=1;

C2 := 1

r := 1

K := 1

>    cn:= 1/(4*Q^2); C1:= C2/cn;

cn := .1234567901e-1

C1 := 81.00000002

Uprava C1:

>    unassign('r');

>    C1:= 82.0; c:= C2/C1;

C1 := 82.0

c := .1219512195e-1

>    rn:= solve(Q1=Q,r);

rn := .8011016298, 1.248281081

>    r:= rn[2]; R1:= 1/sqrt(r*c)/C1/omega[0]; R2:= R1*r;

r := 1.248281081

R1 := .7907275431e-1

R2 := .9870502323e-1

Obvodové parametry:

>    'SQK' = evalf(subs(c=c,SQK)); Gamma:= evalf(subs(c=c,Gamma1));

SQK = 36.47230793

Gamma := 36.47230793

>    'SQr'=SQr, 'SQc'=SQc;

SQr = -.5521575520e-1, SQc = -.5000000000

>    'SQR1'=evalf(subs(C2=c*C1,R2=r*R1,SQR1)), 'SQC1'= evalf(subs(C2=c*C1,R2=r*R1,SQC1));

SQR1 = .5521575640e-1, SQC1 = .4999999972

Tranzitní frekvence zesilovače pro delta(omega0) = 1%

>    delta[omega]:= 0.01;

>    omega[t]:= omega[0]*Gamma1/2/Q/delta[omega];

delta[omega] := .1e-1

omega[t] := 506.5598325

Odnormování:

Skutečná hodnota C2 a odnormovací frekvence fN:

>    C2s:= 100e-12:

>    fN:= 12e3: omegaN:= evalf(2*Pi*fN);

omegaN := 75398.22370

>    RN:= C2/omegaN/C2s;

RN := 132629.1192

Odnormované prvky:

>    'C1' = C2s/c, 'C2' = C2s, 'R1' = R1*RN, 'R2' = R2*RN;

C1 = .8200000001e-8, C2 = .100e-9, R1 = 10487.34976, R2 = 13091.16029

>    'f[t_MHz]' = evalf(omegaN*omega[t]/2/Pi/1e6);

f[t_MHz] = 6.078717988

>   

Návrh pro min. Gamma: zadané parametry  omega[0],  Q, C1, C2

>    Gamma:= 'Gamma':

>   

Volitelné parametry:

>    C1:= 8.2: C2:= 1.0:

>    c:= C2/C1;

c := .1219512195

>    r:= ropt;

r := 3.461299049

>    R1:= 1/sqrt(r*c)/C1/omega[0]; R2:= R1*r;

R1 := .1501631947

R2 := .5197597230

>    K:= K1;

K := 1.399683159

Obvodové parametry:

>    'SQK' = evalf(SQK); Gamma:= evalf(Gamma1);

SQK = 9.694593785

Gamma := 13.56935966

>    'SQr'=SQr, 'SQc'=SQc;

SQr = -2.423648448, SQc = -3.268316420

>    'SQR1'=evalf(subs(C2=c*C1,R2=r*R1,SQR1)), 'SQC1'= evalf(subs(C2=c*C1,R2=r*R1,SQC1));

SQR1 = 2.423648426, SQC1 = 3.268316406

Tranzitní frekvence zesilovače pro delta(omega0) = 1%

>    delta[omega]:= 0.01;

>    omega[t]:= omega[0]*Gamma/2/Q/delta[omega];

delta[omega] := .1e-1

omega[t] := 188.4633286

Odnormování:

Skutečná hodnota C2 a odnormovací frekvence fN:

>    C2s:= 100e-12;

C2s := .100e-9

>    'omegaN' = omegaN; RN:= C2/omegaN/C2s;

omegaN = 75398.22370

RN := 132629.1192

Odnormované prvky:

>    'C1' = C2s/c, 'C2' = C2s, 'R1' = R1*RN, 'R2' = R2*RN;

C1 = .8200000001e-9, C2 = .100e-9, R1 = 19916.01225, R2 = 68935.27426

>    'f[t_MHz]' = evalf(omegaN*omega[t]/2/Pi/1e6);

f[t_MHz] = 2.261559943

Konec

>   

>