mcpField
M
matlab-design-pcb-coupler

matlab-design-pcb-coupler

github.com/matlab其他1.2k70 次安装1 天前更新
代码仓库

关于 matlab-design-pcb-coupler

该 MATLAB 技能为 RF 与微波设计者提供功分器和耦合器的建模流程,涵盖多种分配拓扑及波束形成网络。还介绍 S 参数、耦合度、方向性和隔离度分析。

主要功能

  1. 01设计 Wilkinson 功分器及宽带变体
  2. 02创建支线、环形和定向耦合器
  3. 03构建企业式功分器与 SIW 分路器
  4. 04设置 Rotman Lens 波束形成网络
  5. 05分析 S 参数、耦合度和隔离度

适用场景

  1. 01设计阵列馈电用的 N 路功率分配器
  2. 02构建用于正交合成的 90° 混合器
  3. 03评估耦合器的耦合度、方向性和隔离度

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/matlab-design-pcb-coupler确认已加载。

附带文件manifest.yaml

详细介绍

设计耦合器和分路器

适用场景

  • 设计 Wilkinson 分路器(等功分、不等功分、宽带),用于功率分配
  • 创建支线耦合器或环形耦合器,用于正交或和差网络
  • 构建企业式功率分配器,用于阵列馈电网络
  • 设计定向耦合器,用于信号取样
  • 创建 SIW 分路器或 Rotman 透镜,用于波束成形

不适用场景

  • 设计传输线——使用 matlab-design-pcb-transmission-line
  • 设计滤波器——使用 matlab-design-pcb-filter
  • 设计无源元件(电感、电容、巴伦)——使用 matlab-design-pcb-passive
  • 将耦合器与其他元件级联——使用 matlab-integrate-pcb-circuit
  • 优化耦合器性能——使用 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-integrate-pcb-circuit——级联到更大的网络中

快速参考——元件选择

对象类型端口数最适用途
wilkinsonSplitter等功分配器3标准二路等功分
wilkinsonSplitterUnequal不等功分配器3非对称功率分配
wilkinsonSplitterWideband宽带等功分配器3多倍频程等功分
couplerBranchline90° 混合耦合器4正交合成/分配
couplerBranchlineWideband宽带 90° 混合耦合器4多节宽带正交网络
couplerRatrace180° 混合耦合器4和差网络
couplerDirectional定向耦合器4取样、多节对称结构
splitterTeeT 形结3简单的电抗性分路
powerDividerCorporateN 路企业式分配器N+1阵列馈电网络
SIWSplitterSIW 功率分配器3高频波导分路
rotmanLens波束成形网络N 个波束 + N 个阵元真时延相控阵

Wilkinson 分路器

等功分
ws = design(wilkinsonSplitter, 3e9);
show(ws);
memoryEstimate(ws, 3e9, 'RetainMesh', true);  % Check mesh before solving
sp = sparameters(ws, linspace(1e9, 5e9, 51), 'SweepOption', 'interp');
rfplot(sp);

关键属性:SplitLineLength、SplitLineWidth、Resistance、PortLineLength、PortLineWidth、GroundPlaneWidth。

不等功分
ws = wilkinsonSplitterUnequal;
ws = design(ws, 3e9);
show(ws);

功率分配比由阻抗变换臂控制。

属性参考(2 元素向量属性):

属性说明默认值
SplitLineLength分路传输线长度(m)0.0279
SplitLineWidth分路传输线宽度(m)[0.0014 0.0049](2 元素向量:每个臂对应一个值)
MatchLineLength输出匹配线长度(m)0.0277
MatchLineWidth输出匹配线宽度(m)[0.0039 0.0066](2 元素向量:每个臂对应一个值)
Resistance隔离电阻(欧姆)106
宽带 Wilkinson

采用多节结构以扩展带宽:

ws = wilkinsonSplitterWideband;
ws = design(ws, 5e9);
show(ws);
sp = sparameters(ws, linspace(2e9, 8e9, 51), 'SweepOption', 'interp');
rfplot(sp);

属性参考(向量属性会随 NumSections 缩放):

