Quartus Prime硬件实验开发(DE2-115板)实验二功能可调综合计时器设计

举报
nimo的小舔狗 发表于 2022/05/11 01:26:53 2022/05/11
【摘要】 实验二功能可调综合计时器设计 实验目的 掌握QuartusII等实验工具的输入、综合、仿真、下载的使用方法掌握DE2开发版的器件功能特性和使用方法掌握Verilog HDL时序逻辑系统设计的主要方法和技术掌握并应用EDA设计的方法和流程 预习要求 了解QuartusII等管教分配、下载的方法和流程了解开发板输入、输出显示资...

实验二功能可调综合计时器设计

  • 实验目的
  1. 掌握QuartusII等实验工具的输入、综合、仿真、下载的使用方法
  2. 掌握DE2开发版的器件功能特性和使用方法
  3. 掌握Verilog HDL时序逻辑系统设计的主要方法和技术
  4. 掌握并应用EDA设计的方法和流程
  • 预习要求
  1. 了解QuartusII等管教分配、下载的方法和流程
  2. 了解开发板输入、输出显示资源的工作特性
  3. 了解开发板设计、开发和测试的方法和流程
  • 实验要求

设计一个可调的综合计时器。具体功能:

  1. 显示小时、分、秒,提供置零功能。显示在七段管或LCD屏幕上,可以考虑24/12小时模式切换功能。
  2. 能够对秒、分、小时进行分别修改,可以两位数整体修改或每位独立修改
  3. 整点报时功能,整点可以显示一定形式的LED来表示。
  4. 闹钟功能,设定特定时间,到时间以特定LED显示来显示闹钟。注意闹钟持续时间,也可以参考懒人闹钟模式。

初始操作与实验一几乎类似,详情可参考实验一链接:Quartus Prime硬件实验开发(DE2-115板)实验一CPU指令运算器设计_渣渣ye的博客-CSDN博客

需要注意的是,实验二内,需要替换管脚对应的数值,具体数值表链接如下:

FPGA硬件实验二功能可调综合计时器设计实验设计管脚设置-数据集文档类资源-CSDN下载

主体代码:


  
  1. module shizhong(clkin,key0,hex0,hex1,hex2,hex3,hex4,hex5,hex6,hex7,KEY0,KEY1,key17,key16,key15,LEDR,LEDG,in,key14,key13,key12);
  2. input clkin;
  3. input key0,key17,key16,key15,key14,key13,key12;
  4. input[6:1] in;
  5. input KEY0,KEY1;
  6. reg clk=0;
  7. output reg[6:0] hex0,hex1,hex2,hex3,hex4,hex5,hex6,hex7;
  8. output reg[7:0] LEDR,LEDG;
  9. reg[7:0] out2,out3,out4,out5,out6,out7;
  10. reg[7:0] second;
  11. reg[7:0] minute;
  12. reg[7:0] hour;
  13. reg[7:0] second1;
  14. reg[7:0] minute1;
  15. reg[7:0] hour1;
  16. integer N=25000000;
  17. integer i=0;
  18. reg[16:0] naozhong=0;
  19. reg[16:0] s=0;
  20. integer a=86400;
  21. always@(posedge clkin) //分频
  22. begin
  23. if(i==N)
  24. begin
  25. i=0;
  26. clk=~clk;
  27. end
  28. else i=i+1;
  29. end
  30. always@(posedge clk)
  31. begin
  32. if(key0) s=0; //置零
  33. else
  34. //计数
  35. begin
  36. //整点报时
  37. if(s%3600==0)
  38. begin
  39. LEDR=8'b11111111;
  40. end
  41. else
  42. begin
  43. LEDR=8'b00000000;
  44. s=(s+1)%a;
  45. end
  46. if(key17&&key16==0&&key15==0) //调整小时
  47. begin
  48. if(KEY0==0)s=(s+3600)%a;
  49. else if(KEY1==0)s=(s-3600)%a;
  50. else s=s%a;
  51. end
  52. else if(key17==0&&key16&&key15==0) //调整分钟
  53. begin
  54. if(KEY0==0)s=(s+60)%a;
  55. else if(KEY1==0)s=(s-60)%a;
  56. else s=s%a;
  57. end
  58. else if(key17==0&&key16==0&&key15) //调整秒
  59. begin
  60. if(KEY0==0)s=(s+1)%a;
  61. else if(KEY1==0)s=(s-1)%a;
  62. else s=s%a;
  63. end
  64. end
  65. end
  66. always@(key17,key16,key15,s)
  67. begin
  68. //闹钟
  69. if(key17==1&&key16==1&&key15==1)
  70. begin
  71. naozhong = 0;
  72. if(key12)naozhong=naozhong+in;
  73. else if(key13)naozhong=naozhong+in*60;
  74. else if(key14)naozhong=naozhong+in*3600;
  75. else naozhong=naozhong;
  76. second1=naozhong%60;
  77. minute1=naozhong/60%60;
  78. hour1=naozhong/3600;
  79. out7=hour1/10;
  80. out6=hour1%10;
  81. out5=minute1/10;
  82. out4=minute1%10;
  83. out3=second1/10;
  84. out2=second1%10;
  85. hex7=seven(out7);
  86. hex6=seven(out6);
  87. hex5=seven(out5);
  88. hex4=seven(out4);
  89. hex3=seven(out3);
  90. hex2=seven(out2);
  91. hex1=7'b1111111;
  92. hex0=7'b1111111;
  93. end
  94. else
  95. begin
  96. second=s%60;minute=s/60%60;hour=s/3600;
  97. out7=hour/10;out6=hour%10;
  98. out5=minute/10;out4=minute%10;
  99. out3=second/10;out2=second%10;
  100. hex7=seven(out7);
  101. hex6=seven(out6);
  102. hex5=seven(out5);
  103. hex4=seven(out4);
  104. hex3=seven(out3);
  105. hex2=seven(out2);
  106. hex1=7'b1111111;
  107. hex0=7'b1111111;
  108. if(s==naozhong)LEDG=8'b11111111;
  109. else LEDG=8'b00000000;
  110. end
  111. end
  112. function[6:0] seven;
  113. input [7:0] din;
  114. case(din)
  115. 4'h0:seven=7'b1000000;
  116. 4'h1:seven=7'b1111001;
  117. 4'h2:seven=7'b0100100;
  118. 4'h3:seven=7'b0110000;
  119. 4'h4:seven=7'b0011001;
  120. 4'h5:seven=7'b0010010;
  121. 4'h6:seven=7'b0000010;
  122. 4'h7:seven=7'b1111000;
  123. 4'h8:seven=7'b0000000;
  124. 4'h9:seven=7'b0010000;
  125. default:seven=7'b1111111;
  126. endcase
  127. endfunction
  128. endmodule

硬件测试:

归零

控制时间

设置闹钟,时间到,绿灯亮

 

文章来源: blog.csdn.net,作者:渣渣ye,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yyfloveqcw/article/details/124362870

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。