部分概念引用自b站大佬rong晔资料rong晔 _ 搜索结果_哔哩哔哩_Bilibili
1.时间抖动(jitter):时钟周期在不同的周期可能加长或缩短,平均值为0,但两个时钟周期存在差值。
原因:误差在时钟发生器内部产生,与晶振、PLL内部电路有关。
解决方法:只能在设计中留有余量。
2.3.偏移(skew):时钟相位不确定。
原因:时钟源到达不同寄存器所经历路径的驱动和负载的不同,时钟边沿的位置有所差异,因此就带来了 skew。
解决方法:完成布局布线后,物理路径延时是固定的,所以在设计中考虑到时钟偏移,就可以避免偏移带来的影响。
区别:Jitter是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。Skew是由不同布线长度导致的不同路径的时钟上升沿到来的延时不同。
3.毛刺glitch
原因:由于信号在 FPGA 的内部走线和通过逻辑单元时造成的延迟,在多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰,即毛刺信号,这是由 FPGA 内部结构特性决定的。 毛刺现象在 FPGA 的设计中是不可避免的。
4.锁存器(latch)/触发器(FF)
触发方式:latch 是电平触发, register 是边沿触发, register 在同一时钟边沿触发下动作,符合同步电路的设计思想,而 latch 则属于异步电路设计,往往会导致时序分析困难,不适当的应用 latch则会大量浪费芯片资源。
一般将信号经过两级触发器就可以消除毛刺。
5.什么锁存器(latch)不好?
1) 锁存器对毛刺不敏感,很容易在信号上产生毛刺;
2) 而且也没有时钟信号,不容易进行静态时序分析。
正是因为这两个原因,我们在 FPGA 设计时,尽量不用锁存器
注意,“FPGA 中只有 LUT 和 FF 的资源,没有现成的 Latch,所以如果要用 Latch,需要更
多的资源来搭出来。 ”这个观点不完全是正确的。
在 Xilinx 的 FPGA 中, 6 系列之前的器件中都有 Latch; 6 系列和 7 系列的 FPGA 中,一个
Slice 中有 50%的 storage element 可以被配置为 Latch 或者 Flip-Flop,另外一半只能被配置
为 Flip-Flop。比如 7 系列 FPGA 中,一个 Slice 中有 8 个 Flip-Flop,如果被配置成了 Latch,
该 Slice 的另外 4 个 Flip-Flop 就不能用了。这样确实造成了资源的浪费。
但在在 UltraScale 的 FPGA 中,所有的 storage element 都可以被配置成 Flip-Flop 和 Latch。
6.D触发器与Latch的区别:
锁存器对电平信号敏感,在输入脉冲的电平作用下改变状态。
D触发器对时钟边沿敏感,检测到上升沿或下降沿触发瞬间改变状态
FF | Latch |
只有当控制信号从高到低或从低到高(即仅对信号变化敏感)时,电路状态才会改变 | 一旦输入信号改变,状态就会改变(当然会有一些传播延迟)。 |
同步 | 异步 |
边缘触发,这意味着当时钟脉冲发生变化时,电路的输出发生变化(可能是时钟脉冲的正边缘或负边缘)。 | 电平触发,这意味着电路的输出取决于启用信号的电平(1或0)。 |
由闩锁(FF类似于时钟闩锁)构建。FF用作寄存器。 | 由逻辑门构建。 |
由时钟脉冲激发,有时钟信号线 | 由可启动的输入信号激发,无时钟信号线 |
边缘敏感,即FF的内容仅在启用信号(通常为控制时钟信号)的上升或下降边缘变化。在时钟信号的上升沿或下降沿之后,FF的内容保持不变,即使输入发生变化。 | 电平敏感,即当锁存器的输入发生变化时,锁存器的内容立即发生变化。输出对启用信号激活脉冲的持续时间敏感,因此只能在激活脉冲期间发送或接收数据。 |
仅在时钟事件(例如上升沿、下降沿)时对输入进行采样。 | 仅当启用信号开启时,才连续进行输入采样。 |