前言
環(huán)境:
1、Quartus18.0
2、vscode
3、板子型號:EP4CE6F17C8
要求:
按鍵1按下,流水燈從右開始向左開始流動,按鍵2按下,流水燈從左開始向右開始流動,按鍵3按下LED每隔1s進行亮滅,按鍵4按下LED常亮。
一、按鍵
“自鎖”是指開關能通過鎖定機構保持某種狀態(tài)(通或斷),“輕觸”是說明操作開關使用的力量大小。cyclone IV開發(fā)板上的按鍵屬于輕觸式按鍵。
二、系統(tǒng)設計
1、模塊框圖
2、RTL視圖
三、源碼
module key_led #(parameter MAX_NUM = 24'd9_999_999)(
input clk,
input rst_n,
input [3:0] key,
output reg [3:0] led
);
//parameter MAX_NUM = 24'd9_999_999;//0.2s
reg [1:0] state;
reg [23:0] cnt;
reg [3:0] key_r;
always @(posedge clk or negedge rst_n) begin
if(!rst_n)begin
cnt <= 24'd0;
end
else if (cnt == MAX_NUM) begin
cnt <= 24'd0;
end
else begin
cnt <= cnt + 1'd1;
end
end
always @(posedge clk or negedge rst_n) begin
if(!rst_n)begin
state <= 24'd0;
end
else if (cnt == MAX_NUM) begin
state <= state + 2'd1;
end
else begin
state <= state;
end
end
always @(posedge clk or negedge rst_n) begin
if(!rst_n)begin
led <= 4'b0000;
end
else if (key[0] == 0) begin
case (state)
2'd0 : led <= 4'b0001;
2'd1 : led <= 4'b0010;
2'd2 : led <= 4'b0100;
2'd3 : led <= 4'b1000;
default: ;
endcase
end
else if (key[1] == 0) begin
case (state)
2'd0 : led <= 4'b1000;
2'd1 : led <= 4'b0100;
2'd2 : led <= 4'b0010;
2'd3 : led <= 4'b0001;
default: ;
endcase
end
else if (key[2] == 0) begin
case (state)
2'd0 : led <= 4'b1111;
2'd1 : led <= 4'b0000;
2'd2 : led <= 4'b1111;
2'd3 : led <= 4'b0000;
default: ;
endcase
end
else if (key[3] == 0) begin
case (state)
2'd0 : led <= 4'b1111;
2'd1 : led <= 4'b1111;
2'd2 : led <= 4'b1111;
2'd3 : led <= 4'b1111;
default: ;
endcase
end
else
led <= led;
end
endmodule
四、效果
按鍵控制流水燈
五、總結
這里的實現并不難,加強了按鍵與LED的互動性,使用了狀態(tài)控制LED,槽點就是按鍵沒有進行消抖。文章來源:http://www.zghlxwxcb.cn/news/detail-734506.html
六、參考資料
按鍵控制led燈文章來源地址http://www.zghlxwxcb.cn/news/detail-734506.html
到了這里,關于按鍵控制流水燈方向——FPGA的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!