题解 | #边沿检测#

边沿检测

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

检测信号的上升沿和下降沿,代码如下:
`timescale 1ns/1ns
module edge_detect(
	input clk,
	input rst_n,
	input a,
	
	output reg rise,
	output reg down
);

reg a_1t;

always@ (posedge clk&nbs***bsp;negedge rst_n) begin   //对a延迟一拍
   if(~rst_n)
   a_1t <= 0;
   else a_1t <= a;
end

always@ (posedge clk&nbs***bsp;negedge rst_n) begin   
    if(~rst_n) begin
    rise <= 0; down <= 0; end
    else begin
       if(rise == 1) rise <= 0;
       else rise <= rise;
       
       if(down == 1) down <= 0;
       else down <= down;
       
       if((a_1t == 0)&&(a == 1)) begin 
       rise <= 1; end
       else if((a_1t == 1)&&(a == 0)) begin
       down <= 1; end
       else begin
       rise <= 0; down <= 0; end
    end
end

endmodule


全部评论

相关推荐

03-25 19:00
东北大学 Java
程序员牛肉:太好了,是聊天记录。不得不信了。 当个乐子看就好,不要散播焦虑
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务