EEE104-Lecture 3

比较器

比较器是一种组合逻辑电路,用于比较两个二进制数的大小。比较器可以分为相等比较器和不等比较器。以下是比较器的工作原理:

1. 相等比较器

相等比较器用于判断两个输入是否相等。一个简单的相等比较器可以使用异或(XOR)门来实现。

  • 1位相等比较器

    • 输入:A 和 B
    • 输出:如果 A 和 B 相等,输出为1;否则为0。
    • 实现方法:使用一个异或门。如果 A 和 B 相等,A XOR B 的输出为0。然后取反,可以得到相等比较器的输出。
  • 多位相等比较器

    • 输入:多个位的二进制数,例如 $A = A_3A_2A_1A_0$ 和 $B = B_3B_2B_1B_0$。
    • 输出:如果所有对应位相等,输出为1;否则为0。
    • 实现方法:将每个位对使用异或门比较,然后将所有异或门的输出输入到一个与(AND)门。如果所有位相等,异或门的输出都为0,与门的输出为1。

2. 不等比较器

不等比较器用于判断两个输入数的大小关系(大于、小于或等于)。通常使用逐位比较的方法。

  • 多位不等比较器
    • 输入:多个位的二进制数,例如 $A = A_3A_2A_1A_0$ 和 $B = B_3B_2B_1B_0$。
    • 输出:A > B、A < B 或 A = B。
    • 实现方法:从最高位开始比较。如果最高位的比较结果不相等,则高位决定大小关系;如果相等,则继续比较下一位,直到找到不同位或者比较完所有位。

例如,74HC85 是一个常用的 4位不等比较器,其工作方式如下:

  1. 比较最高位

    • 检查 $A_3$ 和 $B_3$:
      • 如果 $A_3 > B_3$,则 A > B。
      • 如果 $A_3 < B_3$,则 A < B。
      • 如果 $A_3 = B_3$,继续比较下一位。
  2. 逐位比较

    • 重复上述过程,依次比较 $A_2$ 和 $B_2$、$A_1$ 和 $B_1$、$A_0$ 和 $B_0$。
    • 如果所有位都相等,则 A = B。
  3. 实现电路

    • 使用级联的比较电路进行逐位比较。
    • 74HC85 具有级联输入和输出,可以实现多位数的比较,通过连接多个74HC85实现更高位的比较。

3. 不等比较器的例子

具体实现一个 4位不等比较器(如 74HC85)的电路逻辑:

  • 输入:A 和 B 的每个位 $A_3A_2A_1A_0$ 和 $B_3B_2B_1B_0$。
  • 输出:A > B、A < B 和 A = B。
  • 逻辑:
    • 对于每一位,使用以下逻辑:
      • $A_i > B_i$:输出1,表示 A > B。
      • $A_i < B_i$:输出1,表示 A < B。
      • 如果 $A_i = B_i$,则检查下一位。

通过组合这些逻辑门,可以设计一个完整的比较器电路,用于判断两个二进制数的大小关系。这些比较器在数字电路中广泛用于排序、选择和控制逻辑中。

解码器

解码器是一种组合逻辑电路,用于将编码的数据转换成指定的输出信号。它的工作原理是根据输入的二进制编码,激活唯一的输出线。以下是解码器的详细工作原理和示例:

解码器的基本概念

解码器接受 n 位二进制输入,并生成 2^n 个输出。每一个输出对应于输入的一个唯一的二进制组合。

工作原理

  1. 输入和输出关系

    • 输入:n 位二进制数(例如 $A_{n-1}A_{n-2}…A_0$)。
    • 输出:2^n 个输出线中的一个被激活(例如 $Y_0, Y_1, …, Y_{2^n-1}$)。
    • 当输入的二进制数对应某一个输出时,该输出线被激活(输出1),其他输出线保持不激活(输出0)。
  2. 逻辑实现

    • 解码器使用逻辑与门(AND gates)和非门(NOT gates)实现输入到输出的映射。
    • 每一个输出对应于一个唯一的输入组合。
    • 非门用于将输入的某些位取反,以实现正确的逻辑组合。

示例:2位输入的4线解码器(2-to-4 Decoder)

假设有2位输入 $A_1$ 和 $A_0$,输出为 $Y_0, Y_1, Y_2, Y_3$。

