《FPGA学习》->多个按键控制LED灯
原创
©著作权归作者所有:来自51CTO博客作者wx6411ad6c4812c的原创作品,请联系作者获取转载授权,否则将追究法律责任
与其担心未来,不如现在好好努力。在这条路上,只有奋斗才能给你安全感。你若努力,全世界都会为你让路。
本次项目任务,利用开发板上的4个按键KEY1,KEY2,KEY3,KEY4和2个LED灯LED1,LED2,完成以下功能:
①如果没有按键按下,LED1和LED2均熄灭;
②如果有奇数个按键同时被按下,则LED1亮,LED2熄灭;
③如果有偶数个按键同时被按下,则LED1和LED2都亮;
实验平台:野火征途Pro开发板
写代码之前,我们先利用真值表根据任务做一个功能拆解。
①当按键没有一个按键按下时,这时候LED1应该为1;
②当按键有任意一个按下时,LED1都会亮;
③当按键有偶数个同时按下时,LED2才会亮。
根据真值表写出程序如下:
module KEY_LED_1( //定义一个模块,名称为KEY_LED_1
input wire KEY1, //定义KEY1为输入模式
input wire KEY2, //定义KEY2为输入模式
input wire KEY3, //定义KEY3为输入模式
input wire KEY4, //定义KEY4为输入模式
output wire LED1, //定义LED1为输出模式
output wire LED2 //定义LED2为输出模式
);
assign LED1 = ((KEY1)&&(KEY2)&&(KEY3)&&(KEY4)); //没按键按下,LED1灭
assign LED2 = (
((~KEY1)&&(~KEY2)&&(~KEY3)&&(~KEY4))|| //0000
((~KEY1)&&(~KEY2)&&( KEY3)&&( KEY4))|| //0011
((~KEY1)&&( KEY2)&&(~KEY3)&&( KEY4))|| //0101
((~KEY1)&&( KEY2)&&( KEY3)&&(~KEY4))|| //0110
(( KEY1)&&(~KEY2)&&(~KEY3)&&( KEY4))|| //1001
(( KEY1)&&(~KEY2)&&( KEY3)&&(~KEY4))|| //1010
(( KEY1)&&( KEY2)&&(~KEY3)&&(~KEY4)) //1100
);
endmodule //模块结束
🔥🔥🔥本系列文章持续更新,喜欢的话可以关注收藏~🔥🔥🔥