当前位置:   article > 正文

FPGA项目(14)——基于FPGA的数字秒表设计

基于fpga的数字秒表设计

1.功能设计

设计内容及要求:
1.秒表最大计时范围为99分59. 99秒
2.6位数码管显示,分辨率为0.01秒
3.具有清零、启动计时、暂停及继续计时等功能
4.控制操作按键不超过二个。

2.设计思路
 

所采用的时钟为50M,先对时钟进行分频,得到100HZ频率的信号,然后在该信号的驱动下,对秒表的各个单位进行累加

分频的代码为:

  1. module fenpin(
  2. input clk_in, //输入的时钟 50M
  3. input rst, //复位信号
  4. output clk_out //分频后的输出信号 100HZ
  5. );
  6. parameter hz_num=19'd500_000; //分频系数 50M/100=500K
  7. //parameter hz_num=19'd5; //仿真时使用 (仿真的时候,分频系数要小一些,否则看不到分频效果,下载到板子上时,此参数改为500K)
  8. reg clk_hz;
  9. reg [18:0] hz_cnt;
  10. //产生100hz的模块
  11. always @(posedge clk_in or negedge rst) begin
  12. if(!rst)
  13. begin
  14. hz_cnt<=19'd0;
  15. clk_hz<=1'b0;
  16. end
  17. else if(hz_cnt==hz_num/2-1)
  18. begin
  19. hz_cnt<=19'd0;
  20. clk_hz<=~clk_hz;
  21. end
  22. else
  23. hz_cnt<=hz_cnt+1;
  24. end
  25. assign clk_out=clk_hz;
  26. endmodule

仿真截图为:(仿真时记得把分频系数改小)

可见,分频成功!

 显示模块:

本次所采用的是数码管显示,6位独立数码管,每个数码管都静态显示(FPGA用了6*8=48个管脚来驱动这些数码管,所以用不上数码管动态显示的知识,这种做法会降低代码编写的难度,但是会增大FPGA的IO口资源消耗!)

代码为:

  1. module segshow(
  2. input clk,
  3. input rst,
  4. input [3:0] data,
  5. output reg [6:0] seg_led
  6. );
  7. always @(posedge clk or negedge rst) begin
  8. if(!rst)
  9. seg_led<=7'b1000000;
  10. else
  11. begin
  12. case(data)
  13. 4'd0 : seg_led <= 7'b1000000; //显示数字 0
  14. 4'd1 : seg_led <= 7'b1111001; //显示数字 1
  15. 4'd2 : seg_led <= 7'b0100100; //显示数字 2
  16. 4'd3 : seg_led <= 7'b0110000; //显示数字 3
  17. 4'd4 : seg_led <= 7'b0011001; //显示数字 4
  18. 4'd5 : seg_led <= 7'b0010010; //显示数字 5
  19. 4'd6 : seg_led <= 7'b0000010; //显示数字 6
  20. 4'd7 : seg_led <= 7'b1111000; //显示数字 7
  21. 4'd8 : seg_led <= 7'b0000000; //显示数字 8
  22. 4'd9 : seg_led <= 7'b0010000; //显示数字 9
  23. default : seg_led <= 7'b1000000;
  24. endcase
  25. end
  26. end
  27. endmodule

仿真截图:

可见,数码管的输出会随着输入数据的变化而正确变化。故仿真正确。

然后就是主体的控制逻辑了:

 

根据输入的按键信号,进行相应的操作

 仿真:

可以看到,SW1为0的时候,秒表确实已经停止计时了。待SW1为1,又继续计时。

故,功能正常!

总体电路如下:

 

总体的仿真截图如下:

 

 

 

3.课题意义 

基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)的电子秒表课题具有以下几个重要的意义:

1. 学术研究价值:基于FPGA的电子秒表是电子设计与数字逻辑设计的典型应用案例,对于学生和研究人员来说,它提供了一个理解和掌握FPGA基本原理与设计方法的实际项目。通过实践,学生可以深入学习FPGA架构、时序逻辑、状态机设计等关键概念,提升自己的硬件设计能力。

2. 技术实践意义:电子秒表是一个简单但功能实用的电子设备,通过基于FPGA的设计,可以实现高精度的计时功能。这种实际应用方案对于学生来说很有吸引力,可以将他们的理论知识应用于实际项目中,并且锻炼他们的设计思维和解决问题的能力。

3. 推广普及FPGA应用:FPGA作为一种灵活的可编程硬件平台,具有高度的灵活性和可扩展性,可以用于实现各种复杂的数字电路设计。通过推广基于FPGA的电子秒表课题,可以引导更多的学生和研究人员了解FPGA技术,并促进其在各种领域中的应用,如通信、图像处理、嵌入式系统等。

4. 培养团队合作精神:基于FPGA的电子秒表课题通常需要学生组成小组进行合作设计与实现。这种合作模式可以促进学生之间的团队合作、协作与沟通,培养他们的团队合作精神和项目管理能力,提升他们的综合素质。

总之,基于FPGA的电子秒表课题在学术研究、技术实践、FPGA应用推广和团队合作等方面具有重要的意义,对于培养学生的创新意识、动手能力和团队协作精神有积极的影响。同时,通过这样的实践项目,也可以推动FPGA技术的进一步发展和应用。

4.完整工程

FPGA数字秒表的设计资源-CSDN文库icon-default.png?t=N7T8https://download.csdn.net/download/guangali/88678505?spm=1001.2014.3001.5501

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/641297
推荐阅读
相关标签
  

闽ICP备14008679号