一.数字时钟设计

1.硬件资源:共阴极数码管一块,FPGA开发板一块(EP4CE40F23C8);

2. 开发板资源:3颗独立按键,数码管接口;

3. 功能设计:三种功能:a.时钟功能;b.校时功能;

4. 按键功能设计:按键调整数字时钟分钟显示;

1.数字时钟顶层模块RTL视图

1) 说明:这个为数字时钟的顶层模块,按键消抖模块xd,计数模块分秒CNT59,时CNT24,数码管显示sz,时间模块div;

2) 端口

输入:clock,reset;

输出:keyl,sel,seg;

3) 代码

module top(keyl,clock,reset,sel,seg);
input clock,reset;
input[2:0] keyl;
output[2:0]    sel;
output[7:0] seg;
wire clk_2k,clk_3k,clk_1k,cp,cp2,clk1,clk2,clk3,rst2,rst3;
wire[31:0] data;
wire[7:0] dout,cout;
wire[2:0] key_w,K1,K2,K3,key_r;
xd m1(.clk_4k(clk3),.key_w(keyl),.key_r(key_r));div m2(.clock1(clock),.clk1(clk1),.Key(key_r),.clk2(clk2),.clk3(clk3));CNT59 m3(.clk_3k(clk1),.rst3(reset),.K2(key_r),.K3(key_r),.cp(cp),.cout(data[7:0]),.cout1(data[19:12]));
CNT24 m4(.clk_2k(cp),.rst2(reset),.K1(key_r),.dout(data[31:24]));sz m5(.clk_1k(clk2),.data(data),.sel(sel),.seg(seg));
endmodule 

2.按键消抖模块

1) 说明:这个模块为按键消抖模块,三颗按键;

2) 端口

输入:clk_4k,key_w;

输出:key_r;

3) 代码

module xd(clk_4k,key_w,key_r);
input clk_4k;
input[2:0] key_w;
output[2:0] key_r;
reg[2:0] k1,k2,k3;
always@(posedge clk_4k)
begin k3 <= k2;  k2 <= k1;  k1 <= key_w;
end
assign key_r = k1 & k2 & k3;
endmodule 

3. 数码管模块

1) 说明:这个为8位共阴极数码管模块;

2) 端口

输入:clk——1k,data;

输出:sel,seg;

3)代码

module sz(clk_1k,data,sel,seg);
input clk_1k;
input[31:0] data;
output[2:0] sel;
output[7:0] seg;reg[7:0] seg_r;
reg[2:0] sel_r;
reg[3:0] disp_dat;
reg[2:0]count;assign sel= sel_r;
assign seg = seg_r;    always @(posedge clk_1k)
begin
if(count<3'd7)begincount <= count + 1'b1;end
elsebegincount<=3'd0;end
endalways @(posedge clk_1k)
begincase(count)3'd0:disp_dat = data[31:28];3'd1:disp_dat = data[27:24];3'd2:disp_dat = 4'ha;3'd3:disp_dat = data[19:16];3'd4:disp_dat = data[15:12];3'd5:disp_dat = 4'hb;3'd6:disp_dat = data[7:4];3'd7:disp_dat = data[3:0];endcasecase(count)3'd7:sel_r = 3'b111;3'd6:sel_r = 3'b110;3'd5:sel_r = 3'b101;3'd4:sel_r = 3'b100;3'd3:sel_r = 3'b011;3'd2:sel_r = 3'b010;3'd1:sel_r = 3'b001;3'd0:sel_r = 3'b000;endcase
endalways @(disp_dat)
begincase(disp_dat)4'h0:seg_r = 8'h3f;4'h1:seg_r = 8'h06;4'h2:seg_r = 8'h5b;4'h3:seg_r = 8'h4f;4'h4:seg_r = 8'h66;4'h5:seg_r = 8'h6d;4'h6:seg_r = 8'h7d;4'h7:seg_r = 8'h07;4'h8:seg_r = 8'h7f;4'h9:seg_r = 8'h6f;4'ha:seg_r = 8'h40;4'hb:seg_r = 8'h40;endcase
end
endmodule

4.时钟钟功能模块

1) 说明:这个模块为数字钟功能模块,包括小时模块CNT24,分秒模块CNT59;

