一$.$基础知识
晶体管(Transistors)
分类:p-type晶体管 与 n-type晶体管
结构:Gate-栅极;Drain-漏极;Source-源极
功能:n-type晶体管栅极接受高电平后接通,接受低电平断开。一般用于传导低电平。
p-type晶体管栅极接受低电平后接通,接受高电平断开。一般用于传导高电平。
目前主要采用互补金属氧化物半导体技术(CMOS)制造晶体管。
并联的晶体管速度较串联的晶体管更快。
逻辑门
一些基本逻辑门的构造(NOT,NAND,AND):
常见逻辑门符号图与真值表:
布尔代数
运算律:
德摩根律(DeMorgan Laws):
标准化表示法(Sum of Products form / SOP):
一个布尔函数与它的所有输出为TRUE的输入组合的和等价。
二$.$组合逻辑
解码器(Decoder)
有 $n$ 个输入与 $2^n$ 个输出,对于每种输入情况,只有特定的输出位为TRUE。
2位解码器真值表与电路图:
多路复用器(Multiplexer/MUX)
选择 $n$ 位输入中的一位输出。以 2-to-1MUX 为例,它有两位输入位与一位选择位,真值表与电路图如下图所示。
查找表(Look up table/LUP)
利用多路复用器可以通过将组合逻辑的输入输出结果存储为真值表的形式,从而代替传统的逻辑门电路。
例如,与门的LUP电路如下所示:
LUP可以还可以实现一些更复杂的组合逻辑,例如下图所示的布尔函数:
基于对LUP的编程,我们可以实现现场可编程门阵列(FPGA),从而避免去设计专门的逻辑电路。
全加器(Full Adder)
实现二进制数的加法。它有三个输入位,分别为加数一,加数二与上一位的进位,以及两个输出位,分别是结果与进位。
将多个全加器连接在一起即可实现多位二进制数的加法,下图是一个32位加法器的示意图。
可编程逻辑运算(PLA)
通过编程将与门的输出连接至或门的输入从而实现组合逻辑。可以用多路复用器或保险丝实现PLA的编程。
下图是使用PLA实现全加器的示例
由PLA的构建我们知道,与门或门非门的集合是符合逻辑完备性的,同理,NAND门一样符合逻辑完备性。
算术逻辑单元(ALU)
算术逻辑单元将各种逻辑运算与算数运算集成到一个单元中,由多路复用器选择在特定时间使用什么功能。
下图是上面这个3位ALU的电路实现。
三态缓冲器(Tri-State Buffer)
三态缓冲器可以对导线上的不同信号进行门控。它有一个输入端,一个使能控制端和一个输出端。当使能控制端接通,则输入信号可以通过,否则输出端处于浮动信号状态。
三$.$时序逻辑
RS锁存器(R-S Latch)
RS锁存器由两个交叉的NAND门构成,如下图所示。当S和R的值均为1时,Q中会存储之前设置过的值。当R为1,S为0时,Q会被设置成1;当R为0,S为1时,Q会被设置成0。
R与S不能同时为0。
D锁存器(D Latch)
为防止RS锁存器出现输入同时为0的情况,我们在输入处增加两个NAND门与一个控制输入位(WE)。当WE为0时,Q中保持为之前设置的状态。当WE为1时,Q 将被设置为输入D的值。
寄存器(Register)
为了存储更多位的数据,我们将多个D锁存器连接在一起得到寄存器。下面是一个4位寄存器的构造。
内存(Memory)
内存是由可被读写的地址空间组成。如下图所示,该内存有四个位置,每个地址寻址能力为8位,共能存储32bit的信息。
内存通过解码器获得地址信息后,通过多路复用器选择相应地址的锁存器读出存储其中的值。
要实现内存的写入还需要在上述电路图中增加一位写入使能位来控制内存的读写。
下图是一个规模更大的内存结构。
使用这种内存也可以以LUP的形式实现逻辑函数。
顺序逻辑电路
- 状态机:状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移。
- 同步与异步:异步机器在接受控制信号后,状态立刻发生改变;同步机器的状态改变发生在固定时间单位之后。接受输入信号后,信号会被存储起来,等到时钟发生变化时状态再发生变化。
对于同步机器,我们需要一个时钟(clock)来确定状态何时应该发生变化。在一个时钟周期内,状态不应当改变。
- 有限状态机(Finite State Machine/FSM):FSM的每个状态代表系统在给定时间内的一个快照。也可以说,FSM是系统所有可能的状态的集合。具体的,FSM需要有有限个状态,有限个输入,有限个输出,并明确规定状态转换的发生方式和每种状态下的输出值。基本上,FSM由三个独立部分组成:下一状态逻辑,输出逻辑和状态寄存器。如下图所示:
状态寄存器存储当前状态,并在时钟周期边缘加载下一状态。下一状态逻辑和输出逻辑分别产生下个状态和输出值。因此,我们需要确保能够在一个时钟周期内完成组合逻辑,并维持状态寄存器中状态的稳定,直到时钟周期边缘时状态才能发生改变。
D型触发器(D Flip-Flop)
将两个D锁存器相连,并使反向时钟信号与第一个锁存器相使能连,正向时钟信号与第二个锁存器使能相连。结构如下图所示。时钟为低电平时,D信号会被存储在中间态而不会被写入Q;当时钟为高电平时,中间态值会被写入Q中。也就是说,只有当时钟信号处于上升沿边缘时输入信号D才会被加载入Q中。
这样的触发器也被称为时钟上升沿触发器(Rising clock edge Triggered flip-flop),符号如下所示。
寄存器中的D锁存器可以换为D触发器,下图是一个基于D触发器的4bit寄存器。