FPGA数字时钟

FPGA数字时钟1

本代码借鉴了一些,网上资源。
1.设计目的
(1)掌握数字电子钟的设计方法;
(2)掌握常用数字集成电路的功能和使用;
(3)巩固数字电路理论知识,掌握逻辑电路和真值表的画法;

2.数字钟的功能以及要求
(1) 该电子钟项目为信号电路,计时电路,校时电路以及显示电路部分;
(2) 使用数码管显示时,分,秒;
(3) 通过按键对时,分,秒进行设置调时;
(4) 要求走时精准;

图片: EP2C8Q208C8在这里插入图片描述

// top文件
module top(
input sys_clk,
input rst_n,
input key,
input key1,input key2,             
output reg [5:0]sel_seg,
output reg [7:0]seg_led
);localparam MAX_NUM = 14'd5000;
reg [7:0]sec;
reg [7:0]min;
reg [7:0]hour;
reg flag_sec;
reg flag_min;parameter CLK_DIV=4'd10;
reg clk;
reg [3:0]div_cnt;//分频计数
reg [23:0]sec_cnt;
wire [3:0]shuju0;//秒个位
wire [3:0]shuju1;//秒十位
wire [3:0]shuju2;//分个位
wire [3:0]shuju3;//分十位
wire [3:0]shuju4;//时个位
wire [3:0]shuju5;//时十位
assign shuju5=hour/4'd10;
assign shuju4=hour%4'd10;
assign shuju3=min/4'd10;
assign shuju2=min%4'd10;
assign shuju1=sec/4'd10;
assign shuju0=sec%4'd10;wire key_value;
wire key_flag;
wire key_value1;
wire key_flag1;
wire key_value2;
wire key_flag2;key_debounce u_key_debounce(
.sys_clk(clk),.sys_rst_n(rst_n),
.key(key),.key_flag(key_flag),.key_value(key_value));
key_debounce u_key_debounce1(
.sys_clk(clk),.sys_rst_n(rst_n),
.key(key1),.key_flag(key_flag1),.key_value(key_value1)); key_debounce u_key_debounce2(
.sys_clk(clk),.sys_rst_n(rst_n),
.key(key2),.key_flag(key_flag2),.key_value(key_value2)); always @(posedge sys_clk or negedge rst_n)beginif(!rst_n)begindiv_cnt<=1'b0;clk<=1'b0;endelse if(div_cnt==CLK_DIV/2-1)beginclk<=~clk;div_cnt<=4'd0;endelse begindiv_cnt<=div_cnt+1'b1;clk<=clk;end
end//秒计数模块
always @(posedge clk or negedge rst_n)beginif(!rst_n)beginsec_cnt<=1'b0;sec<=8'd0;flag_sec<=1'b0;endelse if(key_flag1&&(~key_value1))beginif(sec==8'd59)beginsec<=8'd0;flag_sec<=1'b1;endelse beginflag_sec<=1'b0;sec<=sec+1'b1;endendelse if(sec_cnt==24'd500_0000)beginif(sec==8'd59)beginsec_cnt<=24'd0;sec<=8'd0;flag_sec<=1'b1;    			endelse beginflag_sec<=1'b0;sec_cnt<=24'd0;sec<=sec+1'b1;	    endendelse beginflag_sec<=1'b0;sec<=sec;sec_cnt<=sec_cnt+1'b1;end
end//分计数模块
always @(posedge clk or negedge rst_n)beginif(!rst_n)beginmin<=8'd0;flag_min<=1'b0;endelse if(key_flag&&(~key_value)) beginif(min==8'd59)beginmin<=8'd0;flag_min<=1'b1;endelse beginflag_min<=1'b0;min<=min+1'b1;endendelse if(flag_sec)begin    if(min==8'd59)beginflag_min<=1'b1;min<=8'd0;end        else beginflag_min<=1'b0;min<=min+1'b1;endendelse begin flag_min<=1'b0;min<=min;end
end
//时计数模块
always @(posedge clk or negedge rst_n)beginif(!rst_n)beginhour<=8'd0;endelse if(key_flag2&&(~key_value2)) beginif(hour==8'd59)beginhour<=8'd0;endelse beginhour<=hour+1'b1;endendelse if(flag_min)begin    if(hour==8'd23)beginhour<=8'd0;end        else beginhour<=hour+1'b1;endendelse begin hour<=hour;end
endreg [3:0]display_num;
reg [2:0]cnt0;//位选计数
reg [13:0]cnt1;
//数码管位选
reg flag;
always @(posedge clk or negedge rst_n)beginif(!rst_n)begincnt1<=14'd0;flag<=1'b0;endelse if(cnt1==MAX_NUM-1)begincnt1<=14'd0;flag<=1'b1;    endelse beginflag<=1'b0;cnt1<=cnt1+1'b1;end
endalways @(posedge clk or negedge rst_n)beginif(!rst_n)begincnt0<=3'd0;endelse if(flag)beginif(cnt0==3'd5)cnt0<=3'd0;else cnt0<=cnt0+1'b1;endelse cnt0<=cnt0;
endalways @(posedge clk or negedge rst_n)beginif(!rst_n)beginsel_seg<=6'b111111;display_num<=4'd0;endelse begincase(cnt0)3'd0:beginsel_seg<=6'b111110;display_num<=shuju0;end3'd1:beginsel_seg<=6'b111101;display_num<=shuju1;end3'd2:beginsel_seg<=6'b111011;display_num<=shuju2;end3'd3:beginsel_seg<=6'b110111;display_num<=shuju3; end   3'd4:beginsel_seg<=6'b101111;display_num<=shuju4;end3'd5:beginsel_seg<=6'b011111;display_num<=shuju5;enddefault:beginsel_seg<=6'b111111;display_num<=4'd0;endendcaseend
end
//数码管显示
always@(posedge clk or negedge rst_n)beginif(!rst_n)seg_led<=8'd1111111;else begincase(display_num)4'd0:beginif(cnt0==3'd2||cnt0==3'd4)seg_led<=8'b01000000;else seg_led<=8'b11000000;end4'd1:begin           if(cnt0==3'd2||cnt0==3'd4) seg_led<=8'b01111001;else  seg_led<=8'b11111001;end4'd2:beginif(cnt0==3'd2||cnt0==3'd4)seg_led<=8'b00100100;else seg_led<=8'b10100100;end4'd3:beginif(cnt0==3'd2||cnt0==3'd4)seg_led<=8'b00110000;else seg_led<=8'b10110000;end   4'd4:beginif(cnt0==3'd2||cnt0==3'd4)seg_led<=8'b00011001;else  seg_led<=8'b10011001;end4'd5:beginif(cnt0==3'd2||cnt0==3'd4)seg_led<=8'b00010010;   elseseg_led<=8'b10010010; end4'd6:beginif(cnt0==3'd2||cnt0==3'd4)seg_led<=8'b00000010;else  seg_led<=8'b10000010;end4'd7:beginif(cnt0==3'd2||cnt0==3'd4)seg_led<=8'b01111000;else  seg_led<=8'b11111000;end4'd8:beginif(cnt0==3'd2||cnt0==3'd4)seg_led<=8'b00000000;else  seg_led<=8'b10000000;end4'd9:beginif(cnt0==3'd2||cnt0==3'd4)seg_led<=8'b00010000;else  seg_led<=8'b10010000;enddefault:seg_led<=8'b1111111;endcaseend
endendmodule// 子文件
module key_debounce(input		sys_clk,input		sys_rst_n,input		key,output reg key_value,output reg key_flag
);reg [31:0] delay_cnt;
reg		   key_reg;always @(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)beginkey_reg 	 <= 1'b1;delay_cnt <= 32'd0;endelse beginkey_reg <= key;if(key_reg != key)delay_cnt <= 32'd100_0000;	else if(key_reg == key)beginif(delay_cnt > 32'd0)delay_cnt <= delay_cnt - 1'b1;elsedelay_cnt <= delay_cnt;endend
endalways @(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)beginkey_flag  <= 1'b0;key_value <= 1'b1;endelse begin if(delay_cnt == 32'd1)beginkey_flag  <= 1'b1;key_value <= key;endelse beginkey_flag  <= 1'b0;key_value <= key_value;endend
endendmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620964.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

HSP高度敏感的人应该了解的内容(附图书资源)

推荐图书:《高敏感是种天赋》 在爆炸的信息海中希望你慢慢看&#xff0c;细细品~ 什么是高敏感人群&#xff1f; &#xff08;Highly Sensitive Person&#xff0c;简称HSP&#xff09;是指那些对外界刺激和情绪变化非常敏感&#xff0c;容易受到情绪的影响&#xff0c;并且需…

基于Arduino的多功能数字时钟

实现功能&#xff1a; 显示时间、日期和星期断电保存时间通过按钮设置时间、日期整点响铃自定义闹钟显示温度自定义报警温度按键功能&#xff1a;按选择键进入设置时间功能&#xff1b;同时按 - 键进入闹钟和报警温度设置功能&#xff1b;再按选择键光标跳动&#xff0c;光标…

【Proteus】多功能数字时钟设计

ZQQQ 2021.12.27 课设一:各芯片引脚介绍:1:数码管:[^1]2:CD4511(译码显示):[^2]3:CD4518(计数器)[^3]3:555定时器4:CD4011和CD4012 二:各部分电路图搭建1:校正时间电路2:整点报时电路3:分频电路4:进制电路 课设 我们将该电路分为几个部分: 1:显示电路(用6个共阴数码管来显示) 2…

单片机:数字式时钟—日历

单片机&#xff1a;数字式时钟—日历 功能要求&#xff1a; &#xff08;1&#xff09;显示时分秒&#xff0c;年月日 &#xff08;2&#xff09;具有&#xff1a;启动&#xff08;按下此键后单片机才开始工作&#xff09;、暂停、继续、清零、设置时间/年月日/闹钟的功能 &am…

Quartus ii 13.1 数字时钟

内容摘要&#xff1a; 使用计数器和数据选择器等器件实现数字时钟电路。电路最终在开发板上显示的是时钟的秒和分&#xff08;开发板所限&#xff0c;当然如果开发板支持8位显示的话也可以自己加到小时位的显示&#xff09;。电路包四个部分&#xff1a;时钟信号分频电路&#…

FPGA-Verilog多功能数字时钟

一&#xff0e;数字时钟设计 1.硬件资源&#xff1a;共阴极数码管一块&#xff0c;FPGA开发板一块&#xff08;EP4CE40F23C8&#xff09;&#xff1b; 2. 开发板资源&#xff1a;3颗独立按键&#xff0c;数码管接口&#xff1b; 3. 功能设计&#xff1a;三种功能&#xff1a…

【Java】Java数字时钟

应用名称&#xff1a;Java数字时钟 用到的知识&#xff1a;Java GUI编程&#xff0c;线程 开发环境&#xff1a;win8eclipsejdk1.8 功能说明&#xff1a;可以显示当前系统的年月日、星期以及准确时间&#xff0c;并实时更新显示。 效果图&#xff1a; 源代码&#xff1a; i…

51单片机入门——(新)简易数字时钟

文章目录 设计要求原理图按键部分介绍 代码解析 设计要求 实现正确稳定地显示小时(两位数)、分钟(两位数)、秒钟(两位数)&#xff0c;同时数码管应无闪烁问题。通过按键分别实现时、分信息的调整&#xff0c;方便用户对时间的校准。加入闹铃功能在&#xff08;本设计中用LED代…

基于FPGA的数字时钟verilog开发

目录 一、理论基础 二、案例背景 1.问题描述 2.思路流程 三、verilog核心仿真 四、仿真结论分析 五、参考文献 一、理论基础 整个程序分为以下三大部分&#xff1a; 时钟控制部分&#xff0c;分为调整分&#xff0c;秒功能&#xff0c;秒清零功能&#xff1b; 暂停功…

51单片机数字时钟

我们学单片机&#xff0c;一般都会写数字时钟编程。它能帮助我们&#xff1a; a&#xff0e; 能够系统性地总结掌握的知识&#xff0c;将单元模块知识有机的结合在一起。 b&#xff0e; 能够充分协调好硬件与软件之间的相互结合&#xff0c;合理设计硬件电路。 c&#xff0…

多功能数字时钟(VHDL)

文章目录 一、课程设计内容二、实验方案分析与设计1.功能要求2.各个模块描述 三、具体实现过程描述1、小时计时2、分计时3、秒计时4、闹钟小时计时5、闹钟分计时6、闹钟比较模块7、控制器模块&#xff08;设置状态转换&#xff09;8、控制显示模块&#xff08;显示时间以及校时…

基于FPGA的简易数字时钟

基于FPGA的可显示数字时钟&#xff0c;设计思路为自底向上&#xff0c;包括三个子模块&#xff1a;时钟模块&#xff0c;进制转换模块&#xff0c;led显示模块。所用到的FPGA晶振频率为50Mhz&#xff0c;首先利用它得到1hz的时钟然后然后得到时钟模块&#xff0c;把时钟模块输出…

数字逻辑之数字时钟课程设计(含proteus仿真图及代码)

一、设计要求 1、设计一个能显示日期、小时、分钟、秒的数字电子钟&#xff0c;并具有整点报时的功能。  2、可手动校正时、分时间和日期值&#xff0c;时间以24小时为一个周期&#xff0c;有校时功能&#xff0c;可以分别对时及分进行单独校时&#xff0c;使其校正到标准时间…

数电实验:数字时钟设计 (经验分享,仅供参考)

实 验 目 的 一、独立完成一个数字小系统的设计 二、基于实验箱对设计进行验证 实验内容: 能够显示时、分、秒共6位数字&#xff1b; 考虑使用实验箱时钟&#xff08;频率包括1M、500K、 250K、100K、10K、1K等&#xff09;&#xff1b; 考虑使用实验箱数码管输出接口。 …

数据结构】二叉树篇|超清晰图解和详解:后序篇

博主简介&#xff1a;努力学习的22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a; 是瑶瑶子啦每日一言&#x1f33c;: 你不能要求一片海洋&#xff0c;没有风暴&#xff0c;那不是海洋&#xff0c;是泥塘——毕淑敏 目录 一、核心二、题目 一、核心 我们清楚…

Yandex SEO和Google SEO有啥区别?5000字说必须要了解的一些事儿

最近筋斗云SEO服务有做一些俄罗斯市场的SEO&#xff0c;而做俄罗斯的SEO相当于就是要做Yandex的SEO。对比Google的SEO优化&#xff0c;其实有比较多的区别&#xff0c;但总体算法、逻辑等等都大致相似。本文从Linus自己的研究和搜集的公开信息&#xff0c;对比一下Google和Yand…

阿里,百度,腾讯,360,新浪,网易,小米等开源项目

奇虎360 https://github.com/Qihoo360 1.MySQL中间层 Atlas Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上&#xff0c;修改了大量bug&#xff0c;添加了很多功能特性。目前该项…

大公司都有哪些开源项目~~~阿里,百度,腾讯,360,新浪,网易,小米等

红色字体是现阶段比较火的 ---------------------------------------------------------------------------------------------------------------- 奇虎360 https://github.com/Qihoo360 1.MySQL中间层 Atlas Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于M…

(读) 周鸿祎重新思考360(有感)

为什么80%的码农都做不了架构师&#xff1f;>>> 我们的红衣教主——周鸿祎&#xff08;yi&#xff09; 我只能从我的印象中和对他的了解中说出&#xff1a; 公司的人群 规模&#xff1a;800&#xff08;上市前&#xff09;-3/4000人&#xff08;目前&#xff09;目…

WIFI市场,除了免流量还能如何玩?

此前手机QQ公测QQWiFi功能&#xff0c;在最近发布的手机QQ5.3安卓版本中&#xff0c;正式全员开放QQwifi功能&#xff0c;用户可以通过简单几步接入运营商和商户的500多万WIFI热点&#xff0c;巨大的用户基础让本已热闹的WIFI市场又增变数。在此之前&#xff0c;微信、小米、阿…