一、题目

计数器实现数字钟60秒计数设计实验

二、源代码

说明:本实验实现了数字钟60秒计数设计;可以输出定时时间eg:11.22s,即11s、22ms,两个参数通过COUTS、COUTMS输出;同时,可以输出溢出位,当60s定时到达时,OV输出1,反之,OV输出0。本实验的时钟频率为50MHz。

顶层文件:

//----------------------------------------------------------------------------------------
// File name:           Timer60s
// Last modified Date:  2020年5月30日11点10分
// Last Version:        V1.1
// Descriptions:        定时60s,可以输出ms及s数据,精度可达10ms
//----------------------------------------------------------------------------------------
module Timer60s(CLK,RST,EN,COUTS,COUTMS,OV);input CLK,RST,EN;//时钟,复位,输入使能output [5:0] COUTS;//s输出output [6:0] COUTMS;//ms输出output OV;  //计数进位输出wire [5:0] Q1s;//reg OV;wire [6:0] Q1ms;wire COUT10ms;wire COUT1s;wire COUT60s;assign COUTS = Q1s;//将内部寄存器的计数结果输出至COUTSassign COUTMS = Q1ms;assign OV = COUT60s;//定时10ms模块例化 Timer10ms u_Timer10ms(.CLK                    (CLK),.RST                    (RST),.EN                      (EN),.COUT10ms          (COUT10ms),);//定时1s模块例化Timer1s u_Timer1s(.CLK1ms        (COUT10ms),.RST              (RST),.EN                (EN),.COUT1s        (COUT1s),.CNTS             (Q1ms),);//定时60s模块例化Timer60sby1s u_Timer60sby1s(.CLK1s        (COUT1s),.RST           (RST),.EN             (EN),.COUT60s    (COUT60s),.CNT60S      (Q1s),);endmodule

60s定时器模块:需要1s定时器模块的支持

//----------------------------------------------------------------------------------------
// File name:           Timer10ms
// Last modified Date:  2020年5月30日10点50分
// Last Version:        V1.1
// Descriptions:        定时60s,本模块需基于1s定时模块的基础上进行
//----------------------------------------------------------------------------------------
module Timer60sby1s(CLK1s,RST,EN,COUT60s,CNT60S);input CLK1s,EN,RST;//时钟,时钟使能,复位;EN == 1有效output COUT60s;  //计数进位输出output [5:0] CNT60S;//计数值输出reg [5:0] Q60s;reg COUT60s;assign CNT60S = Q60s;always @(posedge CLK1s or negedge RST)   //时序过程beginif(!RST)  Q60s <= 0;   //RST=0时,对内部寄存器单元异步清0else if (EN)            //同步使能EN = 1;则允许计数begin if(Q60s < 60)  Q60s <= Q60s +1;//当Q1小于60时,允许累加elseQ60s <= 6'b0;  //否则一个时钟后清0返回初值end endalways @(Q60s)   //组合逻辑if (Q60s==6'd60) COUT60s = 1'b1;elseCOUT60s = 1'b0;
endmodule

1s定时器模块:需要10ms定时器模块的支持

//----------------------------------------------------------------------------------------
// File name:           Timer10ms
// Last modified Date:  2020年5月30日10点35分
// Last Version:        V1.1
// Descriptions:        定时1s,本模块需基于10ms定时模块的基础上进行
//----------------------------------------------------------------------------------------
module Timer1s(CLK1ms,RST,EN,COUT1s,CNTS);input CLK1ms,EN,RST;//时钟,时钟使能,复位;EN == 1有效output COUT1s;  //计数进位输出output [6:0] CNTS;  //计数器数值输出,单位:msreg [6:0] Q1s;reg COUT1s;assign CNTS = Q1s;always @(posedge CLK1ms or negedge RST)   //时序过程beginif(!RST)  Q1s <= 0;   //RST=0时,对内部寄存器单元异步清0else if (EN)            //同步使能EN = 1;则允许计数begin if(Q1s < 100)  Q1s <= Q1s +1;//当Q1小于100时,允许累加elseQ1s <= 7'b0;  //否则一个时钟后清0返回初值end endalways @(Q1s)   //组合逻辑if (Q1s==7'd100) COUT1s = 1'b1;elseCOUT1s = 1'b0;
endmodule

10ms定时器模块:

//----------------------------------------------------------------------------------------
// File name:           Timer10ms
// Last modified Date:  2020年5月30日10点20分
// Last Version:        V1.1
// Descriptions:        定时10ms
//----------------------------------------------------------------------------------------
module Timer10ms(CLK,RST,EN,COUT10ms);input CLK,EN,RST;//时钟,时钟使能,复位;EN == 1有效output COUT10ms;  //计数进位输出reg [18:0] Q10ms;reg COUT10ms;always @(posedge CLK or negedge RST)   //时序过程beginif(!RST)  Q10ms <= 0;   //RST=0时,对内部寄存器单元异步清0else if (EN)            //同步使能EN = 1;则允许计数begin if(Q10ms < 500000)  Q10ms <= Q10ms +1;//当Q10ms小于500000时,允许累加elseQ10ms <= 19'b0;  //否则一个时钟后清0返回初值end endalways @(Q10ms)   //组合逻辑if (Q10ms==19'd500000) COUT10ms = 1'b1;elseCOUT10ms= 1'b0;
endmodule

