数字电路 - 电路分析与设计

This post is not yet available in English. Showing the original version.

November 5, 2025

Table of Contents
Table of Contents

卡诺图和函数标准型

布尔函数标准型

这部分主要讨论了如何用标准和规范的形式来表示逻辑问题。

1. 逻辑函数的表示方法

一个逻辑函数可以用多种形式来表示,主要有三种:

核心思想:虽然一个逻辑函数的真值表是唯一的,但其逻辑表达式和逻辑图却可以有多种形式。不同的表达式和逻辑图功能相同,但其性能(如成本、速度)可能有很大差异。因此,我们需要找到最简化的形式。


2. 标准形式

为了使逻辑函数的表示更加规范,我们引入了“标准型”或“范式”的概念,主要有两种:

标准积之和 (SOP - Sum of Products)
标准和之积 (POS - Product of Sums)
最小项与最大项的关系

最小项和最大项之间存在互补关系: mi=Mi`m_i = \overline{M_i}`

因此,一个逻辑函数的最小项之和表达式与最大项之积表达式是等价的。例如:
F(X,Y,Z)=m(1,4,5,6,7)=M(0,2,3)F(X,Y,Z) = \sum m(1,4,5,6,7) = \prod M(0,2,3)


卡诺图化简

代数化简法比较复杂,卡诺图提供了一种更简单、更直观的图形化方法来简化逻辑函数。

1. 什么是卡诺图 (Karnaugh Map)?

xy + xy' = x

卡诺图是真值表的一种图形化表示,它将 n 个变量的 2ⁿ 个最小项用 2ⁿ 个小方格表示。这些方格按照特定的规则排列(格雷码顺序),使得几何上相邻的方格在逻辑上也相邻(即只有一个变量不同)。

下面是一个三变量 (X, Y, Z)F=X+YZF = X + Y'Z 的卡诺图结构示例:

X YZ
00 01 11 10
0 X' 0 1 0 0
1 X 1 1 1 1

图例:

2. 使用卡诺图化简的步骤

