3、2 采样法
由于冒险多出现在信号发生电平跳变的时刻, 即在输出信号的建立时间内会产生毛刺, 而在保持时间内不会出现, 因此, 在输出信号的保持时间内对其进行采样, 就可以消除毛刺信号的影响, 常用的采样方法有2 种: 一种使用一定宽度的高电平脉冲与输出相与, 从而避开了毛刺信号, 取得输出信号的电平值。这种方法必须保证采样信号在合适的时间产生, 并且只适用于对输出信号时序和脉冲宽度要求不严的情况。另一种更常见的方法叫锁存法, 是利用D 触发器的输入端D 对毛刺信号不敏感的特点, 在输出信号的保持时间内, 用触发器读取组合逻辑的输出信号。由于在时钟的上升沿时刻, 输出端Q = D , 当输入的信号有毛刺时, 只要不发生在时钟的上升沿时刻, 输出就不会有毛刺。这种方法类似于将异步电路转化为同步电路, 实现简单, 但同样会涉及到时序问题。
3、3 吸收法
由于产生的毛刺实际上是高频窄脉冲, 故增加输出滤波, 在输出端接上小电容C 就可以滤除毛刺。但输出波形的前后沿将变坏, 在对波形要求较严格时, 应再加整形电路, 该方法不宜在中间级使用。
3、4 延迟法
因为毛刺最终是由于延迟造成的, 所以可以找出产生延迟的支路。对于相对延迟小的支路, 加上毛刺宽度的延迟可以消除毛刺。但有时随着负载增加, 毛刺会继续出现,而且, 当温度变化, 所加的电压变化或要增加逻辑门时, 所加的延迟是不同的, 必须重新设计延迟线, 因而这种方法也是有局限性的。而且采用延迟线的方法产生延迟会由于环境温度的变化而使系统可靠性变差。
3、5 硬件描述语言法
这种方法是从硬件描述语言入手, 找出毛刺产生的根本原因, 改变语言设计, 产生满足要求的功能模块, 来代替原来的逻辑功能块。在图1 电路中, 一个3 位计数器可能会在011 到100 和101 到110 发生跳变时产生毛刺, 究其原因是因为一次有2位发生跳变, 可以采用VHDL 语言对计数器编写如下, 产生的计数模块代替原来普通的计数器。
subdesign modcount
(clk, reset: input; q[2110 ]: output; )
variable
counter3
:MACH IN E O F B ITS ( r [2110 ])
W ITH STA TES ( r0= B"101" ,
r1= B"100" ,
r2= B"000" ,
r3= B"001" ,
r4= B"011" ,
r5= B"010" ,
r6= B"110" ,
r7= B"111") ;
begin
q[ ]= rr [ ];
counter31reset= reset;
counter31clk= clk;
CA SE counter3 IS
w hen r0= > counter3= r1;
w hen r1= > counter3= r2;
w hen r2= > counter3= r3;
w hen r3= > counter3= r4;
w hen r4= > counter3= r5;
w hen r5= > counter3= r6;
w hen r6= > counter3= r7;
w hen r7= > counter3= r0;
END CA SE;
end;
注意在新的计数器中, 每次状态发生改变时Q 0, Q 1,Q 2 只有1 位发生跳变, 从根本上消除了毛刺。但计数器的输出状态没有规律, 不便于其他电路利用。如果希望计数器的输出状态有规律变化以便其他电路使用, 可以考虑采用双输出电路, 一路是单信号输出, 一路是正常计数输出。这种方法从根本上消除了毛刺产生的根源, 具有普遍的意义, 对系统也不会产生影响, 是最为可靠的方法, 其不利之处是这种方法对VHDL 语言要求比较高, 必须对电路的工作状态及其转变有全面的分析和掌握, 而随着电路的复杂度提高, 毛刺产生的来源繁杂, 实现起来比较困难。
对于一般情况下产生的毛刺, 可以尝试用D 触发器来消除。但用D 触发器消除时, 有时会影响到时序, 需要考虑很多问题。所以应根据不同情况, 仔细地分析毛刺产生的来源和毛刺的性质, 结合系统资源选择具体办法, 消除毛刺的影响。
4 具体实例
在实际应用中要对一个周期同步脉冲信号进行检测,要求若在给定的时间内没有检测到同步信号则给出一定脉冲宽度的高电平, 作为复位信号。设计思想是采用一个计数器, 当有同步信号时对其清零, 并同时开始计数, 根据给定时间和系统时钟周期设定计数器的模数, 经过给定的时间后输出高电平, 满足宽度后再置低。
实际要求检测时间大约1 s, 脉冲宽度保持在20ms左右, 采用5 片74161 级联, 第5 片计数器的ROC 接D 触发器的使能端。同步信号输入后, 清零并开始计数, 若不再出现同步脉冲, 经16^5 个时钟周期后, 第5 片的RCO端输出一个高电平, 使触发器的Q 输出D (高电平) , 再过16^33 2个时钟周期后使第4 片的QA , QB, QC, QD 接组合门电路输出低电平, 接到D 触发器的计数器预制端,使Q 输出为零。这样就实现经一定延时后的一定宽度的脉冲。经仿真结果如图4 所示。
评论
查看更多