2) 端口

输入:clk,reset,key;

输出:cout;

3) 代码

module CNT59(clk_3k,rst3,K2,K3,cp,cout,cout1);
input clk_3k,rst3;
input[2:0] K2,K3;
output[7:0] cout,cout1;
output cp;
reg [7:0] n,m;
reg cp,cq;
assign cout=n;
assign cout1=m;
always@(posedge clk_3k || K2 == 3'b110)
beginn[3:0]<=n[3:0]+4'd1;if(n[3:0] == 4'd9)beginn[3:0]<=4'b0;n[7:4]<=n[7:4]+4'b1;if(n[3:0] == 4'd9 && n[7:4] == 4'd5)beginn<=8'h00;endend
endalways@(n)
beginif(n[7:4]==4'd5 && n[3:0]==4'd9 ) cq=1'b1;else cq=1'b0;
endalways@(posedge cq || K3 == 3'b101)
beginm[3:0]<=m[3:0]+4'd1;if(m[3:0] == 4'd9)beginm[3:0]<=4'b0;m[7:4]<=m[7:4]+4'b1;if(m[3:0] == 4'd9 && m[7:4] == 4'd5)beginm<=8'h00;endend
endalways@(m)
beginif(m[7:4]==4'd5 && m[3:0]==4'd9 ) cp=1'b1;else cp=1'b0;
end
endmodule 
module CNT24(K1,clk_2k,rst2,dout);
input clk_2k,rst2;
input[2:0] K1;
output[7:0] dout;
reg [7:0] dout;
always@(posedge clk_2k || K1 == 3'b011)
beginif(dout[7:4]!=2)beginif(dout[3:0]==4'b1001)begindout[7:4]<=dout[7:4]+4'b0001;dout[3:0]<=4'b0000;endelsebegindout[7:4]<=dout[7:4];dout[3:0]<=dout[3:0]+4'b0001;endendelseif(dout[3:0]==4'b0011)begindout[7:4]<=4'b0000;dout[3:0]<=4'b0000;endelsebegindout[7:4]<=dout[7:4];dout[3:0]<=dout[3:0]+4'b0001;end
end
endmodule 

5.div模块

1) 说明:这个模块为分频模块;

2) 端口

输入:clock1,key;

输出:clk1,clk2,clk3;

3) 代码

module div(clock1,clk1,Key,clk2,clk3);
input clock1;
input[2:0] Key;
output clk1,clk2,clk3;
reg clk1,clk2,clk3;
reg[24:0] count1;
reg[24:0] count2;
reg[24:0] count3;
parameter  N1=50000000;
parameter  N2=2500;
parameter  N3=500000;
always@(posedge clock1)beginif(Key == 3'b111)begincount1<=count1+1'b1;if(count1== N1/2-1)begin  clk1 <=~ clk1;count1<=0;endendcount2<=count2+1'b1;if(count2==N2/2-1)beginclk2<=~clk2;count2<=0;end count3<=count3+1'b1;if(count3==N3/2-1)beginclk3<=~clk3;count3<=0;end end
endmodule 

FPGA-Verilog多功能数字时钟相关推荐

  1. 基于FPGA的多功能数字时钟设计报告

    作品基于intel Cyclone IV E EP4CE10F17C8 FPGA板卡,主要开发环境为Quartus Ⅱ,编程并实现了多功能温湿度电子钟.本作品在实现显示实时时间的基础上,设计并完成了设 ...

  2. FPGA实现多功能数字钟(Verilog)

    FPGA实现多功能数字钟(Verilog) 介绍 整体框架 模块介绍 按键模块 主体计数模块 调整时间(日期)和设置闹钟 秒表模块 闹钟音乐模块 数码管显示 介绍 本文设计的数字钟的功能包括:正常时钟 ...

  3. 基于 FPGA 实现滑动显示、多功能数字时钟【设置年月日时分秒以及闹钟】

    目录 一.数码管原理 二.基础篇 2.1 原理及代码 2.2 验证结果 三.进阶篇 3.1 原理及代码 3.2 验证结果 四.数字时钟 4.1 原理及代码 4.2 验证结果 本文内容:基于 FPGA ...

  4. quartus 修改 时钟_Clock Quartus II 开发的多功能数字时钟,有计时、调 闹铃、警报等 Other systems 其他 274万源代码下载- www.pudn.com...

    文件名称: Clock下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Others 文件大小: 530 KB 上传时间: 2017-04-20 下载次数: 0 提 供 者: 墨离非 ...

  5. 多功能数字钟软件C语言,多功能数字时钟

    内容介绍 原文档由会员 你的样子 发布 多功能数字时钟 ①页数 19 ②字数 6932 ③摘要 摘 要: 随着电子技术的发展,在诸如计时.控制等领域,设计出应用具有时间设置(小时和分钟),闹钟时间设置 ...

  6. FPGA之VGA/LCD数字时钟显示

    文章目录 前言 一.LCD显示控制 1.LCD显示一个字符 2.LCD显示多个字符 二.数字时钟输出 1.数字时钟 2.十进制数据拆分BCD码 三.按键检测及LCD驱动 1.按键检测 2.LCD驱动 ...

  7. EDA实验(Quartus Ⅱ+fpga) (五)---多功能数字钟设计

    前言: 本文主要介绍了EDA原理与应用这门课程的相关实验及代码.使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cycloneⅤ 5CSEMA5F31C6. (一)实验目的 (1)了解数字钟的 ...

  8. 基于单片机的多功能数字时钟设计

    文末下载完整资料 二 硬件系统方案设计 2.1电话拨号防盗报警器硬件系统方案 2.1.1 硬件系统方案设计    图2.1为电话拨号报警器的系统构成方框图,由单片机控制器.键盘输入.数码管显示.触发电 ...

  9. 基于FPGA的复杂的数字时钟设计(代码)

    复杂的数字时钟设计 一.设计要求: 1.正常显示功能 正常显示时,六位数码管显示日期.时间以及闹钟.对于日期来说,前两位显示年份的后两位(如2020年 显示20),中间两位显示月份,最后两位显示日.对 ...

最新文章

  1. python手写板_Python3使用PyQt5制作简单的画板/手写板实例
  2. 开发安卓app游戏_游戏陪玩系统APP开发平台
  3. python3位水仙花数计算
  4. 从零写一个编译器(五):语法分析之自动机的缺陷和改进
  5. Java事实让您大吃一惊! (信息图)
  6. redis本地及远程登录
  7. Java中获得了方法名称的字符串,怎么样调用该方法
  8. 我在架构设计和代码开发中的一些常用原则
  9. 剑指offer python实现_剑指Offer第2题详解(附Python、Java代码实现)
  10. 普通用户安装nginx
  11. Vue | 实现页面跳转刷新,在Vue页面中调用其他页面的方法
  12. Disabling contextual LOB creation as createClob()
  13. 六年级下册百分数计算题_六年级数学上册期末试卷(附答案)
  14. 信息论与贝叶斯(二)
  15. bm3d算法matlab,BM3D算法实现图像降噪.doc
  16. 机械设计二级减速器设计
  17. linux双系统默认进入win10,win10 linux 双系统 默认win10启动
  18. pt-online-schema-change 脚本化
  19. [设计模式]行为模式-模板方法(C++描述)
  20. Android Studio_day02 实际应用登录界面

热门文章

  1. 在Ubuntu环境下搭建Git服务器
  2. 量变真的可以引起质变
  3. 如何将heic图片格式转换jpg?
  4. 机房节能趋向系统化、智能化、精细化
  5. 一句话评述8个最热的原型工具
  6. 防火墙和系统安全防护与优化
  7. 什么?你学深度学习还不会新闻分类:多分类问题?我来手把手教你
  8. supervisor配置详解(转)
  9. [0CTF 2016]piapiapia -php序列化溢出
  10. meta标签的作用是什么