题解 | #边沿检测#

边沿检测

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

边沿检测,缓存了两次在做边沿检测测试用例就过不了。

唯一需要注意的就是寄存一次后,在上升沿或者下降沿到来的时候,是寄存的为低电平还是输入的为低电平。

比如检测上升沿:a和reg_a都是一直为低电平,当上升沿来临时,在这个时钟周期内,a变成了高电平,所以检测上升沿就是

rise = a & ~reg_a;

`timescale 1ns/1ns
module edge_detect(
	input clk,
	input rst_n,
	input a,
	
	output reg rise,
	output reg down
);
reg reg_a1,reg_a2;

always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		reg_a1 <= 1'b0;

	end
	else begin
		reg_a1 <= a;

	end
end

always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		rise <= 1'b0;
		down <= 1'b0;
	end
	else begin
		if(a & ~reg_a1)begin
			rise <= 1'b1;
			down <= 1'b0;
		end
		else if(~a & reg_a1)begin
			rise <= 1'b0;
			down <= 1'b1;
		end
		else begin
			rise <= 1'b0;
			down <= 1'b0;
		end
	end
end

endmodule

全部评论
确实,两次缓存多次都不能通过
点赞 回复 分享
发布于 2023-05-05 11:24 吉林

相关推荐

榕城小榕树:1200单休,我去干点啥别的不好
点赞 评论 收藏
分享
06-20 19:40
中原工学院 Java
网络存储:十几天不会让你拉人办卡就结束了吧?
点赞 评论 收藏
分享
Gaynes:查看图片
点赞 评论 收藏
分享
八股刚起步,看了javaguide,小林coding,还有面渣,感觉面渣是体验最好的,请问只看面渣够用吗,有不完善的需要补吗?
码农索隆:先背最基础的知识,然后理解情景题,现在面试大多数喜欢问情景题,更考验面试者的基础和临场发挥情况
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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