Circuitjs 创建自定义逻辑(Custom Logic)器件

介绍了在 Circuitjs 中如何通过 添加自定义逻辑 功能快捷实现电路逻辑.

您可以使用 自定义逻辑芯片 来实现自己的简单逻辑器件.

位于“菜单--绘制--数字芯片--添加自定义逻辑”下, 或者是"右键--数字芯片--添加自定义逻辑".

视频简介: Circuitjs 自定义逻辑电路(custom logic)功能简介

一个具体示例

来看一个具体的示例, 通过它来讲述 自定义逻辑 是什么, 为什么以及怎么去做.

这个示例如下, 两个输入 A1 和 A0, 两个输出 S1 和 S0, 两者间的关系也很简单, 就是对输入简单取反, 因此使用了两个 非门 就达到了目的.

circuitjs 自定义逻辑 custom logic 电路原型

继续阅读

Circuitjs 分支电路(子电路, subcircuit)功能简介

介绍了在 Circuitjs 中如何通过 分支电路 功能对电路进行抽象及封装, 从而简化电路.

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

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

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

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

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

继续阅读

进一步改进的 3位减法器 示例, 被减数和减数均可以为负数(并能正确显示), 最终运算结果在 -8~7 之间也能正确显示, 超出此范围的将不能正确显示:

被减数和减数均可为负数的 3 位减法器示例

在线可互动操作的 被减数和减数均可为负数的 3 位减法器示例

得益于之前 LED 补码解码显示模块的封装, 使得可以同时显示三个负数, 而界面也不至于过于拥挤及杂乱.

一个简化的 3位减法器 示例, 通过对模块的进一步封装及抽象, 引入了 求补器, 补码LED解码器(其内部封装了求补器及多位选择器) 等模块,从而使得各种细节得以隐藏, 大为减少各种连线:

更为简化的 3 位减法器示例

在线可互动操作的 更为简化的 3 位减法器示例

当然, 由于 circuitjs 本身的一些局限, 比如无法封装一个显示模块(如 LED 七段数码管), 无法使用总线(比如数据总线, 地址总线)等限制, 想要构建更多位的更复杂的电路还是比较麻烦的.

为文章内容增加了目录, 从 heading 标签中自动抽取.

对于一个比较长的文章来说, 有了目录导航也更加方便, 也便于用户掌握文章整体结构.

对于写作者而言, 先有一个清晰的写作大纲也有助于写出更有条理的文章.

这一点对于写代码而言也是类似的, 也是抽象原则的体现, 低层次的目录类似于函数(方法), 高层次的目录类似于类(class)乃至模块(module).

一个目录示意图:

目录示意图

重复性管理——抽象的重要性(上)

什么是抽象及它在重复性管理中的作用

Haskell 语言的设计者之一 Paul Hudak 曾说过一句略带夸张的话(overstatement):编程中最重要的三件事是:抽象,抽象,抽象

abstraction, abstraction, abstraction”are the three most important things in programming。

如果你去问一些资深开发者,程序员最重要的的能力之一有哪些?那么“抽象的能力”是绝对能排得上号的。

继续阅读