Pythonの高周波ライブラリscikit-rfを使ってマイクロ波LCフィルタ合成をする(2) Circuit機能を使ってL,CをつなげていってLPF(ローパスフィルタ)を合成してSパラメータを得る。チェビシェフとバタワースを比較したり素子の繋がりを図示したり。
さて先日は素子の値を求める関数を作った。
今回はその値を持つL,Cをつなげて実際のフィルタを作ってみる。scikit-rfのCircuit機能を使う。
https://scikit-rf.readthedocs.io/en/latest/tutorials/Circuit.html
作った関数のコードはこちら。
def LPF_synthesis(n, fc, fstart, fstop, points, z0=50.0, first_element="series", type = "Chebyshev", ripple = 0.1):
"""
LPFを合成し、scikit-rfのCircuitとして返す関数
n : フィルタの次数(チェビシェフの場合、偶数だと負荷のインピーダンスが50Ωになりません)
fc : カットオフ周波数[GHz]
fstart : 開始周波数[GHz]
fstop : 終了周波数[GHz]
points : 周波数点数
z0 : 信号源の特性インピーダンス
first_element : 最初にシリーズのLが来る場合"series", 最初にシャントのCが来る場合"shunt"
type : チェビシェフの場合"Chebyshev", バタワースの場合 "Butterworth"
ripple : チェビシェフの場合のリップルの大きさをdBで表したもの
"""
freq = rf.Frequency(start=fstart, stop=fstop, unit='GHz', npoints=points)
LC_elements = LC_LPF(n, fc, z0, first_element, type, ripple)
tl_media = rf.DefinedGammaZ0(freq, z0=LC_elements[0], gamma=1j*freq.w/rf.c)
gnd = rf.Circuit.Ground(freq, name='gnd')
port1 = rf.Circuit.Port(freq, name='port1', z0=z0)
port2 = rf.Circuit.Port(freq, name='port2', z0=LC_elements[-1])
if first_element == "series":
L = [0]
C = [0]
countL = 1
countC = 1
for k in range(1, n + 1):
if k % 2 != 0:
L.append(tl_media.inductor(LC_elements[k], name = f"L{countL}"))
countL +=1
else:
C.append(tl_media.capacitor(LC_elements[k], name = f"C{countC}"))
countC += 1
cnx = [[(port1, 0), (L[1], 0)]]
if n % 2 != 0:
for k in range(1, n//2 + 1):
cnx.append([(L[k], 1), (C[k], 0), (L[k+1], 0)])
cnx.append([(L[n//2 + 1], 1), (port2, 0)])
else:
for k in range(1, n//2):
cnx.append([(L[k], 1), (C[k], 0), (L[k+1], 0)])
cnx.append([(L[n//2], 1), (C[n//2], 0), (port2, 0)])
gnd_cnx = [(gnd, 0)]
for k in range(1, n//2 + 1):
gnd_cnx.append((C[k],1))
cnx.append(gnd_cnx)
elif first_element == "shunt":
L = [0]
C = [0]
countL = 1
countC = 1
for k in range(1, n + 1):
if k % 2 != 0:
C.append(tl_media.capacitor(LC_elements[k], name = f"C{countC}"))
countC +=1
else:
L.append(tl_media.inductor(LC_elements[k], name = f"L{countL}"))
countL += 1
cnx = [[(port1, 0), (C[1], 0), (L[1], 0)]]
gnd_cnx = [(gnd, 0)]
if n % 2 != 0:
for k in range(1, n//2):
cnx.append([(L[k], 1), (C[k+1], 0), (L[k+1], 0)])
cnx.append([(L[n//2], 1), (C[n//2 + 1], 0), (port2, 0)])
for k in range(1, n//2 + 2):
gnd_cnx.append((C[k],1))
else:
for k in range(1, n//2):
cnx.append([(L[k], 1), (C[k+1], 0), (L[k+1], 0)])
cnx.append([(L[n//2], 1), (port2, 0)])
for k in range(1, n//2 + 1):
gnd_cnx.append((C[k], 1))
cnx.append(gnd_cnx)
return rf.Circuit(cnx)
|
LPFを合成し、scikit-rfのCircuitとして返す関数
n : フィルタの次数(チェビシェフの場合、偶数だと負荷のインピーダンスが50Ωになりません)
fc : カットオフ周波数[GHz]
fstart : 開始周波数[GHz]
fstop : 終了周波数[GHz]
points : 周波数点数
z0 : 信号源の特性インピーダンス
first_element : 最初にシリーズのLが来る場合"series", 最初にシャントのCが来る場合"shunt"
type : チェビシェフの場合"Chebyshev", バタワースの場合 "Butterworth"
ripple : チェビシェフの場合のリップルの大きさをdBで表したもの
となっている。
ではやってみよう。まずは9次のチェビシェフフィルタ(リップル0.5dB)と9次のバタワースフィルタを比較する。
« 高周波・RFニュース 2024年7月24日 Qualcommの6G TCO削減解説、iFixitのゲームカートリッジに息を吹きかけると効果あるか?SamsungのGalaxy Z Fold6, Flip6の内部構造解説,GSAウェビナー アジア太平洋地域の5G,Wi-Fi 8におけるミリ波,MACOMの55GHzまでのLNA | トップページ | 高周波・RFニュース 2024年7月25日 Vishayの車載向け70GHz薄膜チップ抵抗、Google,Volvoが6G人材募集中、MatsingとKeysightの5G/6G動画、TT-Mobileに対してAT&TとVerisonの5Gは低速、太陽誘電のスマホ向け積層メタル系パワーインダクタ »
「パソコン・インターネット」カテゴリの記事
- Google ColabのJulia言語でFPUT問題(Fermi–Pasta–Ulam–Tsingou、非線形結合した振動子が最初に与えたモードに戻る再帰現象)をDifferentialEquations.jlの2階の常微分方程式ソルバーDynamicalODEProblemでシンプレクティック8次のKahanLi8で計算、振動子の動きも動画にしてみる。(2025.05.22)
- PythonでFDTD法で電磁界シミュレーションできるopenEMSを使う(2)例題にあるマイクロストリップパッチアンテナ(MSA)を計算する。Sパラメータや入力インピーダンスだけでなく近傍界から遠方界の変換で指向性も計算できる。電流分布も動画で見る。給電はLumpedポートが使える。(2025.05.19)
- PythonでFDTD法で電磁界シミュレーションできるopenEMSを使う(1)例題にあるマイクロストリップラインのノッチフィルタ(スタブ)を動かして電磁界分布を動画で見てみる。CSXCADでモデルは確認できるし、ParaViewで電磁界分布が見られる。Sパラメータも計算できる。(2025.05.14)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年5月22日 三星電機(SEMCO)が165℃対応の車載インダクタ発表、KYOCERA AVXがリップル電流についての技術文書発行、QualcommとXiaomiの契約15年目、OmdiaがNokiaをPrivate 5Gの2025の王者と決定(2025.05.22)
- Google ColabのJulia言語でFPUT問題(Fermi–Pasta–Ulam–Tsingou、非線形結合した振動子が最初に与えたモードに戻る再帰現象)をDifferentialEquations.jlの2階の常微分方程式ソルバーDynamicalODEProblemでシンプレクティック8次のKahanLi8で計算、振動子の動きも動画にしてみる。(2025.05.22)
- 高周波・RFニュース 2025年5月21日 TDKが0201のRFインダクタ発表、InfineonがUWBのFiraコンソーシアムの理事会に、ubloxがロボット用GNSSモジュール発表、FibocomがMediaTekのT930を使った5Gモジュール発表、Motolora Edge 60 Pro分解動画(2025.05.21)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年5月22日 三星電機(SEMCO)が165℃対応の車載インダクタ発表、KYOCERA AVXがリップル電流についての技術文書発行、QualcommとXiaomiの契約15年目、OmdiaがNokiaをPrivate 5Gの2025の王者と決定(2025.05.22)
- Google ColabのJulia言語でFPUT問題(Fermi–Pasta–Ulam–Tsingou、非線形結合した振動子が最初に与えたモードに戻る再帰現象)をDifferentialEquations.jlの2階の常微分方程式ソルバーDynamicalODEProblemでシンプレクティック8次のKahanLi8で計算、振動子の動きも動画にしてみる。(2025.05.22)
- 高周波・RFニュース 2025年5月21日 TDKが0201のRFインダクタ発表、InfineonがUWBのFiraコンソーシアムの理事会に、ubloxがロボット用GNSSモジュール発表、FibocomがMediaTekのT930を使った5Gモジュール発表、Motolora Edge 60 Pro分解動画(2025.05.21)
« 高周波・RFニュース 2024年7月24日 Qualcommの6G TCO削減解説、iFixitのゲームカートリッジに息を吹きかけると効果あるか?SamsungのGalaxy Z Fold6, Flip6の内部構造解説,GSAウェビナー アジア太平洋地域の5G,Wi-Fi 8におけるミリ波,MACOMの55GHzまでのLNA | トップページ | 高周波・RFニュース 2024年7月25日 Vishayの車載向け70GHz薄膜チップ抵抗、Google,Volvoが6G人材募集中、MatsingとKeysightの5G/6G動画、TT-Mobileに対してAT&TとVerisonの5Gは低速、太陽誘電のスマホ向け積層メタル系パワーインダクタ »
コメント