目錄
1 按鍵簡介
2 實(shí)驗(yàn)任務(wù)
3 硬件設(shè)計(jì)
4 程序設(shè)計(jì)
5 下載驗(yàn)證文章來源:http://www.zghlxwxcb.cn/news/detail-500499.html
1 按鍵簡介
2 實(shí)驗(yàn)任務(wù)
3 硬件設(shè)計(jì)


?????????對應(yīng)的 XDC 約束語句如下所示:文章來源地址http://www.zghlxwxcb.cn/news/detail-500499.html
set_property -dict {PACKAGE_PIN U18 IOSTANDARD LVCMOS33} [get_ports sys_clk]set_property -dict {PACKAGE_PIN N16 IOSTANDARD LVCMOS33} [get_ports sys_rst_n]set_property -dict {PACKAGE_PIN L14 IOSTANDARD LVCMOS33} [get_ports key[0]]set_property -dict {PACKAGE_PIN K16 IOSTANDARD LVCMOS33} [get_ports key[1]]set_property -dict {PACKAGE_PIN H15 IOSTANDARD LVCMOS33} [get_ports {led[0]}]set_property -dict {PACKAGE_PIN L15 IOSTANDARD LVCMOS33} [get_ports {led[1]}]
4 程序設(shè)計(jì)

module key_led(
input sys_clk ,
input sys_rst_n ,
input [1:0] key ,
output reg [1:0] led
);
//reg define
reg [24:0] cnt;
reg led_ctrl;
//*****************************************************
//** main code
//*****************************************************
//計(jì)數(shù)器
always @ (posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)
cnt <= 25'd0;
else if(cnt < 25'd2500_0000) //計(jì)數(shù) 500ms
cnt <= cnt + 1'b1;
else
cnt <= 25'd0;
end
//每隔 500ms 就更改 LED 的閃爍狀態(tài)
always @ (posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)
led_ctrl <= 1'b0;
else if(cnt == 25'd2500_0000)
led_ctrl <= ~led_ctrl;
end
//根據(jù)按鍵的狀態(tài)以及 LED 的閃爍狀態(tài)來賦值 LED
always @ (posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)
led <= 2'b11;
else case(key)
2'b10 : //如果按鍵 0 按下,則兩個(gè) LED 交替閃爍
if(led_ctrl == 1'b0)
led <= 2'b01;
else
led <= 2'b10;
2'b01 : //如果按鍵 1 按下,則兩個(gè) LED 同時(shí)閃爍
if(led_ctrl == 1'b0)
led <= 2'b11;
else
led <= 2'b00;
2'b11 : //如果兩個(gè)按鍵都未按下,則兩個(gè) LED 都保持點(diǎn)亮
led <= 2'b11;
default: ;
endcase
end
endmodule
5 下載驗(yàn)證
到了這里,關(guān)于按鍵控制 LED 實(shí)驗(yàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!