自定义逻辑实现 2 的显示

显示 2 本质上就是一个译码的过程, 或者说是一个编码的转换过程. 通过使用 自定义逻辑芯片 可以快速实现自己想要的逻辑(编码)转换.

通过 菜单--绘制--数字芯片--添加自定义逻辑 可以添加这样的器件.

或者是 右键--数字芯片--添加自定义逻辑.

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

在画布上拖动以生成一个缺省的自定义逻辑器件:

circuitjs 自定义逻辑 custom logic 实例

默认情况, 它包含两个输入 A 和 B, 两个输出 C 和 D, 但这只是缺省情况, 可以进一步调整, 输入和输出均可以是一个或多个, 而不是限于两个.

下一步是双击(或"右键--编辑")组件编辑其属性:

circuitjs 自定义逻辑 custom logic 编辑属性

首先给它一个名称, 比如"my-led-decoder":

circuitjs 自定义逻辑 custom logic 模型名称

接着点击 编辑模型, 在弹出窗口中, 有四个属性可以编辑, 分别为 输入, 输出, 信息文本, 定义, 下面将一一说明:

circuitjs 自定义逻辑 custom logic 编辑模型

  1. 输入

    改为 I1,I0, 与前面提到的原型一致, 以(英文)逗号分隔.

  2. 输出

    改为 a,b,c,d,e,f,g, 增加到七段, 与 LED 数码管一致.

  3. 信息文本

    这里可以填入对功能的一个具体描述, 比如"LED 译码器"

  4. 定义

    这是最重要的, 它定义了输入输出间的逻辑关系.

怎么定义呢? 最简单方式就是枚举所有输入的组合情况, 并给出对应输出的值.

其实就是把前面的真值表搬过来:

C S a b c d e f g
0 0 1 1 1 1 1 1 0
0 1 0 1 1 0 0 0 0
1 0 1 1 0 1 1 0 1

那么对于上述真值表的逻辑, 定义如下:

00=1111110
01=0110000
10=1101101

其实就是表达形式上稍有差别, 最终如下:

译码器自定义逻辑模型定义最终结果

等号左边对应输入, 右边对应输出. 等号的意思也即是当是这样的输入时, 就用这样的输出去输出.

比如, 第二行, 等式左边 01 分别表示 I1=0, I0=1; 等式右边 0110000 表示 a=0, b=1, c=1, d=0, e=0, f=0, g=0. 其它行同理.

简单讲, 就是当输入与等于 = 左边的模式匹配时, 就按 = 右边的值去设置输出端口的电平. 所以它直接就实现了真值表.

将此自定义逻辑与半加器和 LED 数码管连接起来, 测试一下, 可以发现整个译码是没有问题的.

译码器自定义逻辑译码效果展示

另: 我们没有为两个输入都是 1 的情况定义其对应的输出(此时应该显示 3), 你可以自行尝试加上.

你可能会想, 这样的一个实现简直有点像是作弊呀. 而且没有一个真实电路的实现, 你可能也会觉得不踏实. 怎么说呢? 后面还是会给出真实电路的实现.

自定义逻辑有时可以作为一种临时的应对方案, 比如一开始, 在忙于设计核心的半加器时, 显示还不是一个重要的问题, 就可以先用自定义逻辑应付一下, 将有助于我们进行整体的测试与验证.

另外的情况则是, 我会弄这个玩意, 我以前也弄过, 但弄起来有点复杂, 我不想反复去弄它. 我就走个捷径, 直接使用自定义逻辑去实现.

在下一篇章, 将分析一个具体的实现.

results matching ""

    No results matching ""