逻辑门电路

晶体管和MOS管

  • 半导体:导电能力介于导体和绝缘体之间的物体称为半导体。P型半导体,N型半导体,多子,少子
  • PN结:将P型和N型半导体制作在一起,形成PN结
  • PN结正向偏置:P型半导体接正极,N型半导体接负极,形成正向偏置
  • PN结反向偏置:P型半导体接负极,N型半导体接正极,形成反向偏置
  • 晶体二极管:一个PN结,记作D
    二极管单向导电性:受外加电压极性控制的开关特性
    正向导通:正向电压大于开启电压VDV_D,二极管导通。一旦导通,则 UD=VDU_D=V_D 不变。因此,VDV_D称为钳位电压或正向压降.
    反向截止::二极管外加反向电压或电压小于开启电压VDV_D ,二极管截止。二极管截止,电流ID=0I_D=0
    击穿:二极管两端外加反向电压超过一个阈值(VZV_Z)时,二极管会被击穿,此时二极管失去单向导电性,压降是VZV_Z
  • 晶体三极管:两个PN结,记作Q
    NPN型:由两层N型半导体中间夹一层P型半导体
    PNP型: 由两层P型半导体中间夹一层N型半导体

晶体三极管的稳态开关

  • 晶体三极管的开关特性
    • 在模拟电路中,晶体三极管主要作为线性放大元件和非线
      性元件
    • 在数字电路中,晶体三极管主要作为开关元件。通常采用晶体管共发射极电路,放大能力强,也即控制能力强,只要在输入端加上两种不同幅值的信号,就可控制晶体管的
      导通或截止。
    • 作为开关电路,晶体三极管主要工作在截止区和饱和区。
    • 三极管的稳态开关特性是指三极管稳定在截止和饱和导通两种状态下的特性。
  • MOS管(金属氧化物半导体场效应管)
    MOS管属于单极型集成电路,只有一种载流子(自由电子或空穴)参与导电。
    MOS管分为NMOS管和PMOS管两种类型,
    MOS管还分增强型(如栅极与衬底间不加电压时,栅极下面没有沟道存在)和耗尽型(如栅极与衬底间不加电压时,栅极下面已有沟道存在)
    1. NMOS管
    2. PMOS管

逻辑门电路实现

  • 门电路:由晶体管和电阻、电容等元件组成的电路,能实现某种逻辑关系的电路,是数字电路的基本逻辑单元电路。
    • 分立元件门、集成门
  • 与门电路(二极管实现)

工作原理:
当 A、B为高电平(高电平额定值ViHV_{iH} 为3.0V)时,D1D_1D2D_2均导通,则输出位高电平(Y = 3.0+0.7 = 3.7V)
当 A、B为低电平(低电平额定值ViLV_{iL}为0.3V)时,D1D_1D2D_2均导通,由于二极管导通后钳位电压为0.7V,则输出Y=0.3+0.7=1.0V
当A为低电平、B为高电平时,D1D_1优先导通,输出Y=0.3+0.7=1.0V,D2D_2被反偏截止

  • 或门电路(二极管实现)

工作原理:
当A、B为低电平0.3V时,D1D_1D2D_2均导通,由于二极管导通后的钳位电压为0.7V,则输出Y=0.3-0.7= -0.4V。
当A为0.3V、B为3 .0V时, D2优先导通,则输出Y=3.0-0.7= 2.3V;由于A只有0.3V ,则D1被反偏截止。
当A、B均为高电平3.0V时,D1D_1D2D_2导通,则输出Y=3-0.7=2.3V。

  • 非门电路(三极管实现)
  • 非门电路(CMOS实现)
  • 或非门电路(CMOS实现)
  • 与非门电路(CMOS实现)
  • 与非门电路(TTL实现)

门电路的外特性

基本组合逻辑部件设计

组合逻辑设计概述

  • 数字电路分类:组合逻辑电路、时序逻辑电路
  • 组合逻辑电路:将逻辑门以一定的方式组合在一起,使其具有一定逻辑功能的数字电路。

