方波中的毛刺


在FPGA设计中,经常要对外部输入的信号捕捉上升沿。

在某些设计中,外部输入信号为方波信号,由比较器输出。

 

如上图,比较器输出方波后,电路设计欠佳,产生抖动,下降沿产生毛刺,如果FPGA逻辑设计不好,容易在方波下降沿时再次捕捉到上升沿。

在电路无法更改的情况下,只能更改FPGA逻辑设计,过滤毛刺。

在捕捉边沿中通常使用以下逻辑:

时序逻辑:

always@(posedge sys_clk)

begin

   reg1 <= rising_in;

   reg2 <= reg1;

end 

组合逻辑:

assign rising_cap = reg1 & (~reg2);

方案一:

通过降频采集外部输入信号:

always@(posedge sys_clk)

begin

  if(div_clk)

  begin

    reg1 <= rising_in;

    reg2 <= reg1;

  end

end 

将sys_clk分频到div_clk,注意分频时要满足采样定理。通过降频,过滤毛刺。

方案二:

在某些设计中,由于使用方波上升沿进行完全同步,而且整个系统使用sys_clk,所以不能进行分频设计。

对信号进行多次采样,过滤毛刺。

always@(posedge sys_clk)

begin

   reg1 <= rising_in;

   reg2 <= reg1;

   reg3 <= reg2;

   reg4 <= reg3;

   reg5 <= reg4;

   reg6 <= reg5;

   reg7 <= reg6;

   reg8 <= reg7;

end 

组合逻辑:

assign rising_cap = reg1 & reg2 & reg3 & reg4 & (~& reg5)

                              & (~& reg6) & (~& reg7) & (~& reg8);

在方波上升沿很陡的情况下,可使用上述方式,方波上升沿的上升时间可由电路电阻改变。


版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA极客空间 微信公众号

扫描二维码关注杭州卿萃科技FPGA极客空间


 

posted @ 2018-08-30 08:35  alifpga  阅读(2806)  评论(0编辑  收藏  举报