属性说明默认值(3 节)
NumSections级联节数3
Shape各节的形状"Rectangular"("Circular")
SplitLineWidth四分之一波长变换器的宽度(m)[8.55e-04 0.0014 0.0021](向量,每节对应一个值)
Resistance隔离电阻值(欧姆)[100 183.40 141.42](向量,每节对应一个值)
多层 Wilkinson
ws = design(wilkinsonSplitter, 5e9);
sub = dielectric("FR4", "Teflon");
sub.Thickness = [1e-3 0.5e-3];         % Set Thickness BEFORE assigning to component
ws.Substrate = sub;
ws.Height = 1.5e-3;
show(ws);

支线耦合器

标准型(单节)
bl = design(couplerBranchline, 5e9);
show(bl);

freq = linspace(3e9, 7e9, 51);
sp = sparameters(bl, freq, 'SweepOption', 'interp');
rfplot(sp);

关键属性:SeriesArmLength、SeriesArmWidth、ShuntArmLength、ShuntArmWidth、PortLineLength、PortLineWidth。

宽带(多节)
blw = couplerBranchlineWideband;
blw.NumSections = 3;
blw = design(blw, 5e9);
show(blw);

属性参考(矢量属性会随 NumSections 缩放):

属性描述默认值(2 节)
NumSections支节数量2
SeriesArmWidth串联臂宽度(m)0.0051(标量或矢量)
ShuntArmWidth并联臂宽度(m)[0.00096 0.0029 0.00096](矢量,包含 NumSections+1 个元素)
IsShielded添加金属屏蔽false
带 DGS 的支线耦合器

添加 DGS 可提高方向性和隔离度:

bl = design(couplerBranchline, 5e9);
dgsShape = dumbbell;
dgsShape.SideLength = 3e-3;       % Head size (default Type='Square')
dgsShape.ArmLength = 5e-3;
dgsShape.ArmWidth = 0.3e-3;
bl = dgs(bl, {dgsShape});         % Must capture return value
show(bl);
耦合器的分析方法
freq = linspace(3e9, 7e9, 51);

% Coupling factor (S31 for branchline)
coupling(bl, freq);

% Directivity
directivity(bl, freq);

% Isolation (S41 for branchline)
isolation(bl, freq);

Ratrace 耦合器

180° 混合耦合器(求和/差分端口):

rr = design(couplerRatrace, 5e9);
show(rr);

freq = linspace(3e9, 7e9, 51);
sp = sparameters(rr, freq, 'SweepOption', 'interp');
rfplot(sp);

% Analysis
coupling(rr, freq);
directivity(rr, freq);
isolation(rr, freq);

关键属性:RingRadius、RingWidth、PortLineWidth、PortLineLength。

Ratrace 上的电荷和电流
figure; current(rr, 5e9);
figure; charge(rr, 5e9);

定向耦合器

多节对称定向耦合器。注意:couplerDirectional 没有 design 函数 — 请手动设置属性:

dc = couplerDirectional;
dc.NumSections = 3;
dc.Width = [2.8e-3 2.8e-3 2.8e-3];       % One value per section
dc.Spacing = [1.3e-3 1.3e-3 1.3e-3];     % One value per section
dc.GroundPlaneLength = 0.15;               % Must accommodate total length
show(dc);

freq = linspace(3e9, 7e9, 51);
coupling(dc, freq);
directivity(dc, freq);

关键属性:NumSections、Length(标量)、Width(矢量,每节一个)、Spacing(矢量,每节一个)、PortLineWidth、GroundPlaneLength。

T 形结与企业馈电分配器

T 形分路器

简单的电抗性 T 形结。Shape 属性控制结点几何形状:

形状值描述
'RectangularMitered'带斜接弯角的矩形(默认)
'RectangularCurved'带曲线弯角的矩形
'Circular'圆形结点
st = splitterTee;
st = design(splitterTee, 5e9);
show(st);
sp = sparameters(st, linspace(3e9, 7e9, 51), 'SweepOption', 'interp');
rfplot(sp);

% Circular shape variant
st2 = splitterTee(Shape='Circular');
st2 = design(st2, 5e9);
show(st2);
企业式功率分配器(N 路)

用于阵列馈电网络:

