电子秒表的设计实验素材.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华中科技大学 国家电工电子实验教学示范中心 第一期可编程逻辑设计培训研讨 2012年7月 湖北武汉 华中科技大学 国家电工电子实验教学示范中心 * 秒表实验 第一期可编程逻辑设计培训研讨 2012年7月 湖北武汉 华中科技大学 国家电工电子实验教学示范中心 * 秒表实验 任务目的 掌握VerilogHDL的基本用法。 实验内容 使用VerilogHDL,设计一个简易秒表。 编写按键驱动的VerilogHDL代码,使用按键控制秒表的启停和复位,并考虑去抖。 编写数码管驱动的VerilogHDL代码,对秒表计数的显示。 编写秒表计数的核心部分,完成1/100秒的计数。 *采用ModelSim,仿真验证逻辑功能。 下载编程文件至EDP-CLPD扩展板,并观察运行结果。 第一期可编程逻辑设计培训研讨 2012年7月 湖北武汉 华中科技大学 国家电工电子实验教学示范中心 * 秒表实验 按键部分设计 去抖设计,采用定时采样的方法,每隔5ms(大于抖动持续时间即可)采集一次按键信息即可。 有幸没采到抖动 不幸采到抖动中的低电平 不幸采到抖动中的高电平 第一期可编程逻辑设计培训研讨 2012年7月 湖北武汉 华中科技大学 国家电工电子实验教学示范中心 * 秒表实验 按键部分设计 按键部分代码,包括5ms定时、“采集”和产生按键脉冲(单周期使能脉冲) module keys_input #(parameter integer KEY_NUM) ( input clk, input [KEY_NUM-1:0] keys, output [KEY_NUM-1:0] out ); reg [17:0] cnt; wire en_5ms = (cnt == 18’b0); always@(posedge clk) begin if(cnt 18’d124999) cnt = cnt + 1’b1; else cnt = 18’b0; end reg [KEY_NUM-1:0] keys_sampled; always@(posedge clk) begin if(en_5ms) keys_sampled = ~keys; end reg [KEY_NUM-1:0] keys_sampled_delay; always@(posedge clk) begin keys_sampled_delay = keys_sampled; end assign out = keys_sampled (~keys_sampled_delay); endmodule cnt每125000周期一循环,en_5ms在它等于0时为高。 en_5ms为高时,采集keys到keys_sampled。 通过延迟和简单的逻辑,将keys_sampled的上跳沿变为单周期脉冲。 第一期可编程逻辑设计培训研讨 2012年7月 湖北武汉 华中科技大学 国家电工电子实验教学示范中心 * 秒表实验 显示部分设计 将表示0~9999的二进制转换为BCD码。 module BinToBcd( input [13:0] Bin, input Clk, output reg [15:0] Bcd ); reg [13 : 0] binTemp; reg [15 : 0] bcdTemp; always@(posedge Clk) begin if(binTemp = 14d1000) begin binTemp = binTemp - 14d1000; bcdTemp = bcdTemp + 16h1000; end else if(binTemp = 14d0100) begin binTemp = binTemp - 14d0100; bcdTemp = bcdTemp + 16h0100; end else if(binTemp = 14d0010) begin binTemp = binTemp - 14d0010; bcdTemp = bcdTemp + 16h0010; end else if(binTemp = 14d0001) begin binTemp = binTemp - 14d0001; bcdTemp = bcdTemp + 16h0001; end else b

文档评论(0)

知识宝库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档