1 Star 1 Fork 0

往月 / 基于DDS的李萨如图形生成器

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
key_filter.v 2.50 KB
一键复制 编辑 原始数据 按行查看 历史
往月 提交于 2024-03-18 17:29 . FIRST COMMIT
module key_filter(
Clk,
Reset_n,
Key,
// Key_P_Flag,
// Key_R_Flag,
Key_Flag,
Key_State
);
input Clk;
input Reset_n;
input Key;
// output reg Key_P_Flag;
// output reg Key_R_Flag;
output Key_Flag;
output reg Key_State;
reg Key_P_Flag;
reg Key_R_Flag;
assign Key_Flag = Key_P_Flag | Key_R_Flag;
reg [2:0] r_Key; //防止亚稳态用三个移位寄存器
always@(posedge Clk)
r_Key <= {r_Key[1:0],Key};
// always@(posedge Clk)begin
// r_Key[0] <= Key;
// r_Key[1] <= r_Key[0];
// r_Key[2] <= r_Key[1];
// end
wire pedge_key;
assign pedge_key = (r_Key[2:1] == 2'b01);
wire nedge_key;
assign nedge_key = (r_Key[2:1] == 2'b10);
reg [19:0]cnt;
reg [1:0]state;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)begin
state <= 0;
Key_R_Flag <= 1'b0;
Key_P_Flag <= 1'b0;
cnt <= 0;
Key_State <= 1;
end
else begin
case(state)
0:
begin
Key_R_Flag <= 1'b0;
if(nedge_key)
state <= 1;
else
state <= 0;
end
1:
if((pedge_key)&&(cnt <1000000 -1))begin
state <= 0;
cnt <= 0;
end
else if(cnt >= 1000000 -1)begin
state <= 2;
cnt <= 0;
Key_P_Flag <= 1;
Key_State <= 0;
end
else begin
cnt <= cnt + 1'b1;
state <= 1;
end
2:
begin
Key_P_Flag <= 0;
if(pedge_key)
state <= 3;
else
state <= 2;
end
3:
if((nedge_key)&&(cnt <1000000 -1))begin
state <= 2;
cnt <= 0;
end
else if(cnt >= 1000000 -1)begin
state <= 0;
cnt <= 0;
Key_R_Flag <= 1'b1;
Key_State <= 1;
end
else begin
cnt <= cnt + 1'b1;
state <= 3;
end
endcase
end
endmodule
1
https://gitee.com/previous-month/DDS.git
git@gitee.com:previous-month/DDS.git
previous-month
DDS
基于DDS的李萨如图形生成器
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891