mcpField
M
matlab-design-pcb-filter

matlab-design-pcb-filter

github.com/matlabその他1.2k82 回インストール2 日前に更新
リポジトリ

matlab-design-pcb-filter について

PCB 設計向けに、バンドパス、ローパス、バンドストップ、SIW などの RF フィルターを設計する MATLAB スキルです。S パラメータ測定値からの結合行列抽出や、シミュレーション前の確認事項も扱います。

主な機能

  1. 01複数のバンドパスフィルター構造の設計
  2. 02ローパス、バンドストップ、ノッチの設計
  3. 03S パラメータからの結合行列抽出
  4. 04帯域幅、選択度、サイズに応じた構造選択
  5. 05メッシュ密度の確認と S パラメータ計算

活用シーン

  1. 01目標周波数に合わせた PCB フィルター設計
  2. 02測定データを用いたフィルターモデルの解析
  3. 03応答の比較と形状の調整

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-design-pcb-filter

インストール後、Claude Code で/matlab-design-pcb-filterを入力して読み込まれたか確認します。

同梱ファイルmanifest.yaml

詳細

RF フィルターの設計

使用する場面

  • バンドパスフィルター(結合線路、ヘアピン、オープンループ、コムライン、インターデジタル、SIW)を設計する
  • ローパスフィルター(段階インピーダンス)を設計する
  • バンドストップフィルターまたはノッチフィルター(スパーライン、スタブベース)を設計する
  • 測定した S パラメーターのデータから結合行列を抽出する(measuredFilter)
  • 帯域幅、選択度、サイズの要件に応じてフィルターのトポロジーを選択する

使用しない場面

  • インピーダンス制御用の伝送線路を設計する — matlab-design-pcb-transmission-line を使用してください
  • カプラーまたはスプリッターを設計する — matlab-design-pcb-coupler を使用してください
  • 受動部品(インダクター、コンデンサー、バラン)を設計する — matlab-design-pcb-passive を使用してください
  • 基板または導体の材料を設定する — matlab-manage-pcb-material を使用してください
  • 設計後にフィルターの寸法を最適化する — matlab-optimize-pcb-design を使用してください

一般的なワークフロー

  1. 事前: matlab-manage-pcb-material — 基板と導体を設定します
  2. このスキル: フィルターを設計します(カタログオブジェクトまたはカスタム形状)
  3. メッシュ/メモリの確認: memoryEstimate(obj, fc, 'RetainMesh', true) — 完全解析を実行する前に、自動メッシュの密度を確認します
  4. 事後: matlab-analyze-em — S パラメーターを検証します → matlab-optimize-pcb-design — 寸法を調整します → matlab-write-pcb-layout — Gerber をエクスポートします

クイックリファレンス — フィルターの選択

フィルターオブジェクト種類極数最適な用途
filterCoupledLineバンドパス2–8一般的なマイクロストリップ BPF
filterHairpinバンドパス2–8コンパクトな BPF、折り返し共振器
filterOpenLoopバンドパス4/6/8コンパクトな準楕円特性
filterComblineバンドパス2–6狭帯域、高 Q
filterInterdigitalバンドパス2–8広帯域、良好な阻止帯域
filterStepImpedanceLowPassローパス3–9分布定数型 LPF
filterStubLP/HP/BSN スタブ柔軟なスタブトポロジー
filterSpurlineバンドストップ1–2コンパクトなノッチフィルター
SIWFilterバンドパス2–6高 Q の基板内導波管
measuredFilterバンドパスN測定値からのモデル抽出

バンドパスフィルター

結合線路フィルター
f = filterCoupledLine;
f = design(filterCoupledLine, 3e9);    % Design at 3 GHz
show(f);
sp = sparameters(f, linspace(1e9, 5e9, 101), 'SweepOption', 'interp');
rfplot(sp);

主なプロパティ:FilterOrder、CoupledLineLength、CoupledLineWidth、CoupledLineSpacing、PortLineLength、PortLineWidth。

ヘアピンフィルター

コンパクト化のための、折り返し結合線路共振器です。

f = design(filterHairpin, 3e9);
show(f);
memoryEstimate(f, 3e9, 'RetainMesh', true);  % Check mesh density before solving
sp = sparameters(f, linspace(1e9, 5e9, 101), 'SweepOption', 'interp');
rfplot(sp);

主なプロパティ:FilterOrder、CoupledLineLength、CoupledLineWidth、CoupledLineSpacing、PortLineLength、PortLineWidth、Spacing、ResonatorOffset、FeedOffset。

