verilog按下一个按键key时产生一个单个矩形脉冲信号 已有1hz时钟信号clk

verilog按下一个按键key时产生一个单个矩形脉冲信号 已有1hz时钟信号clk,第1张

将1HZ时钟信号做为一个输入时钟clock,一个周期为1s,要求脉冲长度为3S即需要持续3个clock周期,带如灶按照这个思路写代码。

核心部分就是,对clock的上升沿蠢扮进行计数,每个上升沿加1,判断按键是否按下,每次按下按键时,产生一个计数的使能信号,在使能信号有效时,进行计数,判断计数值到3时,输出一个脉冲,同时释橡尺放使能。

具体代码可以依照上述过程进行verilog描述。

你没有加唯行按键消抖,用状态切换(状态机),调整按键消抖时间在指肆哗5MS-10MS就差不多了,这部分程序是用在产品上的,裁减了下,不懂请留言:

input clk //10MHz

input [1:0]KEY

reg [1:0] KEY_BUFFER

reg [2:0] state

reg[15:0] dly_reg

always@(posedge clk)

begin

begin

KEY_BUFFER<=KEY //读取键盘

case(state)

3'b001: if (KEY_BUFFER==2'b01) 判断

begin

state <= 3'b011

end //

else if(KEY_BUFFER==2'b10)

begin

state <= 3'b011

end //

else state <= 3'b001

3'b011:if(dly_reg>=16'b1100001101010000) //延时

begin

state <= 3'b100

dly_reg <=16'雹轿d0

end

else

begin

dly_reg<=dly_reg+1'b1

end

3'b100: if ((KEY_BUFFER==2'b11))//在判断

begin

end

else if ((KEY_BUFFER==2'b11))//--

begin

else

state <= 3'b101

3'b101: begin state <= 3'b001end //

endcase

end

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12304153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存