| name | circuit-analyze |
| description | 硬件原理图分析——上传电路图截图,AI 识别拓扑/元件/连接关系,分类每个元件的功能角色,计算关键参数,给出工程加固建议。覆盖模拟电路、数字电路、电源电路、混合信号电路。触发词:"分析电路"/"电路分析"/"analyze circuit"/"看看这个电路"/"帮我分析下这张电路图"/"这个电路是什么"。 |
| argument-hint | <image-path> |
| allowed-tools | Read, Bash(*), WebSearch, WebFetch |
/circuit-analyze — 硬件原理图分析
结构化分析流水线:识别 → 连接表 → 确认 → 角色分类 → 参数计算 → 工程加固 → 报告。
核心价值:回答"每个元件为什么在这里"和"这个电路拿到产线上会出什么问题"。
Overview
用户上传原理图图片(单张或多张)
↓
判断模式: 单图 / 多图(同项目分页)/ 连续分析
↓
Phase 1: 电路识别 — 提取元件/值/连接/拓扑 + 跨页网络标签
↓
Phase 2: 连接表(初学) + 解读(教学) + 网表(计算) — 三层输出,各司其职
↓
Phase 3: 元件角色分类 + 选型依据 — 基于网表,每个元件为什么在这里 + 为什么选这个型号
↓
Phase 4: 关键参数计算 — 基于网表(内部数据模型)推导传递函数/增益/截止频率
↓
Phase 5: 工程加固检查 — 从原理图到产品电路,给出补完建议
↓
Phase 6: 结构化报告 — 控制台输出(多图时附加板级汇总)
多图/项目模式
识别规则
当前分析启动时,检查是否存在之前的分析上下文:
- 单图模式: 用户传一张图,没有前序上下文 → 独立分析
- 批量模式: 用户一次传多张图 → 逐张分析 + 最后汇总
- 连续模式: 用户分析完一张后又传一张 → 视为同一项目的下一页,维护上下文
上下文追踪
分析每张图时,记录该页出现的跨页网络标签(如 VPRO、485A、VLCD、+5V、GND 等带有跨页连接属性的 net name):
| 追踪项 | 作用 |
|---|
| 电源轨 | +12V、+5V、VLCD、V11... → 构建板级电源树 |
| 信号跨页 | 485A、ADC_OUT、ISN_P... → 标记信号来源/去向 |
| 未解析 net | 某个 net 的来源不在当前页 → 标注"来自页 X?" |
板级汇总
所有页分析完后,询问用户"要做板级汇总吗?"如果用户同意:
┌─────────────────────────────────────────┐
│ 项目板级汇总 │
│ │
│ 📐 电源树 │
│ 24V → Buck → 5V → VLCD → 运放电路 │
│ 5V → RS-485 收发器 │
│ 24V → V11(?) → VPRO编程 │
│ │
│ 🔗 信号流 │
│ [传感器] → ISN_P/N → 差分放大 → ADC_OUT │
│ MCU → 485_TX → RS-485收发器 → 485总线 │
│ │
│ ⚠️ 跨页悬空 net: V11 来源未找到 │
│ │
│ 🛡️ 全局问题 │
│ - 电源入口无保险丝(Buck 输入侧) │
│ - 无统一 ESD 策略(各接口各自为政) │
└─────────────────────────────────────────┘
上下文清除
用户说"新项目"/"重新开始" → 清除所有上下文。
适用范围
覆盖所有常见硬件原理图类型:
| 类别 | 典型电路 |
|---|
| 模拟电路 | 运放电路(反相/同相/差分/跟随器/求和/仪表放大器/积分器/微分器)、有源滤波器(Sallen-Key/MFB/状态变量)、三极管放大电路(共射/共基/共集/差分对)、MOSFET 开关/放大、二极管电路(整流/钳位/稳压/续流) |
| 电源电路 | 线性稳压(78xx/LDO)、DC-DC 开关电源(Buck/Boost/Buck-Boost)、电荷泵、电源滤波/保护 |
| 数字电路 | 逻辑门电路、电平转换、隔离(光耦/磁耦)、MCU 外围(复位/晶振/调试接口)、接口电路(RS232/RS485/CAN/USB) |
| 混合信号 | ADC/DAC 前端调理、采样保持、Vref 基准源 |
遇到超出当前知识覆盖的冷门电路时,先 WebSearch 搜索,搜不到则用已知的电路原理进行类推分析,标注不确定性。
Inputs
| 必填 | 说明 |
|---|
<image-path> | 原理图图片 (PNG/JPG/截图/照片),支持单张或多张 |
无需任何本地文件依赖。分析所需的知识来自模型训练数据。
Datasheet 策略: 不确定的型号/参数先 WebSearch 搜 datasheet。搜不到或信息不全时,标注"⚠️ 推测值"并给出区间估算,同时提示用户"如果有 datasheet 可以发给我修正"。
Workflow
Phase 1: 电路识别
利用视觉能力分析原理图,提取:
- 元件清单: 对每个可见元件提取 — 位号 (R1/U1/C2/Q1/D1...)、类型 (电阻/电容/电感/运放/三极管/MOSFET/二极管/IC/晶振/连接器...)、标称值(含单位)、封装/型号(如有标注)、置信度 (高/中/低)
- 连接关系: 构建节点连接表。标注关键节点——优先用原理图上的 net label (VIN/VOUT/+5V/GND...),无名节点自动编号 N001/N002...。目标是直接可转换为网表
- 拓扑识别: 根据元件配置和连接模式判断电路类型
标记低置信度项:
- 模糊/遮挡的元件值 → 🔴 低
- 多个可能类型的元件 → 🟡 中
- 不清晰/推断的连接关系 → 🟡 中
- 拓扑不确定 → 🟡 中,准备候选
不确定的型号/参数 → 先 WebSearch 搜 datasheet。搜不到则用已知的器件典型值估算;关键参数无法确定时,标注为推测值并给出区间。提示用户"有 datasheet 可发我修正"。
Phase 2: 连接表 + 解读 + 确认
目标: 将 Phase 1 的识别结果转换为三层输出——既有初学者的可读性,又有从业者的精确性。
三层输出结构
┌─ Layer 1: 功能块连接表 ──── 按电路功能分组,初学者可读
│ │
│ 【反相放大器 — U1 运放】
│ +IN: pin3 ── GND
│ -IN: VIN ── R1(1k) ── pin2
│ pin2 ── Rf(10k) ── pin1(OUT)
│ OUT: pin1 ── VOUT
│ │
│ ← 每行 = 一条精确的节点连接,无串/并联歧义
│ ← 用信号名和引脚名,不用 N001 自动编号
│
├─ Layer 2: 自然语言解读 ──── 一段话解释电路做什么
│ │
│ "U1 和 R1/Rf 构成反相放大器,增益 = -Rf/R1 = -10。
│ C1 是输入隔直电容,防止前级直流偏置影响虚地..."
│ │
│ ← 适合初学者理解电路意图
│
└─ Layer 3: SPICE 网表 (可选) ──── 用户说"导出网表"时输出
* 反相放大器
R1 VIN N001 1k
Rf N001 VOUT 10k
Layer 1: 功能块连接表
输出格式:
📐 电路连接:
【功能块1 — 核心描述】
关键节点: 信号流方向
PIN (pinX): NODE_A ──元件(值)── NODE_B (作用注释)
...
【功能块2 — 核心描述】
...
【电源】
+5V: U1(pin8), ...
GND: U1(pin4), ...
格式规则:
- 用原理图上的 net label 作为节点名 (VIN/VOUT/INA/CC...),不用 N001
- 用 IC 引脚名而不是编号 (in+/in-/out/vcc...),后面括号标注 pin number
- 箭头
──→ 表示信号流向
∥ 表示并联,如 R16∥C26
- 非关键去耦/滤波可以用一行汇总,不需逐个列出
- 看不清的值标 🔴,已确认的标 🟢
Layer 2: 自然语言解读
连接表之后,用 3-5 句话解释:
- 电路整体做什么
- 每个功能块扮演什么角色
- 信号流从哪到哪
- 关键设计意图(为什么这样接)
💡 一句话: 这是一个反相放大器,增益 Av=-10。
U1 和 R1/Rf 构成反相放大器的核心——输入信号经 R1
进入运放反相端,输出经 Rf 反馈回来,放大倍数由
Rf/R1 的比值决定。C1 串联在输入路径上,隔断前级可能
存在的直流偏置电压,只让交流信号通过。
Layer 3: SPICE 网表(可选)
用户说 导出网表 或 save netlist 时输出。使用标准 SPICE 格式,节点名映射回 N001/N002... 自动编号。
写入 .cir 文件,路径由用户指定。
确认流程
三层输出后标注 🔴 项:
⚠️ 请确认:
🔴 Rf 的值是 10k 还是 100k?影响增益
🔴 Q24 的源极是接 V11 还是接 GND?
🟡 C3 的容值?(不影响核心分析)
回复 "ok" 或直接纠正,如 "Rf=100k, Q24源极→V11"
用户纠正后更新 Layer 1 和 Layer 2。
确认上限: 最多 3 轮。
Phase 3: 元件角色分类
基于已确认的网表(内部数据模型,非人读的 Layer 1 连接表)进行分析。对每个元件按以下 8 类角色归类,写一句解释它为什么在这里:
| 角色 | 含义 | 典型元件 |
|---|
| gain-setting | 决定放大倍数/衰减量 | Rf, Rin, Rg |
| frequency-shaping | 决定工作频率和频率响应 | 滤波电容、补偿电容、LC 谐振 |
| DC-bias | 设定直流工作点或隔直 | 耦合电容、偏置分压电阻、Vref |
| stability-compensation | 防振荡/防过冲 | 相位补偿电容、输出隔离电阻、snubber |
| protection/isolation | 防 ESD/过压/过流/短路/反接 | TVS、钳位二极管、保险丝、光耦、串联限流电阻 |
| structural/essential | 电路骨架,拿走不工作 | 有源器件(运放/三极管/MOSFET/IC)、负载电阻、电源 |
| power-delivery | 供电、去耦、滤波、稳压 | 去耦电容、旁路电容、磁珠、LDO |
| impedance-matching | 设定/匹配输入输出阻抗 | 终端电阻、串联匹配电阻 |
输出格式:
🔧 每个元件是干嘛的:
| 位号 | 值 | 角色 | 为什么在这里 |
|------|-------|-------------------|-----------------------------------|
| R1 | 1kΩ | gain-setting | 与Rf共同设定增益Av=-Rf/R1=-10 |
| C1 | 100nF | DC-bias | 输入隔直电容,阻断前级直流偏置 |
| D1 | 1N4148| protection | 输入钳位,防止负压损坏运放输入级 |
选型依据(关键元件)
角色分类之后,对有具体型号或关键参数的核心元件分析选型依据。回答"为什么选这个型号而不是别的":
分析维度(每类元件挑相关项,不需全部):
- 电压应力: 额定电压 vs 电路中承受的最大电压 → 裕度是否够
- 电流应力: 额定电流 vs 实际峰值/持续电流 → 裕度是否够
- 速度/频率: 开关速度/GBW/反向恢复时间 → 是否满足电路频率要求
- 精度: 容差/温漂/匹配精度 → 是否满足电路精度要求
- 功耗/热: 封装功耗 vs 实际耗散 → 是否需要散热
- 成本/替代: 为什么不用更便宜/更常见的型号
输出格式:
📋 选型依据:
| 元件 | 型号/值 | 关键参数 | 选型理由 |
|------|---------|---------|---------|
| D9 | B540C | 40V/5A Schottky | Buck续流,反压=24V→40V裕度67%;5A远超负载电流;Schottky低Vf降导通损耗 |
| Q25 | 2N7002 | 60V/115mA N-ch | 仅驱动栅极,电流需求极小;60V耐压远超24V输入;SOT-23小封装 |
| R3 | 52.3k/1%| E96, 1% | 反馈分压决定VOUT精度;E96标准值;1%精度保证输出误差<2% |
| C6 | 100μF | — | 输出滤波大电容,降低低频纹波;耐压需≥10V(选16V规格保裕度)|
关键规则:
- 有明确型号的优先查 datasheet 找极限参数,与电路实际应力对比
- 无型号的(如通用电阻电容),根据电路参数反推选型约束(如"此处电容耐压需≥25V")
- 如果某元件选型有明显不合理处 → 标 🟡 并提出替代型号
Phase 4: 关键参数计算
基于网表的节点和元件值(内部数据模型),直接推导传递函数或计算公式。
模拟电路:增益(DC/AC)、截止频率(-3dB点)、输入/输出阻抗、直流工作点、带宽(GBW限制)、Q值(滤波器)、CMRR(差分电路)
电源电路:输出电压、纹波估算、效率、开关频率(如适用)、输入/输出电压范围
数字电路:逻辑电平、上拉/下拉值、时间常数(RC延时)、电流驱动能力
交叉校验:计算结果是否合理?电阻值在优选范围?增益是否超过器件能力?截止频率是否合理?
不确定的器件参数(如运放 GBW、三极管 β)先 WebSearch 搜 datasheet,搜不到用典型值代入并标注"推测值"。未知电压/频率等关键参数无法从电路推断时,用区间分析法——列出"如果 X=12V 则...如果 X=15V 则...",供用户对照实际确认。用户可提供 datasheet 或实测值来收窄区间。
输出格式:
📊 关键参数:
直流增益: Av = -10 (20dB)
输入阻抗: Zin ≈ 1kΩ
输出阻抗: Zout < 1Ω (闭环)
-3dB 带宽: ≈ 91kHz (LM358 GBW=1MHz / 噪声增益=11)
⚠️ 需 datasheet 确认: LM358 GBW 容差 ±30%,实际带宽 70-100kHz
Phase 5: 工程加固检查
从"能工作"到"能投产"。逐项检查并给出:
- 缺了什么 → 生产上会出什么问题 → 怎么修 → 有什么副作用
检查维度(根据电路类型选相关项,不需要全部):
- ESD/浪涌防护: 对外接口是否有 TVS/钳位/ESD 保护
- 电源完整性: 芯片电源引脚是否有去耦电容;电容是否紧贴引脚;电源入口是否有滤波
- 信号完整性: 输入是否有 RF/EMI 滤波;高速信号是否有终端匹配
- 稳定性: 反馈环路是否可能振荡;大反馈电阻是否需要补偿电容;容性负载是否隔离
- 偏置/直流路径: 输入偏置电流是否有直流通路;单电源运放是否有偏置
- 热/功耗: 功率元件是否有散热考虑;LDO 压差×电流是否可接受
- 保护/鲁棒性: 输出是否有短路保护;输入是否有过压保护;电源是否有反接保护
- 启动行为: 上电瞬间输出是否会冲到满幅;电源是否有软启动
- 容差/量产: 电阻精度是否足够(特别是差分/匹配电阻);电容材质是否合适(滤波用 C0G,去耦用 X7R)
标记:
| 标记 | 含义 |
|---|
| 🔴 | 缺失,强烈建议加 |
| 🟡 | 需注意/条件性建议 |
| 🟢 | 已正确处理 |
Phase 6: 报告输出
汇总 Phase 3-5 输出结构化报告。
报告末尾提示:
下一步:
- "这个电路如果[改动],会怎样?" → 进入修改讨论
- "帮我把这个分析写成视频稿" → 生成脚本
- "分析下一张图" → 连续分析(同项目),维护板级上下文
- "做板级汇总" → 将所有分析过的页汇总为板级报告
- "新项目" → 清除上下文,从头开始
Key Rules
- 三层输出:连接表(人读) + 解读(教学) + 网表(内部分析)。Phase 2 输出 Layer 1 连接表作为确认界面;Phase 3-5 的分析基于网表(内部数据模型),计算在其上执行
- 角色分类 + 选型依据是教学内容。每个元件一句"为什么在这里"+"为什么选这个型号",这是通用 AI 不会主动做的事
- 工程加固要有后果。不只说加什么,要说"不加会怎样"(击穿/振荡/噪声/烧毁/漂移...)
- 参数要交叉校验。算完增益查电阻值范围;算完 fc 查是否合理;算完功耗查封装是否扛得住
- 不编造元件值。看不清就标 🔴 低置信度让用户补充
- 未知参数用区间分析。用户也不知道某参数时,列"如果 A 则 B"的区间表,不凭空猜一个值
- datasheet 先搜再问。不确定的型号/参数先 WebSearch 搜,搜不到标注"推测值"并告诉用户"有 datasheet 可发我修正"
- 覆盖所有硬件电路类型。模拟/数字/电源/混合信号都支持
- 多图维护上下文。用户连续分析多张图时,追踪跨页 net 和电源轨,最后可做板级汇总
Refusals
- 「图片完全看不清」→ 列出能辨认的轮廓,建议用户提供清晰版
- 「不是原理图(PCB 版图 / 实物照片)」→ 说明需要原理图而非版图,建议先导出原理图
- 「用户要跳过 Phase 2 网表确认」→ 拒绝。网表确认是质量兜底——串/并联看错,后面全错