经典面试题:建立时间与保持时间
我曾背过这个答案N多遍,但是依然没有理解。
直到...
目录
一、同步电路设计
同步电路系统设计将系统状态的变化与时钟信号同步,并通过这种理想化的方式降低电路设计难度。同步电路设计是FPGA设计的基础。
但是伴随着集成电路的微缩化和大规模化,同步式电路的一些问题也显现出来。有研究提出了基于异步电路实现FPGA的思路。这个后面再谈。
二、触发器
触发器(Flip Flip,FF)是一种只能存储1个二进制位(bit)的存储单元,可以用作时序逻辑电路的记忆元件。FPGA逻辑单元的D触发器(DFF)就是一种在时钟的上升沿将输入信号的变化传送至输出的边沿D触发器。DFF的符号和真值表如下图所示:
D |
CLK |
Q |
~Q |
X |
L |
Qn |
~Qn |
X |
H |
Qn |
~Qn |
L |
↑ |
L |
H |
H |
↑ |
H |
L |
X |
↓ |
Qn |
~Qn |
2.1 D触发器结构
CMOS传输门构成的D边沿触发器电路如下图所示:
CMOS工艺下的D-FF结构如下图所示:
先由传输门和两个反相器组成一个循环电路(锁存器),再有前后两级锁存器按主从结构连接而成。这里的传输门起开关作用,随着CLK的状态切换开关。只看输出的话,前级锁存器的值会随着时钟输入的变化井然有序的传入后级锁存器。为了防止时钟信号变化时输入信号发生冒险,从而使输入数据稳定的进入前级锁存器,前级锁存器的时钟相位应与输入数据的电路时钟相位相反。
2.2 D触发器工作原理
D-FF的工作原理,如下图所示:
当CLK=0时(主锁存器工作),位于前级的主锁存器将输入D的值保存进来,后级的从锁存器将维持上一个时钟周期的数据。由于此时前级与后级的反相器环路之间的传输门是关闭状态,所以前级的信号不会传到后级。
当CLK=1时(从锁存器工作),前级主锁存器的值将会传到后级,同时输入D的信号将会被隔离在外。此时如果前级反相器环路中的信号没有循环一圈以上,就会出现如下图所示的在0和1之间摇摆的中间电位,这就是所谓的亚稳态。
三、建立时间和保持时间
由于亚稳态时间比延迟时间长,在该阶段读取数据可能会引起错误,所以我们引入建立时间(setup time)来约束在时钟上升沿到来之前输入D保持稳定的时间。
当CLK=1时,如果输入D在传输门关闭之前就发生变化,那么本该在下一周期读取的数据就会提前进入锁存器,从而引起反相器环路振荡或产生亚稳态。因此在CLK=1之后也需要输入D维持一定的时间,我们称之为保持时间(hold time)约束。