题解 | #边沿检测#

边沿检测

http://www.nowcoder.com/practice/fed4247d5ef64ac68c20283ebace11f4

`timescale 1ns/1ns
module edge_detect( //有一个缓慢变化的1bit信号a,实现检测a信号的上升沿给出指示信号rise
    //下降沿,给出指示信号down,rise down应为单脉冲信号,在相应边沿出现时的下一个时钟为高,之后恢复到0;
    input clk,
    input rst_n,
    input a,
    
    output reg rise,
    output reg down
);
    reg a_previous_reg;
    always@(posedge clk or negedge rst_n)begin
        if(!rst_n) begin
            a_previous_reg <= 1'b0; 
            rise <= 1'b0;
            down <= 1'b0;
        end
        else begin
            a_previous_reg <= a; //非阻塞赋值,记录a的前一个时隙的值
            if(a&~a_previous_reg)
                rise <= 1'b1;
            else 
                rise <= 1'b0;
            if(~a&a_previous_reg) //取反属于单目运算符,单目运算符具有最高优先级,这里的&只对一个操作数时也是一元运算符,但是在这里是二元运算符。
                down <= 1'b1;
            else
                down <= 1'b0;
        end
    end
    
endmodule
全部评论

相关推荐

09-17 17:33
门头沟学院 Java
阿里面试一直在聊天是不是就是kpi了
offer收割机jo...:应该不是KPI,因为好多人阿里简历都过不去
我的秋招日记
点赞 评论 收藏
分享
北斗导航Compas...:.......牛客上的通过初筛屁用没有,纯自我感动
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
08-28 20:36
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务