1. 首页
  2. 组合逻辑电路有哪些(组合逻辑电路详解)

组合逻辑电路有哪些(组合逻辑电路详解)

简介:关于组合逻辑电路有哪些(组合逻辑电路详解)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于技术大全及相关资讯,可以多多关注茶馆百科网。

什么是组合逻辑电路?

在数字电路中,根据逻辑功能的不同,我们可以将数字电路分为两类,一类称为组合逻辑电路,另一类称为顺序逻辑电路。本文主要阐述了组合逻辑电路的原理、应用和Verilog实现。

组合逻辑电路在逻辑功能上的特点是任意时刻的输出只依赖于当时的输入,与电路的原始状态无关。顺序逻辑电路在逻辑功能上的特点是,任何时刻的输出不仅取决于当时的输入信号,而且还取决于电路的原始状态,或者与之前的输入有关。

从图中可以看出,左边的X代表其输入变量,右边的Y代表其输出变量。对于这种电路,它的输出Y只与当时对应的输入X有关,而与之前的输入X没有关系。像这种电路,我们称之为组合逻辑电路。

二、如何分析组合逻辑电路?

知道了什么是组合逻辑电路,我们该如何分析电路呢?如果我们有一个电路图,我们可以用什么方法快速准确地知道它所实现的逻辑功能?

上图给出了组合逻辑电路的分析方法和过程,以及各步骤的具体实现方法。记不住的同学可以复习数字电的基础知识,复习公式化简、卡诺图化简、真值表等内容。

由上可知,组合逻辑电路的分析是根据给定的组合逻辑图,来分析其逻辑功能。那么设计组合逻辑电路就是分析组合逻辑电路的逆过程。我们应该根据给定的逻辑功能要求,设计一个最简单的逻辑电路来实现这个功能。

首先根据逻辑函数建立真值表,通过真值表写出逻辑函数表达式,然后对表达式进行简化,再根据简化后的函数表达式绘制逻辑电路图。

四、竞争与风险

1. 竞争风险的产生

当一个逻辑门的两个输入信号同时朝相反的方向变化时,从这种变化达到稳定状态所需要的时间是不同的,称为竞争。

逻辑门由于输入的竞争导致输出不应有的峰值干扰脉冲(又称过渡干扰脉冲)现象,称为风险。

在实际电路中,输入信号通过每个门再输出,它总是有一个传输时间,所以这被称为门的传输时间或延迟时间。在组合电路中,当一个变量通过两条以上的路径到达输出端时,由于每条路径上的延迟时间不同,到达终点的时间会来来回去,从而产生竞争。

2. 消除竞争风险

1)增加阻断脉冲。在输入信号竞争时,引入一个脉冲来阻断可能产生尖峰干扰脉冲的门。阻断脉冲应在输入信号转换前到达,转换后消失。

2)加门极脉冲。在输出可能产生峰值干扰脉冲的门电路中增加一个输入端子。只有在输入信号的转换完成并稳定后,才引入门控脉冲将其打开。然后允许输出。在转换过程中,由于没有加入门控脉冲,所以输出中不会有尖峰干扰脉冲。

3)接入滤波电容。由于干扰脉冲的峰值宽度一般很窄,可以在可能产生干扰脉冲峰值的门电路输出端与吸收干扰脉冲峰值的地之间连接一个几十皮法的电容。

4)修改逻辑设计。

5. 组合逻辑电路的应用

逻辑功能:上图为8-3编码器的真值表,8个输入信号,3个输出信号。当I7的输入为1时,对应的三个输出为110;当I6输入为1时,对应的三个输出为101,以此类推,直到I0输入为1。对应的三个输出是000。

变量表达式:根据前面设计组合逻辑电路的过程,我们根据逻辑函数的真值表写出函数表达式如下:

根据表达式重新绘制电路图:

0

上面的case语句是一个没有优先级的多分支选择语句。要实现优先编码器,应该使用elseif语句。如下图所示:

2. 译码器

