Synteza filtru C 06 20 b , Theta=49.
Realizace s OTA , funkcni simulace
LC prototyp
Prvky LC prototypu:
> | restart; |
> | rg:= 1: c1:= 1.09341: l2:= 1.094878: c2:= 0.279112: c3:= 1.645566: l4:= 0.950813: c4:= 0.544587: |
> | c5:= 1.668723: l6:= 0.892775: r2:= 2/3: |
Simulace
> | with(Syrup); |
> | obvod:= TEXT( |
> | `LC Cauer C06`, |
> | `V1 1 0 V1`, `Rg 1 2 rg`, |
> | `C1 2 0 c1`, |
> | `C2 2 3 c2`, `L2 2 3 l2`, `C3 3 0 c3`, `C4 3 4 c4`, `L4 3 4 l4`, `C5 4 0 c5`, `L6 4 5 l6`, |
> | `RL 5 0 r2`, |
> | `.end`) : |
> | AA:= syrup(obvod, ac): |
Syrup/parsedeck: Analyzing SPICE deck "LC Cauer C06" (ignoring this line)
> | HLC:= collect(simplify(subs(AA, v[5]/V1)),s,recursive,factor); |
póly:
> | XLC:= evalf(solve(denom(HLC)=0,s)); |
> | MHLC:= evalc(abs(subs(s=I*omega, HLC))): MHLCd:= 20*log10(MHLC): |
> | with(plots): |
Warning, the name changecoords has been redefined
> | plot(MHLCd, omega=0....4, thickness=2); |
Popis prototypu - obvodové rovnice
Rovnice "zdrojové" větve:
ig:= 1/rg*(ug - u1); -> vg:= R/rg*(ug - u1);
Rovnice 1.větve:
u1:= 1/(p*c1*R)*(vg - vl2 - p*c2*R*(u1 - u3));
Rovnice 2.větve:
vl2:= R/(p*l2)*(u1 - u3);
Rovnice 3.větve:
u3:= 1/(p*c3*R)*(vl2 - vl4 + p*c2*R*(u1-u3) - p*c4*R*(u3-u5));
Rovnice 4.větve:
vl4:= R/(p*l4)*(u3 - u5);
Rovnice 5.větve:
u5:= 1/(p*c5*R)*(vl4 - v6 + p*c4*R*(u3 - u5));
Rovnice 6.větve:
v6:= R/(p*l6)*(u5 - u7);
Rovnice 7.větve:
u7:= r2/R*v6;
Návrh
Výpočet integrátorů:
> | R:= r2; gm1:= 1; ci1:= solve(1/(c1*R)=gm1/ci1, ci1); |
> | gm2:=1; ci2:= solve(R/l2=gm2/ci2, ci2); |
> | gm3:=1; ci3:= solve(1/(c3*R)=gm3/ci3, ci3); |
> | gm4:= 1; ci4:= solve(R/l4=gm4/ci4, ci4); |
> | gm5:=1; ci5:= solve(1/(c5*R)=gm5/ci5, ci5); |
> | gm6:= 1; ci6:= solve(R/l6=gm6/ci6, ci6); |
Výpočet koncových větví:
vstupní větev:
> | gmo2:= 1; gmo1:= solve(R/rg=gmo1/gmo2, gmo1); |
výstupní větev:
> | gmo4:= 1; gmo3:= solve(r2/R=gmo3/gmo4, gmo3); |
Vazební kondenzátory:
> | c2n:= c2*R*gm2; c4n:= c4*R*gm4; |
Simulace
> | obvod2:= TEXT( |
> | `FS C06 - VM`, |
> | `V1 1 0 V1`, |
> | `Go1 2 0 1 3 -gmo1`, |
> | `Go2 2 0 0 2 -gmo2`, |
> | `G1 3 0 2 4 -gm1`, `C1 3 0 ci1`, `G2 4 0 3 5 -gm2`, `C2 4 0 ci2`, `C22 3 5 c2n`, `G3 5 0 4 6 -gm3`, `C3 5 0 ci3`, `G4 6 0 5 7 -gm4`, `C4 6 0 ci4`, `C44 5 7 c4n`, `G5 7 0 6 8 -gm5`, `C5 7 0 ci5`, `G6 8 0 7 9 -gm6`, `C6 8 0 ci6`, `Go3 9 0 8 0 -gmo3`, `Go4 9 0 0 9 -gmo4`, |
> | `.end`) : |
> | AB:= syrup(obvod2, ac): |
Syrup/parsedeck: Analyzing SPICE deck "FS C06 - VM" (ignoring this line)
syrup: There may be an unconnected component.
The following component(s) have zero current: {V1}.
> | H:= collect(simplify(subs(AB, v[9]/V1)),s,recursive,factor); |
póly:
> | XH:= evalf(solve(denom(H)=0,s)); |
> | XLC; |
Dynamika:
> | H2:= collect(simplify(subs(AB, v[2]/V1)),s,recursive,factor): MH2:= evalc(abs(subs(s=I*omega, H2))): |
> | H3:= collect(simplify(subs(AB, v[3]/V1)),s,recursive,factor): MH3:= evalc(abs(subs(s=I*omega, H3))): |
> | H4:= collect(simplify(subs(AB, v[4]/V1)),s,recursive,factor): MH4:= evalc(abs(subs(s=I*omega, H4))): |
> | H5:= collect(simplify(subs(AB, v[5]/V1)),s,recursive,factor): MH5:= evalc(abs(subs(s=I*omega, H5))): |
> | H6:= collect(simplify(subs(AB, v[6]/V1)),s,recursive,factor): MH6:= evalc(abs(subs(s=I*omega, H6))): |
> | H7:= collect(simplify(subs(AB, v[7]/V1)),s,recursive,factor): MH7:= evalc(abs(subs(s=I*omega, H7))): |
> | H8:= collect(simplify(subs(AB, v[8]/V1)),s,recursive,factor): MH8:= evalc(abs(subs(s=I*omega, H8))): |
Grafy:
> | with(plots): |
> | MH:= evalc(abs(subs(s=I*omega, H))): |
> | MHd:= 20*log10(MH): |
> | plot([MHLCd,MHd], omega=0....1.1, thickness=2, color=[blue,red]); |
> | plot([MH,MH2,MH3,MH4,MH5,MH6,MH7,MH8], omega=0....1.1, thickness=2); |
> |
> |
> |
Kmitočtové a impedanční odnormování:
Normovací kmitočet
> | fn:= 4*10^6: |
> | omega[n]:= 2*Pi*fn; |
> | gmn:= 0.30*10^(-3); |
> | Ci1:= ci1*gmn/omega[n]; evalf(Ci1*1e12); |
> | Ci2:= ci2*gmn/omega[n]; evalf(Ci2*1e12); |
> | Ci3:= ci3*gmn/omega[n]; evalf(Ci3*1e12); |
> | Ci4:= ci4*gmn/omega[n]; evalf(Ci4*1e12); |
> | Ci5:= ci5*gmn/omega[n]; evalf(Ci5*1e12); |
> | Ci6:= ci6*gmn/omega[n]; evalf(Ci6*1e12); |
> | C2:= c2n*gmn/omega[n]; evalf(C2*1e12); |
> | C4:= c4n*gmn/omega[n]; evalf(C4*1e12); |
> | Gmi:= gm1*gmn; # i=1,2,..,6; |
> | Gmo1:= gmo1*gmn; Gmo2:= gmo2*gmn; Gmo3:= gmo3*gmn; Gmo4:= gmo4*gmn; |
> |