上升沿检测问题
时间:10-02
整理:3721RD
点击:
写了个上升沿检测的程序如下:module dlc(
CLK_50M,
key,
LEDOUT
); //抓取key按键的上升沿
input CLK_50M;
input key;
output reg LEDOUT;
reg key_s1;
reg key_s2;
always@(CLK_50M)
begin
if(CLK_50M==1)
begin
key_s1<=key;
key_s2<=key_s1;
if((key_s1==0)&&(key_s2==0)&&(key==1))
begin
LEDOUT<=1;
end
end
end
endmodule
发现程序进不去if循环,不知道错在哪
CLK_50M,
key,
LEDOUT
); //抓取key按键的上升沿
input CLK_50M;
input key;
output reg LEDOUT;
reg key_s1;
reg key_s2;
always@(CLK_50M)
begin
if(CLK_50M==1)
begin
key_s1<=key;
key_s2<=key_s1;
if((key_s1==0)&&(key_s2==0)&&(key==1))
begin
LEDOUT<=1;
end
end
end
endmodule
发现程序进不去if循环,不知道错在哪
if(CLK_50M==1) 你这是想干什么?
if 里面的判断逻辑是错的吧。我也是刚学,要不试着写成 if(CLK_50M)
沿采沿啦,采不到的。新手通病!
always@(CLK_50M) 改成时序电路 always@(posedge CLK_50M)再把if(CLK_50M == 1)去掉
时钟能这么写的还是第一次见
先看懂上升沿的原理图。
多看看例程就懂了
always@(CLK_50M)不是时钟触沿触发吧,网上有很多上升检测的例子你可以去找下