逻辑门是逻辑电路的基本组成部分,可以由晶体管来构成。逻辑门大致可以分为基本门、万用门和延伸门等三种,其中基本门又可以分为与门、或门和非门三种。逻辑门可以使信号的高低电平转化为相应的逻辑信号,从而实现逻辑运算。
一、数字集成电路与逻辑门的分类
把若干个有源器件和无源器件及其连线,按照一定的功能要求制作在一块半导体基片上,这样的产品称为集成电路;若它完成的功能是逻辑功能或数字功能,则称为数字集成电路。最简单的数字集成电路是集成逻辑门。
集成电路比分立元件电路有许多显著的优点,如体积小、耗电省、重量轻、可靠性高等,所以集成电路一出现就受到人们的极大重视并迅速得到广泛应用。数字集成电路的规模一般根据门的数目来划分:小规模集成电路(SSI)约为 10 个门,中规模集成电路(MSI)约为 100 个门,大规模集成电路(LSI)约为 1 万个门,而超大规模集成电路(VLSI)则为 100 万个门。
集成电路逻辑门按其组成的有源器件的不同可分为两大类:一类是双极性晶体管逻辑门,另一类是单极性的绝缘栅场效应管逻辑门。
双极性晶体管逻辑门主要有 TTL 门(晶体管—晶体管逻辑门)、ECL 门(射极耦合逻辑门)和 I²L 门(集成注入逻辑门)等。
单极性 MOS 门主要有 PMOS 门(P 沟道增强型 MOS 管构成的逻辑门)、NMOS 门(N 沟道增强型 MOS 管构成的逻辑门)和 CMOS 门(利用 PMOS 管和 NMOS 管构成的互补电路构成的门电路,故又叫互补 MOS 门)。其中使用最广泛的是 TTL 集成电路和 CMOS 集成电路。每种集成电路又分为不同的系列,每个系列的数字集成电路都有不同的品种类型,用不同的代码表示,也就是器件型号的后几位数码,例如:
00:4 路 2 输入与非门;02:4 路 2 输入或非门;08:4 路 2 输入与门;10:3 路 3 输入与非门;20:双路 4 输入与非门;27:3 路 3 输入或非门;32:4 路 2 输入或门;86:4 路 2 输入异或门。
二、逻辑门的主要参数
集成电路的性能参数主要包括:直流电源电压、输入/输出逻辑电平、扇出系数、传输延时、功耗等。
1. 直流电源电压
TTL 集成电路的标准直流电源电压为 5 V,最低 4.5 V,最高 5.5 V。CMOS 集成电路的直流电源电压可以在 3~18 V 之间,74 系列 CMOS 集成电路有 5 V 和 3.3 V 两种。CMOS 电路的一个优点是电源电压的允许范围比 TTL 电路大,如 5 V CMOS 电路当其电源电压在 2~6 V 范围内时能正常工作,3.3 V CMOS 电路当其电源电压在 2~3.6 V 范围内时能正常工作。
2. 输入/输出逻辑电平
对一个 TTL 集成门电路来说,它的输出“高电平”并不是理想的 +5 V 电压,其输出“低电平”也并不是理想的 0 V 电压。这主要是由于制造工艺上的公差,使得即使是同一型号的器件,输出电平也不可能完全一样;另外,由于所带负载及环境温度等外部条件的不同,输出电平也会有较大的差异。但这种差异应该在一定的允许范围之内,否则就无法正确标识出逻辑值“1”和逻辑值“0”,从而造成错误的逻辑操作。
3. 传输延迟时间 tpd
在集成门电路中,由于晶体管开关时间的影响,输出与输入之间存在传输延迟。传输延时越短,工作速度越快,工作频率越高,因此传输延迟时间是衡量门电路工作速度的重要指标。例如在特定条件下,传输时间为 10 ns 的逻辑电路要比 20 ns 的电路快。
三、逻辑运算与位运算
在“逻辑”这个概念范畴内,存在真和假这两个逻辑值,将其对应到数字电路或 C 语言中,就变成了“非 0 值”和“0 值”:逻辑上的“假”就是数字电路或 C 语言中的“0”这个值,而逻辑“真”就是其他一切“非 0 值”。假定有两个字节变量 A 和 B,二者进行某种逻辑运算后的结果为 F。
以下逻辑运算符都是按照变量整体值进行运算的,通常叫做逻辑运算符:
(1)&&(逻辑与):F = A && B。当 A、B 的值都为真(即非 0 值,下同)时,运算结果 F 为真(具体数值为 1,下同);当 A、B 值任意一个为假(即 0,下同)时,结果 F 为假(具体数值为 0,下同)。
(2)||(逻辑或):F = A || B。当 A、B 值任意一个为真时,运算结果 F 为真;当 A、B 值都为假时,结果 F 为假。
(3)!(逻辑非):F = !A。当 A 值为假时,运算结果 F 为真;当 A 值为真时,结果 F 为假。
以下逻辑运算符都是按照变量内的每一个位来进行运算的,通常叫做位运算符:
(1)&(按位与):F = A & B,将 A、B 两个字节中的每一位都进行与运算,再将得到的每一位结果组合为总结果 F。例如 A = 0b11001100、B = 0b11110000,则 F = 0b11000000。
(2)|(按位或):F = A | B,将 A、B 两个字节中的每一位都进行或运算,再将得到的每一位结果组合为总结果 F。例如 A = 0b11001100、B = 0b11110000,则 F = 0b11111100。
(3)~(按位取反):F = ~A,将 A 字节内的每一位进行非运算(即取反),再将得到的每一位结果组合为总结果 F。例如 A = 0b11001100,则 F = 0b00110011。
(4)^(按位异或):异或的规则是运算双方的值不同(即相异)则结果为真,双方值相同则结果为假。在 C 语言中没有按变量整体值进行的异或运算,因此仅以按位异或为例:F = A ^ B,A = 0b11001100、B = 0b11110000,则 F = 0b00111100。

图 1 常用逻辑门符号