精华内容
下载资源
问答
  • 多功能数字时钟课程设计报告,设计目的: 熟悉数字逻辑设计的基本概念和原理。 掌握计数器、定时器等逻辑芯片的工作原理及应用设计。 熟悉数字逻辑集成芯片的外围电路设计与使用。 设计任务及要求: 设计一个数字电子...
  • 《EDA电子钟多功能数字时钟课程设计(含代码)[优秀]》由会员分享,可在线阅读,更多相关《EDA电子钟多功能数字时钟课程设计(含代码)[优秀](11页珍藏版)》请在人人文库网上搜索。1、多功能数字时钟设计说明:1系统顶层...

    《EDA电子钟多功能数字时钟课程设计(含代码)[优秀]》由会员分享,可在线阅读,更多相关《EDA电子钟多功能数字时钟课程设计(含代码)[优秀](11页珍藏版)》请在人人文库网上搜索。

    1、多功能数字时钟设计说明:1系统顶层框图:各模块电路功能如下:1.秒计数器、分计数器、时计数器组成最基本的数字钟,其计数输出送7段译码电路由数码管显示.2.基准频率分频器可分频出标准的1HZ频率信号,用于秒计数的时钟信号;分频出4HZ频率信号,用于校时、校分的快速递增信号;分频出64HZ频率信号,用于对按动“校时”,“校分”按键的消除抖动.2.多功能数字钟结构框图:一、系统功能概述已完成功能1. 完成时分秒的依次显示并正确计数,利用六位数码管显示;2. 时分秒各段个位满10正确进位,秒分能做到满60向前进位,有系统时间清零功能;3. 定时器:实现整点报时,通过扬声器发出高低报时声音;4. 时间设。

    2、置,也就是手动调时功能:当认为时钟不准确时,可以分别对分时钟进行调整;5. 闹钟:实现分/时闹钟设置,在时钟到达设定时间时通过扬声器响铃.有静音模式. 待改进功能:1. 系统没有万年历功能,正在思考设计方法.2. 应添加秒表功能.二、系统组成以及系统各部分的设计1.时计数模块时计数模块就是一个2位10进制计数器,记数到23清零.VHDL的RTL描述如下:-cnt_h.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt_h isport(en,clk,clr:in std_l。

    3、ogic;dout:out std_logic_vector(7 downto 0);c:out std_logic);end cnt_h;architecture rtl of cnt_h issignal t:std_logic_vector(7 downto 0);beginprocess(en,clk,clr)variable t:std_logic_vector(7 downto 0);beginif en=1 then -异步使能if clk event and clk=1 thent:=t+1;if t(3 downto 0)=XA then -个位等于10则十位加1t(7 do。

    4、wnto 4):=t(7 downto 4)+1;t(3 downto 0):=X0; -个位清零end if;if tX23 then -大于23清零t:=X00;end if;end if;if clr=1 then -异步清零t:=X00;end if;end if;dout10 thendoutsys_en,clk=clk_h,clr=sys_rst,dout=reg_h);米:cnt_s port 米ap(en=sys_en,clk=clk_米,clr=sys_rst,dout=reg_米,c=c_米);s:cnt_s port 米ap(en=sys_en,clk=sys_clk1,。

    5、clr=SCc,dout=reg_s,c=c_s);-sled:seg米ain port 米ap(clk=clk1,reset_n=SCc,seg_data=seg_data,seg_co米=seg_co米,datain=dout(15 downto 0);-ring0:ring port 米ap(en=en_r,clk=clk_ring,clk500=sys_clk500,clk1k=sys_clk1k,beep=beep); haoin1:haoin port 米ap( SA,sys_clk64,SAc);haoin2:haoin port 米ap( SB,sys_clk64,SBc);h。

    6、aoin3:haoin port 米ap( SC,sys_clk64,SCc);haoin4:haoin port 米ap( SD,sys_clk64,SDc);NL:naoling port 米ap(beep=NL_ring,h=reg_h,米=reg_米,clk4hzh=sys_clk4_NL_h,clk4hz米=sys_clk4_NL_米,sys_en=sys_en,sys_rst=sys_rst,h_o=NL_reg_h,米_o=NL_reg_米);beep1 then 米h=1;end if;clk_ring=clk_ring_t;end process p_ring;end rtl。

    展开全文
  • 该资源基于quartusII开发 压缩包内含全部代码以及论文 eda 课程设计 多功能数字时钟 语言vhdl 功能 1.进行正常的时、分计时功能,二十四小时制计时 2.由数码管显示24h、60min 3.设置时间 4.整点报时 5.闹钟功能
  • 多功能数字钟课程设计汇本.doc
  • 本文利用 Verilog HDL 语言的设计方法设计多功能数字钟,并通过 vivado 2016.3 完 成综合实现。此程序通过下载到 FPGA 芯片后,可应用于实际的数字钟显示中,实现了基本 的计时显示(时分到分秒的切换)和设置,调整...
  • 多功能数字钟课程设计,定时控制; 仿广播电台正点报时; 报整点时数; 触摸报整点时数 附带仿真
  • library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following lines to use the declarations that are -- provided for instantiatin
  • 大二多功能数字钟课程设计报告,内容详细有借鉴意义
  • 一、课程设计的任务和目的任务:设计一台能显示“时”、“分”、“秒”的数字钟,周期为24小时;具有校时、正点报时功能。 目的:培养学生综合运用所学知识的能力,综合设计能力,培养动手能力及分析问题、解决问题...
  • 这是关于数字电路的课程设计。使用VHDL语言编写,实现了多功能数字钟
  • eda课程设计——多功能数字钟.doc还剩13页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,喜欢就下载吧,价低环保!内容要点:14图16顶层原理图见附图。感想通过这次设计,既复习了以前所学的知识,也进一步...

    eda课程设计——多功能数字钟.doc

    7c7ecad94f06a832714b1614345e8371.gif

    还剩

    13页未读,

    继续阅读

    下载文档到电脑,马上远离加班熬夜!

    亲,喜欢就下载吧,价低环保!

    内容要点:

    14图16顶层原理图见附图。感想通过这次设计,既复习了以前所学的知识,也进一步加深了对 EDA 的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在画顶层原理图时,遇到了不少问题,最大的问题就是根本没有把各个模块的 VHD 文件以及生成的器件都全部放在顶层文件的文件夹内,还有就是程序设计的时候考虑的不够全面,没有联系着各个模式以及实验板的情况来编写程序,以至于多考虑编写了译码电路而浪费了很多时间。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:在分频模块中,设定输入的时钟信号后,却只有二分频的结果,其余三个分频始终没反应。后来,在数十次的调试和老师的指点之后,才发现是因为规定的信号量范围太大且信号的初始值随机,从而不能得到所要的结果。还有的仿真图根本就不出波形,怎么调节都不管用,后来才知道原来是路径不正确,路径中不可以有汉字。真是细节决定成败啊!总的来说,这次设计的数字钟还是比较成功的,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。参考资料:1、潘松,王国栋,VHDL 实用教程〔M〕.成都: 电子科技大学出版社, 2000.(1)2、崔建明主编,电工电子 EDA 仿真技术 北京:高等教育出版社, 20043、李衍编著,EDA 技术入门与提高王行 西安:西安电子科技大学出版社, 20054、侯继红, 李向东主编,EDA 实用技术教程 北京:中国电力出版社, 20045、沈明山编著,EDA 技术及可编程器件应用实训 北京:科学出版社, 20046、侯伯亨等,VHDL 硬件描述语言与数字逻辑电路设计 西安:西安电子科技大学出版社,19977、辛春艳编著,VHDL 硬件描述语言 北京:国防工业出版社,200213min1[3..0]min0[3..0]sec1[3..0]sec0[3..0]hh[3..0]hl[3..0]mh[3..0]ml[3..0]hou0[3..0]hou1[3..0]in_500in_1000qvoiceinst图15library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity voice is port (min1,min0,sec1,sec0,hh,hl,mh,ml,hou0,hou1:in std_logic_vector(3 downto 0);in_500,in_1000:in std_logic;q:out std_logic);end voice;architecture one of voice isbeginprocess(min1,min0,sec1,sec0)begin--整点报时部分if min1="0101" and min0="1001" and sec1="0101" thenif sec0="0001" or sec0="0011" or sec0="0101" or sec0="0111" then q<=in_500;elsif sec1="0101" and sec0="1001" then q<=in_1000;else q<='0'; end if;else q<='0';end if;--闹时部分if min1=mh and min0=ml and hou1=hh and hou0=hl then q<=in_1000;end if;end process;end one;仿真波形如下图16:12仿真波形

    发表评论

    暂无评论,赶快抢占沙发吧。

    展开全文
  • 用HDL设计一个多功能数字钟,包含以下主要功能: 1.计时及校时,时间可以24小时制或12小时制显示 2.日历:显示年月日星期,及设定设定功能 3.跑表:启动/停止/保持显示/清除 4.闹钟:设定闹钟时间,整点提示
  • 1正常的计时功能(采用试验箱上的1HZ信号源计时,能完成时分秒的正常计时含数码管显示时、分、秒) 2 计时调整(实现时分位上的手动调整) 3 整点报时(整点到前5秒开始报时,每秒一次,五次后停止) 4 闹钟(设定...
  • 数字电路课程设计,包好各个模块的源码,时钟的基本功能:时钟设计有时、分、秒计数显示的功能,小时为24进制,分钟和秒为60进制以24小时循环计时;有校时功能,可以分别对时和分进行单独校时;还有整点报时功能
  • 自动计时+手动校时+倒计时
  • (1)设计一个数字钟。要求用六位数码管显示时间,格式为00:00:00。 (2)具有60进制和24进制(或12进制)计数功能,秒、分为60进制计数,时为24进制(或12进制)计数。 (3)有译码、七段数码显示功能,能显示...
  • 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...

    天津工业大学
    2021-2022学年第一学期
    数字系统设计(FPGA)
    课程设计报告
    题 目: 多功能数字钟
    班 级: 电科1901
    学 号: 1910940107
    姓 名: 李天皓

    一、内容要求:
    实现多功能数字钟,具备下列功能:
    1、数字钟:能计时,实现小时、分钟、秒的显示;
    2、数字跑表:精度至0.01秒 比如显示12.97秒;
    3、闹钟: 可以设定闹钟,用试验箱上的蜂鸣器作为闹铃;
    4、调时:可以对时间进行设定;
    5、日期设定:能设定日期并显示当前日期;
    6、除调时状态,其他状态均不应影响系统计时。
    二、设计方案与设计思路:
    整体程序通过例化10个模块后整合形成多功能数字时钟功能,各模块名称以及各模块的作用分别为:
    1、总控制模块:用于控制调整时分秒、年月日以及闹钟的模式选择,以及控制三个add按键调整的对象。
    2、分频器模块:用于分频得到1Hz计时时钟。
    3、时分秒调整模块:处于计时器时分秒调整设置状态时,对应控制模块的三个add按键可以实现对计时器的时分秒数值的设置,并且有按键可以实现对时分秒模块进行设置数值的载入。
    4、时分秒变量处理(计时)模块:用于计时,根据分频后的时钟每隔一秒使秒变量加一,满六十向分变量进一,以此类推实现分钟以及小时的进位。
    5、年月日调整模块:处于日期年月日调整设置状态时,对应控制模块的三个add按键可以实现对年月日数值的设置,并且有按键可以实现对年月日变量处理模块进行设置数值的载入。
    6、年月日变量处理(计日期)模块:用于计日期,根据时分秒变量处理模块的小时值进位进行自加,小时满二十四向日变量进一,以此类推实现日以及年月的进位。
    7、闹钟设置及使能模块:用于设置闹钟的时分秒数值,处于闹钟设置状态时,对应控制模块的三个add按键实现对闹钟的时分秒数值的设置,并带有可关闭开启闹钟的开关。
    8、数字跑表模块:精度至0.01秒,其中包含了100Hz时钟分频模块,且可通过按键进行清零操作。
    9、数码管显示控制模块:可以选择性地控制数码管显示的三个不同模式的内容。
    10、可视化数码管显示模块:使用六个带译码器的静态数码管实现小时、分钟、秒或日期年、月、日或闹钟时、分、秒的显示以及数字跑表精度至0.01秒的跑秒显示。以上模块例化后可得RTL原理图如下:

    三、各模块代码及仿真结果:
    //总控制模块
    module kongzhi(
    input add2,
    input add1,
    input add0,
    input k5,
    input k6,
    input k7,//控制三个add按键调整的对象
    output reg sec_add,
    output reg min_add,
    output reg hour_add,
    output reg day_add,
    output reg mon_add,
    output reg year_add,
    output reg sec_beemp_add,
    output reg min_beemp_add,
    output reg hour_beemp_add
    );
    always @(*)
    begin
    case ({k5,k6,k7})
    3:{year_add,mon_add,day_add}={add2,add1,add0};//选择的是调日期模式,add三个按键可增加年月日
    4:{hour_beemp_add,min_beemp_add,sec_beemp_add}={add2,add1,add0};//选择的是调闹钟模式,add三个按键可增加闹钟值的时分秒
    default:{hour_add,min_add,sec_add}={add2,add1,add0};//选择的是调时模式,add三个按键可增加计时器的时分秒
    endcase
    end
    endmodule

    上图为总控制模块不分频的仿真结果: 使K5 K6 K7分别为0 0 1,选择输出调时数值的结果,即:{hour_add,min_add,sec_add}={add2,add1,add0};可见输入随机信号给三个add时,各add对应的输出数组赋值结果是相匹配的。

    //分频器(1Hz)
    module fre_div(
    input clk_in,
    output reg clk,//输出的分频后的时钟
    output reg clk_disp
    );
    parameter N=25000000;
    integer cnt;
    always @(posedge clk_in)
    begin //分频出1Hz时钟
    if(cnt == N-1)
    begin
    clk = ~clk; //分频后的时钟取反
    clk_disp=clk;
    cnt = 0;
    end
    else
    begin //时钟更新
    cnt = cnt + 1;
    end
    end
    endmodule

    上图为6分频结果。

    上图为50M分频结果,由于仿真时钟波形不够显示50000000次时钟波形,所以分频结果未显示出。
    //计数器时分秒变量处理模块
    module sfm(
    input clk,
    input load1, //计数器开始工作标志(1时输出有效)
    input [7:0] sec_in,
    input [7:0] min_in,
    input [7:0] hour_in,
    output reg[7:0] sec_out,
    output reg[7:0] min_out,
    output reg[7:0] hour_out,
    output reg clk_day //满24小时后加一天的变量存储
    );
    reg clk_min,clk_hour;//分钟和小时的进位标志位
    //输出秒的值
    always@(posedge load1 or posedge clk)
    begin
    if(load1)
    begin
    sec_out=sec_in;//开始输出
    end
    else if(sec_out8’d59)
    begin
    sec_out=0;
    clk_min=1;//分钟进位标志位置1
    end
    else
    begin
    sec_out=sec_out+1;//秒自加1
    clk_min=0;
    end
    end
    //min_out
    always@(posedge load1 or posedge clk_min)
    begin
    if(load1)
    begin
    min_out=min_in;//开始输出
    end
    else if(min_out
    8’d59)
    begin
    min_out=0;
    clk_hour=1;
    end
    else
    begin
    min_out=min_out+1;
    clk_hour=0;
    end
    end
    //hour_out
    always@(posedge load1 or posedge clk_hour)
    begin
    if(load1)
    begin
    hour_out=hour_in;//开始输出
    end
    else if(hour_out==8’d23)
    begin
    hour_out=0;
    clk_day=1;
    end
    else
    begin
    hour_out=hour_out+1;
    clk_day=0;
    end
    end
    endmodule

    上图为6分频仿真的结果。
    //计数器时分秒设置模块
    module sfmsz(
    input sec_add,
    input min_add,
    input hour_add,//计数器时分秒增加按键
    output reg[7:0] sec_out,
    output reg[7:0] min_out,
    output reg[7:0] hour_out//计数器时分秒设置后的输出
    );
    initial
    begin
    sec_out='d0;
    min_out='d0;
    hour_out='d0;
    end
    //设置秒
    always@(posedge sec_add)//为1时秒的输出+1
    begin
    begin
    if(sec_out=='d59)
    begin
    sec_out=0;
    end
    else
    begin
    sec_out=sec_out+1;
    end
    end
    end
    //设置分
    always@(posedge min_add)
    begin
    begin
    if(min_out=='d59)
    begin
    min_out=0;
    end
    else
    begin
    min_out=min_out+1;
    end
    end
    end
    //设置小时
    always@(posedge hour_add)
    begin
    begin
    if(hour_out=='d23)
    begin
    hour_out=0;
    end
    else
    begin
    hour_out=hour_out+1;
    end
    end
    end
    endmodule

    上图为不分频情况下仿真设置小时变量时的结果(分秒变量在相应add按键按下时波形与小时相同,原理一致)。
    //年月日变量处理模块
    module nyr(
    input clk_day,
    input load2,//为1时开始输出年月日
    input [7:0] day_in,
    input [7:0] mon_in,
    input [7:0] year_in,
    output reg[7:0] day_out,
    output reg[7:0] mon_out,
    output reg[7:0] year_out
    );
    reg clk_mon,clk_year;//满一月或者满一年的进位标志位
    //输出日
    always@(posedge load2 or posedge clk_day)
    begin
    if(load2)
    begin
    day_out=day_in;//开始输出
    end
    else if(day_out8’d30)
    begin
    day_out=0;
    clk_mon=1;
    end
    else
    begin
    day_out=day_out+1;
    clk_mon=0;
    end
    end
    //输出月
    always@(posedge load2 or posedge
    clk_mon)
    begin
    if(load2)
    begin
    mon_out=mon_in;//开始输出
    end
    else if(mon_out
    8’d12)
    begin
    mon_out=0;
    clk_year=1;
    end
    else
    begin
    mon_out=mon_out+1;
    clk_year=0;
    end
    end
    //输出年
    always@(posedge load2 or posedge
    clk_year)
    begin
    if(load2)
    begin
    year_out=year_in;//开始输出
    end
    else if(year_out==8’d22)
    begin
    year_out=0;
    end
    else
    begin
    year_out=year_out+1;
    end
    end
    endmodule

    上图为年月日变量处理模块不分频时的仿真结果。
    //年月日设置变量模块
    module nyrsz(
    input day_add,
    input mon_add,
    input year_add,
    output reg[7:0] day_out,
    output reg[7:0] mon_out,
    output reg[7:0] year_out
    );
    initial
    begin
    day_out='d0;
    mon_out='d0;
    year_out='d0;
    end
    //设置日
    always@(posedge day_add)//为1时日的输出+1
    begin
    begin
    if(day_out=='d30)
    begin
    day_out=0;
    end
    else
    begin
    day_out=day_out+1;
    end
    end
    end
    //设置月
    always@(posedge mon_add)
    begin
    begin
    if(mon_out=='d12)
    begin
    mon_out=0;
    end
    else
    begin
    mon_out=mon_out+1;
    end
    end
    end
    //设置年
    always@(posedge year_add)
    begin
    begin
    if(year_out=='d22)
    begin
    year_out=0;
    end
    else
    begin
    year_out=year_out+1;
    end
    end
    end
    endmodule

    上图为年月日变量设置模块不分频时的仿真结果。

    //闹钟时分秒设置模块,到达设定值后蜂鸣器响
    module sfm_beemp(
    input k3,
    input [7:0] sec_in,
    input [7:0] min_in,
    input [7:0] hour_in,//检测时分秒的输入值
    input sec_add,
    input min_add,
    input hour_add,//设置闹钟时分秒的增加按键
    output reg[7:0] sec_out,
    output reg[7:0] min_out,
    output reg[7:0] hour_out,//设置的时分秒的闹钟值
    output reg beemp//蜂鸣器输出
    );
    initial
    begin//先设置闹钟值为000
    sec_out='d0;
    min_out='d0;
    hour_out='d0;
    end
    always@( hour_in or min_in or sec_in or k3 )
    begin
    if (~k3)//手动控制闹钟响
    beemp=1;
    else
    begin
    if({hour_in,min_in,sec_in}{hour_out,min_out,sec_out})//检测到的时分秒对于设置好的闹钟值时分秒,闹钟响
    beemp=0;
    else
    beemp=beemp;
    end
    end
    //设置闹钟值的秒
    always@(posedge sec_add)//秒按键使能
    begin
    begin
    if(sec_out
    ’d59)
    begin
    sec_out=0;
    end
    else
    begin
    sec_out=sec_out+1;
    end
    end
    end
    //设置闹钟值的分
    always@(posedge min_add)
    begin
    begin
    if(min_out=='d59)
    begin
    min_out=0;
    end
    else
    begin
    min_out=min_out+1;
    end
    end
    end
    //设置闹钟值的小时
    always@(posedge hour_add)
    begin
    begin
    if(hour_out=='d23)
    begin
    hour_out=0;
    end
    else
    begin
    hour_out=hour_out+1;
    end
    end
    end
    endmodule

    上图为闹钟时分秒值设置模块设置闹钟为0点0分0秒时,不使能、不分频的仿真结果。(三个add刚开始便满足0时0分0秒条件,此时beemp=0,闹钟不响)

    上图为闹钟时分秒值设置模块设置闹钟为0点0分0秒时,使能、不分频的仿真结果。(三个add刚开始便满足0时0分0秒条件,此时beemp=1,闹钟响)

    //数码管显示内容的选择控制模块
    module kongzhi_disp(
    input k5,
    input k6,
    input k7,//控制数码管显示年月日还是计时器时分秒还是闹钟值时分秒
    input [7:0] hour,//时分秒显示的值
    input [7:0] min,
    input [7:0] sec,
    input [7:0] hour_set,//时分秒设置的值
    input [7:0] min_set,
    input [7:0] sec_set,
    input [7:0] year,//年月日显示的值
    input [7:0] mon,
    input [7:0] day,
    input [7:0] year_set,//年月日设置的值
    input [7:0] mon_set,
    input [7:0] day_set,
    input [7:0] hour_beemp,//闹钟设置的值
    input [7:0] min_beemp,
    input [7:0] sec_beemp,
    input [7:0] jsg,
    input [7:0] jsd,
    output reg[7:0] count2,
    output reg[7:0] count1,
    output reg[7:0] count0
    );
    always @(*)
    case({k5,k6,k7})//不同的值显示内容不一样
    0:{count2,count1,count0}={hour,min,sec};
    1:{count2,count1,count0}={hour_set,min_set,sec_set};
    2:{count2,count1,count0}={year,mon,day};
    3:{count2,count1,count0}={year_set,mon_set,day_set};
    4:{count2,count1,count0}={hour_beemp,min_beemp,sec_beemp};
    6:{count1,count0}={jsg,jsd};//显示跑表计数高低位
    default:{count2,count1,count0}={hour,min,sec};
    endcase
    endmodule

    上图为数码管显示内容的选择控制模块不分频的仿真结果: 使K5 K6 K7分别为0 1 0,选择输出年月日,即:{count2,count1,count0}={year,mon,day};可见输出数组赋值结果是相匹配的。

    //数字秒表及其单独的分频器模块
    module mb(clk_in,count3,count4,load3);
    input clk_in,load3;
    output reg [6:0]count3;
    output reg [6:0]count4;
    reg fp;
    reg [24:0]TIM;
    reg jw;
    always @(posedge clk_in)//数字跑表单独分频
    begin
    if(TIM500000)
    begin
    TIM=0;
    fp=~fp;
    end
    else
    begin
    TIM=TIM+1;
    fp=fp;
    end
    end
    always @(posedge fp or posedge load3)
    begin
    if(load3)//为1时数字跑表值为0
    begin
    count3=0;
    end
    else if(count3
    8’d59)
    begin
    count3=0;
    jw=1;
    end
    else
    begin
    count3=count3+1;
    jw=0;
    end
    end
    always @(posedge jw or posedge load3)
    begin
    if(load3)//为1时数字跑表值为0
    begin
    count4=0;
    end
    else if(count4==8’d59)
    begin
    count4=0;
    end
    else
    begin
    count4=count4+1;
    end
    end
    endmodule

    上图为数字跑表级其分频模块在6分频情况下的仿真结果。(100Hz分频仿真时钟波形不够显示500000次时钟波形无法显示,故采用6分频实现)

    //数码管显示模块
    module disp(
    input [7:0] count,//存放显示字符真值
    output reg[3:0] smgL,
    output reg[3:0] smgH
    );
    always@( count )
    begin
    case( count%10 )//显示个位
    4’h0 : smgL = 4’h0 ;
    4’h1 : smgL = 4’h1 ;
    4’h2 : smgL = 4’h2 ;
    4’h3 : smgL = 4’h3 ;
    4’h4 : smgL = 4’h4 ;
    4’h5 : smgL = 4’h5 ;
    4’h6 : smgL = 4’h6 ;
    4’h7 : smgL = 4’h7 ;
    4’h8 : smgL = 4’h8 ;
    4’h9 : smgL = 4’h9 ;
    default:smgL = 4’h0 ;
    endcase
    case( count/10)//显示十位
    4’h0 : smgH = 4’h0 ;
    4’h1 : smgH = 4’h1 ;
    4’h2 : smgH = 4’h2 ;
    4’h3 : smgH = 4’h3 ;
    4’h4 : smgH = 4’h4 ;
    4’h5 : smgH = 4’h5 ;
    4’h6 : smgH = 4’h6 ;
    4’h7 : smgH = 4’h7 ;
    4’h8 : smgH = 4’h8 ;
    4’h9 : smgH = 4’h9 ;
    default:smgL = 4’h0 ;
    endcase
    end
    endmodule
    //数字跑表单独显示
    module dispczw(count,smg1,smg2);
    input [6:0] count;
    output reg[7:0] smg1,smg2;
    always@( count )
    begin
    case( count%10 )
    4’h0 : smg1 = 8’hc0 ;
    4’h1 : smg1 = 8’hf9 ;
    4’h2 : smg1 = 8’ha4 ;
    4’h3 : smg1 = 8’hb0 ;
    4’h4 : smg1 = 8’h99 ;
    4’h5 : smg1 = 8’h92 ;
    4’h6 : smg1 = 8’h82 ;
    4’h7 : smg1 = 8’hf8 ;
    4’h8 : smg1 = 8’h80 ;
    4’h9 : smg1 = 8’h90 ;
    endcase
    case( count/10)
    4’h0 : smg2 = 8’h40 ;
    4’h1 : smg2 = 8’h79 ;
    4’h2 : smg2 = 8’h24 ;
    4’h3 : smg2 = 8’h30 ;
    4’h4 : smg2 = 8’h19 ;
    4’h5 : smg2 = 8’h12 ;
    4’h6 : smg2 = 8’h02 ;
    4’h7 : smg2 = 8’h78 ;
    4’h8 : smg2 = 8’h00 ;
    4’h9 : smg2 = 8’h10 ;
    endcase
    end
    endmodule

    上图为数码管显示模块在赋给相应随机真值情况下的仿真结果。可见数码管高低四位与所赋真值相吻合。

    //最终顶层例化程序
    module FPGACLOCK(clk_in,clk_disp,k5,k6,k7,add2,add1,add0,beemp,load1,load2,load3,kstart_beemp,seg0,seg1,seg2,seg3,seg4,seg5);//顶层程序
    input clk_in,add2,add1,add0,kstart_beemp;//时钟输入 设置时分秒(年月日,闹钟时分秒)的选择位 手动
    input k5,k6,k7;//区别时分秒、年月日、闹钟设置的模式位选段
    input load1,load2,load3;//三种模式的选择触发按键
    output clk_disp,beemp;//显示用的时钟和蜂鸣器
    output [3:0]seg0;
    output [3:0]seg1;//2位数码管1
    output [3:0]seg2;
    output [3:0]seg3;//2位数码管2
    output [3:0]seg4;
    output [3:0]seg5;//2位数码管3
    //连线型变量,用于模块间连线传输相应变量数据
    wire clk,sec_add,min_add,hour_add,day_add,mon_add,year_add,sec_beemp_add,min_beemp_add,hour_beeemp_add;
    wire [7:0]sec_set;
    wire [7:0]min_set;
    wire [7:0]hour_set;
    wire [7:0]day_set;
    wire [7:0]mon_set;
    wire [7:0]year_set;
    wire [7:0]sec;
    wire [7:0]min;
    wire [7:0]hour;
    wire [7:0]day;
    wire [7:0]mon;
    wire [7:0]year;
    wire [7:0]hour_beemp;
    wire [7:0]min_beemp;
    wire [7:0]sec_beemp;
    wire [7:0]count0;
    wire [7:0]count1;
    wire [7:0]count2;
    wire [7:0]count3;
    wire [7:0]count4;
    fre_div u0 (clk_in,clk,clk_disp);//分频器例化,敏感参数列表输入输出一一对应,下方以此类推
    sfm u1 (clk,load1,sec_set,min_set,hour_set,sec,min,hour,clk_day);
    sfmsz u2 (sec_add,min_add,hour_add,sec_set,min_set,hour_set);
    nyr u3 (clk_day,load2,day_set,mon_set,year_set,day,mon,year);
    nyrsz u4 (day_add,mon_add,year_add,day_set,mon_set,year_set);
    sfm_beemp u5 (kstart_beemp,sec,min,hour,sec_beemp_add,min_beemp_add,hour_beeemp_add,sec_beemp,min_beemp,hour_beemp,beemp);
    kongzhi_disp u6 (k5,k6,k7,hour,min,sec,hour_set,min_set,sec_set,year,mon,day,year_set,mon_set,day_set,hour_beemp,min_beemp,sec_beemp,count4,count3,count2,count1,count0);
    kongzhi u7 (add2,add1,add0,k5,k6,k7,sec_add,min_add,hour_add,day_add,mon_add,year_add,sec_beemp_add,min_beemp_add,hour_beeemp_add);
    disp u8 (count2,seg4,seg5);
    disp u9 (count1,seg2,seg3);
    disp u10 (count0,seg0,seg1);
    mb u11 (clk_in,count3,count4,load3);
    endmodule

    展开全文
  • 摘要实验报告多功能数字钟姓 名: 学 号: 联系方式: 成 绩:在当代,随着人类社会进入到高度发达的信息化社会。信息技术的发展起着越来越大的作用,它几乎涉及到我们日常生活的每个领域,可以说要衡量一个当今社会...

    《EDA课程设计》

    1.摘要

    实验报告

    多功能数字钟

    姓 名: 学 号: 联系方式: 成 绩:

    在当代,随着人类社会进入到高度发达的信息化社会。信息技术的发展起着越来越大的作用,它几乎涉及到我们日常生活的每个领域,可以说要衡量一个当今社会的发展文明程度信息化技术的发展程度是一个非常重要的指标。众所周知,信息化社会的发展离不开电子信息技术产品的开发、产品品质的提高和改善。电子信息产品随着科学技术的进步,其电子器件和设计方法更新、换代的速度快的惊人,几乎是日新月异。然而实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。

    由于基于PLD的EDA技术的发展和应用领域的扩大和深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益提高。

    EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言在EDA平台上设计一个电子数字钟,它的计时为24小时小时制,显示满刻度为23时59分59秒,另外还具有校时功能和闹钟功能。总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块,时、分、秒计数和校时程序模块、数据选择器程序模块、显示程序模块和例化程序模块。并且使用QUARTUS II软件进行电路波形仿真,下载到EDA实验箱进行验证。

    作为现在的大学生应熟练掌握这门技术,为以后的发展打下良好的基础,本实验设计是应用QuartusII环境及VHDL语言设计一个时间可调的数字时钟。使自己熟练使用QuartusII环境来进行设计,掌握VHDL语言的设计方法。注重理论与实践之间的不同,从而培养自己的实践能力!

    关键字:EDA,数字钟,QUARTUS II,VHDL,PLD,模块化,分频,校时,仿真, 2.概括

    多功能数字钟应该具有的功能有:显示时-分-秒、整点报时、小时和分钟可调等基本功能。首先要知道钟表的工作机理,整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,但是需要注意的是,小时的范围是从0~23时。

    在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD码)显示个位,对于小时因为它的范围是从0~23,所以可以用一个2位的二进制码显示十位,用4位二进制码(BCD码)显示个位。

    实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描确需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟进行分频。

    对于整点报时功能,用户可以根据系统的硬件结构和自身的具体要求来设计。

    本验设计的是当进行整点的倒计时5秒时,让LED来闪烁进行整点报时的提示。

    要求显示格式为 小时-分钟-秒钟,整点报时,报时时间为5秒,即从整点前5秒钟开始进行报时提示,LED开始闪烁,过整点后,停止闪烁。系统时钟选择时钟模块的10KHz,要得到1Hz时钟信号,必须对系统时钟进行10,000次分频。调整时间的的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调整分钟,每按下一次,分钟增加一分钟。另外用S12按键作为系统时钟复位,复位后全部显示00-00-00。 3.总体原理

    3.1功能概括

    本实验是通过编程实现多功能的数字时钟,其功能包含了基本的时间显示部分(由00—00—00至23—59—59)的基本显示部分;同时期附带有清零(RES)按键功能(这里用F12表示),当 按下F12是所有的数字清零(00—00—00);此外还有整点报时功能模块,当时间还有5秒到达正点的时候通过指示灯的闪烁以及蜂鸣器的发生实现报时的功能;此外,还具有小时,分钟的调节功能(这里用S1,S2分别表示小时和分钟的调节),当按下S1一次的时候小时显示的数字增加‘1’(直至23后清零00),当按下S2一次的时候分钟上面的数字增加‘1’(直至59后归零00);

    3.2功能结构图

    a.本实验是采用功能分块的模式,通过不同的功能模块的组合,最终实验本实验的功能要求。

    时显示器 分显示器 秒显示器 时译码器 分译码器 秒译码器 报时/闹钟

    时计数器 分计数器 秒计数器 1Hz 校时电路 5HZ

    振荡器 分频器 图1 数字钟的系统框图

    展开全文
  • 使用Verilog实现的多功能数字钟(时钟,闹钟(设置、闹钟音乐)、整点报时、秒表、数码管显示),包含所有的rtl主体代码,和testbench仿真代码。以及使用的fpga驱动beep演奏音乐的原理
  • (1)设计一个能自动计时的电子,利用数码管分别显示当前的小时,分钟, 秒。 (2)可以通过按键对当前小时、分钟进行调整设置。 (3)在调节当前时间的模式下,短按可实现加法,当长按调节分钟的按键两 秒以上时...
  • 多功能数字钟设计

    千次阅读 多人点赞 2020-11-13 21:32:33
    多功能数字钟设计 信息工程学院的电子技术综合实训 注:本实验报告,仅供参考,其中资料文献本文后面有注明来处,侵权删。 文章目录多功能数字钟设计前言一、设计目的和要求二、选题的目的和意义1.引入库2.读入...
  • 数电数字钟课程设计,含实验报告和仿真源文件.ms,可以实现数字钟的功能
  • EDA课程设计报告-- 数字钟(设计报告+仿真文件)
  • FPGA使用verilog硬件语言编写的数字时钟,包含功能:整点提示,校准时钟,六位显示,内部还含有测试文件,使用的时modelsim仿真软件进行仿真。
  • 数电课程设计报告(数字钟的设计)
  • 能进行整点报时并有闹钟功能,闹钟时间可以设置个; 系统关机后时间能继续运行,下次开机时间应准确; 查阅资料,学习STM32F4内部温度传感器的配置,采集、计算片内温度并显示在LCD上; 其他功能,自由发挥扩展。
  • author:komdec time:20180701 内容:论文、原理图,电路设计和MS11源文件 基于multisim仿真软件的数字电路设计:篮球比赛计时器的设计多功能数字钟设计
  • 数字逻辑 课程设计 多功能电子 Quartus II

    万次阅读 多人点赞 2014-09-27 15:00:31
    设计方案 1.系统功能描述 (1) 系统输入:系统状态及校时、定时转换的控制信号为k、set;...(3) 多功能数字钟控制器的状态图如图所示 图中:S0:显示计时器时间 T0:显示闹铃时间  S1:调计

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,369
精华内容 2,147
关键字:

多功能数字钟课程设计