FPGA边沿检测Verilog代码(上升沿,下降沿,双边沿)
实现思路:用两个一位寄存器直接异或可以实现
代码实现:
module edge_detect(
input clk,
input rst_n,
input data_in,
output raising_edge_detect, //上升沿标志位
output falling_edge_detect, //下降沿标志位
output double_edge_detect //双边沿标志位
);
//reg define
reg data_in_d1; //寄存器d1
reg data_in_d2; //寄存器d2
assign raising_edge_detect = data_in_d1 & (~data_in_d2); //上升沿,标志位置1
assign falling_edge_detect = ~data_in_d1 & data_in_d2; //下降沿,标志位置1
assign double_edge_detect = data_in_d1 ^ data_in_d2; //双边沿,标志位置1
always @ (posedge clk or negedge rst_n)begin
if(!rst_n)begin
data_in_d1 <= 1'b0;
data_in_d2 <= 1'b0;
end
else begin
data_in_d1

本文介绍了一种使用Verilog HDL在FPGA上实现边沿检测的方法,包括上升沿、下降沿和双边沿检测。通过两个一位寄存器的异或操作,能够有效地检测输入信号的变化。代码中详细展示了寄存器的定义和赋值过程,以及如何通过异或和与非操作来判断边沿状态。
最低0.47元/天 解锁文章
894

被折叠的 条评论
为什么被折叠?