チェビシェフ応答

design() に FilterType と RippleFactor を渡すと、等リップル通過帯域応答を得られます。

f = design(filterHairpin, 1.8e9, FBW=10, FilterType='Chebyshev', RippleFactor=0.5);

FilterType の選択肢:'Butterworth'(デフォルト)、'Chebyshev'。FBW は比帯域幅(%)を設定します。RippleFactor は通過帯域のリップルを dB 単位で設定します(デフォルトは 0.5)。これはチェビシェフの場合にのみ適用されます。

5 次ヘアピンフィルター
f = filterHairpin;
f.FilterOrder = 5;
f = design(f, 2.4e9);
show(f);
オープンループフィルター

クロスカップリングによる準楕円応答です。

f = filterOpenLoop;
f.NumPoles = 6;
f.FeedOffset = 0.5e-3;
show(f);
sp = sparameters(f, linspace(1e9, 5e9, 101), 'SweepOption', 'interp');
rfplot(sp);

主なプロパティ: NumPoles(4/6/8)、ResonatorLength、ResonatorWidth、SplitGap、GapHorizontal、GapVertical、FeedOffset、CoupledResonatorGap、QuadrupletGap、QuadrupletOffset。

コムラインフィルター

短絡共振器を使用し、狭帯域に適しています。注: filterCombline には design 関数がありません。プロパティを手動で設定してください。

f = filterCombline;
f.FilterOrder = 3;
f.Height = 1.6e-3;
show(f);

主なプロパティ: FilterOrder、ResonatorLength(スカラーまたはベクトル)、ResonatorWidth、ResonatorSpacing(スカラーまたはベクトル)、ResonatorOffset、FeedOffset、Capacitor(負荷容量。コムラインに固有)。

インターデジタルフィルター

短絡共振器を交互に配置し、広帯域に対応します。注: filterInterdigital には design 関数がありません。プロパティを手動で設定してください。

f = filterInterdigital;
f.FilterOrder = 4;
f.Height = 1.6e-3;
show(f);
sp = sparameters(f, linspace(3e9, 7e9, 101), 'SweepOption', 'interp');
rfplot(sp);

主なプロパティ: FilterOrder、ResonatorLength(スカラーまたはベクトル)、ResonatorWidth(スカラーまたはベクトル)、ResonatorSpacing(スカラーまたはベクトル)、ResonatorOffset、ViaDiameter(スカラーまたはベクトル。インターデジタルに固有)、FeedOffset、IsShielded、Connector。

ローパスフィルター

ステップインピーダンス型ローパスフィルター
f = filterStepImpedanceLowPass;
f = design(filterStepImpedanceLowPass, 2.5e9);
show(f);
sp = sparameters(f, linspace(0.1e9, 5e9, 101), 'SweepOption', 'interp');
rfplot(sp);

主なプロパティ:FilterOrder、HighZLineWidth、LowZLineWidth、HighZLineLength、LowZLineLength。

バンドストップ/ノッチフィルター

スパーラインフィルター

片側に結合線路セクションを使った、コンパクトなノッチフィルターです。

f = filterSpurline;
show(f);
sp = sparameters(f, linspace(1e9, 6e9, 51), 'SweepOption', 'interp');
rfplot(sp);

より深い減衰を実現するダブルスパーラインです。

f = filterSpurline;
f.LineType = 'Double';
show(f);

主なプロパティ: LineType('Single'/'Double')、CoupledLineLength、CoupledLineWidth、CoupledLineSpacing、LineGap(結合線路と出力線路の間隔。スパーライン特有のプロパティ)、IsShielded、Connector。

スタブフィルター(オープン/ショート)

filterStub オブジェクトは、開放端スタブ(バンドストップ)と短絡端スタブ(ハイパス)に対応しています。

f = filterStub;
f.StubLength = [6e-3 6e-3 6e-3];
f.StubWidth = [0.5e-3 0.5e-3 0.5e-3];
f.StubOffsetX = [-6e-3 0 6e-3];
f.StubShort = [0 0 0];         % 0=open (bandstop), 1=short (highpass)
f.StubDirection = [0 0 0];     % 0=below, 1=above trace
f.SeriesLineWidth = 1.8e-3;
f.SeriesLineLength = 12e-3;
show(f);

主なプロパティ: StubLength(ベクトル)、StubWidth(ベクトル)、StubFeedOffsetX(ベクトル)、StubShort(0=オープン、1=ショート。ベクトル)、StubDirection(0=下向き、1=上向き。ベクトル)、SeriesLineLength、SeriesLineWidth、IsShielded、Connector。

