逻辑门电路详解1(最透彻)

摘要:
逻辑门是集成电路设计的基本部件。由晶体管或MOS晶体管组成的简单逻辑门可以在输入电平(高或低)上执行一些简单的逻辑运算,而简单逻辑门则可以组合成更复杂的逻辑操作,这是VLSI设计的基础。尽管在这样的“与门”逻辑和“与非门”逻辑之间只有两个MOS晶体管,但在数千个大规模集成电路的设计中节省的面积是相当大的。事实上,插入“非门”的主要目的是提高速度,即优化逻辑门的延迟!

逻辑门(Logic Gates)是集成电路设计的基本组件。通过晶体管或MOS管组成的简单逻辑门,可以对输入的电平(高或低)进行一些简单的逻辑运算处理,而简单的逻辑门可以组合成为更复杂的逻辑运算,是超大规模集成电路设计的基础。

 

最基本的逻辑门有三种,即“与”、“或”、“非”,其符号如下图所示:

 

逻辑门电路详解1(最透彻)第1张 

 

逻辑门电路详解1(最透彻)第2张

逻辑门电路详解1(最透彻)第3张

 

至于它们的逻辑作用这里不再列出了,免得大家说编剧我灌水,为了显得我能勉强高逼格一点,我们仔细看看逻辑门芯片中有哪些信息值得我们关注,Follow me!

如果你仔细观察过74HC系列与、或、非逻辑器件数据手册(datasheet)的逻辑原理图(Logic Diagram),我们会发现上面三个门会是下图那样的:

 

 逻辑门电路详解1(最透彻)第4张

逻辑门电路详解1(最透彻)第5张

逻辑门电路详解1(最透彻)第6张

我们利用以前教材上的知识来化简一下这三个组合逻辑,如下所示:

逻辑门电路详解1(最透彻)第7张

果然还是“与”、“或”、“非”逻辑,有心人可能立马就发现其中的奥秘:这些逻辑全都被表达成“与非”、“或非”!原来以前在学校做的那些将逻辑表达式化成“与非”、“或非”的题目在这里就有呀,真是学以致用呀,我太兴奋了,我太有才了,我太…

打住,今天我来这不是让你来做这些简单的表达式化简,而是想问你们两个问题:

(1)为什么这么简单且基本得不能再基本的逻辑运算要做得这么复杂?或者换句话说,为什么学校的书本上有那么多将逻辑表达式化成“与非”、“或非”的题目?

 

(2)为什么插入那么多非门?好像不要钱似的!

这两个问题涉及到集成电路的设计,我们首先来看看在CMOS集成电路设计中是如何将这三个逻辑设计出来的,如下图所示的“非门”逻辑构造:

逻辑门电路详解1(最透彻)第8张 

上面带圆圈的是PMOS晶体管,下面是NMOS晶体管,从开关的角度来看,PMOS管相当于PNP三极管,输入为“1”时截止,输入为“0”时导通;而NMOS则相当于NPN三极管,输入为“1”时导通,输入为“0”时截止(这个比喻可能不太合适,但你可以这么去理解这个开关行为,因为相对于MOS管,可能更多人对三极管更熟悉,如果不是的话,可以忽略这个比喻)。

当输入为“0”时,下面的NMOS截止,而上面的PMOS导通将输出拉为高电平,即输出“1”。当输入为“1”时,上面的PMOS截止,而下面的NMOS导通将输出拉为低电平,即输出“0”,很明显,这就是个“非门”逻辑。

OK,我们再看看“与非门”逻辑的结构:

 逻辑门电路详解1(最透彻)第9张

 

    当上图中的任何一个输入(A或B)为低时,都将有一只PMOS导通,从而将输出Y拉高,因此该电路是“与非门”逻辑,那么“与门”逻辑就是在“与非门”后面加一级“非门”了,如下图所示:

逻辑门电路详解1(最透彻)第10张 

 

有些人就会叫起来:编剧你脑残了,这不是乱盖吗?我下面设计的电路不是更省逻辑吗?

 

逻辑门电路详解1(最透彻)第11张

 

你自己看看,只有当输入A与B都为高电平时,输出Y才被上拉为高电平,而只要有任何一个输入为低电平时,输出Y就被拉为低电平,不是吗?我太有才了!你们电子制作站微信订阅号的老师水平真是太差了!

 

但是,对MOS管有较深理解的人都会知道,NMOS可以高效传输低电平,而PMOS可以高效传输高电平,两者配合可以达到轨对轨输出,而相反却不可以(会有损耗),因此你设计的逻辑电路从书本上看是合格的,但实际应用中不会有这种电路。

 

这样你发现了什么没有?在CMOS集成电路设计中,构建一个“与门”逻辑竟然比“与非门”逻辑还要多花费两个MOS晶体管,CMOS门在本质上是反相位的,也就是说每一个基本的逻辑门都自带了一个逻辑非,所以说,在学校里老师让你将复杂的表达式化成“与非”或“或非”逻辑,不仅仅是让你考试拿分的一道题,而是在CMOS集成电路设计当中,用“与非”、“或门”这样的设计可以充分地利用CMOS门本身的“逻辑非”。

