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

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

ID:44774918

大小:451.00 KB

页数:8页

时间:2019-10-28

按键驱动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灯都置于高电平,当检测到按键按下时,时间过了一秒之后,led1开始亮,又过了一秒,LED2和LED1对LED1取反,实现了一亮一灭的功能。这样循环六次后,分别将两灯置于高电平,即灭的状态。在此过程中,若复位键置于高电平,则亮灯都暗。三、设计成果1、模块划分(或者状态机)(1)键盘的检测(2)分频(3)实现流水灯的模块2、模块设计计数模块用来计

3、数的。低电平和计数器满时,复位。否则计数器不断的计数加一,直到计数满时再复位。always@(posedgeclkornegedgereset_n)文档实用beginif(!reset_n)cnt1<=20'd0;elsecnt1<=cnt1+1'b1;endalways@(negedgereset_norposedgeclk)beginif(reset_n==1'b0)begincnt<=28'd0;endelsebeginif(cnt==28'd00000099)begincnt<=28'd0;endelsecnt<=cnt+1

4、;endendregyimiao;always@(negedgereset_norposedgeclk)beginif(reset_n==1'b0)beginyimiao<=1'b0;endelsebeginif(cnt==28'd00000099)yimiao<=1'b1;elseif(yimiao)yimiao<=1'b0;end文档实用end键盘的检测模块always@(negedgereset_norposedgeclk)beginif(reset_n==1'b0)key1_dly<=1'b0;elsekey1_dly<=k

5、ey1;endalways@(negedgereset_norposedgeclk)beginif(reset_n==1'b0)key1_dly1<=1'b0;elsekey1_dly1<=key1_dly;endalways@(negedgereset_norposedgeclk)beginif(reset_n==1'b0)key1_nege_flag<=1'b0;elseif(key1_dly==1'b0&&key1_dly1==1'b1)key1_nege_flag<=1'b1;elseif(key1_valid==1'b1)

6、key1_nege_flag<=1'b0;endalways@(negedgereset_norposedgeclk)beginif(reset_n==1'b0)key1_pose_flag<=1'b0;elseif(key1_nege_flag==1'b1)beginif(key1_dly==1'b1&&key1_dly1==1'b0)key1_pose_flag<=1'b1;elseif(key1_valid==1'b1)key1_pose_flag<=1'b0;文档实用endendalways@(negedgereset_no

7、rposedgeclk)beginif(reset_n==1'b0)key1_valid<=1'b0;elseif(key1_nege_flag==1'b1&&key1_pose_flag==1'b1)key1_valid<=1'b1;elsekey1_valid<=1'b0;endalways@(negedgereset_norposedgeclk)beginif(reset_n==1'b0)beginkey_ok1<=1'b0;endelseif(key1_valid==1'b1)key_ok1<=1'b1;endLED灯的驱动

8、模块always@(negedgereset_norposedgeclk)beginif(reset_n==1'b0)begincount<=0;led1<=1'b1;led2<=1'b1;endelseif(yimiao)begin

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

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

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