目录

  • 1 数字电路中的数和编码
    • 1.1 十进制数的二进制编码
      • 1.1.1 有权码和无权码
    • 1.2 格雷码
      • 1.2.1 8421BCD码的运算
    • 1.3 用补码表示负数
  • 2 数字逻辑基础
    • 2.1 逻辑变量和逻辑系统
      • 2.1.1 基本逻辑运算
      • 2.1.2 布尔代数公理及其他常用逻辑运算
      • 2.1.3 真值表
    • 2.2 逻辑代数的基本定律
      • 2.2.1 布尔代数的常用公式
      • 2.2.2 布尔代数的三个规则
    • 2.3 逻辑函数的标准表达式
      • 2.3.1 逻辑函数的最小项表达式
      • 2.3.2 逻辑函数的最大项表达式
      • 2.3.3 最小项表达式和最大项表达式的关系
      • 2.3.4 非标准表达式到标准表达式的转换
      • 2.3.5 任意项及其表示
    • 2.4 代数法化简逻辑函数
    • 2.5 卡诺图法化简逻辑函数
      • 2.5.1 逻辑函数的卡诺图表示
      • 2.5.2 卡诺图化简的步骤及举例
  • 3 组合逻辑电路
    • 3.1 组合逻辑电路的特点
    • 3.2 组合逻辑电路的分析
      • 3.2.1 组合逻辑电路的分析步骤
      • 3.2.2 组合逻辑电路分析举例
    • 3.3 组合逻辑电路的设计
      • 3.3.1 组合逻辑电路的设计步骤
      • 3.3.2 组合逻辑电路的实现方式
      • 3.3.3 组合逻辑电路设计举例
    • 3.4 中规模组合逻辑电路
      • 3.4.1 加法器和减法器
      • 3.4.2 编码器
      • 3.4.3 译码器
      • 3.4.4 数据选择器
      • 3.4.5 数值比较器
    • 3.5 中规模组合电路用于逻辑设计
      • 3.5.1 译码电路用作函数发生器
      • 3.5.2 用数据选择器作函数发生器
      • 3.5.3 用全加器作为数码转化器
    • 3.6 组合逻辑电路的竞争与冒险
      • 3.6.1 冒险的分类
      • 3.6.2 冒险的识别和消除
  • 4 集成触发器
    • 4.1 时序逻辑电路的特点
    • 4.2 触发器的基本特性
    • 4.3 触发器的记忆作用
    • 4.4 电位型触发器
      • 4.4.1 基本RS触发器
      • 4.4.2 可控RS触发器
      • 4.4.3 其他可控触发器
      • 4.4.4 可控电位型触发器的局限性
      • 4.4.5 电位型触发器的应用:锁存器
    • 4.5 钟控型触发器
      • 4.5.1 主从触发器
      • 4.5.2 边沿触发器
    • 4.6 触发器的逻辑符号
    • 4.7 CMOS触发器
      • 4.7.1 带使能端D触发器
      • 4.7.2 CMOS主从D触发器
      • 4.7.3 CMOS JK触发器
    • 4.8 触发器的转换
    • 4.9 集成触发器的时间参数
    • 4.10 钟控触发器构成的常用时序电路
      • 4.10.1 寄存器
      • 4.10.2 移位寄存器
      • 4.10.3 计数器
  • 5 时序逻辑电路
    • 5.1 时序电路的分类和描述
      • 5.1.1 时序电路的分类
      • 5.1.2 时序电路的描述
    • 5.2 同步时序电路的分析
      • 5.2.1 同步时序电路的一般框图
      • 5.2.2 序列信号发生器
    • 5.3 移位寄存器构成的时序电路
      • 5.3.1 环形计数器
      • 5.3.2 扭环形计数器
    • 5.4 常用时序电路的设计
      • 5.4.1 计数器的设计
      • 5.4.2 序列信号发生器的设计
      • 5.4.3 M序列发生器
    • 5.5 异步计数器
    • 5.6 中规模时序集成电路
      • 5.6.1 中规模同步计数器
      • 5.6.2 中规模计数器的应用
      • 5.6.3 中规模计数器的级联
      • 5.6.4 中规模移位寄存器
    • 5.7 计数器用于逻辑设计
    • 5.8 一般时序电路的分析
      • 5.8.1 一般时序电路的分析过程和特点举例
    • 5.9 一般时序电路的设计
      • 5.9.1 状态表的建立
      • 5.9.2 状态表的简化
      • 5.9.3 状态分配
  • 6 大规模数字集成电路
    • 6.1 大规模数字集成电路的概述
    • 6.2 存储器
      • 6.2.1 存储器的分类
      • 6.2.2 ROM作为逻辑器件
      • 6.2.3 存储器容量的扩展
    • 6.3 可编程逻辑阵列
    • 6.4 可编程阵列逻辑
    • 6.5 通用阵列逻辑
    • 6.6 复杂可编程逻辑器件
    • 6.7 现场可编程门阵列
    • 6.8 CPLD和FPGA的比较
