老师给了我一个任务。这个是其中的一个模块——长短按键识别。就是说,我按着按键短点,可以实现功能1;按着久点,可以实现功能2。初学Verilog,有很多不懂,编写过程稍微吃力。以前用C很好写,但是用Verilog感觉就不同了。所以我第一个想法就是直接用状态机,但是新学,编起来有点乱,思维绞死。然后果断放弃,改用另个——直接计数,按键按下开始计数,再识别按键释放时的计数。想法不错,嘿嘿,然后感觉可行。可编到一半,又有点晕了。不习惯并行思维。于是在这个基础上,加了状态机。果断,行。嘿嘿。。。。终于搞掂。
虽然已经出来了,但是感觉还是有点问题的,希望前辈能稍微指点迷津。嘿嘿。
module key(clk,reset,key_in,STOP_RUN,RST,CONFIG);
input clk;
input reset;
input key_in;
output reg RST; //复位信号RST ,高电平有效
output reg STOP_RUN; //停车态或行车态
output reg CONFIG; //CONFIG=1,表示进入设置状态
reg [2:0] CURRENT_STATE,NEXT_STATE; //