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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实用 文档 设计一:按键驱动LED的实验 设计目的 学会用Verilog语言编写所需要的程序,会对自己编写的程序进行编译和仿真,懂得根据仿真软件提示的错误进行修改,也需要对通过仿真改正功能的错误。并学会检测按键和控制LED的输出。 本实验是通过FPGA检测I/O口上的按键信号,通过时序控制两个LED灯以流水灯的方式各亮灭六次。最后灯保持灭的状态。 设计原理 该实验的主要问题是FPGA如何捕获到按键是否按下。当按键按下时,输入电平会由高变低,按键松开后,输入电平会由低变高,这就有一个上升沿和一个下降沿。捕获到这两个沿。就可以确认按键按下。 检测到按键按下时,开始实现设计的功能。 由于两个LED灯亮灭有时间控制。所以需要分频。由于FPGA的内部频率是66兆赫兹,则需要分能达到一秒。 最后编写主要的功能程序,首先让两个LED灯都置于高电平,当检测到按键按下时,时间过了一秒之后,led1开始亮,又过了一秒,LED2和LED1对LED1取反,实现了一亮一灭的功能。这样循环六次后,分别将两灯置于高电平,即灭的状态。在此过程中,若复位键置于高电平,则亮灯都暗。 设计成果 1、模块划分(或者状态机) (1)键盘的检测 (2)分频 (3)实现流水灯的模块 2、模块设计 计数模块用来计数的。低电平和计数器满时,复位。否则计数器不断的计数加一,直到计数满时再复位。 always@(posedge clk or negedge reset_n) begin if(!reset_n) cnt1=20d0; else cnt1=cnt1+1b1; end always@(negedge reset_n or posedge clk) begin if(reset_n==1b0) begin cnt=28d0; end else begin if(cnt==28 begin cnt=28d0; end else cnt=cnt+1; end end reg yimiao; always@(negedge reset_n or posedge clk) begin if(reset_n==1b0) begin yimiao=1b0; end else begin if(cnt==28 yimiao=1b1; else if(yimiao) yimiao=1b0; end end 键盘的检测模块 always@(negedge reset_n or posedge clk) begin if(reset_n==1b0) key1_dly=1b0; else key1_dly= key1; end always@(negedge reset_n or posedge clk) begin if(reset_n==1b0) key1_dly1=1b0; else key1_dly1= key1_dly; end always@(negedge reset_n or posedge clk) begin if(reset_n==1b0) key1_nege_flag=1b0; else if(key1_dly==1b0key1_dly1==1b1) key1_nege_flag =1b1; else if(key1_valid==1b1) key1_nege_flag =1b0; end always@(negedge reset_n or posedge clk) begin if(reset_

文档评论(0)

linlin921 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档