ラジアルスタブ
rs = stubRadialShunt;
rs = design(stubRadialShunt, 5e9);
show(rs);

SIW バンドパスフィルター

SIWFilter では FilterOrder ではなく NumResonators を使用します。また、Substrate は読み取り専用であり、内部の共振器オブジェクトを通じて設定します。

f = SIWFilter;
f.NumResonators = 4;
show(f);
sp = sparameters(f, linspace(8e9, 14e9, 51), 'SweepOption', 'interp');
rfplot(sp);

測定フィルターの抽出

measuredFilter は、測定またはシミュレーションによる 2 ポート S パラメーターデータから、結合共振器回路モデル(結合行列、外部 Q、無負荷 Q)を抽出します。これにより、フィルターの調整や診断、理想的な合成目標との比較が可能になります。

主なプロパティ:

  • Sparameters — 2 ポート S パラメーターデータ(sparameters オブジェクト)
  • FilterOrder — モデル内の共振器数
  • CenterFrequency — 通過帯域の中心周波数(Hz)
  • BandWidth — 3 dB 帯域幅(Hz)
  • CouplingMatrix — 抽出された N+2 結合行列(抽出後に設定)
  • QualityFactor — 無負荷品質係数(qualityfactor() の実行後に設定)

主なメソッド:

  • residue(mf) — S パラメーターデータからローパスアドミタンスの留数と極を抽出します
  • transversalMat(mf) — 留数から横型結合行列を計算します
  • canonicalCouplingMat(mf) — 横型行列を正準形(折り返し形)に回転します
  • optimize(mf) — 結合行列の等スペクトル最適化を行います
  • sparameters(mf, freq) — 抽出された回路モデルから S パラメーターを合成します
  • qualityfactor(mf) — 無負荷品質係数を計算します
ワークフロー全体
% Step 1: Load measured S-parameters and inspect visually
S_meas = sparameters('measured_filter.s2p');
rfplot(S_meas);
% Identify center frequency and bandwidth from the plot

% Step 2: Create measuredFilter with matching initial guess
mf = measuredFilter(Sparameters=S_meas, ...
    FilterOrder=8, ...
    CenterFrequency=2114.6e6, ...
    BandWidth=9.6e6);

% Step 3: Extract residues and poles
residue(mf);

% Step 4: Build transversal matrix, then rotate to canonical form
transversalMat(mf);
M = canonicalCouplingMat(mf);
disp(mf.CouplingMatrix);

% Step 5: Optimize coupling matrix (isospectral flow)
mf = optimize(mf);

% Step 6: Compare extracted model vs measured data
freq = linspace(2.08e9, 2.15e9, 501);
S_model = sparameters(mf, freq);
rfplot(S_meas); hold on;
rfplot(S_model, '--');
legend('Measured', 'Extracted Model');

% Step 7: Quality factor
Q = qualityfactor(mf);
disp(mf.QualityFactor);

カスタムフィルターの組み立て

カタログにないトポロジーは、pcbComponent を使って構築します。

% Example: custom 2-pole open-loop filter from shape primitives
sub = dielectric("FR4");
sub.Thickness = 1.6e-3;
cond = metal("Copper");

% Build resonator shapes using traceLine, traceRectangular, Boolean ops
% (see matlab-assemble-pcb-layout skill)

pcb = pcbComponent;
pcb.Layers = {filterShape, sub, groundPlane};
pcb.BoardShape = groundPlane;
pcb.BoardThickness = sub.Thickness;
pcb.Conductor = cond;
pcb.FeedDiameter = feedWidth/2;
pcb.FeedLocations = [x1 y1 1 3; x2 y2 1 3];

多層フィルター

すべてのフィルターカタログオブジェクトは、多層誘電体に対応しています。

f = design(filterCoupledLine, 3e9);
sub = dielectric("FR4", "Teflon");
sub.Thickness = [0.8e-3 0.4e-3];   % Set Thickness BEFORE assigning to filter
f.Substrate = sub;
f.Height = 1.2e-3;
show(f);

フィルター選択ガイド

