数码之家

 找回密码
 立即注册
搜索
查看: 335|回复: 4

KrzysioPCB - 一款能自动生成电路图的PCB逆向工程软件,有坛友感兴趣吗?

[复制链接]
发表于 2024-2-25 18:34:06 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 猪小呆 于 2024-2-25 18:54 编辑

坛友推荐的,使用教程页面由于网络原因打不开,我用浏览器翻译后转贴过来,供有兴趣的坛友学习研究:
https://www.mydigit.cn/forum.php?mod=redirect&goto=findpost&ptid=363801&pid=13884251&fromuid=1369230
软件下载地址:http://krzysiobal.com/krzysiopcb/download/KrzysioPCB_v1.6.zip

2024-02-24_215704.jpg

文章中描述的工具是一个手写程序,用户通过该程序根据PCB照片(上下侧)重新创建所有连接,然后程序为其生成SCH(Eagle)格式的图表。

动机
通常,当需要维修设备时,需要诊断有故障的系统,为此通常需要有设备图。当我们想要进行一些修改时,图表也很有用。不幸的是,通常设备的作者(制造商)不提供它们,基于查看 PCB 的手动重建需要对电路板进行大量繁琐的工作 - 对所有路径和焊接点进行可视化分析,再加上电路板的频繁倒置,有时由电路连续性测试仪支持。一旦我们记下某处所有引脚的连接,我们就必须使用程序来创建图表,通常通过系统目录注释的分析来支持,以便输入先前准备的连接描述。

有几次我觉得需要使用可以帮助解决此问题的软件。遗憾的是,网上根本没有这方面的结果。在电极上的某个地方甚至有人触及了此类话题,但讨论通常没有提供解决方案就结束了。我曾经发现的唯一具有类似功能的程序可以自动检测路径引导,但结果证明是失败的(它也躺在电极上的某个地方)。

准备工作
在开始玩之前,为要分析的图块的两面拍照。当我们从板上拆焊所有元件并在分辨率至少为 300 dpi(建议 600 dpi)的扫描仪中拍摄照片时,将获得最佳效果。然而,用相机拍照也能得到好的效果,重要的是保持相机与板平行。我们以 Pegasus 四合一墨盒为例。除了内存之外,该卡带还具有支持内存切换的 74XX 系列芯片,其机制目前尚不清楚。通过重现该图,我们将立即能够弄清楚如何存储内存。是工作。

一旦我们拍摄了照片,我们就不必担心旋转它们、镜像它们、裁剪它们等。- 我们可以在程序中设置所有这些(这里,故意以不同尺寸和不同角度拍摄照片以展示程序的功能)。

2024-02-25_173345.jpg 2024-02-25_174228.jpg


使用程序 - 翻录图层
程序启动后,会立即显示如下所示的工作窗口,欢迎您的光临。

2024-02-25_174423.jpg


窗口的主要部分分为两部分 - 左侧部分,我们处理上 PCB 层,右侧部分,我们处理下 PCB 层。

左上角有带有操作的按钮:创建新项目、加载现有项目以及在 Eagle 中创建图表。该程序本身在运行过程中每5分钟创建一个备份副本,因此即使该程序突然出现故障(仍处于测试阶段),也不应该让我们损失太多的工作时间。

项目统计信息显示在右上角。

在屏幕底部,您可以看到程序中主要任务的键盘快捷键建议。我们通过按一个键来执行所有操作(这比不断点击鼠标、从上下文菜单中选择对手来说不那么累),并且它加快了程序中的工作速度 - 我们用一只手操作鼠标(仅移动光标) ),另一个 - 通过按单键快捷键的键盘。

选择新建后,程序会要求我们提供上PCB层、下PCB层照片的文件位置,然后选择项目文件的保存位置。加载文件后,我们将在程序窗口中看到两个图层:

2024-02-25_174630.jpg


下一步是将照片“合并”在一起。与许多用于创建 PCB 的 EDA 程序一样,程序中 PCB 的视图是“从上方”,即我们从上面看到 PCB 上的上层,而下层 - 就好像通过从上面层压。因此,在删除底层时,我们应该按下“镜像图片”复选框,这将在镜子中反射照片。
2024-02-25_174807.jpg