cpd = powerDividerCorporate;
cpd.NumOutputPorts = 4;       % 1:4 divider
cpd = design(cpd, 5e9);
show(cpd);
sp = sparameters(cpd, linspace(3e9, 7e9, 51), 'SweepOption', 'interp');
rfplot(sp);
8 路企业式功率分配器
cpd = powerDividerCorporate;
cpd.NumOutputPorts = 8;
cpd = design(cpd, 2.4e9);
show(cpd);

SIW 分路器

siw_s = SIWSplitter;
siw_s = design(siw_s, 10e9);
show(siw_s);

FeedLine 属性是一个 traceTapered 对象,用于控制微带线到 SIW 的过渡:

siw_s.FeedLine.InputWidth = 1e-3;
siw_s.FeedLine.OutputWidth = 3e-3;
show(siw_s);

设计工作流

  1. 选择拓扑:根据需求(等分/不等分、带宽、隔离度)进行选择
  2. 按中心频率设计:obj = design(ObjectType, fc)
  3. 可视化:show(obj)
  4. 分析 S 参数:sparameters(obj, freq, 'SweepOption', 'interp')
  5. 检查指标:coupling、directivity、isolation
  6. 自定义:调整属性以适应特定阻抗、基板和尺寸
  7. 按需优化(参见 matlab-optimize-pcb-design)

耦合器专用分析函数

以下函数适用于 4 端口耦合器对象:couplerBranchline、couplerBranchlineWideband、couplerRatrace、couplerDirectional。

函数测量内容签名
coupling(obj, freq)耦合因子(dB)—传输至耦合端口的功率默认绘图;cVal = coupling(obj, freq) 返回数值
directivity(obj, freq)方向性(dB)—前向与后向耦合功率的分离度默认绘图;dVal = directivity(obj, freq) 返回数值
isolation(obj, freq)隔离度(dB)—泄漏至隔离端口的功率默认绘图;iVal = isolation(obj, freq) 返回数值
c = design(couplerBranchline, 2.4e9);
freq = linspace(2e9, 3e9, 101);

coupling(c, freq);              % plots coupling factor
cVal = coupling(c, freq);       % returns numeric values (dB)

directivity(c, freq);           % plots directivity
dVal = directivity(c, freq);    % returns numeric values (dB)

isolation(c, freq);             % plots isolation
iVal = isolation(c, freq);      % returns numeric values (dB)

端口编号约定

3 端口(分路器)
端口功能
1输入
2输出(直通)
3输出(分路)
4 端口(耦合器)
端口支线耦合器Ratrace
1输入输入
2直通(-3dB,0°)求和
3耦合(-3dB,-90°)差分
4隔离直通

Rotman Lens(波束成形网络)

rotmanLens 是一个 N 波束、N 阵列的真时延波束成形网络。

lens = rotmanLens;
lens.NumBeamPorts  = 4;
lens.NumArrayPorts = 4;
lens.NumDummyPorts = 4;       % Absorb reflected energy at lens edges
lens.BeamPortAngle = 40;      % Angular spread of beam ports (degrees)
lens.MaxScanAngle  = 30;      % Maximum scan angle (degrees)
lens.Height        = 5.08e-4;
lens.Conductor     = metal("Copper");
show(lens);
layout(lens);

关键属性:OnaxisFocalLength、OffaxisFocalLength(根据扫描角自动计算)。BeamTaper 和 ArrayTaper 控制锥削馈线形状(traceTapered 对象)。

SIW 功率分配器

SIWSplitter 是一种基板集成波导 1:2 功率分配器。

s = SIWSplitter;
s.InputLineLength = 0.0155;
s.SplitLineLength = 0.0145;
s.Width           = 0.0125;
s.ViaSpacing      = [0.0017, 0.011];    % [wall via spacing, split via spacing]
s.ViaDiameter     = 5e-4;
s.PostDiameter    = 2.54e-4;
s.PostOffsetX     = 5.5e-3;
s.Height          = 8e-4;
show(s);

通过 FeedLine 属性自定义馈线:

s.FeedLine = traceRectangular(Length=3e-3, Width=2e-3);

注意事项

  1. 对 S 参数使用插值扫描:对于 MoM 求解,始终使用 sparameters(obj, freq, 'SweepOption', 'interp')。直接扫描会在每个频率点单独求解,速度明显更慢。

  2. 求解前检查网格密度:目录耦合器会生成密集的自动网格,这会显著增加运行时间。调用 sparameters() 前,始终先运行 memoryEstimate(obj, fc, 'RetainMesh', true)。如果内存占用过高,请调粗网格:mesh(obj, 'MaxEdgeLength', lambda/6)。完整的网格检查工作流请参见 matlab-analyze-em。

  3. Wilkinson 中的电阻:隔离电阻的默认值为 100 ohm(2×Z0)。对于非 50-ohm 系统,请相应调整 Resistance 属性。

  4. 端口编号可能不同:不同类型的耦合器端口编号各不相同。解读 S 参数前,始终先用 show(obj) 检查各端口对应的位置。

  5. 宽带耦合器节段:节段越多,带宽越宽,但尺寸也越大。每个节段在中心频率处约增加四分之一波长。

  6. 企业式分配器的对称性:powerDividerCorporate 要求 NumOutputPorts 为 2 的幂(2、4、8、16……)。

  7. 企业式分配器的基板:powerDividerCorporate.Substrate 为只读属性。请改为设置 corp.SplitterElement.Substrate 上的基板——企业式分配器由其单元 SplitterElement(一个 wilkinsonSplitter)构建。注意:design() 可能会覆盖基板厚度。

  8. 企业式分配器的网格很大:多路企业式分配器是体积较大的结构。在高频下,内存需求可能超过数百 GB。如果无法进行全波仿真,请使用行为 S 参数('Behavioral', true)快速验证幅度和相位平衡。

  9. 在 design() 之前设置基板:design(obj, fc) 会根据当前基板自动确定尺寸。在 design() 之后设置基板只会更改材料,不会重新计算尺寸,导致阻抗不正确。务必先设置 Substrate,再调用 design()。

  10. DGS 耦合:在耦合器中添加 DGS 可将方向性提高 10-15 dB,但会使中心频率略有偏移。添加 DGS 后请重新调谐。

  11. SplitterTee 是电抗性的:与 Wilkinson 不同,T 形结是电抗性(无损)分配,输出端口之间没有隔离。需要隔离时请使用 Wilkinson。

  12. couplerDirectional 不支持 design():couplerDirectional 不支持 design()。请手动设置 Length、Width、Spacing 和 NumSections。

  13. couplerDirectional 多节段尺寸:当 NumSections > 1 时,Width 和 Spacing 必须是向量,每个节段对应一个元素。Length 仍为标量。此外,请增大 GroundPlaneLength 以容纳更长的结构——默认值仅适用于 1 个节段。

  14. 通过短截线/谐振器级联耦合器:要将短截线或谐振器物理连接到耦合器端口,请使用 pcbcascade(pcbComponent(coupler), pcbComponent(stub), portA, portB)。确保两个对象的 Height、Substrate 和 Conductor 相匹配。已连接的端口会消失——请用 show(combined) 验证剩余端口数量。级联详情请参见 matlab-integrate-pcb-circuit。

  15. 目录耦合器仅支持 MoM:couplerBranchline 等对象仅原生支持 MoM。若要使用 FEM,请用 pcbComponent 封装,并在构造后(而非构造时)设置 SolverType:

    bl = design(couplerBranchline, 5e9);
    pcb = pcbComponent(bl);
    pcb.SolverType = 'FEM';
    s = solver(pcb);
    s.BoundaryCondition = 'perfectly-matched-layer';
    

    请勿将 SolverType 作为名称-值参数传递给 pcbComponent()。FEM 需要 IDMF 求解器引擎(Windows 上通过 WSL 运行)——如果缺少 idmf_hub,请改用 MoM。FEM 的前置条件和故障排除方法请参见 matlab-analyze-em。

相关技能

  • matlab-manage-pcb-material — 基板配置
  • matlab-analyze-em — S 参数和场分析
  • matlab-optimize-pcb-design — 优化耦合器/功分器性能
  • matlab-integrate-pcb-circuit — 将功分器与其他组件组合

Copyright 2026 The MathWorks, Inc.

评论

支持 Markdown