目录
数字电路基础---组合逻辑
FPGA 或者 IC 内部的逻辑一般包括组合逻辑和时序逻辑,组合逻辑一般指的是一些门电路或者选择器、比较器一起组成的逻辑。
1、简介
数字电路根据逻辑功能的不同特点,可以分成两大类,一类叫组合逻辑电路(简称组合电路),另一类叫做时序逻辑电路(简称时序电路)。下面我们来看下上面是组合逻辑,如下图所示:
从上图中,我们可以看出,a/b/c 为组合逻辑的输入,x 和 y 为组合逻辑的输出,x 和 y 的值只取决于a/b/c 的当前的输入值,和 a/b/c 的之前的输入是没有任何关系的,这种电路我们就叫做组合逻辑电路。
组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。组合逻辑电路没有记忆功能,没有反馈环路。
时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。
组合逻辑电路的一般分析方法(组合逻辑电路图→求解逻辑功能)如下:
- ⚫ 组合逻辑电路图→
- ⚫ 列出逻辑函数表达式(迭代法,由输入逐级向后推)→
- ⚫ 求标准表达式或简化的表达式(转换或化简)→
- ⚫ 列出相应的真值表→判断电路功能。
下面我们以一个例子来分析逻辑电路。
2、实验任务
分析组合逻辑电路功能。
3、程序设计
根据组合逻辑电路的分析方法,我们先来看该组合逻辑电路图,
通过上图,我们可以列出,F1=A&B,F2=B&C,F3=A&C,那么由迭代法得到F=F1+F2+F3=A&B+B&C+A&C,
列出真值表如下:
由上面的的真值表,我们可以得出,该组合逻辑是一个三人多数表决器。
实际的 IC 或者 FPGA 逻辑电路里面,组合逻辑是有时间延迟的,也就是说组合逻辑的输入变化到输出变化之前是有时间的,不同组合逻辑的延迟是不一样的,比如与门和非门的延迟可能不一样。
我们先来学习下什么是逻辑级数,逻辑级数指的是组合逻辑的深度,深度越大,组合逻辑越复杂,延迟越大。比如与门的逻辑级数就是 1 级,而我们本次例子三人多数表决器就是 2 级逻辑深度。也就是说从组合逻辑输入到输出需要穿过的组合逻辑单元个数。比如本次例子三人多数表决器先穿过一个与门,然后再穿过一个或门。
典型的模块设计是由组合逻辑和时序逻辑构成的,组合逻辑一般位于寄存器之间,如下图所示:
如果组合逻辑总的延迟之和(tDELAY)大于一个时钟周期,那么组合逻辑后级寄存器就会采样失败。因此,组合逻辑的逻辑级数不能太长,逻辑级数太长就会导致总的延迟太大。因此在时序分析概念里面,典型的时序问题都是组合逻辑级数太长引起的,如果出现时序问题,那么一般需要我们对组合逻辑进行优化,减少逻辑级数,或者在组合逻辑中间插一级或者多级寄存器来减少组合逻辑的延迟。
信号在 IC/FPGA 器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为“毛刺”。
如何进行毛刺消除??详情可参考:组合逻辑毛刺消除_OliverH-yishuihan的博客-CSDN博客
4、仿真验证
本节不需要进行仿真。