Logisim概要

Logisim 是一个用于设计和模拟数字逻辑电路的工具。它提供了一个简单的工具栏界面和电路仿真功能,使得学习逻辑电路的基本概念变得简单易懂。Logisim 允许用户从较小的子电路构建更大的电路,并通过鼠标拖动来绘制电线束。

基本逻辑符号

首先我们要认识一些基本的逻辑门符号,这在实践中会很有用。
基本的逻辑门符号1
基本的逻辑门符号2

74LS138概要

74LS138译码器命名规则(见附录)。
74LS138是最典型、最基础的3线-8线译码器,基于输入信号的组合逻辑控制。其作用为将$n=3$个输入变量变换$2^{n}=2^{3}$个输出函数,并且每个输出函数对应于$n=3$个输入变量的一个最小项。所以3线-8线译码器可以作为“最小项生成器”。它有3个信号输入端和8个信号输出端,一般还会有3个使能端。
输入输出一般采用负逻辑(即低电平有效)。

采用负逻辑的原因:

  1. 硬件特性:TTL 电路低电平驱动能力强,输出设计为低有效。
  2. 功能匹配:译码器的核心功能是将输入地址映射到唯一的输出端。对于组合逻辑电路(如全加器、全减器),利用低电平有效输出可直接通过 与非门实现 “最小项求和”:
  3. 最小项在真值表中对应输出为 0 的项(负逻辑),而与非门的逻辑特性(“全 1 出 0,有 0 出 1”)恰好匹配这一需求。
  4. 例如,全减器的借位输出 $J_{i} = \sum m(1,2,3,7)$,对应 74LS138 的 $\overline{Y_{1}}, \overline{Y_{2}}, \overline{Y_{3}}, \overline{Y_{7}}$ 低电平有效,通过与非门可直接实现 “或非” 逻辑(德摩根定理:与非 = 或非的反相)。
  5. 兼容性:与 TTL 逻辑门(如与非门)无缝配合,减少额外元件。
  6. 行业惯例:符合早期数字电路的设计规范,便于工程应用。

信号输入端

3个信号输入端从高位到低位排列为:$A_{2},A_{1},A_{0}$.

信号输出端

8个信号输出端从低位到高位排列为:$\overline{y_{0}},\overline{y_{1}},\overline{y_{2}},\overline{y_{3}},\overline{y_{4}},\overline{y_{5}},\overline{y_{6}},\overline{y_{7}}$.

使能端

我们一般令$S_{1}=1,\bar{S_{2}}+\bar{S_{3}}=0$时有效,即只有同时满足$S_{1}=1,S_{2}=1,S_{3}=1$时,译码器才进入有效工作状态。

Q:
为什么使能端要设置三个?在这里明明仅需要一个就可以实现功能。
A:

  1. 灵活的使能条件控制。这种多条件组合控制可避免误触发,确保译码器仅在精确匹配的逻辑条件下启用,提升电路可靠性。若只有一个使能端,只能实现简单的 “开 / 关” 控制,无法满足复杂系统对使能条件的精细要求。
  2. 便于电路扩展与级联。在多片译码器级联扩展译码范围时(如将两片 38 译码器组合成 4 线 - 16 线译码器),需通过使能端区分不同芯片的工作状态。
  3. 适应复杂系统集成。复杂数字系统中,译码器的使能可能需接收多个不同模块的控制信号。三个使能端可灵活适配多种控制信号组合,使译码器更好地融入系统,而单个使能端的简单控制难以满足此类需求。

译码过程分析

在使能端有效时:$A_2A_1A_0$ 的每一种组合($000 \sim 111$)都唯一对应一个输出信号为低电平(0),其余输出端为高电平(1)。例如 $A_2A_1A_0 = 111$ 时,$\overline{Y_7} = 0$,其余 $\overline{Y_0} \sim \overline{Y_6} = 1$。
下面给出一个38 译码器的真值表:

输入 输出
$S_{1}$$\bar{S_{2}}+\bar{S_{3}}$$A_{2}$$A_{1}$$A_{0}$$\overline{y_{0}}$$\overline{y_{1}}$$\overline{y_{2}}$$\overline{y_{3}}$$\overline{y_{4}}$$\overline{y_{5}}$$\overline{y_{6}}$$\overline{y_{7}}$
1000001111111
1000110111111
1001011011111
1001111101111
1010011110111
1010111111011
1011011111101
1011111111110
0$\phi$$\phi$$\phi$$\phi$11111111
$\phi$1$\phi$$\phi$$\phi$11111111

注:本表中的$\phi$为1或0.

逻辑函数表达式