$A_1$ $A_0$ $Y_0$ $Y_1$ $Y_2$ $Y_3$
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1
  • 逻辑表达式
    • $Y_0 = \overline{A_1} \cdot \overline{A_0}$
    • $Y_1 = \overline{A_1} \cdot A_0$
    • $Y_2 = A_1 \cdot \overline{A_0}$
    • $Y_3 = A_1 \cdot A_0$

4位输入的16线解码器(4-to-16 Decoder)

假设有4位输入 $A_3, A_2, A_1, A_0$,输出为 $Y_0, Y_1, …, Y_{15}$。

  • 逻辑表达式
    • $Y_0 = \overline{A_3} \cdot \overline{A_2} \cdot \overline{A_1} \cdot \overline{A_0}$
    • $Y_1 = \overline{A_3} \cdot \overline{A_2} \cdot \overline{A_1} \cdot A_0$
    • $Y_2 = \overline{A_3} \cdot \overline{A_2} \cdot A_1 \cdot \overline{A_0}$
    • $…$
    • $Y_{15} = A_3 \cdot A_2 \cdot A_1 \cdot A_0$

特殊解码器

  1. BCD到7段显示解码器

    • 将BCD码(Binary-Coded Decimal)转换为7段显示器的控制信号。
    • 每个输出对应7段显示器的一个段(a-g)的点亮状态。
  2. 多级解码器

    • 通过级联多个解码器实现更高位数的解码。例如,使用两个4-to-16解码器可以实现5位输入的解码。

实际应用

解码器在数字电路中有广泛的应用,包括:

  • 地址解码:在存储器中选择特定的存储单元。
  • 数据选择:在多路复用器中选择特定的数据路径。
  • 显示驱动:控制7段显示器或其他显示设备。

例子:74HC154 4线到16线解码器

  • 输入:4位输入 $A_3, A_2, A_1, A_0$。
  • 输出:16条输出线中的一条被激活。
  • 特点:具有使能输入(chip select),可以通过使能输入选择是否激活解码器。

通过以上描述可以看出,解码器的核心工作原理是将输入的二进制编码转换成唯一的输出信号,这一过程主要依赖逻辑与门和非门的组合来实现。

编码器

编码器是一种组合逻辑电路,用于将输入信号转换为二进制编码输出。与解码器的工作方式相反,编码器将多个输入信号中的一个高电平信号转换为相应的二进制编码。以下是编码器的工作原理及其应用。

编码器的基本概念

编码器接受 2^n 个输入信号,并生成 n 位二进制输出。每一个输出编码代表一个唯一的输入信号。

工作原理

  1. 输入和输出关系

    • 输入:2^n 个信号线,其中只有一条信号线处于高电平(逻辑1)。
    • 输出:n 位二进制数,对应于高电平输入信号的位置。
  2. 逻辑实现

    • 编码器使用逻辑或门(OR gates)来实现输入到输出的映射。
    • 每一个输出位由多个输入信号通过或门组合而成。

示例:4-to-2 优先编码器(4-to-2 Priority Encoder)

假设有4个输入 $D_3, D_2, D_1, D_0$ 和2位输出 $A_1, A_0$。

输入 $D_3$ 输入 $D_2$ 输入 $D_1$ 输入 $D_0$ 输出 $A_1$ 输出 $A_0$
0 0 0 1 0 0
0 0 1 0 0 1
0 1 0 0 1 0
1 0 0 0 1 1
  • 逻辑表达式
    • $A_1 = D_3$ 或 $D_2$
    • $A_0 = D_3$ 或 $D_1$

优先编码器

优先编码器是一种特殊的编码器,它处理多个输入同时为高电平的情况,优先编码器选择具有最高优先级的输入进行编码。

例如,4-to-2 优先编码器的逻辑如下:

  • 输入: $D_3, D_2, D_1, D_0$ (优先级从高到低)
  • 输出: $A_1, A_0$
输入 $D_3$ 输入 $D_2$ 输入 $D_1$ 输入 $D_0$ 输出 $A_1$ 输出 $A_0$
0 0 0 1 0 0
0 0 1 0 0 1
0 1 0 1 1 0
1 1 1 1 1 1
  • 逻辑表达式
    • $A_1 = D_3$ 或 $(D_2 和 \overline{D_3})$
    • $A_0 = D_3$ 或 $(D_1 和 \overline{D_3} 和 \overline{D_2})$