下一步是旋转两张照片并缩放它们,使它们大小相同。这两项活动均由程序执行 - 只需在两张照片中选择一个“虚拟”部分,该部分应平行于下轴并且在两张照片中长度相同 - 例如 PCB 的下边缘或一长排焊点。我会选择后者。
我们从左边的照片开始 - 我们将光标放在该段的开头,按 R 按钮(用于旋转),然后将光标设置在该段的末尾并再次按 R 键。两张照片均使用箭头移动。

2024-02-25_174948.jpg 2024-02-25_175029.jpg


经过此操作,我们看到左边的照片现在已经拉直了。
2024-02-25_175118.jpg


我们对右边的照片做同样的事情:
2024-02-25_175229.jpg 2024-02-25_175322.jpg


执行此操作后,右边的照片也会旋转,另外 - 由于我们已经在所有照片中标记了一个部分,因此程序会对照片进行缩放,使它们的尺寸相同(最小的照片保持不变,较大的照片保持不变)减少):
2024-02-25_175440.jpg

最后一个阶段是以这样的方式组合照片,以便向程序显示两张照片中相同点所在的位置 - 例如,当我们将光标放在一张照片中的通孔上时,光标放在另一张照片中的相同通孔上第二张照片也将显示。为此,请将其中一张照片移动到适当的位置。当我们按住 CTRL 键(CTRL 在左侧)时,左侧照片保持静止,当我们按住 ALT 键(ALT 在右侧)时,右侧照片保持静止。按住此键的同时,使用箭头移动其中一张照片。如果我们同时按住 SHIFT 键,移动会更精确——步幅更小。执行此操作后,两张照片都会合并 - 您可以通过将光标指向一层上的通孔来检查这一点。然后,在第二层上,您还应该在完全相同的位置看到光标。最好检查 PCB 对角的两个甚至四个过孔。如果我们做得正确的话,结果应该如下。本次活动完成了准备阶段。
2024-02-25_175901.jpg 2024-02-25_180007.jpg


使用程序 - 指示焊点
下一阶段是在 PCB 上指示焊点(焊盘)的位置:双面 (THT) 和单面 (SMD)。要在 PCB 上放置这样的点,请将光标放在适当的位置,然后按键:
* P(放置 THT 焊盘)或
* V(放置 SMD 焊盘)。
如果另外启用网格对齐选项 (SNAP) - S 键,则程序在放置第一个焊盘后,将以 0.05 的网格对齐放置后续焊盘,即标准 DIP 外壳中引脚之间空间的一半。
这是一个有用的选项,可以让您加快此阶段的速度,因为您不必将光标精确地放置在键盘的中心。

如果不启用 SNAP 选项 - 如果我们不精确,焊盘将偏离中心。

2024-02-25_180107.jpg


启用 SNAP - 完美的焊盘放置:
2024-02-25_180158.jpg


这里值得一提的是,如果在某个时候我们犯了错误,只需单击程序中的“撤消”按钮,或者 - 如果我们将 PCB 上的某个元件放置在错误的位置,只需用光标指向它并单击删除按钮。
2024-02-25_180257.jpg


SMD 焊盘不仅可以“用于”指示 SMD 元件的实际焊盘,还可以用于边缘连接器或生成附加焊接点(例如,当两个元件焊接到一个星形焊盘时)。程序中选择所有焊盘后的样子(顺便在统计中我们可以看到放置的焊盘数量):
2024-02-25_180350.jpg


使用程序 - 指示连接
下一步是指示焊盘之间的连接 - 为此,将光标放在我们要开始绘制连接的位置,然后按 W(电线)键。程序将用蓝色光标标记它已记住所选位置。随后按 W 键将调用至指定位置并移动光标。当连接在焊盘上结束时(或者我们按 ESC 键),光标将消失,我们将能够从不同的位置开始绘制新的连接:

image.png image.png image.png


如果我们想从焊盘开始绘制连接,只需指向它并按 W 键)
image.png image.png

类似地,如果我们想从现有连接开始绘制连接(以创建分支) - 只需指向此类连接的节点并按 W 键:
image.png image.png

