输入信号上升沿或者下降沿检测 Verilog代码

如图所示,当检测下降沿时,初始化两个寄存器为高电平;当检测上升沿时,初始化两个寄存器位低电平。当输入信号变化时候,只能在下一个时钟周期检测得到。
在这里插入图片描述
下降沿检测:
1.输入信号打两拍 2.第一拍的信号取反和第二拍进行与运算

reg        uart_rxd_d0;
reg        uart_rxd_d1;
//wire define
wire       start_flag;
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'b1;
        uart_rxd_d1 <= 1'b1;          
    end
    else begin
        uart_rxd_d0  <= uart_rxd;  //uart_rxd为输入数据,检测它的下降沿                 
        uart_rxd_d1  <= uart_rxd_d0;
    end   
end

上升沿检测:
1.输入信号打两拍 2.将第二拍的信号取反与第一拍进行与运算

reg        uart_en_d0; 
reg        uart_en_d1;  

//wire define
wire       en_flag;
assign en_flag = (~uart_en_d1) & uart_en_d0;

//对发送信号延迟两个时钟周期
always @(posedge sys_clk or negedge sys_rst_n) begin         
    if (!sys_rst_n) begin
        uart_en_d0 <= 1'b0;                                  
        uart_en_d1 <= 1'b0;
    end                                                      
    else begin                                               
        uart_en_d0 <= uart_en;   //输入信号,需要检测其上升沿                            
        uart_en_d1 <= uart_en_d0;                            
    end
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值