示例:十进制到BCD编码器(Decimal-to-BCD Encoder)

假设有10个输入 $D_9, D_8, D_7, …, D_0$ 和4位BCD输出 $B_3, B_2, B_1, B_0$。

  • 逻辑表达式
    • $B_3 = D_8$ 或 $D_9$
    • $B_2 = D_4$ 或 $D_5$ 或 $D_6$ 或 $D_7$
    • $B_1 = D_2$ 或 $D_3$ 或 $D_6$ 或 $D_7$
    • $B_0 = D_1$ 或 $D_3$ 或 $D_5$ 或 $D_7$ 或 $D_9$

实际应用

编码器在数字系统中有许多实际应用,包括:

  • 键盘编码器:将按键输入转换为相应的二进制编码。
  • 地址编码器:将存储器地址转换为编码信号。
  • 传感器数据编码:将来自多个传感器的信号转换为二进制编码,用于进一步处理。

例子:74HC147 十进制到BCD优先编码器

  • 输入:10个输入 $D_9, D_8, …, D_0$,仅一个为高电平。
  • 输出:4位BCD码 $B_3, B_2, B_1, B_0$,表示高电平输入的位置。
  • 特点:优先编码功能,多个输入为高电平时,优先输出最高位的编码。

通过以上描述可以看出,编码器的核心工作原理是将多个输入信号中的一个高电平信号转换为对应的二进制编码输出,这一过程主要依赖逻辑或门的组合来实现。

多路复用器

多路复用器(Multiplexer,简称MUX)是一种组合逻辑电路,用于选择多个输入信号中的一个并将其传输到输出端。它通常被称为数据选择器,因为它根据控制信号(选择信号)来选择哪个输入信号通过到输出端。

多路复用器的基本概念

多路复用器具有多个数据输入端、若干个选择输入端和一个输出端。选择输入端决定了哪个数据输入端的信号被传输到输出端。

工作原理

  1. 输入和输出关系

    • 输入:多个数据输入(例如 $D_0, D_1, D_2, …, D_{n-1}$)。
    • 选择输入:决定选择哪个数据输入(例如 $S_0, S_1, …, S_m$,其中 $m = \log_2(n)$)。
    • 输出:单个输出(Y)。
  2. 选择逻辑

    • 多路复用器使用选择输入信号来选择其中一个数据输入并将其连接到输出。
    • 根据选择输入的二进制值,MUX的输出端连接到对应的输入端。

示例:2-to-1 多路复用器

假设有2个数据输入 $D_0$ 和 $D_1$,1个选择输入 $S$,和1个输出 $Y$。

  • 逻辑表达式
    • $Y = \overline{S} \cdot D_0 + S \cdot D_1$
    • 当 $S = 0$ 时,$Y = D_0$。
    • 当 $S = 1$ 时,$Y = D_1$。

示例:4-to-1 多路复用器

假设有4个数据输入 $D_0, D_1, D_2, D_3$,2个选择输入 $S_1$ 和 $S_0$,1个输出 $Y$。

选择输入 $S_1$ 选择输入 $S_0$ 输出 $Y$
0 0 $D_0$
0 1 $D_1$
1 0 $D_2$
1 1 $D_3$
  • 逻辑表达式
    • $Y = \overline{S_1} \cdot \overline{S_0} \cdot D_0 + \overline{S_1} \cdot S_0 \cdot D_1 + S_1 \cdot \overline{S_0} \cdot D_2 + S_1 \cdot S_0 \cdot D_3$

多路复用器的实际应用

  1. 数据选择

    • 多路复用器可以选择不同的数据源传输到处理器或其他电路中。
  2. 信号路由

    • 在通信系统中,多路复用器可以用于信号的路由选择,将多个信号通过一个通道传输。
  3. 逻辑函数实现

    • 多路复用器可以用于实现任意逻辑函数。例如,通过设置不同的选择输入,可以实现特定的逻辑组合。

例子:74HC151 8-to-1 多路复用器

  • 输入:8个数据输入 $D_0, D_1, …, D_7$,3个选择输入 $S_2, S_1, S_0$。
  • 输出:单个输出 $Y$。
  • 特点:74HC151 可以根据选择输入将一个数据输入传输到输出端,具有使能输入来控制多路复用器是否工作。

