Kaskádní syntéza aktivního RC filtru

Výpočet kaskádních parametrů požadované pásmové propusti ( omega[0] , Q  a omega[n]  jednotlivých bikvadratických sekcí).  

>    infolevel[syntfil]:=2:

>    bp:=NLP2BP(f_p,fp,Gc,poles,zeros):

H0 = 0.218810

omega_0 = 15390.59796, Q =  7.82575

omega_0 = 12785.56417, Q = 17.78230, omega_n =  8842.13093

omega_0 = 18526.40231, Q = 17.78230, omega_n = 26788.84845

Zadání příkazu " infolevel[syntfil]:=2: "  vypíše typ struktury potřebný pro následné sestavení přenosové funkce a parametry jednotlivých sekcí seřazené podle velikosti činitele Q . Výsledná tabulka, kterou obdržíme jako výsledek funkce NLP2BP  však obsahuje parametry jednotlivých sekcí, které jsou však nyní uspořádány s ohledem na optimální dynamické a šumové vlastnosti výsledného zapojení.

>    eval(bp);

TABLE([1 = TABLE([omega_n = 8842.13093467968789, omega_0 = 12785.5641719953502, Q = 17.7823044393684619]), 2 = TABLE([omega_n = 26788.8484547447385, omega_0 = 18526.4023112073548, Q = 17.78230443936846...
TABLE([1 = TABLE([omega_n = 8842.13093467968789, omega_0 = 12785.5641719953502, Q = 17.7823044393684619]), 2 = TABLE([omega_n = 26788.8484547447385, omega_0 = 18526.4023112073548, Q = 17.78230443936846...
TABLE([1 = TABLE([omega_n = 8842.13093467968789, omega_0 = 12785.5641719953502, Q = 17.7823044393684619]), 2 = TABLE([omega_n = 26788.8484547447385, omega_0 = 18526.4023112073548, Q = 17.78230443936846...
TABLE([1 = TABLE([omega_n = 8842.13093467968789, omega_0 = 12785.5641719953502, Q = 17.7823044393684619]), 2 = TABLE([omega_n = 26788.8484547447385, omega_0 = 18526.4023112073548, Q = 17.78230443936846...
TABLE([1 = TABLE([omega_n = 8842.13093467968789, omega_0 = 12785.5641719953502, Q = 17.7823044393684619]), 2 = TABLE([omega_n = 26788.8484547447385, omega_0 = 18526.4023112073548, Q = 17.78230443936846...

Modulová charakteristika vypočtená z kaskádních parametrů musí souhlasit s výše uvedenou charakteristikou.

>    H_BP_K:=MakeH(bp,p):

>    mg_BP_K:=MagnitudeHdB(H_BP_K)(2*Pi*f):

>    plot(mg_BP_K,f=0.1*f_s..1.3*fs,labels=["f [Hz]","a [dB]"],thickness=2);

[Maple Plot]

Syntéza jednotlivých bikvadratických sekcí (bikvadů) -- výběr typů obvodů a výpočet hodnot jejich prvků. Parametry funkce ARCSynt (proměnná opt_lp)  lze ovlivňovat návrhový algoritmus. Lze volit velikosti některých součástek obvodu (obvykle kapacitorů), parametry operačních zesolovačů ([ A0 ,   ft ]), celkové zesílení ([h0]) a vlastní typ obvodu (parametry v hranatých závorkách jsou nepovinné). Parametery lze zadat jak ve formě čísla, společně pro všechny bloky, tak ve formě seznamu zvlášť pro každý blok. Nastavením proměnné infolevel[syntfil] na hodnotu 3, dostaneme podrobný výpis parametrů návrhu (zejména pro obvody LP1, HP1 a BP1). Funkce ARCSynt  volá funkci ARCBlock  pro rozdělení zesílení, která rozdělí zesílení mezi jednotlivé bloky tak, aby bylo dodrženo vyvážení jejich dynamiky, tj. aby k omezování signálu došlo u všech bloků při stejné budicí úrovni. Zesílení jednotlivých bloků je vypsáno, pokud nastavíme proměnnou infolevel[syntfil] na hodnotu 2. V případě, že poměnnou infolevel[syntfil] nastavíme na hodnotu 3, dostaneme navíc výpis kmitočtů, při kterých nastává přenýšení (maximum) modulových charakteristik u těch bloků, které převýšení vykazují. Další výpis pak udává, jak se tyto kmitočty mění na výstupech následujících bloků. Podle hodnot maxim modulových charakteristik za jednotivými bloky jsou pak vypočítány adekvátní hodnoty zesílení těchto bloků pro vyrovnanou dynamiku celého filtru.

>    infolevel[syntfil]:=3:

>    opt_bp:=table(['C1'=33e-9]):  #Choice of capacitor value separately for each block: table(['C1'=[33e-9,12e-9,22e-9]])

>    ARC_bp:=ARCSynt(bp,opt_bp):

Warning, ARCSynt: 2nd argument[h0] was not specified and will be considered to be 1.

ARCBlock:

Frequencies of modulus peaks of particular blocks: [[1, 2039.4528], [2, 2941.9654], [3, 2449.4897]].

Frequencies of modulus peaks after particular blocks: [[1, [2039.4528]], [2, [2041.4847, 2939.0372]], [3, [2050.6484, 2925.9038, 2449.4897]]].

ARCBlock:

Amplification of particular blocks h0 = [0.107446, 0.324175, 3.004485].

********************** Number of blok: 1 **********************

Warning, ARCSyntES1: 2nd argument[ft] should be entered for proper design of ES1 circuit

********************** Number of blok: 2 **********************

Warning, ARCSyntES1: 2nd argument[ft] should be entered for proper design of ES1 circuit

********************** Number of blok: 3 **********************

Warning, ARCSyntBP2: 2nd argument[ft] should be entered for proper design of BP2 circuit

***************************************************************

ARCSynt: Used circuit types in particular blocks: [ES1, ES1, BP2].

`block `(1), [R5 = 2370.1, ft = Float(infinity), R3 = .39225e6, A0 = Float(infinity), R4 = 22058., Ck = 0., C1 = .33e-7, R2 = 42146., R1 = 45818., type = ES1]

`block `(2), [R5 = 1635.7, ft = Float(infinity), R3 = 89723., A0 = Float(infinity), R4 = 5045.6, Ck = 0., C1 = .33e-7, R2 = 29086., R1 = 2409.5, type = ES1]

`block `(3), [R5 = 1390.7, ft = Float(infinity), R3 = 2787.6, A0 = Float(infinity), Rk = Float(infinity), R4 = 2787.6, C1 = .33e-7, R2 = 15408., R1 = 2787.6, type = BP2]
`block `(3), [R5 = 1390.7, ft = Float(infinity), R3 = 2787.6, A0 = Float(infinity), Rk = Float(infinity), R4 = 2787.6, C1 = .33e-7, R2 = 15408., R1 = 2787.6, type = BP2]

`type=ARC`

Stejná operace, avšak s definicí reálných parametrů operačních zesilovačů -- konečným stejnosměrným zesílením A0  otevřené zpětnovazenbí smyčky a tranzitním kmitočtem ft . Navíc je místo funkce ARCBlock   volána fuunkce ARCBlock1  (díky parametru 'arcblock1'=true ), která rozdělí celkové zesílení mezi jednotlivé sekce rovnoměrně (dynamické poměry struktury nebudou vyvážené).  

>    infolevel[syntfil]:=1:

>    opt_bp_OZ:=table(['C1'=33e-9, 'R'=1e4, 'h0'=1, 'ft'=1e6, 'A0'=1e5, 'arcblock1'=true]):

>    ARC_bp_OZ:=ARCSynt(bp,opt_bp_OZ):

Zaokrouhlení hodnot všech použitých rezistorů na normalizované hodnoty řady E48.

>    ARC_bp_OZ_R:=ARCRoundR(ARC_bp_OZ,48);

ARC_bp_OZ_R := TABLE([1 = TABLE([R5 = .237e4, ft = .1e7, R3 = .715e5, A0 = .1e6, R4 = .402e4, Ck = .268604917441303855e-9, C1 = .33e-7, R2 = .422e5, R1 = .825e4, type = ES1]), 2 = TABLE([R5 = .162e4, f...
ARC_bp_OZ_R := TABLE([1 = TABLE([R5 = .237e4, ft = .1e7, R3 = .715e5, A0 = .1e6, R4 = .402e4, Ck = .268604917441303855e-9, C1 = .33e-7, R2 = .422e5, R1 = .825e4, type = ES1]), 2 = TABLE([R5 = .162e4, f...
ARC_bp_OZ_R := TABLE([1 = TABLE([R5 = .237e4, ft = .1e7, R3 = .715e5, A0 = .1e6, R4 = .402e4, Ck = .268604917441303855e-9, C1 = .33e-7, R2 = .422e5, R1 = .825e4, type = ES1]), 2 = TABLE([R5 = .162e4, f...
ARC_bp_OZ_R := TABLE([1 = TABLE([R5 = .237e4, ft = .1e7, R3 = .715e5, A0 = .1e6, R4 = .402e4, Ck = .268604917441303855e-9, C1 = .33e-7, R2 = .422e5, R1 = .825e4, type = ES1]), 2 = TABLE([R5 = .162e4, f...
ARC_bp_OZ_R := TABLE([1 = TABLE([R5 = .237e4, ft = .1e7, R3 = .715e5, A0 = .1e6, R4 = .402e4, Ck = .268604917441303855e-9, C1 = .33e-7, R2 = .422e5, R1 = .825e4, type = ES1]), 2 = TABLE([R5 = .162e4, f...
ARC_bp_OZ_R := TABLE([1 = TABLE([R5 = .237e4, ft = .1e7, R3 = .715e5, A0 = .1e6, R4 = .402e4, Ck = .268604917441303855e-9, C1 = .33e-7, R2 = .422e5, R1 = .825e4, type = ES1]), 2 = TABLE([R5 = .162e4, f...
ARC_bp_OZ_R := TABLE([1 = TABLE([R5 = .237e4, ft = .1e7, R3 = .715e5, A0 = .1e6, R4 = .402e4, Ck = .268604917441303855e-9, C1 = .33e-7, R2 = .422e5, R1 = .825e4, type = ES1]), 2 = TABLE([R5 = .162e4, f...
ARC_bp_OZ_R := TABLE([1 = TABLE([R5 = .237e4, ft = .1e7, R3 = .715e5, A0 = .1e6, R4 = .402e4, Ck = .268604917441303855e-9, C1 = .33e-7, R2 = .422e5, R1 = .825e4, type = ES1]), 2 = TABLE([R5 = .162e4, f...
ARC_bp_OZ_R := TABLE([1 = TABLE([R5 = .237e4, ft = .1e7, R3 = .715e5, A0 = .1e6, R4 = .402e4, Ck = .268604917441303855e-9, C1 = .33e-7, R2 = .422e5, R1 = .825e4, type = ES1]), 2 = TABLE([R5 = .162e4, f...

[Maple Bitmap]

Navržená kaskádní struktura filtru je složena třemi bikvady - první dva typu ES1 (eliptické sekce) a třetí typu BP2. Zapojení všech typů používaných obvodů je uvedeno zde včetně volitelných paramerů.

Analýza výsledných kaskádních struktur aktivního RC filtru - vykreslení modulových charakteristik pro ideální filtr, filtr s reálnými operačními zesilovači a pro filtr, u kterého jsou navíc zaokrouhleny hodnoty rezistorů.

>    H_BP_ARC:=MakeH(ARC_bp,p): H_BP_ARC_OZ:=MakeH(ARC_bp_OZ,p): H_BP_ARC_OZ_R:=MakeH(ARC_bp_OZ_R,p):

>    mg_BP_ARC:=MagnitudeHdB(H_BP_ARC)(2*Pi*f): mg_BP_ARC_OZ:=MagnitudeHdB(H_BP_ARC_OZ)(2*Pi*f):  mg_BP_ARC_OZ_R:=MagnitudeHdB(H_BP_ARC_OZ_R)(2*Pi*f):

>    plot([mg_BP_ARC,mg_BP_ARC_OZ,mg_BP_ARC_OZ_R],f=0.1*f_s..1.3*fs,color=[red,blue,green],labels=["f [Hz]","a [dB]"],thickness=2);

[Maple Plot]

Vykreslení datailu frekvenčních charakteristik propustného pásma a vyčíslení modulů pro všechny zlomové frekvence.

>    plot([mg_BP_ARC,mg_BP_ARC_OZ,mg_BP_ARC_OZ_R],f=f_p..fp,color=[red,blue,green],labels=["f [Hz]","a [dB]"],thickness=2);

>    check_ap1:=evalf(subs(f=f_p,mg_BP_ARC)),evalf(subs(f=f_p,mg_BP_ARC_OZ)),evalf(subs(f=f_p,mg_BP_ARC_OZ_R));

>    check_ap2:=evalf(subs(f=fp,mg_BP_ARC)),evalf(subs(f=fp,mg_BP_ARC_OZ)),evalf(subs(f=fp,mg_BP_ARC_OZ_R));

>    check_as:=evalf(subs(f=fs,mg_BP_ARC)),evalf(subs(f=fs,mg_BP_ARC_OZ)),evalf(subs(f=fs,mg_BP_ARC_OZ_R));

>    Cauer_asnew(N3);

[Maple Plot]

check_ap1 := -3.00000000000492834, -2.26145397924738758, -3.10359216646153456

check_ap2 := -3.00000000000484586, -3.80142139294910528, -2.70639324942535220

check_as := -46.8210610677701784, -47.5793090350789662, -47.6540209964755894

46.8210610677701716

Analýza dynamických poměrů kaskádní struktury filtru