mcpField
M
matlab-design-pcb-txline

matlab-design-pcb-txline

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

关于 matlab-design-pcb-txline

这是一项使用 RF PCB Toolbox 设计和分析 PCB 传输线的 MATLAB 技能,面向处理阻抗控制与耦合结构的工程师。它涵盖常见线型、差分对、SIW、串扰以及快速二维横截面分析。

主要功能

  1. 01设计微带线、带状线和 CPW
  2. 02耦合线与差分线分析
  3. 03NEXT/FEXT 串扰建模
  4. 04SIW 传输线建模
  5. 05二维横截面 RLGC 提取

适用场景

  1. 01按目标阻抗确定传输线尺寸
  2. 02分析差分对耦合
  3. 03根据侵扰线估算 NEXT/FEXT
  4. 04提取均匀 PCB 横截面的 RLGC 参数

安装

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

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

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

附带文件manifest.yamlreferences/custom-bends-and-traces.md

详细介绍

设计传输线

适用场景

  • 设计微带线、带状线或 CPW 传输线以控制阻抗
  • 对有或无干扰走线的差分对进行建模,以分析 NEXT/FEXT 串扰
  • 分析 2D 横截面,快速提取单位长度 RLGC 参数
  • 创建 SIW(基板集成波导)传输线
  • 使用 design() 在给定频率下自动调整传输线尺寸,以达到目标阻抗

不适用场景

  • 根据形状构建自定义 PCB 结构 — 使用 matlab-assemble-pcb-layout
  • 设置基板或导体材料 — 使用 matlab-manage-pcb-material
  • 设计完成后运行 S 参数或场分析 — 使用 matlab-analyze-em
  • 将传输线与其他元件级联 — 使用 matlab-integrate-pcb-circuit

工具选择优先级

  1. RF PCB Toolbox(默认):microstripLine、pcb2D、stripLine、coplanarWaveguide 等

    • 2D 场求解器 — 对损耗、耦合和任意叠层结构的计算准确
    • 任何 RLGC、阻抗、横截面或传输线设计任务均使用此工具
  2. RF Toolbox(仅作为后备):txlineMicrostrip、txlineStripline、txlineCPW

    • 基于解析闭式解的近似,准确度较低
    • 仅在以下情况使用:用户明确指定这些函数,或表示 RF PCB Toolbox 不可用

典型工作流

  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 — 级联

快速参考

对象拓扑结构关键属性
microstripLine接地平面上的单根微带线长度、宽度、高度、接地平面宽度
stripLine嵌入介质中的信号线长度、宽度、高度、接地平面宽度
coplanarWaveguide基板上的 CPW长度、宽度、高度、槽宽、接地平面宽度
coupledMicrostripLine边缘耦合微带线对长度、宽度、间距、高度
coupledStripLine边缘耦合带状线对长度、宽度、间距、高度
microstripLineCustom自定义耦合/差分微带线走线类型、走线宽度、走线间距、干扰走线
stripLineCustom自定义耦合/差分带状线走线类型、走线宽度、走线间距
pcbBendCustom自定义弯折不连续结构(R2025a)弯折形状、高度、接地平面宽度
pcb2D2D 横截面分析电路板宽度、电路板中心、层
SIWLine基板集成波导长度、宽度、过孔间距、过孔直径

微带线

基本创建与设计
ms = microstripLine;
show(ms);

% Design for target impedance at frequency
ms = design(microstripLine, 3e9);
Z0 = getZ0(ms);
属性
ms = microstripLine;
ms.Length = 20e-3;
ms.Width = 5e-3;
ms.Height = 1.6e-3;            % Substrate height
ms.GroundPlaneWidth = 30e-3;
ms.Substrate = dielectric("FR4");
ms.Conductor = metal("Copper");
分析
ms.Conductor = metal("Copper");       % Required for rlgc (finite conductivity)
Z0 = getZ0(ms);                       % Characteristic impedance (no frequency argument)
td = propagationDelay(ms, 3e9);       % Propagation delay (scalar frequency)
params = rlgc(ms, 3e9);              % RLGC per unit length (scalar frequency)