我们通过观察 $\overline{Y_{i}}$ 每一列的 0 所在的位置,写出函数逻辑表达式(负逻辑)。
$\overline{Y_{0}}=\overline{\bar{A_{2}}\bar{A_{1}}\bar{A_{0}}}$, $\overline{Y_{1}}=\overline{\bar{A_{2}}\bar{A_{1}}{A_{0}}}$, $\overline{Y_{2}}=\overline{\bar{A_{2}}{A_{1}}\bar{A_{0}}}$, $\overline{Y_{3}}=\overline{\bar{A_{2}}{A_{1}}{A_{0}}}$, $\overline{Y_{4}}=\overline{{A_{2}}\bar{A_{1}}\bar{A_{0}}}$,$\overline{Y_{5}}=\overline{{A_{2}}\bar{A_{1}}{A_{0}}}$,$\overline{Y_{6}}=\overline{{A_{2}}{A_{1}}\bar{A_{0}}}$,$\overline{Y_{7}}=\overline{{A_{2}}{A_{1}}{A_{0}}}$.

电路图

根据这些与非逻辑表达式,我们可以方便地利用与非门组成3线-8线译码器:
用与非门组成3线-8线译码器
在本次项目中,我们用不到使能端的复杂功能,所以令两个低电平有效的使能端直接接地,另一个高电平有效的使能端直接手动控制。

全加器的基本原理

对于一个全加器来说,有3个输入信号和2个输出信号。

  • 输入信号:被加数$A_{i}$、加数$B_{i}$、由低位来的进位数$C_{i-1}$.
  • 输出信号:本为和(进位之后得到的和)$S_{i}$、向高位的进位数$C_{i}$.
  • 我们可以得到真值表
输入 输出
$C_{i-1}$$B_{i}$$A_{i}$$S_{i}$$C_{i}$
00000
00110
01010
01101
10010
10101
11001
11111
  • 理解(以第七行为例):两个本位相加$A_{i}+B_{i}=1$,又有由低位进来的 1 ,即$A_{i}+B_{i}+C_{i-1}=2$,在二进制中逢二进一,故本位和$S_{i}=0$,向高位的进位数$C_{i}=1$.
  • 由真值表,我们写出两个输出信号(函数)的最小项表达式
    $$本位和 S_{i}​=\sum m(1,2,4,7)$$
    $$进位C_{i}​=\sum m(3,5,6,7)$$

    事实上,我们还可以写出两个输出信号的函数逻辑表达式:$$本位和 S_{i}​=Ai​⊕Bi​⊕C_{i−1}​$$$$ 进位C_{i}​=A_{i}​B_{i}​+(A_{i}​+B_{i}​)C_{i−1}​$$

实现全加器的电路图

现在得到了两个输出信号的最小项表达式,那么我们现在只需要将74LS138对应的输出端引脚接在与门上即可。
至于输入端,我们发现,全加器的真值表的$C_{i-1}$,$A_{i}$,$B_{i}$这三列与38译码器的$A_{2}$,$A_{1}$,$A_{0}$是一一对应的。所以我们在设置输入信号时,将它们一一对应起来即可。

例如 $A_{2}$,$A_{1}$,$A_{0}$ 输入 0,0,1 时,$y_{1}$输出高电平,这与 $S_{i}$ 输出高电平时,$C_{i-1}$,$A_{i}$,$B_{i}$ 取 $001 = 1$相对应。故 $y_{i}$ 可以与 $C_{i-1}$,$A_{i}$,$B_{i}$ 所组成的二进制数一一对应。

我们注意到$y_{0}$没有在任何一个逻辑函数表达式中出现,所以直接悬空即可。
(在本项目中,简化起见使能端直接手动设为有效。)
20250503004.png

全减器的基本原理

全减器与全加器有何不同?我们应当着重注意两者的不同之处。
对于一个全减器来说,也有3个输入信号和2个输出信号。

  • 输入信号:被减数$A_{i}$、减数$B_{i}$、来自低位的借位$J_{i-1}$.
  • 输出信号:本为差$D_{i}$、向高位的借位$J_{i}$.
  • 我们下面给出全减器的真值表
输入 输出
$J_{i-1}$$B_{i}$$A_{i}$$D_{i}$$J_{i}$
00000
10011
01011
11001
00110
10100
01100
11111
  • 理解(以第四行为例):两个本位相减$A_{i}-B_{i}=0-1$,不够减,所以需要向高位借 1 ,所以借位信号 $J_{i}=1$ ,借位之后 $A_{i}-B_{i}=2-1=1$,而 $J_{i-1}=1$ 说明有来自低位的借位,所以 $D_{i}=1-1=0$.
  • 并且由真值表,我们写出两个输出信号(函数)的最小项表达式
    $$本位差 D_{i}​=\sum m(1,2,4,7)$$
    $$借位J_{i}​=\sum m(1,2,3,7)$$

    事实上,我们还可以写出两个输出信号的函数逻辑表达式:$$本位差 D_{i}​=A_{i}​⊕B_{i}​⊕J_{i−1}​$$$$
    借位J_{i}​=\bar{A}_{i}​B_{i}​+\bar{A}_{i}J_{i-1}+B_{i}J_{i-1}​$$
  • 我们可以发现,全加器的和与全减器的本位和(差)的逻辑表达式相同,仅仅进位与借位的逻辑表达式不同。

