关于毛刺
信号在FPGA器件中通过逻辑单元连线时,一定存在延时。延时的大小不仅和连线的长短和逻辑单元的数目有关,而且也和器件的制造工艺、工作环境等有关。因 此,信号在器件中传输的时候,所需要的时间是不能精确估计的,当多路信号同时发生跳变的瞬间,就产生了“竞争冒险”。这时,往往会出现一些不正确的尖峰信 号,这些尖峰信号就是“毛刺”。
数字电路中常将毛刺定义为采样间越过逻辑门限一次以上的任何跳变,主要是指电路输出波形中含有时间很短有规律或没有规律的脉冲而又对设计没有用处或产生其他影响。
消除毛刺的一般方法有以下几种:
1.利用冗余项消除毛刺
函数式和真值表所描述的是静态逻辑,而竞争则是从一种稳态到另一种稳态的过程。因此竞争是动态过程,它发生在输入变量变化时。此时,修改卡诺图,两个卡诺 图圈相切处增加一个冗余的卡诺图圈,在卡诺图的两圆相切处增加一个圆,可以消除逻辑冒险。但该法对于计数器型产生的毛刺是无法消除的。如对图1 电路的函数为OUT=A·B+C·D,其有冒险函数的卡诺图如图3所示,可以看出图中有卡诺图圆相切的现象,在此相切处增加一项A·B·C·D,即逻辑函 数变为OUT=A·B+C·D+A·B·C·D,此函数将不会有逻辑冒险即毛刺产生。
2.通过改变设计,破坏毛刺产生的条件,来减少毛刺的发生
例如,在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器,这是因为格雷码计数器的输出每次只有一位跳变,消除了竞争冒险的发生条件,避免了毛刺的产生。
例如,在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器,这是因为格雷码计数器的输出每次只有一位跳变,消除了竞争冒险的发生条件,避免了毛刺的产生。
3.在系统中尽可能采用同步电路
毛刺并不是对所有的输入都有危害,例如D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害,因此可以 说D触发器的D输入端对毛刺不敏感。 根据这个特性,应当在系统中尽可能采用同步电路,这是因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且不满足数据的建立和保持时 间,就不会对系统造成危害。由于毛刺很短,多为几纳秒,基本上都不可能满足数据的建立和保持时间。因此如果在输出信号的保持时间内对其进行“采样”,就可以消除毛刺信号的影响。
例如对图1中的电路,我们做出如图4所示的改进,在输出信号的保持时间内,用一定宽度的高电平脉冲与输出信号做逻辑“与”运算,由此获取输出信号的电平值。图4中从输入引脚“SAMPLE”引入采样脉冲信号。从图5的仿真波形上可以看出,毛刺信号出现在“TEST”引脚上,而“OUT”引脚上的毛刺已被消除了。
毛刺并不是对所有的输入都有危害,例如D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害,因此可以 说D触发器的D输入端对毛刺不敏感。 根据这个特性,应当在系统中尽可能采用同步电路,这是因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且不满足数据的建立和保持时 间,就不会对系统造成危害。由于毛刺很短,多为几纳秒,基本上都不可能满足数据的建立和保持时间。因此如果在输出信号的保持时间内对其进行“采样”,就可以消除毛刺信号的影响。
例如对图1中的电路,我们做出如图4所示的改进,在输出信号的保持时间内,用一定宽度的高电平脉冲与输出信号做逻辑“与”运算,由此获取输出信号的电平值。图4中从输入引脚“SAMPLE”引入采样脉冲信号。从图5的仿真波形上可以看出,毛刺信号出现在“TEST”引脚上,而“OUT”引脚上的毛刺已被消除了。
4.待信号稳定之后进行取样
由于冒险出现在变量发生变化的时刻,如果待信号稳定之后加入取样脉冲,那么就只有在取样脉冲作用期间输出的信号才能有效,这样可以避免产生的毛刺影响输出波形。
由于冒险出现在变量发生变化的时刻,如果待信号稳定之后加入取样脉冲,那么就只有在取样脉冲作用期间输出的信号才能有效,这样可以避免产生的毛刺影响输出波形。
5.输出端增加输出电容
增加输出滤波,在输出端接上小电容C可以滤除毛刺,如图6所示。但输出波形的前后沿将变坏,在对波形要求较严格时,应再加整形电路,该方法不宜在中间级使用。