按键驱动LED的实验课设资料

按键驱动LED的实验课设资料

ID:44161283

大小:223.58 KB

页数:8页

时间:2019-10-19

按键驱动LED的实验课设资料_第1页
按键驱动LED的实验课设资料_第2页
按键驱动LED的实验课设资料_第3页
按键驱动LED的实验课设资料_第4页
按键驱动LED的实验课设资料_第5页
资源描述:

《按键驱动LED的实验课设资料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、设计一:按键驱动LED的实验一.设计目的学会用Verilog语言编写所需要的程序,会对自己编写的程序进行编译和仿真,懂得根据仿真软件提示的错误进行修改,也需要对通过仿真改正功能的错误。并学会检测按键和控制LED的输出。木实验是通过FPGA检测I/O口上的按键信号,通过时序控制两个LED灯以流水灯的方式各亮灭六次。最后灯保持灭的状态。二、设计原理该实验的主要问题是FPGA如何捕获到按键是否按下。当按键按下时,输入电平会由高变低,按键松开后,输入电平会由低变高,这就有一个上升沿和一个下降沿。捕获到这两个沿。就可以确认按

2、键按下。检测到按键按下时,开始实现设计的功能。由于两个LED灯亮灭有时间控制。所以需要分频。由于FPGA的内部频率是66兆赫兹,则需要分频65999999次能达到一秒。最后编写主要的功能程序,首先让两个LED灯都置于高电平,当检测到按键按下时,时间过了一秒之后,ledl开始亮,又过了一秒,LED2和LED1对LED1取反,实现了一亮一灭的功能。这样循环六次后,分别将两灯置于高电平,即灭的状态。在此过程中,若复位键置于高电平,则亮灯都暗。三、设计成果1、模块划分(或者状态机)(1)键盘的检测(2)分频(3)实现流水灯

3、的模块2、模块设计计数模块用来计数的。低电平和计数器满时,复位。否则计数器不断的计数加一,直到计数满时再复位。always@(posedgeelkornegedgereset_n)beginif(!reset_n)cntl<=20'd0;elseent1<=cntl+l'bl;endalways@(negedgereset_norposedgeelk)beginif(reset_n=rbO)begincnt<=28*d0;endelsebeginif(cnt==28'd00000099)begincnt<=28*d

4、0;endelsecnt<=cnt+l;endendregyimiao;always@(negedgereset_norposedgeelk)beginif(reset_n=rbO)beginyimiao<=rbO;endelsebeginif(cn匸=28'd00000099)yimiao<=rbl;elseif(yimiao)yimiao<=l'bO;endend键盘的检测模块always@(negedgereset_norposedgeelk)beginif(reset_n==VbO)keyl_dly<=l'

5、bO;elsekeyl_dly<=keyl;endalways@(negedgereset_norposedgeelk)beginif(reset_n==rbO)keyl_dlyl<=rbO;elsekeyl_dlyl<=keyl_dly;endalways@(negedgereset_norposedgeelk)beginif(reset_n=rbO)keyl_nege_flag<=1'bO;elseif(keyl_dly==1'b0&&keyl_dly1==1'b1)keyl_nege_flag<=Tbl;el

6、seif(key1_valid==Tb1)keyl_nege_flag<=l*bO;endalways@(negedgereset_norposedgeelk)beginif(reset_n==1*b0)keyl_pose_flag<=1'bO;elseif(key1_nege_flag==l*b1)beginif(keyl_dly==l*b1&&keyl_dly1==1’bO)keyl_pose_flag<=Tbl;elseif(key1_valid==l*b1)keyl_pose_flag<=TbO;enden

7、dalways@(negedgereset_norposedgeelk)beginif(reset_n==l'bO)keyl_valid<=rbO;if(keyl_nege_flag==1*b1&&keyl_pose_flag==l'bl)keyl_valid<=Tbl;elsekeyl_valid<=TbO;endalways@(negedgereset_norposedgeelk)beginif(reset_n==VbO)beginkey_okl<=rbO;endelseif(keyl_valid==Vbl)k

8、ey_okl<=l'bl;endLED灯的驱动模块always@(negedgereset_norposedgeelk)beginif(reset_n==VbO)begincount<=0;ledl<=rbl;led2<=rbl;endelseif(yimiao)beginif(key_ok1==l'b1)beginif(count=12)led2<=l;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。