ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-02-11 21:31:19  阅读:922  来源: 互联网

标签:en uart 代码 rxd sys Verilog 信号 输入 d0


如图所示,当检测下降沿时,初始化两个寄存器为高电平;当检测上升沿时,初始化两个寄存器位低电平。当输入信号变化时候,只能在下一个时钟周期检测得到。
在这里插入图片描述
下降沿检测:
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

标签:en,uart,代码,rxd,sys,Verilog,信号,输入,d0
来源: https://blog.csdn.net/xiyieba/article/details/113791904

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有