FPGA / IC 设计(二)

1、时间抖动 jitter/偏移 skew

        jitter:由于晶振本身稳定性,电源以及温度变化等原因造成了时钟频率的变化,就是 jitter,指 的是时钟周期的变化,也就是说时钟周期在不同的周期上可能加长或缩短。它是一个平均值 为 0 的平均变量。指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的, 和晶振或者 PLL 内部电路有关,布线对其没有影响。由于跟晶振本身的工艺有关,所以在设 计中无法避免它能带来的影响,通常只能在设计中留有一定的余量。

        skew:是指同样的时钟产生的多个子时钟信号之间的延时差异。skew 通常是时钟相位上的不 确定。由于时钟源到达不同寄存器所经历路径的驱动和负载的不同,时钟边沿的位置有所差异,因此就带来了 skew。完成布局布线后,物理路径延时是固定的,所以在设计中考虑到 时钟偏移,就可以避免偏移带来的影响。

2、毛刺 glitch 

        在 FPGA 的设计中,毛刺现象是长期困扰电子设计工程师的设计问题之一, 是影响工程师设计效率和数字系统设计有效性和可靠性的主要因素。由于信号在 FPGA 的内部走线和通过逻 辑单元时造成的延迟,在多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰,即 毛刺信号,这是由 FPGA 内部结构特性决定的。毛刺现象在 FPGA 的设计中是不可避免的,有时任何一点毛刺就可以导致系统出错,尤其是对尖峰脉冲或脉冲边沿敏感的电路更是如此。

消除毛刺的方法:( 参考FPGA中的竞争冒险消除_今天不学习明天被卷️的博客-CSDN博客

①利用冗余项法

        利用冗余项消除毛刺有 2 种方法:代数法和卡诺图法,两者都是通过增加冗余项来消除险象,只是前者针对于函数表达式而后者针对于真值表。以卡诺图为例,若两个卡诺圆相切, 其对应的电路就可能产生险象。因此,修改卡诺图,在卡诺图的两圆相切处增加一个圆,以增加多余项来消除逻辑冒险。但该法对于计数器型产生的毛刺是无法消除的。

②采样法

        由于冒险多出现在信号发生电平跳变的时刻,即在输出信号的建立时间内会产生毛刺, 而在保持时间内不会出现,因此,在输出信号的保持时间内对其进行采样,就可以消除毛刺信号的影响,常用的采样方法有 2 种:一种使用一定宽度的高电平脉冲与输出相与,从而避开了毛刺信号,取得输出信号的电平值。这种方法必须保证采样信号在合适的时间产生,并且只适用于对输出信号时序和脉冲宽度要求不严的情况。另一种更常见的方法叫锁存法,是 利用 D 触发器的输入端 D 对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号。由于在时钟的上升沿时刻,输出端 Q=D,当输入的信号有毛刺时,只要不发生在时钟的上升沿时刻,输出就不会有毛刺。这种方法类似于将异步电路转化为同步电路,实现简单,但同样会涉及到时序问题。

③吸收法

        由于产生的毛刺实际上是高频窄脉冲,故增加输出滤波,在输出端接上小电容 C 就可以滤除毛刺。但输出波形的前后沿将变坏,在对波形要求较严格时,应再加整形电路,该方法不宜在中间级使用。

④延迟法

        因为毛刺最终是由于延迟造成的,所以可以找出产生延迟的支路。对于相对延迟小的支路,加上毛刺宽度的延迟可以消除毛刺。但有时随着负载增加,毛刺会继续出现,而且,当温度变化,所加的电压变化或要增加逻辑门时,所加的延迟是不同的,必须重新设计延迟线, 因而这种方法也是有局限性的。而且采用延迟线的方法产生延迟会由于环境温度的变化而使系统可靠性变差。

⑤硬件描述语言法

        这种方法是从硬件描述语言入手,找出毛刺产生的根本原因,改变语言设计,产生满足要求的功能模块,来代替原来的逻辑功能块。一个 3 位计数器可能会在 011 到 100 和 101 到 110 发生跳变时产生毛刺,究其原因是因为一次有 2 位发生跳变,可以采用 VHDL 语言对计数器编写,产生的计数模块代替原来普通的计数器。

3、锁存器/触发器

        latch 是电平触发,register 是边沿触发,register 在同一时钟边沿触发下动作,符合同步电路的设计思想,而 latch 则属于异步电路设计,往往会导致时序分析困难,不适当的应用 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。

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发光中请勿扰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值