freq = linspace(1e9, 6e9, 51);
sp = sparameters(ms, freq, 'SweepOption', 'interp');  % S-parameters (frequency vector OK)
rfplot(sp);
倒置/悬空微带线

使用多层基板(含空气隙)对倒置或悬空结构进行建模:

% Inverted: air below trace, substrate above ground
ms = microstripLine;
ms.Substrate = dielectric(Name={"Air","FR4"}, EpsilonR=[1 4.4], ...
    LossTangent=[0 0.02], Thickness=[0.5e-3 1.6e-3]);
ms.Height = 0.5e-3 + 1.6e-3;

% Suspended: air / substrate / air
ms.Substrate = dielectric(Name={"Air","FR4","Air"}, EpsilonR=[1 4.4 1], ...
    LossTangent=[0 0.02 0], Thickness=[0.3e-3 0.8e-3 0.3e-3]);
ms.Height = sum([0.3e-3 0.8e-3 0.3e-3]);

带状线

带状线的信号走线嵌入在两个接地平面之间。

对称带状线
sl = stripLine;
sl.Length = 20e-3;
sl.Width = 3e-3;
sl.Height = 3.2e-3;            % Total dielectric height (top + bottom)
sl.GroundPlaneWidth = 30e-3;
sl.Substrate = dielectric("Teflon");
sl.Conductor = metal("Copper");
show(sl);
非对称带状线

使用上下厚度不同的多层介质。Height = 信号线下方各层的累计厚度(即层边界,而非总厚度):

sl = stripLine;
sl.Substrate = dielectric(Name={"FR4","FR4"}, EpsilonR=[4.4 4.4], ...
    LossTangent=[0.02 0.02], Thickness=[0.8e-3 1.6e-3]);
sl.Height = 0.8e-3;    % Signal at the boundary between the two layers
悬空带状线
sl = stripLine;
sl.Substrate = dielectric(Name={"Air","FR4","Air"}, ...
    EpsilonR=[1 4.4 1], LossTangent=[0 0.02 0], ...
    Thickness=[0.5e-3 0.8e-3 0.5e-3]);
sl.Height = 0.5e-3;    % Signal at Air/FR4 boundary (0.5mm from ground)
sl = design(stripLine, 3e9);  % Or design for 50-ohm at target freq

共面波导

基本 CPW
cpw = coplanarWaveguide;
cpw.Length = 20e-3;
cpw.Width = 2e-3;          % Center conductor width
cpw.SlotWidth = 0.5e-3;    % Gap between center and ground
cpw.Height = 1.6e-3;
cpw.GroundPlaneWidth = 10e-3;
show(cpw);
设计与分析
cpw = design(coplanarWaveguide, 5e9);
Z0 = getZ0(cpw);
sp = sparameters(cpw, linspace(1e9, 10e9, 51), 'SweepOption', 'interp');
rfplot(sp);

耦合传输线

边缘耦合微带线
cms = coupledMicrostripLine;
cms.Length = 20e-3;
cms.Width = 2e-3;
cms.Spacing = 0.5e-3;      % Gap between traces
cms.Height = 1.6e-3;
cms.Substrate = dielectric("FR4");
show(cms);
偶模/奇模阻抗
freq = 3e9;
Zeven = getZEven(cms, freq);   % Even-mode impedance
Zodd = getZOdd(cms, freq);     % Odd-mode impedance
Zdiff = 2 * Zodd;             % Differential impedance
边缘耦合带状线
csl = coupledStripLine;
csl.Length = 20e-3;
csl.Width = 2e-3;
csl.Spacing = 0.3e-3;
csl.Height = 3.2e-3;
csl.Substrate = dielectric("Teflon");
多层耦合线
cms = coupledMicrostripLine;
sub = dielectric("FR4", "Teflon");
sub.Thickness = [1.0e-3 0.5e-3];       % Set Thickness BEFORE assigning to component
cms.Substrate = sub;
cms.Height = 1.5e-3;

自定义传输线与串扰分析

microstripLineCustom 和 stripLineCustom 可对差分对进行建模,并可选用干扰走线分析 NEXT/FEXT 串扰。