是一种无记忆电路——任一时刻的输出信号仅取决于该时刻的输入信号,而与信号作用前电路原来所处的状态无关。
特点:由逻辑门电路组成、没有反馈电路和储存电路、当时的输出信号仅取决于当时的输入信号、无记忆功能

  • 组合逻辑电路的不同表示方法
    逻辑图表达式真值表电路功能逻辑图\longrightarrow 表达式\longrightarrow 真值表\longrightarrow 电路功能

  • 组合逻辑电路设计方法
    根据功能要求,采用某种设计方法,得到满足功能要求、且最简单的组合逻辑电路

    1. 逻辑抽象:确定输入、输出变量,列出真值表
    2. 写出逻辑表达式:根据真值表写出标准表达式(并进行化简)
    3. 绘逻辑图:根据最简逻辑函数表达式画出原理图。
    4. HDL编程:如用case语句、if-else语句,assign语句
  • 组合逻辑的手工设计方法

  • 组合逻辑的自动设计方法
    基于HDL和EDA工具的组合逻辑电路设计方法

    1. 确定输入、输出变量,列出真值表(复杂系统也可
      不写出真值表,而直接用HDL的系统级描述方式)
    2. 写出逻辑表达式:根据真值表写出标准表达式(并进行化简)
    3. HDL编程:如用case语句、if-else语句,assign语句

运算器单元电路

  • 加法运算电路
    半加器、全加器、多位加法器、减法运算电路

  • 溢出
    运算结果超出计数系统所能表示的范围

    • 如果符号位相同的两数相加,所得结果的符号位与之相反,结果溢出
    • 如果符号位相异的两数相减,所得结果的符号位与减数相同,结果溢出
    • 其他情况,不会产生溢出
    • 有符号数运算,出现溢出表示结果是错误的

溢出的判断:采用双符号位,“00”表示正,“11”表示负,如果运算结果符号位出现“01”或“10”表示出现溢出

  • 乘法运算电路:阵列乘法器
    基本思路:利用若干全加器,完全由硬件直接计算乘法结果
    实现电路:

  • 数值比较器
    一种关系运算电路,对两个二进制数进行比较得出大于、小于、等于的的结果

    • 1位比较器:利用真值表输出
    • 4位比较器(7485芯片)
      规则:从高位开始比较,高位不等时,数值的大小由高位决定;若高位相等,则再比较低位,数值的大小由低位比较结果决定。
      4位比较器的使用与拓展
  • 1位ALU
    可执行1位与、或、或非、与非、加、减运算

  • 32位ALU
    加法器可采用串行进位,也可采用先行进位

编码器/译码器

编码器

编码:为区分一系列不同事物,对其中的每个事物用一组二进制代码表示,编码器是实现编码功能的数字电路

  • 二进制编码器
    2n线-n编码器:用n位二进制代码,对2n个信号进行编码的电路。

    • 输入: 2n个信号
    • 输出: n位二进制代码
    • 任意一时刻只能对其中一个信号进行编码,即只允许其中一个输入信号有效(高电平或低电平),而其余信号无效,否则输入将出现混乱。
  • 8线-3线编码器(高电平输入有效)
    个输入信号:Y0,Y1,…,Y7。任何时刻最多只有其中一个信号为1(高电平),其余均为0(低电平)。
    3位输出编码:C,B,A。
    当Y0=1时,CBA=000;Y1=1时,CBA=001;Y2=1时,CBA=010,以此类推。

8线-3线编码器(高电平输入有效)的Verilog HDL设计
方法一:根据8线-3线编码器的功能列出真值表,由真值表推出输出的逻辑表达式,然后用assign语句建模(算法级描述)

1
2
3
4
5
6
7
module encoder8_3(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7, C,B,A);
input Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7;
output C,B,A;
assign C =! (!Y4&&!Y5&&!Y6&&!Y7);
assign B =! (!Y2&&!Y3&&!Y6&&!Y7);
assign A =! (!Y1&&!Y3&&!Y5&&!Y7);
endmodule

方法二:根据逻辑功能定 义,采用case语句直接描述,设计过程更简单

1
2
3
4
5
6
7
8
9
10
11
12
module encoder8_3(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7, C,B,A);
input Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7;
reg C, B, A;
always
case ({Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7})
'b10000000 : {C,B,A} = 0; 'b01000000 : {C,B,A} = 1;
'b00100000 : {C,B,A} = 2; 'b00010000 : {C,B,A} = 3;
'b00001000 : {C,B,A} = 4; 'b00000100 : {C,B,A} = 5;
'b00000010 : {C,B,A} = 6; 'b00000001 : {C,B,A} = 7;
default : {C,B,A} = 3'bx;
endcase
endmodule
  • 8421BCD编码器
    用4位二进制,对10个十进制数字进行编码

  • 优先编码器

    • 克服二进制编码器仅允许1个输入信号有限的局限,允许两个以上输入信号同时有效;
    • 对所有输入信号进行优先级别排序,任何时刻只对优先级最高的输入信号编码,对优先级别低的输入信号则不响应,以保证编码器可靠工作。
    • 优点:当有两个或两个以上的输入有效时,输出不会发生混乱。广泛应用于计算机的优先中断系统、键盘编码系统中。