用大白话说就是:如果两件事,唯一的区别是一个需要条件 y,另一个需要条件 y’,那么其实条件 y 根本不重要,只要满足共同的条件 x 就行了。(即满足:xy + xy' = x

“画卡诺圈”这个动作,就是在用眼睛找出所有符合 xy + xy’ = x 这种模式的“邻居”! 每画一个圈,你就是在进行一次这样的化简,但你根本不需要动笔去算代数。

  1. 绘制卡诺图: 根据逻辑函数中的最小项,在对应的方格中标 1,其余方格标 0(或不标)。

  2. 画卡诺圈 (Grouping):

    • 将相邻的 1 方格圈起来。
    • 圈必须是矩形,且包含的 1 的数量必须是 2m`2^m` (如1, 2, 4, 8…)。
    • 目标是圈尽可能大,圈的数量尽可能少
    • 卡诺图的边界是循环的,即第一行和最后一行相邻,第一列和最后一列也相邻。
  3. 写出最简表达式:

    • 每一个卡诺圈对应一个化简后的与项
    • 找出圈内保持不变的变量,写入与项中。如果变量值为 1,则为原变量;如果为 0,则为反变量。
    • 将所有卡诺圈对应的与项相加(逻辑或),即可得到最简的“与或”表达式。

image.png

核心思想:画圈 = 目视化简

image.png


3. 含无关项的函数化简

image.png

4. 冒险 (Hazards)

关于电路延迟,有这样的介绍:

延迟模型定义特性
零延迟一种理想化模型,不考虑任何延迟。输出信号在输入信号变化的瞬间立即发生相应的变化。理想化:在实际电路中不存在,主要用于逻辑功能的验证。
 瞬时响应:输出波形与输入信号之间没有时间差。
传输延迟该模型认为,逻辑门的输出波形是理想输出波形在时间轴上平移一个固定时间后的结果。保留所有变化:无论输入信号变化多快、脉冲多窄,都会被完整地传播到输出端,只是时间上有所延迟。
 波形不变:输出波形形状与理想输出完全相同,只是被延后了。
惯性延迟一种更接近实际电路行为的模型。它不仅包含一个传输延迟,还引入了一个“拒绝时间”的概念。脉冲过滤:如果由输入变化引起的理想输出脉冲的宽度小于拒绝时间,那么这个脉冲将被“吸收”,不会出现在最终的输出端。
 模拟惯性:该模型模拟了真实电路需要一定能量和时间来改变状态的“惯性”。过窄的毛刺信号因能量不足而被滤除。

组合电路分析与设计

简单来说,就是学习怎么分析一个别人给你的逻辑电路,以及怎么根据需求自己设计一个逻辑电路。


什么是组合电路?

组合逻辑电路是数字电路中最基本的一种。你可以把它想象成一个“黑盒子”,它有几个输入端和几个输出端。

它的核心特点非常简单:


组合电路的分析

“分析”就像是给你一个已经搭建好的乐高模型,让你搞清楚它到底是什么,能做什么。

目标:从一个已知的电路图,推导出它的逻辑功能。

分析步骤(通用流程)

  1. 写出逻辑表达式:从电路的输入端开始,逐级向后推导,写出每个逻辑门的输出表达式,直到得到最终输出端的完整逻辑表达式。
  2. 化简或变换表达式:对得到的表达式进行化简(使用布尔代数或卡诺图),或者根据需要变换成“与或”、“或与”等标准形式。
  3. 列出真值表:根据最终的逻辑表达式,列出所有输入组合对应的输出值,形成真值表。
  4. 确定功能:观察真值表或分析逻辑关系,用语言描述出这个电路实现了什么功能。

举例:分析一个一位全加器

下面的电路有两个输出 JH

image.png

  1. 写表达式:

    • 对于 JJ = (A·B) + ((A+B)·C)
    • 对于 HH = (A+B+C) · (A·B + A·C + B·C)' + (A·B·C) (这个表达式比较复杂,可以通过化简或直接列真值表来分析)
  2. 列真值表:
    通过逐一分析输入 A, B, C 的8种组合(从000到111),我们可以得到下面的真值表:

ABC (进位输入)J (进位输出)H (和)
00000
00101
01001
01110
10001
10110
11010
11111
  1. 确定功能:
    观察真值表可以发现,这完全符合二进制加法规则。AB 是两个加数,C 是来自低位的进位。HA+B+C 的“和”,J 是产生的向高位的“进位”。
    所以,这个电路的功能是一个一位全加器

组合电路的设计

“设计”则完全相反,是给你一个任务(比如“我要一个能比较大小的电路”),让你从零开始把它搭建出来。

image.png

目标:根据实际的逻辑需求,设计出最简单的、符合功能的逻辑电路。

image.png

设计步骤(通用流程)

  1. 逻辑抽象:

    • 搞清楚需求:明确要解决什么问题。
    • 定义输入输出:确定需要几个输入变量和几个输出变量。
    • 赋予逻辑含义:定义 01 分别代表什么状态(例如,1 代表“有故障”,0 代表“正常”)。
  2. 列出真值表:

    • 根据第一步的逻辑定义,遍历所有可能的输入组合,并写出每种情况下期望的输出值。
  3. 写出并化简逻辑表达式:

    • 从真值表中,为每一个输出变量写出它的逻辑表达式(通常先写成“最小项之和”的形式)。
    • 使用卡诺图等工具对表达式进行化简,得到最简的“与或”式。这是为了让最终的电路使用的逻辑门最少,成本最低。
  4. 画出逻辑电路图:

    • 根据化简后的逻辑表达式,使用对应的逻辑门(与门、或门、非门等)画出最终的电路图。

层次化设计方法

当电路变得非常复杂时(比如设计一个 CPU),一步到位画出所有逻辑门是不现实的。这时就需要“层次化设计”的思想。

核心思想分而治之。把一个复杂的大问题,分解成若干个简单的小问题来解决。

graph TD
    subgraph 设计流程
        direction LR
        A(自顶向下分解) --> B(自底向上实现);
    end

    subgraph 示例: 4位比较器
        C(比较两个4位数) --> D(比较两个1位数);
        D --> E(用逻辑门实现1位比较);
        E -- 组合 --> F(用4个1位比较器搭成4位比较器);
    end
  1. 自顶向下分解 (Top-Down):

    • 从最高层的功能入手(例如:设计一个4位相等比较器)。
    • 把它分解成几个功能更简单的子模块(例如:4个1位相等比较器)。
    • 如果子模块还复杂,就继续分解,直到模块足够简单,可以用基本逻辑门直接实现。
  2. 自底向上实现 (Bottom-Up):

    • 先设计和实现最底层的、最简单的模块(例如:用逻辑门搭建出1位相等比较器)。
    • 然后像搭积木一样,用这些已经实现的小模块去组装成更高级、更复杂的模块(例如:用4个1位比较器模块,连接成一个4位相等比较器)。

优点


时序电路简介、存储元件与电路分析

时序电路简介

1. 为什么需要时序电路?

输出不仅与当前输入有关,还与电路过去的状态(即过去的输入序列)有关。它具有记忆功能

2. 时序电路的基本结构

时序电路通常由两部分构成:

3. 状态 (State)

4. 时序电路模型

根据输出信号的产生方式,分为两种主要类型:

image.png

5. 状态图 (State Diagram)

存储元件

1. 锁存器 (Latch)

image.png

问题: “透明性”可能导致电路状态不稳定或振荡。
image.png


2. 触发器 (Flip-Flop)

时序电路分析

1. 目标

对一个给定的时序电路,通过分析其逻辑连接,确定它的功能。

2. 分析步骤

  1. 写出逻辑方程:

    • 输出方程: 确定电路的输出 Y 与当前状态(如 A, B)和输入 X 之间的关系。
    • 激励方程 (触发器输入方程): 确定每个触发器的数据输入(如 D_A, D_B)与当前状态和输入 X 之间的关系。这个方程也决定了电路的下一状态
  2. 建立状态表 (State Table):

    • 列出电路所有可能的现态 (Present State)
    • 针对每一种输入,根据激励方程计算出次态 (Next State)
    • 根据输出方程计算出对应的输出
  3. 画出状态图 (State Diagram):

    • 将状态表中的信息用图形化的方式表示出来,每个状态是一个节点,状态转换为有向弧。
  4. 描述电路功能:

    • 根据状态图的转换规律,用文字描述电路实现了何种功能(例如:序列检测器、计数器等)。

示例:1101序列识别器
通过分析一个电路,最终得到其状态图,并发现只有当输入序列的末尾是“1101”时,输出才为1,从而判断出这是一个“1101序列识别器”。

时序电路设计

这一部分聚焦于“怎么做”,涵盖设计陷阱、具体步骤和典型例题思路。

寄存器的设计:如何优雅地控制加载?

设计目标:我们需要一个信号(Enable)来决定是否更新寄存器的值。

计数器的设计:如何构造任意进制计数器?

A. 基础分类选择
B. 实战:设计一个模 NN (任意进制) 计数器

场景:你需要一个“模10计数器”(0数到9,然后回0),但你手头只有一个4位二进制计数器(能从0数到15)。

移位寄存器的应用与设计

A. 环形与扭环计数器 (自启动设计)

这些是基于移位寄存器的特殊计数器。

B. 移位运算逻辑

PPT 第19页核心总结: