刚开始学习verilog,自己写了个密码锁,看上去有不少bug,不过在老师那里过关了,是自己的第一个独立完成的verilog程序,试着发个博客记录下,同样也是第一次发博客。
下面贴代码,先是消抖部分:
module mimasuo(clk,key_in,led,rst,led_test);
input clk;
input [3:0] key_in;
input rst;
output [2:0]led;
output [2:0]led_test;
reg [23:0] count;
reg [3:0] key_scan;
always@(posedge clk or negedge rst)
begin
if(rst)
count <= 24'd0;
else begin
if(count == 24'd3999999)
begin
count <= 24'b0;
key_scan <= key_in;
end
else
count <= count + 24'b1;
end
end
reg [3:0] key_scan_r;
always@(posedge clk)
key_scan_r <= key_scan;
wire [3:0] flag_key = key_scan_r[3:0] & (~key_scan[3:0]);
之后是状态机:
reg [3:0] ouut;
always@(posedge clk or negedge rst)
beg