用途推奨フィルター備考
コンパクトなバンドパスfilterHairpin共振器を折り曲げて基板面積を節約します
標準的なバンドパスfilterCoupledLinedesign() に対応し、最初に試すのに最適です
高選択度のバンドパスfilterInterdigital良好な阻止帯域減衰を持ち、広帯域に対応します
容量装荷型バンドパスfilterCombline狭帯域、高 Q、短い共振器です
交差結合/伝送零点を持つバンドパスfilterOpenLoop準楕円型で、伝送零点を持ちます。design() に対応します
SIW 技術によるバンドパスSIWFilter基板内導波管による高 Q フィルターです
ステップインピーダンス型ローパスfilterStepImpedanceLowPassdesign() に対応します
ノッチ型バンドストップfilterSpurline非常にコンパクトで、シングルまたはダブルに対応します
スタブ型バンドパス/バンドストップfilterStubオープン/ショートのスタブトポロジーに柔軟に対応します。design() には非対応です
データからのモデル抽出measuredFilter測定データから結合行列を抽出します

設計の調整

問題調整項目方向
通過帯域が広すぎるFilterOrder、Spacing次数を上げ、間隔を狭めます
挿入損失が大きすぎるConductor の厚さ実際の金属を使用し、厚さを増やします
減衰が不十分FilterOrder増やします
中心周波数がずれているdesign(filt, freq) を再実行--
リターンロスが悪いFeedOffset、FeedType給電位置を調整します

落とし穴

  1. S パラメーターには補間スイープを使用する:MoM ソルブでは、必ず sparameters(obj, freq, 'SweepOption', 'interp') を使用してください。直接スイープでは各周波数点を個別に計算するため、大幅に時間がかかります。

  2. 計算前にメッシュ密度を確認する:カタログフィルターでは、実行時間の大半を占める高密度の自動メッシュが生成されます。sparameters() を実行する前に、必ず memoryEstimate(obj, fc, 'RetainMesh', true) を実行してください。メモリー使用量が過剰な場合は、mesh(obj, 'MaxEdgeLength', lambda/6) でメッシュを粗くします。メッシュを詳細に検査するワークフローについては、matlab-analyze-em を参照してください。

  3. FilterOrder と NumPoles:オブジェクトによって、FilterOrder を使用するものと NumPoles を使用するものがあります。対象のオブジェクトのプロパティを確認してください。

  4. PortLineLength は応答に影響する:ポートの給電線長は位相に影響し、フィルターの見かけ上の中心周波数をずらすことがあります。適切に励振するために、十分な長さを確保してください。

  5. design() はすべての寸法を設定する:design(obj, fc) を実行すると、すべての幾何パラメーターが上書きされます。プロパティをカスタマイズする場合は、design を実行してから設定してください。

  6. 結合線路フィルターの帯域幅:帯域幅は CouplingSpacing によって制御されます。間隔が狭いほど結合が強くなり、帯域幅が広くなりますが、製造上の制限があります。

  7. StubShort の規則:filterStub では、StubShort=0 は開放端スタブ(帯域阻止フィルターを生成)、StubShort=1 は短絡スタブ(ハイパスフィルターを生成)を意味します。直感に反する設定です。

  8. combline/interdigital/stub では design() を使用できない:filterCombline、filterInterdigital、filterStub は design() をサポートしていません。共振器理論に基づいて、寸法を手動で設定してください。

  9. SIWFilter の Substrate は読み取り専用:SIWFilter.Substrate を直接設定することはできません。基板は、内部の共振器および伝送線路の要素オブジェクトを通じて制御します。

  10. measuredFilter では初期推定値が重要です。 CenterFrequency と BandWidth は、測定データの実際の通過帯域に近い値である必要があります。初期値が不適切だと、residue() が誤った極を抽出します。最初に S パラメーターデータを目視で確認してください。

  11. ResonatorSpacing ベクトルの長さ = FilterOrder - 1:コムライン、インターデジタル、ヘアピンフィルターでは、ResonatorSpacing は共振器 間 の間隔を指定します。N 次フィルターには N 個の共振器がありますが、間隔は N-1 個です。N 個の要素を渡さないでください。N-1 個を渡してください。

  12. GroundPlaneLength はほとんどのフィルターで読み取り専用:filterCombline、filterHairpin、filterInterdigital では、GroundPlaneLength と GroundPlaneWidth は共振器の寸法から自動計算されます。これらを設定しようとしないでください。

関連スキル

  • matlab-manage-pcb-material — フィルター性能に応じた基板の選択
  • matlab-analyze-em — S パラメーターの抽出と電界の可視化
  • matlab-optimize-pcb-design — フィルター寸法の最適化
  • matlab-assemble-pcb-layout — pcbComponent によるカスタムフィルタートポロジー
  • matlab-design-pcb-passive — フィルター向けの共振器、バラン、スプリットリング構造

Copyright 2026 The MathWorks, Inc.

コメント