Circuitjs 子电路(subcircuit)功能简介

在 circuitjs 中, 可以使用 子电路 来实现自定义的"黑盒"器件.

子电路 之前也称为 分支电路(subcircuit).

因为菜单上已经叫成了"子电路", 以下均称为子电路.

通过子电路, 可以实现对电路的封装与抽象, 从而达到模块化并简化电路的目的. 更进一步的, 被抽象的黑盒电路还可以继续的参与进一步的抽象与封装, 也即它们是具备 闭包性质 的, 循环往复, 可以以此构建出极为复杂的电路.

视频简介: Circuitjs 子电路(subcircuit)功能简介

创建子电路

下面以一个具体的例子来说明如何去创建一个子电路.

电路原型

如下一个由四个 与非门 构成的电路, 其功能如下:

如果输入是相同的, 比如同为 0 或同为 1, 则输出为 0;

如果输入是不同的, 比如 0, 1 或 1, 0, 则输出为 1.

circuitjs 子电路 subcircuit 原型

显然, 如果你了解数字电路, 这其实就是所谓的 异或门.

在确定它的功能达到我们的要求后, 先删除那些测试的逻辑输入输出, 只留下最终的电路.

添加标记节点

下一步是标识出所有的输入/输出, 此步骤通过 添加标记的节点 功能实现, 在"菜单--绘制--输出和标签--添加标记的节点"下:

circuitjs 子电路 subcircuit 添加标记的节点

拖动以增加标记节点, 并与输入输出的端点相连(这里需要先删掉原来连接的逻辑输入输出):

circuitjs 子电路 subcircuit 增加标记节点后的电路

所有标记的节点默认的名称均为 label, 通过双击这些节点, 在弹出的属性调整窗口中, 一一改为所希望的名称(尽量简短):

circuitjs 子电路 subcircuit 修改标记节点名称

最终效果如下, 输入端名称为 A 和 B, 输出端为 O:

circuitjs 子电路 subcircuit 标记后的结果

标记内部节点

如果要在子电路定义中使用带标记的节点, 但又不想让它们成为输入/输出之一, 则请勾选那些带标签的节点的编辑菜单中的"内部节点"复选框.

circuitjs 子电路 subcircuit 内部节点

注意: 如果电路存在多余的没有被标记的端点, 创建子电路时可能会存在异常.

所以, 哪怕是不用对外提供的端点, 你可能依然需要通过"内部节点"去标识它们.

在上述例子中, 没有使用到内部节点.

设置子电路引脚, 高宽, 名称

然后, 选择"菜单--文件--创建子电路", 弹出以下窗口:

circuitjs 子电路 subcircuit 创建子电路窗口

通过拖动节点可以重新排列引脚:

circuitjs 子电路 subcircuit 拖动节点排列引脚 gif

注意: 拖动时, 如果发现拖不动或没有效果, 则鼠标光标可以适当移出到模型框线外面一点.

引脚可以是左右或是上下朝向.

如果没有足够的空间供调整, 可以通过单击 宽度 和 高度 旁边的 + 号增加高度和宽度:

circuitjs 子电路 subcircuit 增加模型高度和宽度 gif

最后, 调整完成后, 可以通过单击 宽度 和 高度 旁边的 - 号减小不必要的高度和宽度.

当然, 你也可以不缩小模型框的最终大小, 但适当保持紧凑会好一点, 后面使用它时也不用占那么大的地方.

引脚位置和宽高调整完成后, 在 模型名称 中输入模型名称, 然后单击"确定".

circuitjs 子电路 subcircuit 输入模型名称

这将加载子电路模型.

注: 请记得保存该子电路实现, 否则以后将无法对其进行再次编辑(修改).

另: 如果同时勾选了 Save Across Sessions, 则子电路模型会在多个浏览器会话(session)中共享, 则其它打开的窗口中也能找到该模型.

使用子电路

现在, 您可以使用子电路模型创建电路. 用鼠标右键单击, 然后选择"有源集成电路--添加子电路实例"项.

circuitjs 子电路 subcircuit 有源集成电路--添加子电路实例

或是通过 "菜单--绘制--有源集成电路--添加子电路实例" 添加.

然后单击并拖动以创建实例.

circuitjs 子电路 subcircuit 拖动创建实例 gif

注: 连续拖动可以创建多个实例, 如果不再需要创建, 按快捷键 Esc 退出添加状态.

如果创建有多个子电路模型, 可以通过编辑实例, 然后在弹出窗口的 模型名称 下拉窗口中选择所需的模型.

circuitjs 子电路 subcircuit 选择模型

默认情况下, 它将使用您刚创建的模型.

当您保存/加载该电路时, 它还将保存/加载子电路模型, 因此您可以在其他电路中使用它.

另外, 在创建实例后, 你还可以再度编辑模型. 通过在模型实例上 "右键--编辑--编辑模型":

circuitjs 子电路 subcircuit 编辑模型

之后, 会再度弹出前述创建子电路时弹出的窗口, 你可以再度调整引脚位置, 模型高宽.

注意: 如果创建了多个模型实例, 此调整将影响所有已创建的实例!

另: 如果只是想简单的左右反转, 上下翻转, 或是左右上下翻转, 可以利用 翻转 X, 翻转 Y翻转 X/Y 实现.

重新封装现有模块以改变引脚位置

有时候, 有些模块是 app 中已经封装好的, 但它的引脚位置布局可能不是你希望的, 这时您还可以使用子电路来重新排列内置芯片上的引脚.

选取部分电路来创建子电路

默认情况, 创建子电路会使用当前画布上的所有电路.

如果在使用"文件--创建子电路"之前选择了电路的一部分, 则仅所选元素将被视为子电路的一部分.

多窗口中使用多个子电路

虽然在一个窗口(画布)中也可以创建多个子电路, 但添加实例时缺省都是最后创建的, 多个模型的情况下, 你需要再度编辑模型名称才能调整为其它先前添加的模型的实例.

为清晰起见, 你可以打开多个浏览器窗口, 不同的子电路在不同的窗口中去创建, 然后拖动生成相应的实例.

最后, 这些实例均支持跨窗口拷贝(粘贴), 因此你也可以通过这种方式将多个子电路实例整合到一起.

关于 circuitjs 子电路功能的介绍就到这里.

results matching ""

    No results matching ""