属性(microstripLineCustom;stripLineCustom 具有相同接口,默认使用 Teflon,嵌入在接地平面之间)
属性默认值描述
TraceType'Single''Single' 或 'Differential'(不是 'Single-ended')
TraceLength0.05走线长度(m)
TraceWidth0.002信号走线宽度(m)
TraceSpacing0.002差分对走线之间的间距(m)
Height0.0016基板高度(m)
GroundPlaneWidth(只读)接地平面宽度 — 自动计算,无法设置
LeftCoupledTraceGap0与左侧侵扰走线的间隙(m);0 = 无左侧侵扰走线
RightCoupledTraceGap0与右侧侵扰走线的间隙(m);0 = 无右侧侵扰走线
SubstrateFR4介电材料对象
ConductorPEC金属对象
差分微带线
ms_diff = microstripLineCustom(TraceType='Differential', ...
    TraceWidth=0.002, TraceSpacing=0.0005);
show(ms_diff);
带侵扰走线的差分线
ms_diff = microstripLineCustom(TraceType='Differential', ...
    TraceWidth=0.002, TraceSpacing=0.0005, ...
    RightCoupledTraceGap=[0.003, 0.003], ...
    LeftCoupledTraceGap=0);
show(ms_diff);
NEXT/FEXT 提取

添加侵扰走线后,S 参数矩阵为 6 端口。端口映射如下:

端口走线
1, 2差分对(近端、远端)
3, 4左侧侵扰走线(近端 = NEXT,远端 = FEXT)
5, 6右侧侵扰走线(近端 = NEXT,远端 = FEXT)
ms = microstripLineCustom(TraceType='Differential', ...
    TraceWidth=0.002, TraceSpacing=0.0005, ...
    LeftCoupledTraceGap=0.003, RightCoupledTraceGap=0.003);
ms.Conductor = metal("Copper");

freq = linspace(0.1e9, 10e9, 101);
sp = sparameters(ms, freq, 'SweepOption', 'interp');

% Extract crosstalk from S-parameters
S31_dB = 20*log10(abs(squeeze(sp.Parameters(3,1,:))));  % Left NEXT
S41_dB = 20*log10(abs(squeeze(sp.Parameters(4,1,:))));  % Left FEXT
S51_dB = 20*log10(abs(squeeze(sp.Parameters(5,1,:))));  % Right NEXT
S61_dB = 20*log10(abs(squeeze(sp.Parameters(6,1,:))));  % Right FEXT
RLGC 耦合矩阵

对于耦合线/差分线,rlgc 返回 N×N 矩阵(非对角元素 = 互感/互容):

ms = microstripLineCustom(TraceType='Differential', ...
    TraceWidth=0.002, TraceSpacing=0.0005, RightCoupledTraceGap=0.003);
ms.Conductor = metal("Copper");
params = rlgc(ms, 5e9);

自定义弯折和走线(R2025a)

pcbBendCustom 和 pcbTraceCustom 用于建模弯折不连续性和阶跃阻抗转换。有关属性和示例,请参阅 references/custom-bends-and-traces.md。

SIW 传输线

基板集成波导通过过孔围栏在 PCB 中构建波导。

siw = SIWLine;
siw.Length = 15.3e-3;
siw.Width = 7.4e-3;
siw.ViaSpacing = [1.2e-3 5e-3];   % [along-length, across-width]
siw.ViaDiameter = 0.51e-3;
siw.Height = 0.254e-3;
siw.Substrate = dielectric(Name="RO4003C", EpsilonR=3.38, LossTangent=0.0027, Thickness=0.254e-3);
siw.Conductor = metal("Copper");
show(siw);

sp = sparameters(siw, linspace(20e9, 40e9, 51), 'SweepOption', 'interp');
rfplot(sp);

SIW 具有 FeedLine 属性(一个 traceTapered 对象),用于微带线到 SIW 的转换。

2D 截面分析

pcb2D

创建 2D 截面模型,用于快速进行单位长度分析。对于均匀传输线特性分析,其速度远快于完整 3D sparameters。

