chunjiu 发表于 2021-7-22 16:23:46

关于使用 KiCAD 进行电路仿真的简单介绍

本帖最后由 chunjiu 于 2021-7-22 17:24 编辑

这里借用一张图纸,因为是单位的设计文件,所以做了模糊处理,免得给我带来麻烦。

在图纸上,大多数元器件是 Spice 的专用元器件,不是用来 Layout 的元器件,在元件库里面有一个专用的 Spice 符号库。

在图纸上它们用来提供我的电路所需要的工作环境,包括供电。

我的电路在哪里? 那个有三个连接端子的小框框就是 ... {:lol:} ,为了和仿真库的元器件符号区分开,真实电路是用一张子图引用的,这样就可以避免和仿真测试电路混淆,和 C 语言的调用函数(黑盒子:特定功能代码块复用)是一个原理。

还可以看到图纸内有很多文本,大多数是对图纸中的设计进行的仿真说明和记录,但是和仿真器 NgSpice 相关的指令只有下面两行。带星号的行是注释,会被 KiCAD 抛弃,即使不抛弃传给 NgSpice 也会被当作注释而忽略:

* 仿真,上升沿和下降沿延时分析
*   包含外部文件 test_opa.scp
*   R12/R13 为 XX 模拟电阻,NgSpice 脚本使用,请勿修改编号
*   由外部 NgSpice 命令使用,或者直接在导出网时运行

* set ngbehavior=pski
* set wfont=simhei
* set xbrushwidth=2

.tran 50n 300u
.include test_opa.scp


.tran 50n 300u 表示对电路做一个瞬态分析,步长 50ns,总时间 300us。

.include test_opa.scp 表示包含外部文件,它是我写的 Spice 执行脚本。



PS:添加仿真截图。



这里照搬另一个帖子的内容来强调一下(参见第七楼: https://www.amobbs.com/thread-5752847-1-1.html ):

因 KiCAD 不是仿真操作的真正实现,所以大伙儿一定要搞清楚 KiCAD 和 NgSpice 仿真器之间的关系:

1、KiCAD 不负责仿真操作,它只是 NgSpice 的一个外部辅助输入工具。NgSpice才是真正的电路仿真器!

    由于 Spice 系列工具不接受图形输入方式,只有文本形式描述的网表关系和仿真参数,因此借用外部的 UI 输入工具输入直观的电气网络关系是很必要的,所以彼此都是开源的 KiCAD 成了 NgSpice 的首选。

2、NgSpice 提供了一个仿真用的引擎(Windows 下是 DLL 形式),KiCAD 集成了该引擎,但因为引擎的修补很频繁,因此 NgSpice 的作者建议到 NgSpice 官网上自己更新最新版的引擎,来替换 KiCAD 中的默认引擎。

3、当你在 KiCAD 的原理图中放入一个文本时,一行用 "." 开头的文本将被视为 NgSpice 的点指令,这在仿真操作时会传递给 NgSpice。但是要注意:KiCAD 不负责检查内容的对错,它只负责传递用户的输入信息!

4、若在 KiCAD 中执行仿真操作时出错的话,肯定和 KiCAD 无关!只是你输入的内容导致 NgSpice 仿真失败,KiCAD 只是帮 NgSpice 引擎传个话:你输入的信息错了 ...

5、在 KiCAD 中进行仿真操作时,只能使用有限的 NgSpice引擎内置功能,不能随心所欲的控制输出信息。若想了解很详细的仿真结果,只能依赖真正的 NgSpice 工具(另有安装包)。

6、KiCAD 提供两种仿真形式:

一、引擎模式,KiCAD 5.1.x 版在 “工具” 菜单下能看到。在 KiCAD 6 (尚未发布)中,变到了 “检查”菜单下;

二、网表形式,在生成网络表时,选择 spice 格式即可。然后在外部执行 NgSpice 工具装载该网表文件来执行仿真。

PCBBOY1991 发表于 2021-7-22 16:25:38

很高很强大!

oner 发表于 2021-7-22 17:17:11

不明觉厉,学习下。

cloudboy 发表于 2021-7-22 17:31:39

楼主 强{:lol:}
页: [1]
查看完整版本: 关于使用 KiCAD 进行电路仿真的简单介绍