这部分使用程序是项目中最长的阶段,并且经常会出现错误。也许此活动至少可以部分自动化,例如通过自动边缘检测来检测路径的走向,但计算机永远不会出错,并且它通常可能导致创建错误的、不存在的连接或无法指示现有连接。通常,当看照片时,人自己对路径的走向产生怀疑,需要逆着光看PCB,或者,例如,PCB上的描述层掩盖了路径的实际走向: :
image.png
因此如果可以最大限度地减少错误风险,那么让人类从头到尾执行此阶段可能是值得的:

在使用程序时,我们可以持续访问统计数据 - 连接的连接段的数量或信号的数量(信号是一组相互关联的焊点+段连接)。通常,在使用程序时,我们可能会由于不准确而犯错误,例如,未连接路径的末端。该程序将此类连接检测为不良(“BAD 电线”),并在统计数据中指出它们。同样,两层中未连接的 SMD 或 THT 焊盘也计算在内。

image.png

只需点击“wires BAD”/“unconn.pads”/“unconn.SMDs”字样,程序就会指出它有疑问的元件:
image.png image.png image.png

另一个有趣的选择是信号跟踪。如果我们指向信号的某些部分(SMD / THT焊盘或轨道)并按I(信息)键,程序将突出显示整个信号波形并在顶部显示其名称(稍后将详细介绍命名)。
2024-02-25_181504.jpg


放置过孔/走线时,可以设置它们的尺寸/厚度:
image.png


“alpha 混合”选项允许您启用或禁用照片中迹线和焊点的可见性。关闭透视可以让您更好地看到您放置的走线和焊接点,而打开它可以让您看到照片中的原始路径并将它们与您指示的路径进行比较。
2024-02-25_181607.jpg


选择所有路径后的样子:
2024-02-25_181720.jpg


使用程序 - 分配焊点
下一步是将焊点分配给 PCB 上的元件。为此,我们指定一个焊接点(例如 U2 74LS174 系统的第一个引脚)并按 A - 分配键。将打开一个窗口,但由于我们没有添加任何设备,因此设备和可用设备板的列表为空:

2024-02-25_181815.jpg


要添加设备,请单击“添加”按钮。将打开一个窗口,我们可以在其中搜索我们感兴趣的元素(启动程序后,我加载了 Eagle 中的所有库,因此我们有很大的操作自由度)。搜索元素的方式与 Eagle 程序类似 - 只需输入您感兴趣的名称片段,并在可能出现任何字符串的位置插入星号。在下面的下拉层次结构中,只有满足条件的元素才会立即出现。在外壳中选择我们感兴趣的元件后,程序根据 Eagle 库中为此设备定义的前缀设置其名称,并添加第一个空闲编号。当然,我们也可以自己设置名称。此外,我们可以在确定信号名称时定义值(例如,RLC 元素)和元素的重要性(稍后详细介绍)。然后可以通过单击修改按钮来更改值、大小写甚至设备本身。
2024-02-25_181900.jpg


单击“确定”后,我们返回到上一屏幕,其中已添加所选设备,并且所有可用的提示都显示在其提示列表中。
2024-02-25_181941.jpg


我们选择我们感兴趣的引脚,点击OK(或ENTER),设备的名称和分配的焊盘编号就会出现在所选焊盘的PCB上。
image.png


我们对下一个 pad 进行类似的处理 - 我们指向下一个 PAD,按 A 键,最后选择的设备将在设备列表中标记,第一个空闲 pad 将在 pad 列表中标记。因此,如果我们逐个分配打击垫,只需按 Enter 键,下一个打击垫就已分配完毕。
2024-02-25_182119.jpg


如果我们现在想要分配下一个元素的焊盘,我们再次指向它的第一个焊盘,然后按 A 键。单击“添加”按钮将打开用于添加新设备的窗口,但默认选择的设备类型与上一屏幕列表中选择的设备类型相同。例如,当 PCB 上有十几个电阻器、电容器或相同的芯片时,这会大大加快工作速度 - 您不必每次都从头开始寻找。
2024-02-25_182222.jpg 2024-02-25_182256.jpg


一旦所有的焊盘都被分配:
2024-02-25_182354.jpg


