首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >D1s核心板复刻前,先把电源和工程版本对齐

D1s核心板复刻前,先把电源和工程版本对齐

原创
作者头像
不脱发的程序猿
修改于 2026-10-09 17:36:35
修改于 2026-10-09 17:36:35
140
举报

下载了原理图,PCB也能打开,是否就可以直接下单?先别急。有一种返工很隐蔽:你看的在线图纸和你下载的工程,名字一样,细节却已经不同。等软件、接线图和板子各认一套命名,排错就成了猜谜。

这次拿一块 D1s/F133 核心板做练习,把审查范围收在两件具体的事上:锁定图文代码对应的工程版本,以及检查电源与启动接口的关键标注。最后做一个可以实际运行的 Python 工具,把“眼睛看过了”变成可重复的检查。

这里没有实体上电、Linux 启动或 DRC 结果。读者得到的是下单前的审查方法与工具,不是一份已验证的整机复刻教程。

同一个名字,不一定是同一份工程

核对工程时,在线 PCB 的 SPI 数据线使用 SPI0_MOSI/MISO,下载的硬件包则使用 SPI0_D0/D1/D2/D3。只记住工程链接或文档 ID,无法解释这处差异。

本次以下载的硬件 ZIP 为唯一输入,把其中的原理图和 PCB JSON 同时导入嘉立创 EDA 独立副本,然后重新导出。原文件没有改接线,也没有改器件参数。这样,下面的图、脚本输入和附件才有一个共同起点。

对应硬件包的完整原理图
对应硬件包的完整原理图

图1:原理图总览用于定位分区。细小标注请结合下方局部图或附件中的高清 PNG、矢量 PDF 阅读。

版本记录不必写成一大本。至少记住三个东西:来源地址、输入文件的 SHA-256、此次检查和导出的日期。文件名相同但内容不同,哈希会告诉你;图纸改了却继续复用旧测试结果,也会留下明确的断点。

本次输入压缩包的 SHA-256 为:

代码语言:txt
复制
EE2D3C1B9A1B1E31D8E38F7444C725CE1931463C6E8F9656C890AE56FF518EBC

电源树:先数芯片,再数通道

EA3036A电源分区
EA3036A电源分区

图2:POWER 分区完整保留了反馈、电感、使能和原图备注。图中的 U1 是一颗 EA3036A,内部有三路开关通道。

电源区最容易被一句“三路电源”带偏:三路通道不等于三颗稳压芯片。图中三个 VIN 接到 VBUS,三个 SW 分别经过 L1、L2、L3;输出标签是 3V3、1V8、0V9。

按图纸可整理出如下核对表。它记录的是标注值,不是测量值。

输出标签

电感

反馈上臂/下臂

3V3

L1,1.5 μH

R2 680 kΩ / R4 150 kΩ

1V8

L2,1.5 μH

R5 300 kΩ / R8 150 kΩ

0V9

L3,1.5 μH

R9 75 kΩ / R10 150 kΩ

这个表能帮助查错,却不能直接宣告输出合格。要算反馈设定值,仍须拿到实际采购器件的数据手册,确认反馈基准与容差;要判断能否带起负载,还需要各电源域的启动和峰值电流。

原图电源区留了一句“EA3036可能不够,先试试看”。这句话值得留下:它说明负载余量当时就不是已经闭合的结论。芯片型号、电感值和网络标签齐全,也无法替代启动压降、纹波和热设计检查。

主芯片电源引脚局部
主芯片电源引脚局部

图3:主芯片上部引脚局部。电源标签分别落在不同引脚附近;相邻位置不代表相同电源域。

读电源图时,可以用“输出标签—主芯片电源脚—去耦”这条路线做逐项复核。尤其要区分 VDD-CORE、各组 VCC 与模拟相关电源。本文只展示图纸标注,不把符号与标签的存在当作每个引脚都已满足芯片要求。

SPI与TF卡:命名核对要落到引脚

SPI Flash与TF卡接口局部
SPI Flash与TF卡接口局部

图4:SPI 与 Card 分区,能直接读到 Flash 引脚和 TF 卡信号标注。

U2 的型号标注为 25F256。按这张图,SPI0_D0 接到 5 脚 DI(DQ0),SPI0_D1 接到 2 脚 DO(DQ1);SPI0_D2、SPI0_D3 分别接到 3 脚 WP#(DQ2) 和 7 脚 HOLD#(DQ3)。6 脚是 CLK,1 脚是片选。

这解释了为什么不能在全文里直接把 D0/D1 全部替换成 MOSI/MISO:图里还有 DQ2、DQ3 及其上拉。是否采用四线模式,需要继续核对实际 Flash 器件、主控复用与软件配置,本文没有验证这些运行条件。

Card 分区使用 SDC0_CMD、SDC0_CLK 和 SDC0_D0 至 SDC0_D3。网络标注能对上,卡槽封装却仍可能不对。复刻前必须核对实际卡槽料号、焊盘编号、插卡方向和机械尺寸,不能把看起来相同的外壳当作封装兼容。

把“搜索到了”改成“解析到了”

最省事的检查是搜索整个 JSON:只要找到 SPI0_D0 就算通过。问题在于,它可能出现在备注里,甚至只是 SPI0_D01 的一部分。这样的 PASS 很好看,也很容易误导。

配套工具改为解析 JSON,再读取 EasyEDA 的实际记录:原理图只统计 N 网络标签和 F 电源标志,PCB 只统计 PAD 与 TRACK 的网络字段。封装内部记录也会展开。核心函数如下,完整命令行程序和测试在附件中。

代码语言:python
复制
from collections import Counter