三、仿真波形图


FPGA _Verilog HDL_计数器实现数字钟60秒计数设计实验相关推荐

  1. FPGA _Verilog HDL_十六进制7段码显示译码器设计实验

    一.题目 十六进制7段码显示译码器设计实验. 二.源代码 说明:本实验使用的是共阴数码管. //---------------------------------------------------- ...

  2. 基于FPGA的数字钟设计实验报告

    一.引言 E D A技术在当今社会为现代电子设计领域提供了可能性,这也是E D A 技术飞速发展的理由.现如今,E D A技术不再是某一门课程的分支,也不是某种新的技术,而是一门综合性学科.让计算机软 ...

  3. 【电子技术综合设计】数字钟(包含计数模块、12/24进制切换模块以及闹钟模块)

    工程文件: https://pan.baidu.com/s/1PnYd2mwMUf0tgxczdcl2MA 提取码: ihrk B站演示: [电子技术综合设计]数字电子时钟(包含计数模块.12/24进 ...

  4. 单片机节日彩灯实训报告_单片机数字钟实训报告

    单片机数字钟实训报告 学院:电子工程学院 专业:机电一体化 班级: 姓名: 手机号: 一.任务及要求 用51单片机设计时.分.秒计时器,具体要求如下. 1.具有时.分.秒计时功能和8位数码管显示功能, ...

  5. 数字电子电路——数字钟仿真图

    数字电子电路--数字钟仿真图 题目:多功能数字钟 要求: 1.设计的数字钟具有正常走时功能. 在计时开始或计时出现误差时,由校时电路完成对分.小时与标准时间的校准. 3.设计的数字钟具有显示功能. 设 ...

  6. CASE_02 基于FPGA的数字钟万年历

             该系类博客序言和资源简介可浏览该博客:PREFACE FPGA经典案例序言 快速了解该系列博客的内容与可用 资源. 目录 1 简介 2 数字钟计数方案 2.1 计数方案一 2.2 计 ...

  7. 基于FPGA的数字钟(四)——时钟控制模块

    一.需求分析 时钟控制模块,需要生成秒,分,时三路信号,需要有外部信号能对其进行控制. 按照正常时钟逻辑: 秒满60归零: 分在秒满60时进1,分满60归零: 时在分满60时进1,时满24归零. 外部 ...

  8. 基于Quartus II软件的FPGA综合实验——多功能数字钟

    有很多自制元器件,内部电路附在文章中 文章目录 前言 一.设计要求 二.设计原理 三.设计过程 1.数码管扫描模块 2.计时模块 3.闹钟模块 4.闹钟响铃模块 5.数码管显示模块 6.整点报时功能 ...

  9. VHDL编写多功能数字钟,spartan3 FPGA开发板硬件实现-学习笔记

    VHDL编写多功能数字钟,spartan3 FPGA开发板硬件实现-学习笔记 多功能数字钟硬件测试视频: https://www.bilibili.com/video/av62501230 1.数字钟 ...

最新文章

  1. 急速rust服务器管理_Rust 与服务端编程的碎碎念
  2. python 正则表达式 re.findall()方法
  3. 通过bootstrap来学习less
  4. 继承 :5、程序设计 类:汽车类 属性:排量(outPut),颜色(color) 行为:驾驶(drive)
  5. Java缓存框架使用EhCache结合Spring AOP
  6. 追加docker已运行容器添加或修改端口映射方法
  7. mysql服务启动成功后卸载_安装,启动与卸载Mysql系统服务(MYSQL常见问题)
  8. Python学习 Day 039 - HTML
  9. 免费中文Python电子书
  10. matlab高斯消元法列主元,matlab用列主元高斯消去法解方程组,
  11. Java类汽车,JAVA 建立一个汽车AutoMobile类......
  12. rocky linux 8.5 基本设置
  13. KY-RTI分布仿真技术:第二章 系统安装
  14. 大象跳转:解析微信内自动跳转浏览器打开URL网页的操作步骤
  15. 教你同时分析圆通快递多个单号的物流情况
  16. 空气炸锅炸鸡腿多少度多少分钟最好(空气炸锅炸鸡腿多少度多长时间)
  17. Python 在线免费批量美颜,不比某秀秀方便好用一些吗!
  18. webbench源码阅读
  19. html播放音乐怎么隐藏,酷狗音乐隐藏的小秘密 咋让听歌更方便
  20. Selenium多浏览器测试

热门文章

  1. 每天学点Shiro-集成spring
  2. 跨域问题解决(我只是搬运工)
  3. Elasticsearch之中文分词器插件es-ik(博主推荐)
  4. linux shell sleep/wait(转载)
  5. 最新C#开源资源项目
  6. iPhone开发经典语录
  7. RTT实时操作系统概念
  8. C语言课后习题(40)
  9. mysql shell可视化_shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中...
  10. PostgreSQL 13隐藏杀手锏特性