逻辑功能:3-8解码器的真值表如上图所示,3个输入信号,8个输出信号。逻辑公牛是编码器的对立面。

变量表达式:根据前面设计组合逻辑电路的过程,我们根据逻辑函数的真值表写出函数表达式如下:

根据表达式重新绘制电路图:

Verilog实现:

解码器的应用:

数码管,就是把七个LED,按一定的方式排列,利用不同发光段的组合,显示0-9十个十进制数字,这就是解码器原理的应用。

3.数据选择器

8-1数据选择器

逻辑函数:上图为8-1数据选择器的真值表。由真值表可以看出,当A=000时,输出I0为高电平,其余为低电平,高电平对应的开关闭合,低电平对应的开关保持断开状态。因此,Y的输出为D0,当D0=0时,Y=0,当D0=1时,Y=1。根据真值表可以写出如下:

变量表达式:根据前面设计组合逻辑电路的过程,我们根据逻辑函数的真值表写出函数表达式如下:

根据表达式重新绘制电路图:

Verilog实现:

4. 数值比较器

逻辑函数:上图为数值比较器的真值表。从真值表可以看出,有三种情况:AB,AB,A=B。我们可以根据真值表写出它的函数表达式:

变量表达式:根据前面设计组合逻辑电路的过程,我们根据逻辑函数的真值表写出函数表达式如下:

根据表达式重新绘制电路图:

Verilog实现:

了解了数值比较器的原理,我们使用Verilog实现了4位二进制数值比较器:

5. 加法器

0

变量表达式:根据前面设计组合逻辑电路的过程,我们根据逻辑函数的真值表写出函数表达式如下:

根据表达式重新绘制电路图:

最简单的数位相加方法是串联多个全加法器:

Verilog实现:

6. 给组合逻辑赋值的两种方法

由于数字电路由用导线连接的逻辑门组成,因此任何电路都可以表示为模块和赋值语句的某种组合。然而,有时这并不是描述电路最方便的方法。过程(总是使用块作为示例)提供了描述电路的另一种语法。

对于合成硬件,有两种类型的always块是相关的:

Composition: always@ (*) Timing: always@ (posegeclk) Composition总是block等于赋值语句,所以总有一种方法可以用两种方式表示一个Composition电路。使用哪个选项主要是哪种语法更方便的问题。块内的代码与块外的代码语法不同。过程块具有更丰富的语句集(例如,if-then, case),并且不能包含连续赋值*,但也引入了许多新的非直观的错误处理方法。(*过程上的连续分配确实存在,但与连续分配有所不同,不能综合。)

例如,分配和组合块描述同一个电路。两者都创建相同的组合逻辑块。每当任何输入(右边的)改变值时,两者都会重新计算输出。

assignout1=a b | c ^ d;

always @(*)out2=a b | c ^ d;

对于组合always @块,始终使用(*)的灵敏度列表。显式列出信号很容易出错(如果错过了一个信号),并且可以在硬件合成中忽略。如果显式地指定了灵敏度列表而错过了信号,则合成的硬件仍然会像指定的那样运行(*),但是仿真不会也不匹配硬件的行为。(在SystemVerilog中,使用always_comb)

关于wire和reg:赋值语句的左侧必须是net类型(例如,wire),而过程赋值语句的左侧(在Always块中)必须是变量类型(例如,reg)。这些类型(wire和reg)独立于合成硬件,只是Verilog作为硬件仿真语言使用时遗留下来的语法。

以上介绍了组合逻辑电路的原理,以及一些典型的组合逻辑电路的应用,并使用Verilog来实现这些电路,看起来很简单的电路,但却是非常经典和基础的,帮助我们从硬件层面理解和设计FPGA。如果有机会,请总结顺序逻辑电路的原理和典型应用。

本文主要介绍了关于组合逻辑电路有哪些(组合逻辑电路详解)的相关养殖或种植技术,栏目还介绍了该行业生产经营方式及经营管理,关注发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解技术怎么管理的要点,是您致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/1571544.html