关于IR 接收数据的上升沿和下降沿的判断, 其实可以画图来理解:

 

 

 

 

 

手动把电路画出来, 并且进行了推算:

 

 

 上面输入的1010 是 IR 的那种 特殊传输方式, 560us低+560us高代表传输的是0 ,560us低+560us x3 高代表传输的是1 。

如果就拿普通的0101传输,推算如下:

 

边沿检测其实用得很广泛的,比如FPGA 串口uart通信的设计里, 当我们要判断接收端口的起始位,也就是下降沿的时候就可以这样设计:

//捕获接收端口下降沿(起始位),得到一个时钟周期的脉冲信号
assign start_flag = uart_rxd_d1 & (~uart_rxd_d0); 

//对 UART 接收端口的数据延迟两个时钟周期
 always @(posedge sys_clk or negedge sys_rst_n) begin
   if (!sys_rst_n) begin
    uart_rxd_d0 <= 1'b0;
    uart_rxd_d1 <= 1'b0; 
  end
  else begin
    uart_rxd_d0 <= uart_rxd; 
    uart_rxd_d1 <= uart_rxd_d0;
  end 
 end