5.FPGA边沿检测及亚稳态的消除

                                   FPGA边沿检测及亚稳态的消除

一、FPGA边沿检测的实现

    边沿检测主要包括上升沿和下降沿的检测

    1.原理

     上升沿是指从低到高的电平转变,而下降沿是指从高到低的电平转变

      上升沿                                 下降沿

     那么如何判定上升沿和下降沿呢?

     上升沿不就是前一个时刻为低电平,这时刻为高电平不就是了,下降沿则刚好相反。

      答对了,那么前一时刻怎么实现呢?

      学过数字电路就知道了,寄存器可以存储前一个的值,前一时刻和这一时刻加起来可以极性判定了。

    2.实现

  • 寄存器1
reg     data_r1;
reg     data_r0;
wire    data_pos;       //上升沿检测

always @ (posedge clk)
begin
    if (rst == 1'b1)
    begin
        data_r0 <= 1'b0;
        data_r1 <= 1'b0;
    end
    else
    begin
        data_r0 <= data;
        data_r1 <= data_r0;
    end
end
assign data_pos = (~data_r1) & data_r0;
  • 寄存器2
reg  [1:0]  data_r;
wire    data_pos;

always @ (posedge clk)
begin
    if (rst == 1'b1)
        data_r <= 'd0;
    else
        data_r <= {data_r[0], data};
end
assign data_pos = ~data_r[1] & data_r[0]; //data_r == 2'b01;

二、FPGA亚稳态的消除

    1.原理

     由于时序的不一致,导致输出的数据不统一,存在问题,这里采用延时打拍的方式进行解决。一般来说,打两拍可以解决大多数的问题。

    2.实现

reg   [1:0]  data_r;
always @ (posedge clk)
begin
    data_r <= {data_r[0], data};    
end
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值