数字逻辑课程设计--电子闹钟

  • 一、功能介绍
    • 基本功能
    • 设计功能
  • 二、设计思路
  • 三、模块结构
  • 四、代码及其注释
  • 效果展示

一、功能介绍

本次数字逻辑与EDA实验课程设计我设计的是电子闹钟,该电子闹钟具体能实现的功能如下:

基本功能

  1. 正常时间和闹钟时间显示功能
  2. 闹钟触发功能

设计功能

  1. 手动设置和修改闹钟时间功能
  2. 当正常时间有误时,矫正时间功能
  3. 利用有限状态机设计闹钟触发30s的LED彩灯提示功能

二、设计思路

首先设计一个分频模块,将50mhz的时钟分频得到1hz的时钟,分频的方法在前面的几次实验中多次用到。其次,是设计时钟模块,通过得到的1hz的时钟,在时钟上升沿进行触发,分别设置分钟和秒,当秒为59时,置零,然后分钟加1。当数满一个小时时,自动归零。然后需要设置修改正常时间和闹钟时间的模块,我通过引入寄存器型变量,能够临时存储修改的值,并且增加标记位的方式实现该模块。其次,还需要设置时间显示模块,通过控制输出,并进行管脚分配来在7段数码管上显示。最后还需设置一个闹钟触发模块,通过有限状态机设计,实现LED彩灯提示。

三、模块结构

四、代码及其注释

module clock(clk50mhz,clr,mod_time,mod_clock,mod_min,mod_sec,led,out1,out2,out3,out4);
(*chip_pin="Y2"*)input clk50mhz;
(*chip_pin="AB28"*)input clr;         //SW[0] 清零信号,clear=1时时钟清零
(*chip_pin="M23"*)input mod_time;     //KRY[0] 修改正常时间
(*chip_pin="M21"*)input mod_clock;    //KEY[1] 设置(修改)闹钟时间
(*chip_pin="AD26,AC26,AB27,AD27,AC27,AC28"*)input [5:0] mod_min; //修改的分 SW[6]-SW[1]
(*chip_pin="AB23,AB24,AC24,AB25,AC25,AB26"*)input [5:0] mod_sec; //修改的秒 SW[12]-SW[7]
(*chip_pin="G21,G22,G20,H21,E24,E25,E22,E21"*)output reg[7:0] led; //LED黄灯
(*chip_pin="V21,U21,AB20,AA21,AD24,AF23,Y19,AA25,AA26,Y25,W26,Y26,W27,W28"*)output reg[13:0] out1;//HEX[3]与HEX[2]  min
(*chip_pin="M24,Y22,W21,W22,W25,U23,U24,G18,F22,E17,L26,L25,J22,H22"*)output reg[13:0] out2; //HEX[1]与HEX[0]   sec
(*chip_pin="AD17,AE17,AG17,AH17,AF17,AG18,AA14,AA17,AB16,AA16,AB17,AB15,AA15,AC17"*)output reg[13:0] out3; //HEX[7]与HEX[6]   clock_min
(*chip_pin="AD18,AC18,AB18,AH19,AG19,AF18,AH18,AB19,AA19,AG21,AH21,AE19,AF19,AE18"*)output reg[13:0] out4; //HEX[5]与HEX[4]   clock_sec
reg[5:0] min; //正常分钟
reg[5:0] sec; //正常秒
reg[5:0] clock_min=0;//闹钟分钟
reg[5:0] clock_sec=10; //闹钟秒
reg[5:0] min_temp;
reg[5:0] sec_temp;
reg flag=0; //时钟触发信号
reg flag_mod_time;
//1.分频模块,得到1s时钟信号
reg clk1hz;
reg[24:0] cout;
always@(posedge clk50mhz)
beginif(cout==25'd24999999)begincout = 0;clk1hz = ~clk1hz;endelsecout = cout + 1;
end//2.正常时间模块
always@(posedge clk1hz)
beginif(clr)beginmin=0;sec=0;   endelse if(flag_mod_time)begin min=min_temp;sec=sec_temp;endelse beginif(sec==6'd59 && min==6'd59)beginsec=0;min=0;endelse if(sec==6'd59)beginsec=0;min=min+1;endelse beginsec=sec+1;min=min;endendif(min==clock_min && sec==clock_sec)flag=1;else if(min*60+sec-clock_min*60-clock_sec>30)beginflag=0;endend//3.修改正常时间
always@(mod_time)
beginif(mod_time==0)beginmin_temp=mod_min;sec_temp=mod_sec;flag_mod_time=1;endelsebeginmin_temp=min_temp;sec_temp=sec_temp;flag_mod_time=0;end
end//4.修改闹钟时间
always@(mod_clock)
beginif(mod_clock==0)beginclock_min=mod_min;clock_sec=mod_sec;endelsebeginclock_min=clock_min;clock_sec=clock_sec;end
end//5.显示正常时间和闹钟时间
always@(min or sec or clock_min or clock_sec)
begincase(min) 6'd0:out1=14'b0000001_0000001;6'd1:out1=14'b0000001_1001111;6'd2:out1=14'b0000001_0010010;6'd3:out1=14'b0000001_0000110;6'd4:out1=14'b0000001_1001100;6'd5:out1=14'b0000001_0100100;6'd6:out1=14'b0000001_0100000;6'd7:out1=14'b0000001_0001111;6'd8:out1=14'b0000001_0000000;6'd9:out1=14'b0000001_0000100;6'd10:out1=14'b1001111_0000001;6'd11:out1=14'b1001111_1001111;6'd12:out1=14'b1001111_0010010;6'd13:out1=14'b1001111_0000110;6'd14:out1=14'b1001111_1001100;6'd15:out1=14'b1001111_0100100;6'd16:out1=14'b1001111_0100000;6'd17:out1=14'b1001111_0001111;6'd18:out1=14'b1001111_0000000;6'd19:out1=14'b1001111_0000100;6'd20:out1=14'b0010010_0000001;6'd21:out1=14'b0010010_1001111;6'd22:out1=14'b0010010_0010010;6'd23:out1=14'b0010010_0000110;6'd24:out1=14'b0010010_1001100;6'd25:out1=14'b0010010_0100100;6'd26:out1=14'b0010010_0100000;6'd27:out1=14'b0010010_0001111;6'd28:out1=14'b0010010_0000000;6'd29:out1=14'b0010010_0000100;6'd30:out1=14'b0000110_0000001;6'd31:out1=14'b0000110_1001111;6'd32:out1=14'b0000110_0010010;6'd33:out1=14'b0000110_0000110;6'd34:out1=14'b0000110_1001100;6'd35:out1=14'b0000110_0100100;6'd36:out1=14'b0000110_0100000;6'd37:out1=14'b0000110_0001111;6'd38:out1=14'b0000110_0000000;6'd39:out1=14'b0000110_0000100;6'd40:out1=14'b1001100_0000001;6'd41:out1=14'b1001100_1001111;6'd42:out1=14'b1001100_0010010;6'd43:out1=14'b1001100_0000110;6'd44:out1=14'b1001100_1001100;6'd45:out1=14'b1001100_0100100;6'd46:out1=14'b1001100_0100000;6'd47:out1=14'b1001100_0001111;6'd48:out1=14'b1001100_0000000;6'd49:out1=14'b1001100_0000100;6'd50:out1=14'b0100100_0000001;6'd51:out1=14'b0100100_1001111;6'd52:out1=14'b0100100_0010010;6'd53:out1=14'b0100100_0000110;6'd54:out1=14'b0100100_1001100;6'd55:out1=14'b0100100_0100100;6'd56:out1=14'b0100100_0100000;6'd57:out1=14'b0100100_0001111;6'd58:out1=14'b0100100_0000000;6'd59:out1=14'b0100100_0000100;default:out1=14'b1111111_1111111;endcasecase(sec)6'd0:out2=14'b0000001_0000001;6'd1:out2=14'b0000001_1001111;6'd2:out2=14'b0000001_0010010;6'd3:out2=14'b0000001_0000110;6'd4:out2=14'b0000001_1001100;6'd5:out2=14'b0000001_0100100;6'd6:out2=14'b0000001_0100000;6'd7:out2=14'b0000001_0001111;6'd8:out2=14'b0000001_0000000;6'd9:out2=14'b0000001_0000100;6'd10:out2=14'b1001111_0000001;6'd11:out2=14'b1001111_1001111;6'd12:out2=14'b1001111_0010010;6'd13:out2=14'b1001111_0000110;6'd14:out2=14'b1001111_1001100;6'd15:out2=14'b1001111_0100100;6'd16:out2=14'b1001111_0100000;6'd17:out2=14'b1001111_0001111;6'd18:out2=14'b1001111_0000000;6'd19:out2=14'b1001111_0000100;6'd20:out2=14'b0010010_0000001;6'd21:out2=14'b0010010_1001111;6'd22:out2=14'b0010010_0010010;6'd23:out2=14'b0010010_0000110;6'd24:out2=14'b0010010_1001100;6'd25:out2=14'b0010010_0100100;6'd26:out2=14'b0010010_0100000;6'd27:out2=14'b0010010_0001111;6'd28:out2=14'b0010010_0000000;6'd29:out2=14'b0010010_0000100;6'd30:out2=14'b0000110_0000001;6'd31:out2=14'b0000110_1001111;6'd32:out2=14'b0000110_0010010;6'd33:out2=14'b0000110_0000110;6'd34:out2=14'b0000110_1001100;6'd35:out2=14'b0000110_0100100;6'd36:out2=14'b0000110_0100000;6'd37:out2=14'b0000110_0001111;6'd38:out2=14'b0000110_0000000;6'd39:out2=14'b0000110_0000100;6'd40:out2=14'b1001100_0000001;6'd41:out2=14'b1001100_1001111;6'd42:out2=14'b1001100_0010010;6'd43:out2=14'b1001100_0000110;6'd44:out2=14'b1001100_1001100;6'd45:out2=14'b1001100_0100100;6'd46:out2=14'b1001100_0100000;6'd47:out2=14'b1001100_0001111;6'd48:out2=14'b1001100_0000000;6'd49:out2=14'b1001100_0000100;6'd50:out2=14'b0100100_0000001;6'd51:out2=14'b0100100_1001111;6'd52:out2=14'b0100100_0010010;6'd53:out2=14'b0100100_0000110;6'd54:out2=14'b0100100_1001100;6'd55:out2=14'b0100100_0100100;6'd56:out2=14'b0100100_0100000;6'd57:out2=14'b0100100_0001111;6'd58:out2=14'b0100100_0000000;6'd59:out2=14'b0100100_0000100;default:out2=14'b1111111_1111111;endcasecase(clock_min)6'd0:out3=14'b0000001_0000001;6'd1:out3=14'b0000001_1001111;6'd2:out3=14'b0000001_0010010;6'd3:out3=14'b0000001_0000110;6'd4:out3=14'b0000001_1001100;6'd5:out3=14'b0000001_0100100;6'd6:out3=14'b0000001_0100000;6'd7:out3=14'b0000001_0001111;6'd8:out3=14'b0000001_0000000;6'd9:out3=14'b0000001_0000100;6'd10:out3=14'b1001111_0000001;6'd11:out3=14'b1001111_1001111;6'd12:out3=14'b1001111_0010010;6'd13:out3=14'b1001111_0000110;6'd14:out3=14'b1001111_1001100;6'd15:out3=14'b1001111_0100100;6'd16:out3=14'b1001111_0100000;6'd17:out3=14'b1001111_0001111;6'd18:out3=14'b1001111_0000000;6'd19:out3=14'b1001111_0000100;6'd20:out3=14'b0010010_0000001;6'd21:out3=14'b0010010_1001111;6'd22:out3=14'b0010010_0010010;6'd23:out3=14'b0010010_0000110;6'd24:out3=14'b0010010_1001100;6'd25:out3=14'b0010010_0100100;6'd26:out3=14'b0010010_0100000;6'd27:out3=14'b0010010_0001111;6'd28:out3=14'b0010010_0000000;6'd29:out3=14'b0010010_0000100;6'd30:out3=14'b0000110_0000001;6'd31:out3=14'b0000110_1001111;6'd32:out3=14'b0000110_0010010;6'd33:out3=14'b0000110_0000110;6'd34:out3=14'b0000110_1001100;6'd35:out3=14'b0000110_0100100;6'd36:out3=14'b0000110_0100000;6'd37:out3=14'b0000110_0001111;6'd38:out3=14'b0000110_0000000;6'd39:out3=14'b0000110_0000100;6'd40:out3=14'b1001100_1111110;6'd41:out3=14'b1001100_1001111;6'd42:out3=14'b1001100_0010010;6'd43:out3=14'b1001100_0000110;6'd44:out3=14'b1001100_1001100;6'd45:out3=14'b1001100_0100100;6'd46:out3=14'b1001100_0100000;6'd47:out3=14'b1001100_0001111;6'd48:out3=14'b1001100_0000000;6'd49:out3=14'b1001100_0000100;6'd50:out3=14'b0100100_1111110;6'd51:out3=14'b0100100_1001111;6'd52:out3=14'b0100100_0010010;6'd53:out3=14'b0100100_0000110;6'd54:out3=14'b0100100_1001100;6'd55:out3=14'b0100100_0100100;6'd56:out3=14'b0100100_0100000;6'd57:out3=14'b0100100_0001111;6'd58:out3=14'b0100100_0000000;6'd59:out3=14'b0100100_0000100;default:out3=14'b1000100_1000100;endcasecase(clock_sec)6'd0:out4=14'b0000001_0000001;6'd1:out4=14'b0000001_1001111;6'd2:out4=14'b0000001_0010010;6'd3:out4=14'b0000001_0000110;6'd4:out4=14'b0000001_1001100;6'd5:out4=14'b0000001_0100100;6'd6:out4=14'b0000001_0100000;6'd7:out4=14'b0000001_0001111;6'd8:out4=14'b0000001_0000000;6'd9:out4=14'b0000001_0000100;6'd10:out4=14'b1001111_0000001;6'd11:out4=14'b1001111_1001111;6'd12:out4=14'b1001111_0010010;6'd13:out4=14'b1001111_0000110;6'd14:out4=14'b1001111_1001100;6'd15:out4=14'b1001111_0100100;6'd16:out4=14'b1001111_0100000;6'd17:out4=14'b1001111_0001111;6'd18:out4=14'b1001111_0000000;6'd19:out4=14'b1001111_0000100;6'd20:out4=14'b0010010_0000001;6'd21:out4=14'b0010010_1001111;6'd22:out4=14'b0010010_0010010;6'd23:out4=14'b0010010_0000110;6'd24:out4=14'b0010010_1001100;6'd25:out4=14'b0010010_0100100;6'd26:out4=14'b0010010_0100000;6'd27:out4=14'b0010010_0001111;6'd28:out4=14'b0010010_0000000;6'd29:out4=14'b0010010_0000100;6'd30:out4=14'b0000110_0000001;6'd31:out4=14'b0000110_1001111;6'd32:out4=14'b0000110_0010010;6'd33:out4=14'b0000110_0000110;6'd34:out4=14'b0000110_1001100;6'd35:out4=14'b0000110_0100100;6'd36:out4=14'b0000110_0100000;6'd37:out4=14'b0000110_0001111;6'd38:out4=14'b0000110_0000000;6'd39:out4=14'b0000110_0000100;6'd40:out4=14'b1001100_0000001;6'd41:out4=14'b1001100_1001111;6'd42:out4=14'b1001100_0010010;6'd43:out4=14'b1001100_0000110;6'd44:out4=14'b1001100_1001100;6'd45:out4=14'b1001100_0100100;6'd46:out4=14'b1001100_0100000;6'd47:out4=14'b1001100_0001111;6'd48:out4=14'b1001100_0000000;6'd49:out4=14'b1001100_0000100;6'd50:out4=14'b0100100_0000001;6'd51:out4=14'b0100100_1001111;6'd52:out4=14'b0100100_0010010;6'd53:out4=14'b0100100_0000110;6'd54:out4=14'b0100100_1001100;6'd55:out4=14'b0100100_0100100;6'd56:out4=14'b0100100_0100000;6'd57:out4=14'b0100100_0001111;6'd58:out4=14'b0100100_0000000;6'd59:out4=14'b0100100_0000100;default:out4=14'b1000100_1000100;endcase
end//6.闹钟触发模块
reg[3:0] cs;
reg[3:0] ns;
parameter s0=4'd0,s1=4'd1,s2=4'd2,s3=4'd3,s4=4'd4,s5=4'd5,s6=4'd6,s7=4'd7,s8=4'd8,s9=4'd9;always@(posedge clk1hz)
beginif(flag==1)begincs=ns;endelse cs=s0;
endalways@(cs)
begincase(cs)s0:ns=s1;s1:ns=s2;s2:ns=s3;s3:ns=s4;s4:ns=s5;s5:ns=s6;s6:ns=s7;s7:ns=s8;s8:ns=s9;s9:ns=s0;default:ns=s0;endcaseendalways@(cs)
begincase(cs)4'd0:led=8'b00000000;   4'd1:led=8'b11111111;4'd2:led=8'b11111111;4'd3:led=8'b11100111;4'd4:led=8'b11000011;4'd5:led=8'b10000001;4'd6:led=8'b11000011;4'd7:led=8'b11100111;4'd8:led=8'b11111111;4'd9:led=8'b00000000;default:led=8'b00000000;endcase
endendmodule

效果展示


数字逻辑课程设计--电子闹钟相关推荐

  1. 电路与数字逻辑课程设计-电子钟功能

    以下内容为我电路与数字逻辑实验的实验报告内容. 实验部分采用的是logisim实现 本实验因时间问题做的比较仓促,有许多不足之处,还请谅解. 想要完整代码的可以在我的博客资源进行下载 电路与数字逻辑课 ...

  2. 数字逻辑课程设计,简单的8位模型计算机verilog设计

    简单8位模型计算机 0.摘要 1.绪论 1.1 模型计算机简介 1.2 设计主要内容 1.2.1 设计指标 1.2.2 设计思路 2.系统设计 2.1模型计算机原理 2.2 模型计算机组成 2.3 模 ...

  3. 数字逻辑课程设计-数字时钟时分秒的设计

    数字逻辑课程设计-数字时钟 ------------- 课程设计的三个简单要求 1.设计一个能显示日期.小时.分钟.秒的数字电子钟,并具有整点报时的功能. 2.由晶振电路产生1HZ标准的信号.分.秒为 ...

  4. 数字逻辑 课程设计 多功能电子钟 Quartus II

    设计方案 1.系统功能描述 (1)      系统输入:系统状态及校时.定时转换的控制信号为k.set:时钟信号clk,采用1024Hz:系统复位信号为reset.输入信号由按键产生. (2)     ...

  5. 数字逻辑课程设计-加法器设计(三位十进制+八位二进制)

    首页 寒假期间做的数字逻辑课设,现在整理出来分享给大家. 本文内容参照WUST2019届课程设计报告要求. 课设题目 三位十进制加法器,需要用三位数码管显示 八位二进制加法器,也需要用三位数码管显示 ...

  6. 数字逻辑课程设计拔河游戏机

      <数字逻辑> 课 程 设 计 报 告       题目:拔河游戏机           专业:计算机科学与技术 班级:14计科2班 组长:张钦颖(1414080901218) 成员:无 ...

  7. 数字逻辑课程设计#Quartus II

    一.设计任务及要求: 设计任务:用Verilog HDL对CPLD芯片EPM240T100C5进行编程,并增加适当的电子元件,设计一个数字电子时钟电路 要求: 1.具有"时"&qu ...

  8. 数字电子钟设计制作——数字逻辑课程设计 Verilog HDL CPLD

    目的: 1.进一步掌握数字电子技术的理论知识,培养工程设计能力和综合分析问题.解决问题的能力: 2.基本掌握常用电子电路的一般设计方法,提高电子电路的设计和实验能力: 3.掌握复杂可编程逻辑器件CPL ...

  9. 数字逻辑课程设计电子钟

    (1)     模8计数器 library ieee; use ieee.std_logic_1164.all; useieee.std_logic_unsigned.all; entity mo8 ...

  10. 数字逻辑课程设计——自动售货机

    选题:自动售货机 一.设计任务 1.允许向售货机投入1元的硬币,有4种商品可以选择(商品号从1到4号).首先,用一个键选择商品,在数码管上显示商品号和单价:然后投币,投币时,按一次键模仿投入1元硬币. ...

最新文章

  1. linux 内核参数somaxconn TCP监听队列长度
  2. python 对象真假值的实例(哪些视为False)
  3. SAP AMDP介绍 - ABAP托管的HANA数据库过程
  4. 证书是用来改善与增强,而不是代替? --如何让钱主动来找你?
  5. 详细叙述ajax的详情,ajax的配置详情、ajax的调用解释、ajax的中文乱码和ajax的表单提交(内有实例)...
  6. java 方法描述符_整理Java编程中常用的基本描述符与运算符
  7. 在线超级外链发布工具
  8. android smb windows,Android使用SMB协议共享电脑内文件方法
  9. 四种平均数的数学公式
  10. 线性代数之——矩阵乘法和逆矩阵
  11. 怎么把PDF拆分成单页?
  12. 转:免杀技术经验总结[20081215更新]
  13. Enjoying Web Development with Tapestry下载
  14. 百思不得其姐关注模块的推荐关注中 右侧TableView刷新细节
  15. 聊聊旷厂黑科技 | 手机多摄的终极奥义是“多”吗?
  16. Android手机拍照或从本地相册选取图片设置头像。适配小米、华为、7.0
  17. OpenCv基础知识(入门)
  18. JQuery实现图片点击放大
  19. Unity-Tilemap 瓦片地图
  20. 新装的windows遇到命令行脚本无法执行

热门文章

  1. c 调用GetConsoleWindow () 几个解决方法
  2. CSDN上传自己的资源赚积分教程
  3. 海康VisionMaster的使用
  4. 带领初学者学习 SQL 数据库编程视频教程(28 个视频)
  5. 10分钟部署一套开源表单系统
  6. 【教程】Android系统手机 菜鸟扫盲汇总
  7. linux 安装php7.3
  8. Java实现 LeetCode 514 自由之路
  9. 《Python核心编程》第一章练习解析
  10. 计算机操作系统--UNIX操作系统