是否可以通过代码绘制电路?

电器工程 电路设计 编程 绘画
2022-01-14 13:50:45

有没有更好的方法不是编写网表文件。就像是:

Define Battery1 As a Battery
Define Resistor1 As a Resistor

Connect Battery1 First Terminal to Resistor1 Second Terminal
Connect Resistor1 First Terminal to Battery1 Second Terminal

编辑:

我发现这些答案很有帮助。如果有一种方法可以模拟代码产生的电路,那就太好了。

4个回答

如果您熟悉 \$\LaTeX\$,您可以使用circuitikz通过编写代码来绘制漂亮的电路。

在此处输入图像描述

例子
更多示例

查看 SKiDL ( https://github.com/xesscorp/skidl ),这与您的想法一致。

编辑(按要求):SKiDL 允许对所有电路(而不仅仅是数字电路)进行程序描述,而不是以图形方式输入原理图。然后可以将网表输出导入布局软件。它还将执行 ERC 检查,并且是可扩展的。这意味着,例如,您可以编写一次过滤器,然后在不同的项目中重复使用它,而不是每次都绘制。用 Python 编写,附带所有支持。

很多程序都可以画出原理图。我所知道的没有一个能画出好的原理图:强调最重要的信息,并以清晰易懂的方式排列电路。

如果您只是在寻找硬件描述语言(没有图形原理图输出),VHDL 和 Verilog 被广泛用于定义要在 IC 中实现的(数字)电路,也可用于板级设计。

您的示例看起来很像modelica,这是一种基于创建块和连接块之间端口的面向对象的仿真语言。

使用电气元件库的示例(来自maplesoft.com),

encapsulated model ChuaCircuit "Chua's circuit, ns, V, A"
  import Modelica.Electrical.Analog.Basic;
  import Modelica.Electrical.Analog.Examples.Utilities;
  import Modelica.Icons;
  extends Icons.Example;

  Basic.Inductor L(L=18);
  Basic.Resistor Ro(R=12.5e-3);
  Basic.Conductor G(G=0.565);
  Basic.Capacitor C1(C=10, v(start=4));
  Basic.Capacitor C2(C=100);
  Utilities.NonlinearResistor Nr(
    Ga(min=-1) = -0.757576,
    Gb(min=-1) = -0.409091,
    Ve=1);
  Basic.Ground Gnd;
equation 
  connect(L.p, G.p);
  connect(G.n, Nr.p);
  connect(Nr.n, Gnd.p);
  connect(C1.p, G.n);
  connect(L.n, Ro.p);
  connect(G.p, C2.p);
  connect(C1.n, Gnd.p);
  connect(C2.n, Gnd.p);
  connect(Ro.n, Gnd.p);
end ChuaCircuit;

尽管您可以从模型生成示意图,但通常这是在 GUI 中完成的,该 GUI 使用位置和方向信息对组件进行注释。