|
//`timescale 1 ns / 1 ps
module keyled
( key,clk,rst,
led
);
input key,clk,rst;
output led;
reg led;
//------------------------------------------
reg [31:0] count;
always @ (posedge clk, negedge rst)
if(!rst)
count <= 0;
else
count <= count+1'b1;
//-------------------------------------------
reg [19:0] keycnt;
always @ (posedge clk, negedge rst)
if(!rst)
keycnt <= 8'd0;
else
keycnt <= keycnt + 1'b1;
//-------------------------------------------
reg bufdata1,bufdata2;
always @ (posedge clk, negedge rst)
if(!rst)
bufdata1 <= 1;
else
if(keycnt == 20'hfffff)
bufdata1 <= key;
//-------------------------------------------
always @ (posedge clk, negedge rst)
if(!rst)
bufdata2 <= 1;
else
bufdata2 <= bufdata1;
//-------------------------------------------
wire keyvalue;
assign keyvalue = bufdata2 & (~bufdata1);
reg [2:0] keyjudge;
always @ (posedge clk, negedge rst)
if(!rst)
keyjudge = 3'b0;
else
if(keyvalue)
if(keyjudge == 3'b100)
keyjudge = 3'b0;
else
keyjudge = keyjudge + 1'b1;
//-------------------------------------------
always @ (posedge clk, negedge rst)
if(!rst)
begin
led = count[20];
end
else
begin
case(keyjudge)
2'b0: led = count[25];
2'b1: led = count[28];
2'b10: led = count[30];
2'b11: led = count[31];
default: led = 1'bx;
endcase
end
endmodule
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|