组合逻辑电路的设计

组合逻辑电路的设计方法

组合逻辑电路的设计任务是根据给定的逻辑功能,求出可实现该逻辑功能的最合理组 合电路。理解组合逻辑电路的设计概念应该分两个层次:(1)设计的电路在功能上是完整的,能够满足所有设计要求;(2)考虑到成本和设计复杂度,设计的电路应该是最简单的,设计最优化是设计人员必须努力达到的目标。  

在设计组合逻辑电路时,首先需要对实际问题进行逻辑抽象,列出真值表,建立起逻辑模型;然后利用代数法或卡诺图法简化逻辑函数,找到最简或最合理的函数表达式;根据简化的逻辑函数画出逻辑图,并验证电路的功能完整性。设计过程中还应该考虑到一些实际的工程问题,如被选门电路的驱动能力、扇出系数是否足够,信号传递延时是否合乎要求等。组合电路的基本设计步骤可用图来表示。

组合逻辑电路的特点及设计时的注意事项

①组合逻辑电路的输出具有立即性,即输入发生变化时,输出立即变化。(实际电路中还要考虑器件和导线产生的延时)。


②组合逻辑电路设计时应尽量避免直接或间接的反馈,以免出现不确定的状态或形成振荡。如右图设计的基本触发器,当输入~S、~R从“00”变为“11”时,无法确定Q和~Q的值。

③组合逻辑电路容易出现“毛刺”,这是由于电路“竞争-冒险”产生的。如图所示,图中与门的两个输入分别由信号 A 经过不同路径传递而来。按照理想情况分 析,电路输出端应该始终为 L=A ·~A =0。考虑到信号在逻辑门中的传输延迟,~A 到达与门输入端的时间始终落后于 A。图(b)的波形显示,信号 A的四次变化都产生了竞争。但这四次竞争引起的结果是不一样的。第一次和第三次竞争造 成输出错误,第二次和第四次竞争则没有造成输出错误。换言之,只有第一次和第三次竞争引起了冒险,产生了尖峰干扰。

由于“毛刺”的影响,应避免使用组合逻辑电路直接产生时钟信号,也应避免将组合逻辑电路的输出作为另一个电路的异步控制信号。如右图,本意是设计一个计数范围为“0~5”的六进制计数器,即输出QD、QC、QB、QA从5“0101”变到6“0110”时,与门输出“1”,控制“CLR”异步复位到“0000”,但是由于输出从3“0011”变到4“0100”时,QC先于QB从“0”变到“1”,导致短暂的“0111”出现,使与门输出“1”,引起复位,从而使实际的电路计数范围为“0~3”,与设计的初衷相悖。  

④用VHDL描述组合逻辑电路时,所有的输入信号都应放在敏感信号表中。

⑤用IF语句和CASE语句描述电路分支时,一定要列举出所有输入状态(一般在最后加上“else”或“when others”分支),否则在综合时将引入LATCH,使电路输出出现延时。