关于 matlab-design-pcb-txline
这是一项使用 RF PCB Toolbox 设计和分析 PCB 传输线的 MATLAB 技能,面向处理阻抗控制与耦合结构的工程师。它涵盖常见线型、差分对、SIW、串扰以及快速二维横截面分析。
主要功能
- 01设计微带线、带状线和 CPW
- 02耦合线与差分线分析
- 03NEXT/FEXT 串扰建模
- 04SIW 传输线建模
- 05二维横截面 RLGC 提取
适用场景
- 01按目标阻抗确定传输线尺寸
- 02分析差分对耦合
- 03根据侵扰线估算 NEXT/FEXT
- 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
工具选择优先级
-
RF PCB Toolbox(默认):
microstripLine、pcb2D、stripLine、coplanarWaveguide等- 2D 场求解器 — 对损耗、耦合和任意叠层结构的计算准确
- 任何 RLGC、阻抗、横截面或传输线设计任务均使用此工具
-
RF Toolbox(仅作为后备):
txlineMicrostrip、txlineStripline、txlineCPW- 基于解析闭式解的近似,准确度较低
- 仅在以下情况使用:用户明确指定这些函数,或表示 RF PCB Toolbox 不可用
典型工作流
- 之前:
matlab-manage-pcb-material— 设置基板和导体 - 本技能: 设计并分析传输线
- 检查网格/内存:
memoryEstimate(obj, fc, 'RetainMesh', true)— 求解前检查自动生成的网格 - 之后:
matlab-analyze-em— 验证 S 参数 →matlab-optimize-pcb-design— 调优 →matlab-integrate-pcb-circuit— 级联
快速参考
| 对象 | 拓扑结构 | 关键属性 |
|---|---|---|
microstripLine | 接地平面上的单根微带线 | 长度、宽度、高度、接地平面宽度 |
stripLine | 嵌入介质中的信号线 | 长度、宽度、高度、接地平面宽度 |
coplanarWaveguide | 基板上的 CPW | 长度、宽度、高度、槽宽、接地平面宽度 |
coupledMicrostripLine | 边缘耦合微带线对 | 长度、宽度、间距、高度 |
coupledStripLine | 边缘耦合带状线对 | 长度、宽度、间距、高度 |
microstripLineCustom | 自定义耦合/差分微带线 | 走线类型、走线宽度、走线间距、干扰走线 |
stripLineCustom | 自定义耦合/差分带状线 | 走线类型、走线宽度、走线间距 |
pcbBendCustom | 自定义弯折不连续结构(R2025a) | 弯折形状、高度、接地平面宽度 |
pcb2D | 2D 横截面分析 | 电路板宽度、电路板中心、层 |
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') |
TraceLength | 0.05 | 走线长度(m) |
TraceWidth | 0.002 | 信号走线宽度(m) |
TraceSpacing | 0.002 | 差分对走线之间的间距(m) |
Height | 0.0016 | 基板高度(m) |
GroundPlaneWidth | (只读) | 接地平面宽度 — 自动计算,无法设置 |
LeftCoupledTraceGap | 0 | 与左侧侵扰走线的间隙(m);0 = 无左侧侵扰走线 |
RightCoupledTraceGap | 0 | 与右侧侵扰走线的间隙(m);0 = 无右侧侵扰走线 |
Substrate | FR4 | 介电材料对象 |
Conductor | PEC | 金属对象 |
差分微带线
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
| 场景 | 方法 |
|---|---|
| 均匀截面的阻抗/RLGC | pcb2D — 毫秒级 |
| 不连续结构(弯折、阶跃、支节) | 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 过低 | 宽度 | 减小 |
| 损耗过大 | 导体厚度 | 增大 |
| 电长度不正确 | 长度 | 调整 |
注意事项
-
对 S 参数使用插值扫描:始终使用
sparameters(obj, freq, 'SweepOption', 'interp')— 直接扫描会慢很多。 -
求解前检查网格密度:在运行
sparameters()之前,先运行memoryEstimate(obj, fc, 'RetainMesh', true)。如果网格过密,则调粗网格:mesh(obj, 'MaxEdgeLength', lambda/6)。参见matlab-analyze-em。 -
Height 的含义因拓扑结构而异:对于微带线,
Height= 电介质厚度。对于具有多层基板的带状线,Height必须等于累计层边界 — 它定义信号在叠层中的位置。 -
宽度控制阻抗:走线越宽 → 阻抗越低。使用
design()自动确定尺寸,然后根据需要手动调整。 -
导体默认为 PEC:如果不指定
metal("Copper"),损耗将为零。务必设置Conductor,以获得真实的插入损耗。 -
倒置/悬空微带线的 Height 规则:对于倒置微带线,创建
Name={"Substrate","Air"}的多层电介质,并将Height设置为空气层厚度。对于悬空微带线,Height= 空气厚度 + 基板厚度。 -
多层带状线的 Height 是层边界,而非总厚度:
Height必须等于Thickness向量中的某个累计层边界。将 Height 设置为总厚度会导致错误:"Expected Height must be among the substrate layers." -
SIW 截止频率:SIW 存在截止频率,低于该频率时信号无法传播。应将宽度设计为使工作频率远高于截止频率。
-
getZ0 不接受频率参数:
getZ0(obj)会直接返回特性阻抗。不要传入频率参数。 -
rlgc 需要有限电导率:调用
rlgc之前,请指定metal("Copper")。默认的 PEC 会导致错误:"Conductivity value must be finite with 2D field solver." -
多层 Name 必须使用元胞数组:使用
Name={"Air","FR4"}(元胞数组),而不是Name=["Air","FR4"](字符串数组)。 -
trace2D 使用 Shape,而非 Width/Thickness:设置
t.Shape = shape.Rectangle(Length=traceWidth, Width=metalThickness)。注意:shape.Rectangle.Length= 走线宽度,.Width= 金属厚度。pcb2D至少需要一条'Ground'类型的走线。 -
pcb2D 的 rlgc 接受标量频率:
rlgc(p, freq)需要标量,而非向量。请循环调用,或仅在关注的频率处调用一次。 -
pcb2D trace2D 的 Center 仅表示 x 位置:
trace2D.Shape.Center控制水平位置。垂直位置由层叠顺序决定。设置Center = [x_offset 0]。 -
同层走线需要使用数组,而非分开的元胞:对于同一金属层上的耦合/差分走线,使用
Layers={[sig1, sig2], sub, gnd}。分开的元胞{sig1, sig2, sub, gnd}会将它们视为不同的金属层,并报错:"dielectric layer must be between metal layers." -
串扰端口数量取决于干扰源配置:两个干扰源 → 6 端口;一个 → 4 端口;无 → 2 端口。
RightCoupledTraceGap=Inf会移除相应的干扰源。 -
TraceGap 表示边到边间距,而非中心到中心间距:它测量最近边缘之间的间距,而非走线中心之间的距离。
-
使用
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.