多路复用器的电路实现

多路复用器通常使用与门(AND gates)、或门(OR gates)和非门(NOT gates)来实现。以下是4-to-1多路复用器的电路实现示例:

  • 选择输入: $S_1$ 和 $S_0$
  • 数据输入: $D_0, D_1, D_2, D_3$
  • 输出: $Y$
  1. 使用两个选择输入 $S_1$ 和 $S_0$ 的组合生成选择控制信号。
  2. 将选择控制信号与数据输入通过与门相连接,生成部分选择信号。
  3. 将所有部分选择信号通过或门组合,生成最终输出信号。

通过这种方式,多路复用器可以实现对多个数据输入的选择和输出控制。多路复用器在数字电路设计中有广泛的应用,尤其在需要选择和路由多个信号的场合。

解多路复用器

解多路复用器(Demultiplexer,简称Demux)是一种组合逻辑电路,用于将单一的输入信号分配到多个输出线中的一个。与多路复用器(Mux)相反,解多路复用器根据选择输入信号将数据输入传输到指定的输出端。

解多路复用器的基本概念

解多路复用器接受一个数据输入、若干个选择输入,并生成多个输出。选择输入决定了哪个输出线被激活,并传输数据输入信号。

工作原理

  1. 输入和输出关系

    • 数据输入:单个输入信号(例如 $D$)。
    • 选择输入:决定数据输入信号被传输到哪个输出(例如 $S_0, S_1, …, S_m$,其中 $m = \log_2(n)$)。
    • 输出:多个输出信号(例如 $Y_0, Y_1, …, Y_{n-1}$)。
  2. 选择逻辑

    • 解多路复用器使用选择输入信号来选择其中一个输出并将数据输入信号连接到该输出。
    • 根据选择输入的二进制值,Demux的输入端连接到对应的输出端。

示例:1-to-4 解多路复用器

假设有1个数据输入 $D$,2个选择输入 $S_1, S_0$,和4个输出 $Y_0, Y_1, Y_2, Y_3$。

选择输入 $S_1$ 选择输入 $S_0$ 激活的输出 输出逻辑
0 0 $Y_0$ $Y_0 = D$
0 1 $Y_1$ $Y_1 = D$
1 0 $Y_2$ $Y_2 = D$
1 1 $Y_3$ $Y_3 = D$
  • 逻辑表达式
    • $Y_0 = \overline{S_1} \cdot \overline{S_0} \cdot D$
    • $Y_1 = \overline{S_1} \cdot S_0 \cdot D$
    • $Y_2 = S_1 \cdot \overline{S_0} \cdot D$
    • $Y_3 = S_1 \cdot S_0 \cdot D$

解多路复用器的实际应用

  1. 数据分配

    • 解多路复用器用于将单一的数据输入信号分配到多个输出设备或线路中。
  2. 信号路由

    • 在通信系统中,解多路复用器用于信号的分配选择,将输入信号路由到特定的输出通道。
  3. 存储器地址解码

    • 在存储器系统中,解多路复用器用于地址解码,将地址信号分配到相应的存储单元。

例子:74HC139 双1-to-4 解多路复用器

  • 输入:单个数据输入 $D$,两个选择输入 $S_1, S_0$。
  • 输出:四个输出 $Y_0, Y_1, Y_2, Y_3$。
  • 特点:74HC139 具有两个独立的1-to-4解多路复用器,可以分别控制两个数据输入的分配。

解多路复用器的电路实现

解多路复用器通常使用与门(AND gates)和非门(NOT gates)来实现。以下是1-to-4解多路复用器的电路实现示例:

  • 选择输入: $S_1$ 和 $S_0$
  • 数据输入: $D$
  • 输出: $Y_0, Y_1, Y_2, Y_3$
  1. 使用两个选择输入 $S_1$ 和 $S_0$ 的组合生成选择控制信号。
  2. 将数据输入与选择控制信号通过与门相连接,生成部分选择信号。
  3. 将各个与门的输出连接到相应的输出线,实现数据输入的分配。

通过这种方式,解多路复用器可以实现将单一输入信号分配到多个输出的功能,广泛应用于数字电路设计中。