当前位置:   article > 正文

基于FPGA的数字秒表设计(完整工程)_fpga数字秒表设计

fpga数字秒表设计

目录

概述

设计功能

数字秒表设计的目的

模块仿真

设计代码


概述

该设计是用于体育比赛的数字秒表,基于FPGA在Quartus II 9.0sp2软件下应用VHDL语言编写程序,采用ALTRA公司CycloneII系列的EP2C8Q208芯片进行了计算机仿真,并给出了相应的仿真结果。本设计有效的克服了传统的数字秒表的缺点采用EDA技术采取自上而下的设计思路。绘制出了具体的逻辑电路,最后又通过硬件上对其进行调试和验证。该电路能够实现很好的计时功能,计时精度高,最长计时时间可达一个小时。 

设计功能

1、完成一个带有时分秒显示的数字秒表; 
2、12、24小时可以调节;
3、能作秒表计时;
4、能够倒计时显示;

数字秒表设计的目的

本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,对计算机系统中时钟控制系统进一步了解,掌握状态机工作原理,同时了解计算机时钟脉冲是怎么产生和工作的。(此处省略)

模块仿真

设计代码

(代码较长,完整工程免费分享,需要获取可关注:FPGA苑)
  1. module time_clock(
  2. clk,
  3. reset_n,
  4. hour_select_key,
  5. second_counter_key,
  6. second_countdown_key,
  7. pause_key,
  8. duan,
  9. wei
  10. );
  11. input clk; //clk:50MHZ时钟输入;
  12. input reset_n; //复位信号输入,低电平有效;
  13. input hour_select_key; //1224小时可以调节按键,当为‘1’时为24,‘0’时为12小时;
  14. input second_counter_key; //当该按键为‘1’时为秒表计时功能,‘0’时为正常功能;
  15. input second_countdown_key; //当该按键为‘1’时为倒计时功能,‘0’时为正常功能;
  16. input pause_key; //暂停功能按键,进行秒表计时和倒计时时可以通过该按键进行暂停,‘1’暂停,‘0’继续
  17. output [7:0] duan; //duan:数码管段码;
  18. output [7:0] wei; //wei:数码管位码;
  19. reg [7:0] duan; //duan:数码管段码;
  20. reg [7:0] wei; //wei:数码管位码;
  21. reg [24:0] count; //1HZ时钟计数器
  22. reg [13:0] count2; //扫描时钟计数器
  23. reg clk_1hz; //1HZ时钟信号
  24. reg [3:0] miao_ge; //秒个位数BCD码
  25. reg [2:0] miao_shi; //秒十位BCD二进制码
  26. reg [3:0] fen_ge; //分钟个位数
  27. reg [2:0] fen_shi; //分钟十位数
  28. reg [1:0] shi_ge; //时钟个位数
  29. reg [1:0] shi_shi; //时钟十位数
  30. reg [1:0] shi_select_ge; //时钟选择个位数,用于调节时制
  31. reg [1:0] shi_select_shi; //时钟选择十位数,用于调节时制
  32. reg clk_scan; //数码管扫描时钟
  33. reg [2:0] select; //用于扫描时选择显示位码
  34. //****************************************************************************************************
  35. // 模块名称:秒时钟分频模块
  36. // 功能描述:
  37. //****************************************************************************************************
  38. always @(posedge clk or negedge reset_n)//1HZ时钟进程
  39. begin
  40. if(reset_n == 1'b0)
  41. begin
  42. count <= 25'd0;
  43. clk_1hz <= 1'b0;
  44. end
  45. else
  46. if(count == 25'd25000000)
  47. begin
  48. clk_1hz <= ~clk_1hz;
  49. count <= 25'd0;
  50. end
  51. else
  52. count <= count + 1'b1;
  53. end
  54. reg [17:0] counter_count;
  55. reg clk_100hz;
  56. always @(posedge clk or negedge reset_n)//100HZ时钟进程
  57. begin
  58. if(reset_n == 1'b0)
  59. begin
  60. counter_count <= 18'd0;
  61. clk_100hz <= 1'b0;
  62. end
  63. else
  64. if(~pause_key == 1'b0)
  65. if(counter_count == 18'd250000)
  66. begin
  67. clk_100hz <= ~clk_100hz;
  68. counter_count <= 18'd0;
  69. end
  70. else
  71. counter_count <= counter_count + 1'b1;
  72. else
  73. begin
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/796593
推荐阅读
相关标签
  

闽ICP备14008679号