def inventory(document):
    counts = Counter()
    if "schematics" in document:
        sheets = [s["dataStr"] for s in document["schematics"]]
    elif "shape" in document:
        sheets = [document]
    else:
        raise ValueError("Unsupported EasyEDA document structure")
    for sheet in sheets:
        pcb = str(sheet.get("head", {}).get("docType")) == "3"
        for shape in sheet["shape"]:
            for record in shape.split("#@$"):
                fields = record.split("~")
                kind = fields[0]
                if pcb:
                    index = {"PAD": 7, "TRACK": 3}.get(kind)
                    if index is not None:
                        counts[fields[index]] += 1
                elif kind == "N":
                    counts[fields[5]] += 1
                elif kind == "F":
                    parts = record.split("^^")
                    if len(parts) < 3:
                        raise ValueError("Malformed net flag")
                    counts[parts[2].split("~")[0]] += 1
    return counts

它针对附件中的 EasyEDA Standard JSON 结构编写。遇到其他格式或损坏记录,应报错后检查输入,不能把解析异常改成“已通过”。

解压附件,在有 Python 3.12 的电脑上运行,不需要安装第三方库:

代码语言:shell
复制
python net_audit.py hardware/schematic.json hardware/pcb.json
python -m unittest -v test_net_audit.py

两份输入的电源、SPI、SD 和 USB 预期名称均存在。SPI 记录次数如下:

网络

原理图记录数

PCB焊盘/走线记录数

SPI0_CS

2

6

SPI0_CLK

2

3

SPI0_D0

3

8

SPI0_D1

2

4

SPI0_D2

2

6

SPI0_D3

2

6

记录数不是器件数,也不是连通长度。PCB 一条网络可以由多个焊盘和多个走线记录组成,原理图同名标签也可能重复出现。这个结果只能回答“预期的准确名称是否进入了对应记录”,不能回答两点是否真正连通、布线是否合格或能否启动。

三个测试分别覆盖备注与前缀误命中、封装内焊盘与走线计数、未知结构与损坏标志拒绝。本次实际运行均通过。改进的价值就在这里:让检查证据更可信,同时让工具的能力边界更清楚。

PCB两面都看,别凭铺铜猜性能

PCB顶层铜与丝印
PCB顶层铜与丝印

图5:顶面方向的顶层铜、顶层丝印、外形与焊盘视图。

PCB底层铜与丝印
PCB底层铜与丝印

图6:从板底观察的底层视图。导出母图经过整体水平翻转,观察方向与图5不同。

两张图适合检查器件区域、连接器位置和顶底层走线分布。它们没有展示这块四层板的两个内层,因此不能仅凭图5、图6判断完整地回路或高速信号质量;铺铜面积大也不能自动推导出回流路径连续。

下一步应在完整工程里检查层叠与内层、关键电源回路、过孔连接及制造规则,再运行 DRC。电气规则检查与实际测量各解决不同问题,本文没有用高清图片替代这些结果。

此外,Mini PCIe 外形不能当作标准 PCIe 电气兼容的保证。图纸中的卡边接口引出自定义信号,配底板时仍要逐脚核对。TF 卡槽、未完成的音频部分以及模块相关的 Wi-Fi 配置,也都没有在这次审查中被验证为可用。

下单前先把版本锁住,再把已知问题写成具体检查项,会比拿到板子后逐个猜接口更省时间。这篇文章完成的是第一轮文件与标注审查,后续上电和软件验证应另存证据,不能沿用这里的 PASS。

资料、源码与复用说明

  • 项目:YuzukiNezha D1s/F133 RISC-V Linux 核心板;原设计 YuzukiHD / Yuzuki Hardware,立创转载页面为 100askteam。
  • 立创项目:https://oshwhub.com/100askteam/yuzukif133_transfer
  • 原项目仓库:https://github.com/YuzukiHD/YuzukiNezha-D1s
  • 配套源码与高清材料:本文 DF 版本的附件 YuzukiNezha-D1s-article-materials.zip,含完整 net_audit.py、测试、对应 JSON、原始说明与验证记录。跨平台读者可访问 https://mc.dfrobot.com.cn/article-386230.html 查找附件。
  • 本文依据:同一硬件包中的原理图、PCB JSON 和原始 README;EasyEDA Standard 的实际标签、焊盘与走线记录。图纸标注不代表器件实测参数,器件选型仍须核对厂家手册。
  • 许可:项目页元数据标注 CC0 1.0,硬件包自身明确写 CERN-OHL-P。本文硬件材料沿用包内更具体的 CERN-OHL-P 声明,按该许可第7.3条对未指定版本的 P 变体使用 v2 文本;附件保留原始说明、图纸标识与许可全文。独立编写的检查工具另以 MIT 授权,不将硬件改标为 MIT 或 CC0。
  • 图片处理:从该硬件包导入的 EDA 副本重新云端导出,原理图母图4000像素宽,PCB从矢量 PDF 渲染为长边3200像素;正文做等比例缩图与局部裁剪,底面整体翻转。必要标识保留,未生成或补画连线。附件保留高清母图与 PDF。
  • 实际完成:版本对齐、结构化名称盘点、三项自动测试及高清导出;未改电路、未执行 ERC/DRC、未做实体上电、Linux 引导、热与高速信号测试。本文经过 AI 辅助分析与编辑,结论以列明证据和验证范围为限。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 同一个名字,不一定是同一份工程
  • 电源树:先数芯片,再数通道
  • SPI与TF卡:命名核对要落到引脚
  • 把“搜索到了”改成“解析到了”
  • PCB两面都看,别凭铺铜猜性能
  • 资料、源码与复用说明
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档