实现全减器的电路图

因为全加器的和与全减器的本位和(差)的逻辑表达式相同,所以我们在实现全减器的时候可以利用全加器的第一个“与门”。
仅仅进位与借位的逻辑表达式不同,所以我们只需要为全减器重新添加一个借位的“与门”即可。
至于输入信号,只需要把全加器的 $C_{i-1}$ 换成 $J_{i-1}$ 即可。
下面给出全减器的电路图:
20250503005.png

合体全加器和全减器并用开关切换状态

至此,我们学会了仅用一片74LS138和两个与门分别实现全加器和全减器。那么,能否将一个全加器和一个全减器整合在一起,并设置一个开关,用来切换加减状态呢?
对于本位和(差)来说,输出信号的逻辑表达式是完全相同的,所以不必调整。
对于进位(借位):

  1. 我们知道,$A\cdot0=0,A\cdot1=A$.
  2. 所以可以用一个“与或”门来切换全加(减)器的有效输出.
    20250503006.png
    当 $K=0$ 时,最终的输出 $y_{out}$ 完全取决于 $y_{1}$;
    当 $K=1$ 时,最终的输出 $y_{out}$ 完全取决于 $y_{2}$.
    然后,我们只需要把 $y_{1}$ 接在 $C_{i}$ 上,把 $y_{2}$ 接在 $J_{i}$ 上,就大功告成了。
    至此,我们绘制出了完整电路图:
    20250503007.png

时序图验证结果

我们对照真值表,可以分别验证全加器和全减器的正确。
全加器(当 $K=0$ 时):
20250503008.png
全减器(当 $K=1$ 时):
20250503009.png

总结

本文介绍了74LS138译码器和全加(减)器的基本工作原理,利用Logisim进行了实践,最后设计了一个开关来进行状态切换。
万事开头难,做完了整个项目,回头看来还是挺简单的。这是笔者第一次使用Logisim手搓电路图,所以做了较为详细的记录,希望能给读者带来帮助。
如果你发现了本文中的错误,欢迎在评论区交流。


附录:
74LS138译码器的名称由 系列前缀、工艺标识、功能型号 三部分组成,其命名逻辑与集成电路行业的标准命名规则直接相关:
一、“74”:系列前缀——商用级逻辑集成电路

  • 起源: “74”是德州仪器(TI)在1960年代推出的 TTL(晶体管-晶体管逻辑)集成电路系列 的标志性前缀,代表 商用级产品(对应军用级前缀为“54”,如54LS138)。
  • 含义

    • 商用级(74系列):工作温度范围为 0°C~70°C,适用于普通消费电子、工业控制等场景。
    • 军用级(54系列):工作温度范围为 -55°C~125°C,性能更稳定但成本更高。
  • 后续衍生的CMOS系列(如74HC138、74AHC138)也沿用了“74”前缀,表示兼容74系列的引脚和功能。
    二、“LS”:工艺标识——低功耗肖特基TTL技术 - TTL子系列分类: TTL家族根据工艺改进和性能优化,衍生出多个子系列,“LS”代表 Low-power Schottky TTL(低功耗肖特基TTL)

    • S(Schottky,肖特基):引入肖特基二极管钳位技术,减少晶体管饱和深度,提升开关速度(传输延迟约10ns),同时降低功耗(相比早期的“RTL”“DTL”系列)。
    • L(Low-power,低功耗):在肖特基工艺基础上进一步优化功耗,典型功耗约 2mW/门(远低于普通肖特基“LS”的10mW/门,早期标准TTL“RTL”的10mW/门)。
  • 其他常见工艺标识

    • HC:高速CMOS(74HC138,兼容TTL电压,功耗更低)。
    • HCT:CMOS兼容TTL输入(74HCT138,可直接与TTL电路连接)。
    • AHC:先进高速CMOS(74AHC138,速度更快,功耗更低)。

三、“138”:功能型号——3线-8线译码器

  • 功能定义: “138”是 3输入-8输出译码器 的标准型号,具体功能为:

    • 输入:3位二进制代码(A2、A1、A0),共8种组合(000~111)。
    • 输出:8个低电平有效信号(Y0~Y7),每次仅1个输出为低电平,对应输入代码的十进制值(如输入101时,Y5输出低电平)。
  • 型号命名逻辑: 数字集成电路的功能型号由厂商约定俗成,例如:

    • “138”固定代表3-8译码器,类似地:
    • “139”是双2-4译码器,
    • “154”是4-16译码器,
    • “4511”是BCD-七段显示译码器。