p = pcb2D;
p = pcb2D(Name=Value);

主要属性:

  • Name — 截面的描述性名称
  • BoardWidth — 电路板总宽度(m)
  • BoardCenter — 电路板截面的中心位置
  • Layers — 用于定义叠层的 trace2D 和 dielectric 对象元胞数组

方法: show(p)、sparameters(p, freq)、rlgc(p, scalarFreq)、propagationDelay(p, scalarFreq)

trace2D

表示用于 pcb2D 对象 Layers 元胞数组中的走线截面。

t = trace2D;
t.Type = 'Signal';                                  % 'Signal' (default) or 'Ground'
t.Shape = shape.Rectangle(Length=0.3e-3, Width=35e-6);  % Length=trace width, Width=trace thickness
t.Conductor = metal("Copper");

主要属性: Type('Signal'/'Ground')、Shape(shape.Rectangle — Length = 走线宽度,Width = 金属厚度)、Conductor、TrapezoidalEtchAngle

构建 2D 模型 — 单条走线
sub = dielectric("FR4");
sub.Thickness = 0.2e-3;

sig = trace2D;
sig.Type = 'Signal';
sig.Shape = shape.Rectangle(Length=0.3e-3, Width=35e-6);
sig.Conductor = metal("Copper");

gnd = trace2D;
gnd.Type = 'Ground';
gnd.Shape = shape.Rectangle(Length=5e-3, Width=35e-6);

p = pcb2D(BoardWidth=5e-3, Layers={sig, sub, gnd});
show(p);
params = rlgc(p, 10e9);
fprintf('L = %.2f nH/m, C = %.2f pF/m\n', params.L*1e9, params.C*1e12);
构建 2D 模型 — 差分对(耦合走线)

同一金属层上的多条走线必须作为 trace2D 数组 [sig1, sig2] 传入,而不能放在单独的元胞中:

sub = dielectric("FR4");
sub.Thickness = 0.2e-3;

sig1 = trace2D;
sig1.Type = 'Signal';
sig1.Shape = shape.Rectangle(Length=0.15e-3, Width=35e-6);
sig1.Shape.Center = [-0.2e-3 0];
sig1.Conductor = metal("Copper");

sig2 = trace2D;
sig2.Type = 'Signal';
sig2.Shape = shape.Rectangle(Length=0.15e-3, Width=35e-6);
sig2.Shape.Center = [0.2e-3 0];
sig2.Conductor = metal("Copper");

gnd = trace2D;
gnd.Type = 'Ground';
gnd.Shape = shape.Rectangle(Length=5e-3, Width=35e-6);

p = pcb2D(BoardWidth=5e-3, Layers={[sig1, sig2], sub, gnd});
show(p);
params = rlgc(p, 10e9);  % Returns 2x2 L and C matrices for coupled pair
何时使用 pcb2D,何时使用 3D
场景方法
均匀截面的阻抗/RLGCpcb2D — 毫秒级
不连续结构(弯折、阶跃、支节)3D sparameters — 分钟级
差分对耦合使用 [sig1, sig2] 数组的 pcb2D
将 3D 元件切片为 2D

slice 从 pcbComponent 中提取 2D 截面(先转换目录对象):

cms = design(coupledMicrostripLine, 3e9);
cms.Conductor = metal("Copper");
pcb2d = slice(pcbComponent(cms));
params = rlgc(pcb2d, 3e9);

用于阻抗目标设定的 design()

design 函数会根据目标频率(以及可选的目标阻抗)确定传输线尺寸:

ms = design(microstripLine, 3e9);           % Default 50-ohm at 3 GHz
sl = design(stripLine, 5e9);                % Default 50-ohm at 5 GHz
cpw = design(coplanarWaveguide, 10e9);      % Default 50-ohm at 10 GHz

调用 design 后,使用 getZ0 验证:

Z0 = getZ0(ms);   % Should be ~50 ohm

transmissionLineDesigner 应用

用于设计和分析传输线的交互式应用:

transmissionLineDesigner

选择线型,以交互方式设置尺寸/材料,分析阻抗/S 参数/RLGC,并将设计导出到工作区。

