捕获上升/下降沿的两种Verilog实现

        在FPGA设计中,很多时候需要将持续信号转化为脉冲信号,这个时候可以通过捕获上升/下降沿的方式进行转化,下面给出两种基于Verilog的实现方法。

法一:

reg        uart_rxd_d0;
reg        uart_rxd_d1;

assign  start_flag = uart_rxd_d1 & (~uart_rxd_d0);    //下降沿捕获
//assign  start_flag = (~uart_rxd_d1 )& uart_rxd_d0;是上升沿捕获

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

法二:

reg [1:0] k;  
wire  pedge_k;
wire  nedge_k;
assign pedge_k=k==2’b01;//抓上升沿
assign nedge_k=k==2’b10;//抓下降沿
always @(posedge sys_clk or negedge sys_rst_n) begin 
    if (!sys_rst_n)  
        k<=2’b0;         
    else 
        K<={k[0],key};//key是待检测信号
    //等价于begin k[0]<=key;k[1]<=k[0]; 
end
end

求学路上,你我共勉(๑•̀ㅂ•́)و✧

猜你喜欢

转载自blog.csdn.net/Albert_yeager/article/details/129827869
今日推荐