这么一个“与门”逻辑与“与非门”逻辑之间的差距虽然仅有两个MOS管,但是在成千上万的大规模集成电路设计时(如奔腾处理器),省下来的面积就非常可观了。

 

下面是“或非门”逻辑的结构,读者有兴趣可以推导一下

逻辑门电路详解1(最透彻)第12张 

 

你可能认为这只是巧合而已,那你可以看看更复杂的逻辑芯片的逻辑原理图,大多数都是用“与非门”、“或非门”、“非门”,当然,有些也不是,毕竟只是上层的逻辑原理框图,但是底层的CMOS实现肯定是一样的

 

 

这样第一个问题就已经解答了,那么第二个问题呢?首先要说的是:插入的非门肯定是要花钱的,但是既然这么做,就一定有道理。有人说输入插入非门是为了整形,输出插入非门是为了增强带负载能力,难道“与非门”或“或非门”的带负载能力会比“非门”差?都是一样的构造,只有“非门”可以对输入电平进行整形?

 

其实插入“非门”的主要目的是为了提升速度,即优化逻辑门的延时!虾米?编剧你这次又被我抓到了吧?我插入两个非门就多了两级逻辑,不就更慢了吗?地球人都知道呀!

 

But,我只想告诉你,这只是一般人的想法(我们是高逼格的人JJ),大多数人都会认为每一级逻辑都有一个“门延时”,因此会通过计算总的逻辑级数来计算总的延时,也就是说,逻辑级数越少的电路就是速度最快的,然而,门延时实际上取决于电气努力(这个不好解释,知道这个名词就行了),所以采用较少的逻辑级数往往会导致更大的延时(这有点类似时序逻辑的“流水线”结构)。

 

CMOS集成电路设计里有一个“最优级数”的概念,不是这个专业的不需要深究,我们只举个最简单的例子就可以说明白这个问题,如下图所示:

 逻辑门电路详解1(最透彻)第13张

 

这三个“非门”逻辑当中哪个延时最小呢?你可能认为是第一个,但实际上第二个方案是延时最小的,这就解释了:为什么这些厂家都不要钱似的插入“非门”逻辑了吧?插入这么多的“非门”就是为了获得更快的速度,然后卖个更好的价钱,正所谓:天下熙熙,皆为利来;天下攘攘,皆为利往,这个道理永远是正确的,在集成电路设计里也不例外。

 

好的,本节就此结束了,下一节我们谈谈逻辑电平,想听的记得带上板凳呀

原文链接点击这里

免责声明:文章转载自《逻辑门电路详解1(最透彻)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PG 通过 auto_explain 模块查看函数中的 SQL 的执行计划,从而进行性能优化(瓶颈定位)log4j常见问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

STM32一键下载电路设计原理

先放原理图(补充:图中的BOOT0通过10K的电阻接到地),再解释为什么这么设计: STM32启动方式:BOOT0和 BOOT1用于设置 STM32的启动方式 ,见下表: BOOT0=1,BOOT1=0:串口下载模式; BOOT0=0,BOOT1=X:程序启动模式,从内部flash启动。 设计思路:串口一键下载需要做的就是下载时,为串口下载模式,下载完...

状态机设计——从简单的按键消抖开始

  目前笔者正在接受明德扬FPGA网上培训班的培训,讲的内容非常适合新手,且以练习和互动答疑的教学模式让我学到了很多东西。由于是根据自身时间安排进度的,所以战线拉的比较长,发现做些设计总结非常重要,可以帮助自己理清思路,同时也能得到很好的复习。   之前一直在做altera FPGA的相关学习,对xilinx还不是很熟悉,借着这个契机,将比较基础常用的设计...

几个串口协议学习整理

一、UART UART是一个大家族,其包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范。它们的主要区别在于其各自的电平范围不相同。 嵌入式设备中常常使用到的是TTL、TTL转RS232的这种方式。常用的就三根引线:发送线TX、接收线RX、电平参考地线GND。  1.1    电路示意图   1.2    通信协议...

Pyboard基础功能探索---按键、GPIO

板载按键KEY   1.获取板载按键引脚名称 >>> help(pyb.Pin.board) object <class 'board'> is of type type ... SW -- Pin(Pin.cpu.B3, mode=Pin.IN, pull=Pin.PULL_UP) ... 板载用户按键别名:SW,芯片定义...

「雕爷学编程」Arduino动手做(31)——ISD1820语音模块

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。 【Arduino】108种传感器模块系列实验(资料+代...

RZ、NRZ、NRZI、曼彻斯特编码

以下内容转自http://blog.sina.com.cn/s/blog_78e87ba10102wj9g.html        在数字电路中,组成一连串信息的基元就是0和1,无论是在CPU、DSP、MCU甚至是个数字计数器中,数字电路在其中能够处理的信息也只有0和1,而对于任何外界的信息,计算机都能通过两个量来描述,那就是0和1。而对于数字通信来说,想...