内容简介
系统讲解数字电路核心知识,涵盖数制与编码、逻辑门电路、组合逻辑电路、触发器、时序逻辑电路等。
数字电路入门教程——逻辑门与组合逻辑
概述
数字电路是现代电子技术的基石,从计算机CPU到智能手机芯片,从通信系统到工业控制,数字电路无处不在。与模拟电路处理连续信号不同,数字电路处理的是离散的数字信号——只有高电平(1)和低电平(0)两种状态。本教程从数制与编码基础出发,系统讲解逻辑门电路、组合逻辑电路设计、触发器原理和时序逻辑电路,帮助你建立完整的数字电路知识体系,为后续学习计算机组成原理、嵌入式系统等课程打下坚实基础。
知识点一:数制与编码
核心概念
数制是表示数值的方法。数字电路中最常用的数制包括二进制、八进制、十进制和十六进制。
常用数制对照表:
| 十进制 | 二进制 | 八进制 | 十六进制 |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 15 | 1111 | 17 | F |
常用编码方式:
8421 BCD码:用4位二进制数表示1位十进制数,权重分别为8、4、2、1
- 例:十进制 9 → 1001(8×1 + 4×0 + 2×0 + 1×1 = 9)
格雷码(Gray码):相邻两个编码之间只有一位不同
- 例:0→00,1→01,2→11,3→10
- 优点:减少多位同时变化产生的错误
ASCII码:用7位二进制编码表示字符
- 例:'A' = 65 = 1000001,'a' = 97 = 1100001
例子:二进制与十进制的转换
十进制转二进制(除2取余法):
将十进制数 156 转换为二进制:
156 ÷ 2 = 78 ... 0
78 ÷ 2 = 39 ... 0
39 ÷ 2 = 19 ... 1
19 ÷ 2 = 9 ... 1
9 ÷ 2 = 4 ... 1
4 ÷ 2 = 2 ... 0
2 ÷ 2 = 1 ... 0
1 ÷ 2 = 0 ... 1
从下往上读取余数:\((156)_{10} = (10011100)_2\)
验证: \(128 + 16 + 8 + 4 = 156\) ✓
知识点二:逻辑门电路
核心概念
逻辑门是数字电路的基本构建单元,实现基本的逻辑运算。常用逻辑门包括:
七种基本逻辑门:
| 逻辑门 | 符号 | 逻辑表达式 | 功能描述 |
|---|---|---|---|
| 与门(AND) | · | \(Y = A \cdot B\) | 全1出1,有0出0 |
| 或门(OR) | + | \(Y = A + B\) | 有1出1,全0出0 |
| 非门(NOT) | ‾ | \(Y = \overline{A}\) | 输入取反 |
| 与非门(NAND) | · ‾ | \(Y = \overline{A \cdot B}\) | 全1出0,有0出1 |
| 或非门(NOR) | + ‾ | \(Y = \overline{A + B}\) | 全0出1,有1出0 |
| 异或门(XOR) | ⊕ | \(Y = A \oplus B\) | 相同为0,不同为1 |
| 同或门(XNOR) | ⊙ | \(Y = A \odot B\) | 相同为1,不同为0 |
重要性质:
- 与非门的通用性:仅用与非门就可以实现所有逻辑运算
- 或非门的通用性:仅用或非门也可以实现所有逻辑运算
例子:用与非门实现非门、与门、或门
实现非门: 将与非门的两个输入连在一起 \(Y = \overline{A \cdot A} = \overline{A}\)
实现与门: 两级与非门 \(第一级:M = \overline{A \cdot B},第二级:Y = \overline{M \cdot M} = \overline{\overline{A \cdot B}} = A \cdot B\)
实现或门: 利用德摩根定律 \(A + B = \overline{\overline{A} \cdot \overline{B}}\) 先用两个与非门分别实现 \(\overline{A}\) 和 \(\overline{B}\),再用一个与非门实现 \(\overline{\overline{A} \cdot \overline{B}}\)。
知识点三:组合逻辑电路设计
核心概念
组合逻辑电路的输出仅取决于当前输入,与电路的历史状态无关。设计组合逻辑电路的标准步骤:
四步设计法:
- 逻辑抽象:根据问题描述确定输入变量和输出函数
- 列真值表:列出所有输入组合对应的输出
- 化简逻辑表达式:用卡诺图或代数法化简
- 画逻辑电路图:根据化简后的表达式画出电路
卡诺图化简法:
- 将最小项填入卡诺图
- 圈出相邻的1(2的幂次个为一组:1、2、4、8...)
- 每个圈对应一个乘积项
- 所有圈的乘积项相加即为最简与或表达式
例子:设计三人表决器
设计要求: 三人(A、B、C)投票,多数赞成则通过(Y=1)。
步骤1:列真值表
| A | B | C | Y |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
步骤2:写出逻辑表达式 \(Y = \overline{A}BC + A\overline{B}C + AB\overline{C} + ABC\)
步骤3:用卡诺图化简
将最小项填入卡诺图后,可以圈出三个圈:
- 圈1(A=1, B=1):\(AB\)
- 圈2(A=1, C=1):\(AC\)
- 圈3(B=1, C=1):\(BC\)
最简表达式:\(Y = AB + AC + BC\)
步骤4:电路实现
用两个与门和一个或门即可实现:
- 与门1:输出 \(AB\)
- 与门2:输出 \(AC\)
- 与门3:输出 \(BC\)
- 或门:输出 \(AB + AC + BC\)
知识点四:触发器
核心概念
触发器是时序逻辑电路的基本存储单元,具有记忆功能,能够存储1位二进制信息。触发器的输出不仅取决于当前输入,还取决于电路的先前状态。
常用触发器类型:
| 触发器 | 特征方程 | 功能描述 |
|---|---|---|
| SR触发器 | \(Q^{n+1} = S + \overline{R}Q^n\)(约束:\(SR=0\)) | 置位/复位,有禁止状态 |
| D触发器 | \(Q^{n+1} = D\) | 延迟,输出跟随输入(延迟一个时钟周期) |
| JK触发器 | \(Q^{n+1} = J\overline{Q^n} + \overline{K}Q^n\) | 功能最全,无禁止状态 |
| T触发器 | \(Q^{n+1} = T \oplus Q^n\) | 翻转,T=1时每来一个时钟翻转一次 |
触发方式:
- 电平触发:在时钟高(或低)电平期间触发
- 边沿触发:在时钟上升沿(或下降沿)瞬间触发,抗干扰能力强
- 主从触发:分两步完成,避免空翻现象
例子:D触发器的工作过程
D触发器功能: 在时钟上升沿到来时,将输入D的值传递到输出Q。
工作过程举例:
假设时钟信号CLK和输入信号D如下:
- 时刻1(CLK上升沿):D=1 → Q变为1
- 时刻2(CLK上升沿):D=0 → Q变为0
- 时刻3(CLK上升沿):D=1 → Q变为1
- 时刻4(CLK上升沿):D=1 → Q保持1
应用场景: D触发器常用于数据寄存器——在时钟沿到来时锁存数据,实现数据的同步传输和暂存。8个D触发器并联即可构成8位寄存器。
知识点五:时序逻辑电路
核心概念
时序逻辑电路的输出不仅取决于当前输入,还取决于电路的历史状态(即具有记忆功能)。时序电路由组合逻辑电路和**存储电路(触发器)**两部分组成。
时序电路的分析步骤:
- 写出各触发器的驱动方程(输入表达式)
- 写出各触发器的状态方程(特征方程代入驱动方程)
- 写出输出方程
- 列状态转换表或画状态转换图
- 分析电路功能
常用时序电路:
- 计数器:按一定规律计数的电路
- 寄存器:存储一组二进制数据的电路
- 移位寄存器:数据可逐位移入或移出的寄存器
例子:分析三位二进制加法计数器
电路构成: 三个JK触发器(FF0、FF1、FF2),所有J、K端接高电平(T触发器模式),低位的Q端接到高位的CLK端(异步计数器)。
工作原理:
- FF0:每个时钟脉冲翻转一次,输出最低位 \(Q_0\)
- FF1:\(Q_0\) 的下降沿触发翻转,输出次低位 \(Q_1\)
- FF2:\(Q_1\) 的下降沿触发翻转,输出最高位 \(Q_2\)
状态转换表:
| 时钟脉冲 | \(Q_2\) | \(Q_1\) | \(Q_0\) | 十进制 |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 |
| 2 | 0 | 1 | 0 | 2 |
| 3 | 0 | 1 | 1 | 3 |
| 4 | 1 | 0 | 0 | 4 |
| 5 | 1 | 0 | 1 | 5 |
| 6 | 1 | 1 | 0 | 6 |
| 7 | 1 | 1 | 1 | 7 |
| 8 | 0 | 0 | 0 | 0(循环) |
这是一个模8计数器(也叫三位二进制加法计数器),每来8个时钟脉冲完成一个循环。
知识点六:组合逻辑电路中的竞争与冒险
核心概念
在组合逻辑电路中,由于信号通过不同路径到达同一门电路的时间不同,可能产生短暂的错误脉冲(毛刺),这种现象称为竞争与冒险。
竞争与冒险的产生原因:
- 信号经过不同数量的门电路,延迟时间不同
- 当某个变量同时以原变量和反变量形式出现在表达式中时
判断方法:
- 代数法:若逻辑表达式在一定条件下能化简为 \(Y = A + \overline{A}\) 或 \(Y = A \cdot \overline{A}\),则存在冒险
- 卡诺图法:若两个最简项的卡诺圈相切(相邻但不重叠),则存在冒险
消除方法:
- 加滤波电容:在输出端并联小电容滤除毛刺(适用于低速电路)
- 加选通脉冲:在信号稳定后才取样输出
- 修改逻辑设计:增加冗余项使卡诺圈重叠,消除冒险
例子:检测并消除冒险
电路表达式: \(Y = AB + \overline{A}C\)
当 \(B=1\)、\(C=1\) 时:\(Y = A + \overline{A}\),存在"0型冒险"(可能产生负毛刺)。
卡诺图分析: 项 \(AB\) 和项 \(\overline{A}C\) 在卡诺图中对应的圈相切(不重叠),确认存在冒险。
消除方法: 增加冗余项 \(BC\),修改表达式为: \(Y = AB + \overline{A}C + BC\)
增加 \(BC\) 项后,\(AB\) 和 \(\overline{A}C\) 两个圈与 \(BC\) 圈重叠,消除了冒险。当 \(A\) 变化时,\(BC\) 项保持输出为1,避免了毛刺的产生。
练习题
题目一
将十进制数 215 转换为二进制数和十六进制数。
参考答案:
转换为二进制(除2取余法):
215 ÷ 2 = 107 ... 1
107 ÷ 2 = 53 ... 1
53 ÷ 2 = 26 ... 1
26 ÷ 2 = 13 ... 0
13 ÷ 2 = 6 ... 1
6 ÷ 2 = 3 ... 0
3 ÷ 2 = 1 ... 1
1 ÷ 2 = 0 ... 1
\((215)_{10} = (11010111)_2\)
转换为十六进制: 每4位二进制对应1位十六进制 \(1101\ 0111 → D\ 7\) \((215)_{10} = (D7)_{16}\)
题目二
用卡诺图化简以下逻辑函数: \(F(A,B,C,D) = \sum m(0,1,2,4,5,6,8,9,12,13,14)\)
参考答案:
将最小项填入4变量卡诺图后,可以圈出以下圈:
- 圈1(\(m_0, m_1, m_4, m_5\)):\(\overline{A}\overline{C}\)
- 圈2(\(m_0, m_2, m_4, m_6\)):\(\overline{A}\overline{D}\)
- 圈3(\(m_0, m_2, m_8, m_9\)):\(\overline{B}\overline{C}\)(需确认)
- 圈4(\(m_4, m_5, m_{12}, m_{13}\)):\(\overline{B}\overline{C}\)($B=0$时的项)
- 圈5(\(m_0, m_4, m_8, m_{12}\)):\(\overline{C}\overline{D}\)
- 圈6(\(m_8, m_9, m_{12}, m_{13}\)):\(A\overline{C}\)(需验证)
经仔细化简:\(F = \overline{D} + \overline{B}\overline{C} + \overline{A}\overline{C}\)
(注:具体化简结果取决于卡诺图的正确填写和最优圈法)
题目三
分析下图JK触发器的输出波形。已知:初始状态 \(Q=0\),JK触发器下降沿触发,\(J=K=1\)(T触发器模式)。画出CLK信号为4个脉冲时的Q输出波形。
参考答案:
\(J=K=1\) 时,JK触发器在每个时钟下降沿翻转。
| CLK下降沿 | Q状态变化 |
|---|---|
| 初始 | Q=0 |
| 第1个下降沿 | Q: 0→1 |
| 第2个下降沿 | Q: 1→0 |
| 第3个下降沿 | Q: 0→1 |
| 第4个下降沿 | Q: 1→0 |
输出Q的频率是时钟频率的1/2,实现了二分频功能。
题目四
设计一个组合逻辑电路,实现1位二进制全加器。要求写出真值表、逻辑表达式和电路图。
参考答案:
功能: 输入两个1位二进制数 \(A\)、\(B\) 和低位进位 \(C_{in}\),输出本位和 \(S\) 和向高位的进位 \(C_{out}\)。
真值表:
| A | B | \(C_{in}\) | S | \(C_{out}\) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
逻辑表达式:
- \(S = A \oplus B \oplus C_{in}\)
- \(C_{out} = AB + (A \oplus B)C_{in}\)
电路实现: 用两个异或门、两个与门和一个或门即可实现。
题目五
什么是竞争与冒险?如何判断和消除?请举例说明。
参考答案:
竞争与冒险的定义:
- 竞争:信号经过不同路径到达同一门电路时,由于延迟不同而存在时间差
- 冒险:竞争导致输出产生短暂的错误脉冲(毛刺)
判断方法:
- 代数法:检查逻辑表达式在某些输入条件下是否能化为 \(Y = A + \overline{A}\)(0型冒险)或 \(Y = A \cdot \overline{A}\)(1型冒险)
- 卡诺图法:检查最简项的卡诺圈是否相切(相邻但不重叠)
消除方法:
- 加滤波电容(硬件方法)
- 加选通脉冲(时序方法)
- 增加冗余项(逻辑设计方法)
举例: 表达式 \(Y = AB + \overline{A}C\),当 \(B=C=1\) 时,\(Y = A + \overline{A}\),存在0型冒险。增加冗余项 \(BC\) 后,\(Y = AB + \overline{A}C + BC\),卡诺圈不再相切,冒险消除。
总结
数字电路以二值逻辑为基础,通过逻辑门实现基本运算,通过组合逻辑电路实现复杂功能,通过触发器和时序逻辑电路实现数据存储和时序控制。这套知识体系是理解计算机硬件、通信系统和嵌入式系统的根基。
学习数字电路的核心方法是:理解逻辑本质,掌握设计方法,注重实践应用。从最简单的与或非门到复杂的时序电路,每一步都需要扎实的逻辑推理能力。建议多做真值表分析和卡诺图化简练习,结合数字电路仿真软件(如Logisim、Multisim)进行验证,将理论知识与实际电路设计紧密结合。
文章声明
本文仅供学习和参考,不构成任何投资建议。如有侵权,请联系删除。