使用程序 - 生成图表。
该程序的工作基本上已经结束,我们可以生成一个现成的 SCH 文件,其中包含重新创建的 PCB 图,准备在 Eagle 程序中打开。为此,请单击主程序窗口中的 Eagle 按钮,然后程序将询问我们生成图表的位置。

2024-02-25_182433.jpg


我们在 Eagle 中打开生成的文件并查看重新创建的图表:
2024-02-25_182514.jpg


当用ERC分析该图时,没有错误,证明重构是正确的:
image.png


该程序将元件一个接一个地放置在一起,不是将它们的引脚连接在一起,而是给它们贴上标签。当然,手动纠正生成的图表是值得的,例如通过更改元素的位置并映射信号流的方向,但这比您自己从头开始创建图表要短得多,而且它确实不需要太多的智力努力。在 Eagle 中突出显示给定信号还会对具有相同名称的所有连接进行着色,从而更容易查看哪些引脚连接到哪个引脚:
image.png


使用程序 - 命名信号
精明的读者可能已经注意到,在为 Eagle 程序生成的图表中,信号名称不是很友好(SIG + 下一个数字):

image.png


当然,我们可以(对于某些信号可能必须这样做)仅在 Eagle 程序中更改这些名称,但这不是更简单吗?当然。
在 KrzysioPCB 程序中,可以手动设置某些信号的名称 - 为此,我们指向给定信号(焊盘或轨道)的某些元素并按 N(名称)键。出现一个窗口,我们可以在其中输入信号的名称。

2024-02-25_182756.jpg


如果我们在程序中指示此信号,现在将使用新设置的名称来引用它:
2024-02-25_182843.jpg


然而,以这种方式命名许多信号仍然很累。难道就不能更简单吗?
PCB 上的许多元件可以被认为是所谓的主要元件,其引脚名称可以同时设置连接到这些引脚的信号的名称 - 例如,如果我们有一个微处理器,例如具有地址总线 A0..A15,数据总线D0..D7等,从逻辑上讲,到达这些端子的信号名称正是如此。
与我们的项目类似 - 到达盒式连接器的信号可能会继承其端子的名称。添加新元素时,我提到了在确定信号名称时设置元素重要性的选项。

2024-02-25_183111.jpg


为信号指定名称的算法如下:首先,程序检查用户是否手动为其指定了名称。如果是这样,它将有这个名称。
如果没有,程序将检查连接到该信号的所有元素。如果其中至少一个的重要性大于零,则该信号的名称将与具有最高重要性的元素的终端的名称相同。
如果没有,我将根据以下模式命名程序:SIG + 序列号。

因此,如果我们将卡式连接器的有效性设置为 1 并再次生成图表,这次我们将拥有更清晰的信号名称:

image.png


最后一步是手动组织图表:
* 移动元素,使它们不重叠并反映信号流的逻辑方向,
* 删除标签并连接信号,这将是确定信息流的更清晰的方法(特别是当给定信号仅连接两个元素时 - 例如,一个门的输出连接到下一个门的输入) * 排序后在Scheme
之前尚未命名的信号:

image.png
您可以立即看到映射器的工作方式已经弄清楚:
CPU 将 --PPCCCC 字节写入地址 $8000-$FFFF 将程序库(地址 $8000-$FFFF)设置为 PP 和图形库(地址为 $0000-$1FFFF)是 CCCC 。
乍一看,顶部由四个与非门组成的复杂系统无非是建立镜像的多路复用器:
当PRG_A16 = 0时,则CIRAM-A10





打赏

参与人数 2家元 +24 收起 理由
nokia5320 + 18
zhczf + 6 謝謝分享

查看全部打赏

发表于 2024-2-25 19:38:22 来自手机浏览器 | 显示全部楼层
看着还行,要是能直接生成电路图就牛了。
回复 支持 反对

使用道具 举报

发表于 2024-2-25 20:37:11 | 显示全部楼层
谢谢分享,下载过该软件,还没用过。
回复 支持 反对

使用道具 举报

发表于 2024-2-26 12:22:58 | 显示全部楼层
谢谢分享,不是中文的怕玩不转。
回复 支持 反对

使用道具 举报

发表于 2024-2-27 09:12:32 | 显示全部楼层
太复杂了,玩不转。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-27 16:11 , Processed in 0.218400 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表