优先编码器–74147(低电平输入有效)的Verilog HDL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Module
CT74147(IN0,IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8,IN9,YN0,YN1,YN2,YN3);
input IN0,IN1,IN2,IN3, IN4, IN5,IN6,IN7,IN8,IN9;
output YN0,YN1,YN2,YN3;
reg YN0,YN1,YN2,YN3;
reg[3:0] Y; //中间变量
always @(IN0 or IN1 or IN2 or IN3 or IN4 or IN5 or IN6 or IN7 or IN8 or IN9)
begin
if (IN9 == 1'b0) Y = 4'b0110;
else if (IN8 == 1'b0) Y = 4'b0111;
else if (IN7 == 1'b0) Y = 4'b1000;
else if (IN6 == 1'b0) Y = 4'b1001;
……..
else if (IN1 == 1'b0) Y = 4'b1110;
else if (IN0 == 1'b0) Y = 4'b1111;
YN0 = Y[0];
YN1 = Y[1];
YN2 = Y[2];
YN3 = Y[3];
end
endmodule
译码器

将二进制代码所表示的信息翻译成对应高低电平信号输出的
过程称为译码,译码是编码的反操作。实现译码功能的电路称为译码器(Decoder)
变量译码器(二进制译码器)、码制变换译码器、显示译码器

  • 二进制译码器
    将每个输入二进制代码,译成对应的一根输出线上的高电平(或低电平)信号。因此称为n线-2n线译码器

  • 3线-8线译码器(74138)

  • BCD译码器
    码制变换译码器:将输入的二进制代码转换成对应的其他码制输出的译码器。
    BCD译码器(4-10线译码器):4位8421码转换成十进制数的电路。用于驱动十进制数码显示管、指示灯等

    • 完全译码BCD译码器、不完全译码BCD译码器
  • 显示译码器
    用于驱动数码显示器,是一种将二进制代码表示的数字、文字、符号用人们习惯的形式直观显示出来的电路
    译码器->驱动器->显示器

多路选择器

数据选择器:从一组输入数据选出其中一个作为数据输出的电路,又称多路选择器(Multiplexer,多路器)

以“与或非”门或以“与或”门为主体,在选择控制信号的作用下,能从多路平行输入数据中任选一路数据作为输出

  • 8选1多路选择器(74151)
    功能一:8选1数据选择器。D7-D0为数据输入端,A2A1A0为选择控制端,使能控制输入EN为低电平时有效。
    功能二:多功能运算电路。 D7-D0为控制输入端。
    1. 通过D7~D0取不同的值,从输入变量A2 、A1、A0的各个最小项中选取某几个最小项的或输出,实现不同的运算电路。
    2. 有28=256种功能,包含3变量的各种最小项表达式,可实现任意组合逻辑电路的设计。
      例如:

多路选择器(74151的Verilog HDL设计)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
module CT74151(A2,A1,A0,STN,D7,D6,D5,D4,D3,D2,D1,D0,Y,WN);
input A2,A1,A0,STN;
input D7,D6,D5,D4,D3,D2,D1,D0;
output Y,WN;
reg Y,WN;
always
begin
if (STN == 0)
begin
case ({A2,A1,A0})
3'b000 : Y = D0;
3'b001 : Y = D1;
3'b010 : Y = D2;
3'b011 : Y = D3;
3'b100 : Y = D4;
3'b101 : Y = D5;
3'b110 : Y = D6;
3'b111 : Y = D7;
endcase
end
else Y = 1'b0;
WN = ~Y;
end
endmodule

组合逻辑电路的竞争冒险

竞争冒险现象
  • 竞争:在组合逻辑电路中,某个输入变量通过两条或两条以上的途径传到输出端,由于每条途径延迟时间不同,到达输出门的时间就有先有后,这种现象称为竞争。
  • 冒险:门电路因输入端的竞争,而导致输出端产生不正常的尖峰干扰冒险信号(毛刺)的现象,称为冒险。

竞争冒险的原因:门电路的延时。信号在器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。

竞争冒险的判断
  1. 代数法:
    逻辑函数FF中,若某个变量(假定为A)同时以原变量和反变量形式存在,逻辑函数在一定条件下(其它变量取特定的值1或0)可以简化为可以简化为F=A+AF = A + \overline AF=AAF=A·\overline A的形式,则该逻辑电路存在冒险。F=A+AF = A + \overline A存在“0”冒险,F=AAF=A·\overline A存在“1”冒险。

  1. 卡诺图法
    在逻辑函数的卡诺图中,函数的每个与项对应卡诺图上的一个卡诺圈,若两个卡诺圈相切,相切处将存在冒险。

竞争冒险的消除