数字逻辑电路基础元件与设计流程总结
一、常见基础元件(各种"器")
1. 门电路(最基本的逻辑单元)
门电路是所有数字电路的最底层构建块,包括:
- 与门(AND) 、或门(OR) 、非门(NOT/反相器)
- 与非门(NAND) 、或非门(NOR)------是实际工艺映射的主要目标门类型
- 异或门(XOR)------用于加法器、比较器等
任何组合逻辑最终都可以映射到与非门或或非门加上反相器来实现。
2. 译码器(Decoder)
- 功能:将 n 位二进制输入译码为 2^n 位输出,输出中仅有一位为 1
- 典型规格:1-2 译码器、2-4 译码器、3-8 译码器、4-16 译码器、7-128 译码器等
- 构建方式 :采用分级思想+与门组合。例如 2-4 译码器可由 2 个 1-2 译码器和 4 个与门构成;3-8 译码器由 2-4 译码器和 1-2 译码器加与门组合
- 带使能的译码器:增加使能信号 EN,也被称为"多路分配器"(Demultiplexer)
- 应用:可用于实现任意组合逻辑函数------将译码器输出(对应最小项)接到或门即可实现函数的"最小项之和"
3. 编码器(Encoder)
- 功能:与译码器互逆,将输入中为 1 的那一位编码输出
- 普通编码器:如十进制-BCD 编码器、八-二进制编码器。要求输入中同一时刻只有一位为 1
- 优先编码器:当输入中有多位为 1 时,选择最高优先级的输入进行编码,并输出有效标志 V。例如 4 输入优先编码器、5 输入优先编码器
4. 多路复用器(Multiplexer / MUX)
- 功能:从多路输入数据中选择一路输出到输出端,由选择信号决定
- 典型规格:2-1 MUX、4-1 MUX、8-1 MUX、16-1 MUX 等
- 内部构成:一个 n-2^n 译码器 + 2^n 个使能门(2 输入与门)+ 一个或门
- 位宽展开:可构建多位宽的多路复用器,如 4-1 四位多路复用器
- 应用:可用于实现任意组合逻辑函数------方法 1(用 2^n-1 MUX)和方法 2(用 2^(n-1)-1 MUX,利用共享/压缩技术,门成本约减半)
5. 加法器(Adder)
- 半加器:2 输入(X, Y)按位加,输出和位 S 和进位 C。S = X ⊕ Y,C = X·Y
- 全加器:3 输入(X, Y, 进位 Z),输出和位 S 和进位 C。S = X ⊕ Y ⊕ Z,C = XY + (X⊕Y)Z。其中 XY 是"进位生成",X⊕Y 是"进位传播"。可由 2 个半加器 + 1 个或门组成
- 行波进位加法器(Ripple Carry Adder):将 n 个全加器级联构成 n 位加法器,是迭代组合电路的典型例子。进位从低位向高位逐级传递
6. 减法器与补码加/减法器(Subtractor)
- 利用补码将减法转化为加法:M - N = M + (2^n - N)
- 通过 XOR 门在 S=1(减法模式)时对减数取反,同时将 C₀ 置 1,实现"取反加 1"
- S=0 时执行加法,S=1 时执行减法,共享同一套加法逻辑
7. 锁存器(Latch)
锁存器是最基本的存储元件,在电路供电状态下能保存二进制数据:
- S-R 锁存器(或非门):交叉耦合两个或非门,S=1/R=0 置位,S=0/R=1 复位,S=1/R=1 禁止
- S̄-R̄ 锁存器(与非门):交叉耦合两个与非门,低电平有效
- 时钟 S-R 锁存器:在 S̄-R̄ 锁存器基础上增加控制信号 C,C=1 时为正常 S-R 功能,C=0 时状态不变
- D 锁存器:在时钟 S-R 锁存器基础上加反相器,消除未定义状态。C=1 时 Q=D("透明"),C=0 时保持
锁存器的问题:C=1 期间是"透明"的,输入变化会直接影响输出,在反馈通路中可能导致不稳定。
8. 触发器(Flip-Flop)
触发器由锁存器构成,解决了锁存器的"透明"问题:
- 脉冲触发式(主从触发器):由两个锁存器串联(主-从),时钟信号分别控制。主锁存器 C=1 时接收数据,从锁存器 C=0 时传递数据。存在"1s catching"问题
- 边沿触发式 D 触发器:目前最广泛使用的触发器。只在时钟边沿(上升沿或下降沿)采样输入数据,其他时间输出保持不变
- 直接输入(预置/清零):在时钟正常运行之前将触发器设置为初始状态
9. 寄存器(Register)
- 基本寄存器:一组触发器加上组合门电路,用于在数据处理过程中保持信息。如 4 位寄存器、16 位寄存器
- 并行加载寄存器:所有位在公用时钟脉冲下同时加载
- 移位寄存器 :具有单向或双向移位功能
- 带并行加载的移位寄存器:支持串行移位和并行加载
- 双向移位寄存器:支持左移、右移、并行加载和保持四种操作
- 常见命名:地址寄存器(AR)、程序计数器(PC)、指令寄存器(IR)等
10. 计数器(Counter)
能在时钟脉冲激励下遍历指定状态序列的寄存器:
- 行波计数器(Ripple Counter):触发器的时钟来自前一级的输出,非公用时钟
- 同步计数器:所有触发器共用时钟,分为串行门控和并行门控两种
- 双向二进制计数器:支持向上和向下计数
- 具有并行加载功能的计数器
- BCD 码计数器
- 任意计数序列计数器:能遍历任意规定的状态序列
11. 三态缓冲器(Tri-state Buffer)
- 除逻辑 0 和逻辑 1 外,还提供高阻态(Hi-Z)
- EN=1 时正常传递,EN=0 时输出为 Hi-Z(相当于断开)
- 用于构建三态总线,多个三态缓冲器输出可连在一起
12. 算术功能模块(其他)
- 递增器:A + 1,通过将行波进位加法器的一个输入固定为 1 来实现(压缩技术)
- 递减器:A - 1
- 乘/除 2^n:左移/右移
- 零填充:在操作数左端或右端填充 0
- 符号扩展:在操作数左端填充符号位
13. 可编程逻辑器件
- ROM(只读存储器):本质上是"永久"存储二进制信息的器件,输入提供地址,输出提供存储数据
- PLA(可编程逻辑阵列):与门阵列代替译码器(不提供全译码),与门和或门之间的连接均可编程
- PAL(可编程阵列逻辑):或门阵列固定、与门阵列可编程
- FPGA(现场可编程门阵列):包含可编程逻辑块(用查找表 LUT 实现组合逻辑)、可编程互联和可编程 I/O 引脚。LUT 本质是 2^k × 1 存储器记录真值表
14. 存储器(Memory)
- RAM(随机访问存储器) :存取时间与位置无关
- SRAM(静态 RAM):用锁存器存储,保持信息直到断电
- DRAM(动态 RAM):以电容电荷存储,需要刷新
- ROM(只读存储器):非易失性,只能读不能写(正常情况下)
二、各种类型电路的设计流程
流程 A:组合逻辑电路设计(5 步)
这是最基础的设计流程,适用于所有组合电路:
| 步骤 | 内容 | 说明 |
|---|---|---|
| 1. 规范化 | 指定组合电路行为 | 确定输入/输出含义,如"BCD 码转余三码" |
| 2. 形式化 | 用真值表对输入输出形式化 | 列出所有输入组合与对应输出 |
| 3. 优化 | 优化逻辑,减少门输入成本 | 卡诺图化简→确定主蕴涵项→选择最少主蕴涵项覆盖所有最小项;进一步可用共享电路(如提取公共子表达式 T₁ = C + D)进一步降低门成本 |
| 4. 工艺映射 | 将优化后逻辑映射到实现工艺 | 映射到与非门:①替换与门和或门→②将反相器推过扇出点→③抵消反相器对→④重复②③。映射到或非门类似 |
| 5. 验证 | 验证设计正确性 | 方法一:人工逻辑分析(找出实现电路的真值表或方程式,与规范比较);方法二:模拟(用 Verilog 编程实现 + 编写 TestBench + 比较输出) |
流程 B:时序逻辑电路设计(8 步)
在组合电路设计基础上增加了状态相关的步骤:
| 步骤 | 内容 | 说明 |
|---|---|---|
| 1. 规范化 | 描述电路的时序行为 | 可用文字、数学、HDL、表格、方程、图等形式。典型例子:序列识别器(如识别输入序列 1101) |
| 2. 形式化 | 得到状态表或状态图 | 状态是历史输入的抽象。需要定义初始状态(通过复位信号实现)。Mealy 型输出 = F(输入, 状态),输出标注在转移弧上;Moore 型输出 = F(状态),输出标注在状态圆内。Moore 型通常比 Mealy 型多一个状态 |
| 3. 状态分配 | 给状态分配二进制码 | 常用方式:计数赋值、格雷码赋值、单热点赋值。格雷码赋值可能获得更低的门成本;单热点赋值简化分析但触发器代价更高 |
| 4. 确定触发器输入方程 | 推导状态方程 | 选择触发器类型(如 D 触发器),从状态表中的"下一状态"推导出触发器输入方程 |
| 5. 确定输出方程 | 推导输出方程 | 从状态表中的"输出"推导输出方程 |
| 6. 优化 | 对方程进行优化 | 用卡诺图等方法优化触发器输入方程和输出方程,减少门输入成本 |
| 7. 工艺映射 | 从方程得到电路 | 映射到触发器和门(如与非门、非门、D 触发器) |
| 8. 验证 | 验证设计正确性 | 手工验证(加载各种状态与输入组合验证输出和下一状态)或模拟验证(用输入序列和时钟信号,在时钟上升沿后验证) |
状态分配对门成本影响的实例(序列识别器 1101):
- 计数赋值 A(00),B(01),C(10),D(11):门成本 G=22
- 格雷码赋值 A(00),B(01),C(11),D(10):门成本 G=9
- 单热点赋值:组合逻辑简单但触发器多
流程 C:基于状态机图的设计流程
适用于更复杂的时序电路设计,引入了状态机图(SMD):
- 定义输入输出变量,并定义每个变量 0 和 1 的含义
- 画出电路状态机图或写出状态机表 。状态机图相比传统状态图增加了:
- 转移条件(TC):输入条件的布尔表达式
- 输出条件(OC):控制输出行为是否发生
- 四种输出类型:Moore(无条件)、TCI(转移条件无关)、TCD(转移条件依赖)、TOCD(转移和输出条件依赖)
- 转换为状态机表
- 约束检查 :
- TC 约束:从同一状态出发的所有 TC 对必须互斥(Tij · Tik = 0)且覆盖所有输入组合(ΣTij = 1)
- OC 约束:对同一输出变量的不同值,输出条件必须互斥且覆盖所有输入组合
- 从状态机表推导下一状态和输出的优化方程
流程 D:寄存器传输系统设计(8 步)
适用于构建完整的数字系统(如码表、电梯控制器等):
| 步骤 | 内容 | 说明 |
|---|---|---|
| ① 系统说明书 | 定义系统功能 | 如码表:计时上限 99.99 秒,支持 START/STOP/CSS/RESET |
| ② 定义外部信号 | 确定外部数据和控制信号 | 列出所有输入信号、输出信号、寄存器 |
| ③ 画出状态机图 | 定义系统状态和转移 | Moore 型状态机 |
| ④ 定义内部控制和状态信号 | 将状态映射到控制信号 | 如 LSR=S1+S6, RSTM=S2, ENTM=S3 等 |
| ⑤ 画出模块图 | 数据通路结构 | 计数器、寄存器、多路复用器等的连接关系 |
| ⑥ 设计寄存器传输逻辑 | 实现数据通路 | 如 4 位 BCD 计数器、16 位并行加载寄存器、16 位 2-1 MUX |
| ⑦ 设计控制单元逻辑 | 实现控制逻辑 | 可用硬连线逻辑或微程序控制 |
| ⑧ 检查正确性 | 验证系统 | 功能验证 |
其中微程序控制是控制单元的一种实现方式:将控制值存储在存储器中,每条微指令指定一条或多条微操作,一系列微指令组成微程序。
三、总结对照表
| 电路类型 | 核心元件 | 设计流程 |
|---|---|---|
| 组合逻辑电路 | 门、译码器、编码器、MUX、加法器 | 5 步:规范化→形式化→优化→工艺映射→验证 |
| 时序逻辑电路 | 锁存器、触发器、寄存器 | 8 步:在组合流程基础上增加状态分配、确定状态/输出方程 |
| 算术功能模块 | 全加器、半加器、补码器 | 属于组合电路,可用迭代阵列方法设计 |
| 可编程逻辑器件 | ROM、PLA、PAL、FPGA/LUT | 通过编程配置实现目标功能 |
| 寄存器传输系统 | 寄存器、计数器、MUX、总线、三态缓冲器 | 8 步系统设计,含状态机设计和控制单元设计 |
| 存储器系统 | SRAM 单元、DRAM 单元、译码器 | 地址译码 + 读写控制 + 定时波形设计 |