设计调整

问题调整项方向
Z0 过高宽度增大
Z0 过低宽度减小
损耗过大导体厚度增大
电长度不正确长度调整

注意事项

  1. 对 S 参数使用插值扫描:始终使用 sparameters(obj, freq, 'SweepOption', 'interp') — 直接扫描会慢很多。

  2. 求解前检查网格密度:在运行 sparameters() 之前,先运行 memoryEstimate(obj, fc, 'RetainMesh', true)。如果网格过密,则调粗网格:mesh(obj, 'MaxEdgeLength', lambda/6)。参见 matlab-analyze-em。

  3. Height 的含义因拓扑结构而异:对于微带线,Height = 电介质厚度。对于具有多层基板的带状线,Height 必须等于累计层边界 — 它定义信号在叠层中的位置。

  4. 宽度控制阻抗:走线越宽 → 阻抗越低。使用 design() 自动确定尺寸,然后根据需要手动调整。

  5. 导体默认为 PEC:如果不指定 metal("Copper"),损耗将为零。务必设置 Conductor,以获得真实的插入损耗。

  6. 倒置/悬空微带线的 Height 规则:对于倒置微带线,创建 Name={"Substrate","Air"} 的多层电介质,并将 Height 设置为空气层厚度。对于悬空微带线,Height = 空气厚度 + 基板厚度。

  7. 多层带状线的 Height 是层边界,而非总厚度:Height 必须等于 Thickness 向量中的某个累计层边界。将 Height 设置为总厚度会导致错误:"Expected Height must be among the substrate layers."

  8. SIW 截止频率:SIW 存在截止频率,低于该频率时信号无法传播。应将宽度设计为使工作频率远高于截止频率。

  9. getZ0 不接受频率参数:getZ0(obj) 会直接返回特性阻抗。不要传入频率参数。

  10. rlgc 需要有限电导率:调用 rlgc 之前,请指定 metal("Copper")。默认的 PEC 会导致错误:"Conductivity value must be finite with 2D field solver."

  11. 多层 Name 必须使用元胞数组:使用 Name={"Air","FR4"}(元胞数组),而不是 Name=["Air","FR4"](字符串数组)。

  12. trace2D 使用 Shape,而非 Width/Thickness:设置 t.Shape = shape.Rectangle(Length=traceWidth, Width=metalThickness)。注意:shape.Rectangle.Length = 走线宽度,.Width = 金属厚度。pcb2D 至少需要一条 'Ground' 类型的走线。

  13. pcb2D 的 rlgc 接受标量频率:rlgc(p, freq) 需要标量,而非向量。请循环调用,或仅在关注的频率处调用一次。

  14. pcb2D trace2D 的 Center 仅表示 x 位置:trace2D.Shape.Center 控制水平位置。垂直位置由层叠顺序决定。设置 Center = [x_offset 0]。

  15. 同层走线需要使用数组,而非分开的元胞:对于同一金属层上的耦合/差分走线,使用 Layers={[sig1, sig2], sub, gnd}。分开的元胞 {sig1, sig2, sub, gnd} 会将它们视为不同的金属层,并报错:"dielectric layer must be between metal layers."

  16. 串扰端口数量取决于干扰源配置:两个干扰源 → 6 端口;一个 → 4 端口;无 → 2 端口。RightCoupledTraceGap=Inf 会移除相应的干扰源。

  17. TraceGap 表示边到边间距,而非中心到中心间距:它测量最近边缘之间的间距,而非走线中心之间的距离。

  18. 使用 TraceWidth,不要使用 Width:microstripLineCustom 和 stripLineCustom 使用 TraceWidth。设置 Width 不会生效,且不会提示错误。

相关技能

  • matlab-manage-pcb-material — 基板与导体设置
  • matlab-analyze-em — S 参数提取与场分析
  • matlab-integrate-pcb-circuit — Touchstone 导出、电路级联
  • matlab-assemble-pcb-layout — 自定义走线几何形状

Copyright 2026 The MathWorks, Inc.

评论

支持 Markdown