求助各位大佬!
目的是观测到外部出现两个下降沿信号后
FPGA做下一步动作(例如led状态翻转闪烁);
外部设备定时发出两个下降沿信号,信号周期及间隔如下图。
信号通过FPGA管脚接入,FPGA内部通过程序边沿检测下降沿并统计数量(数量到达2后重新计数,并发送动作信号),但是最终发现检测结果不准确,有时候能检测到,有时候检测不到。万分感谢您的解答和建议!
下面是verilog代码
- //边沿检测
- initial num<=1'b0; //下降沿数量
- reg [2:0]num;
- always @(negedge signal) //输入信号
- begin
- if(num==3'd2)
- num<=1'b1;
- else
- num<=num+1'b1;
- end
- //检测下降沿数量为2时led翻转
- initial led<=1'b0;
- always @(posedge CLK_50M)
- begin
- if(num==3'd2)
- led <= ~led;
- else
- led <= led;
- end