欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数字时钟的VHDL设计.docx

    • 资源ID:5968287       资源大小:257.87KB        全文页数:14页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数字时钟的VHDL设计.docx

    1、数字时钟的VHDL设计数字时钟的VHDL设计(总10页)数字系统设计与硬件描述语言期末考试作业 题目: 数字时钟的VHDL设计 学院: 信息学院 专业: 物联网工程 学号: 86 姓名: 赵洋 2013-11-06一、选题设计描述1.功能介绍设计一台能显示时、分、秒的数字钟。由时钟信号经分频产生秒脉冲;计时计数器用24进制计时电路;可手动校时,能分别进行时、分的校正;具有整点报时功能。2.算法简介 设计原理 1HZ图1 数字钟的系统框图该系统由振荡器、分频器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路等组成。振荡器和分频器产生整个系统的时基信号,它直接决定计时系统的精度。“秒

    2、计数器”采用六十进制计数器,每累计60秒向“分计数器”进位;“分计数器”采用六十进制计数器,每累计60分向“时计数器”进位;“时计数器”采用二十四进制计数器,按照“24翻1”规律计数。“时、分、秒”计数器的输出经译码器送显示器显示。校时电路用来当计时出现误差时对“时、分、秒”进行校对调整。 设计过程1. 设计思路时钟脉冲信号作为数字钟的时间基准,再经分频器输出标准秒脉冲。秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器是计满24后,系统自动复位重新开始计数。计数器的输出经译码电路后送到显示器显示。可以用校时电路进行校时。2. 数字钟的设计方案 数字钟的设计包括编

    3、码模块、分频模块、秒计时模块、分计时模块、小时计时模块和报时模块。该数字钟可以实现3个功能:计时功能、报时功能和设置时间功能。. 编码模块编码模块主要是对时(sethour)、分(setmin)、秒(setsec)的设置输入。. 分频模块在数字钟的设计中,外部输入时钟信号clk1的频率为8hz,其分频后的频率为clk,使其分频结果为1hz,用来提供给秒计时模块、分计时模块、小时计时模块。. 秒计时模块将“秒计时脉冲”clk接信号源单元的1HZ脉冲信号,此时秒显示将从00计时到59,然后回到00,重新计时。在秒位进行计时的过程中。秒计时器是由一个60进制的计数器构成的,具有置数和计数功能。其中r

    4、st为置数信号,当rst为1时,秒计时器置数。clk为驱动秒计时器的时钟,sec1、sec0为秒计时器的高位和低位输出。. 分计时模块分计时电路:将“分计时脉冲”clk接信号源单元的1HZ脉冲信号,此时分显示将从00计时到59,然后回到00,重新计时。在分位进行计时的过程中。分计时器是由一个60进制的计数器构成的,具有置数和计数功能。其中rst为置数信号,当rst为1时,分计时器置数。min1、min0为分计时器的高位和低位输出。. 小时计时模块将“小时计时脉冲”clk接信号源单元的1HZ脉冲信号,此时小时显示将从00计时到24,然后回到00,重新计时。时计时器是由一个24进制的计数器构成的,

    5、具有置数和计数功能。其中的rst为置数信号,当rst为1时,时计时器置数。hr1、hr0为时计时器的高位和低位输出。 报时模块当分位到59时,秒位计到51秒、53秒、55秒、57秒、59秒时报时一次,而后小时位加1。二、程序源代码及说明源程序数字钟整体程序整个程序分为五个部分,分别为分频部分、校时部分、秒部分、分部分、小时部分。VHDL程序如下:library IEEE;use clock_24 isPort ( clk1 : in STD_LOGIC;-时钟 rst : in STD_LOGIC;-复位,高有效 sethr : in STD_LOGIC;-小时设置,增加1 setmin :

    6、in STD_LOGIC;-分钟设置 setsec : in STD_LOGIC;-秒设置 hr0 : out STD_LOGIC_VECTOR(3 downto 0);-小时个位 hr1 : out STD_LOGIC_VECTOR(3 downto 0);-小时十位 min0 : out STD_LOGIC_VECTOR(3 downto 0);-分钟个位 min1 : out STD_LOGIC_VECTOR(3 downto 0);-分钟十位 sec0 : out STD_LOGIC_VECTOR(3 downto 0);-秒个位 sec1 : out STD_LOGIC_VECTOR

    7、(3 downto 0);-秒十位 speak : out STD_LOGIC-报时输出 );end clock_24;architecture rtl of clock_24 issignal co_sec0: STD_LOGIC;-秒个位计数溢出标示signal co_sec1: STD_LOGIC;signal co_min0: STD_LOGIC;signal co_min1: STD_LOGIC;signal co_hr0: STD_LOGIC;signal cnt_sec0: STD_LOGIC_VECTOR(3 downto 0);-秒个位计数器signal cnt_sec1:

    8、STD_LOGIC_VECTOR(3 downto 0);signal cnt_min0: STD_LOGIC_VECTOR(3 downto 0);signal cnt_min1: STD_LOGIC_VECTOR(3 downto 0);signal cnt_hr0: STD_LOGIC_VECTOR(3 downto 0);signal cnt_hr1: STD_LOGIC_VECTOR(3 downto 0);signal state_hour:STD_LOGIC_VECTOR(1 downto 0);-小时个位当前状态,当state_hour=00,01时,cnt_hr0计数从0到9

    9、,当state_hour=10时,cnt_hr0计算从0到3.begincounter_second0:-秒个位计数器process(clk1,rst,setsec)begin if(rst=1) then-异步复位 cnt_sec0=1000) then cnt_sec0=cnt_sec0-1000; else cnt_sec0=cnt_sec0+0010; end if; else if(cnt_sec0=1001)then-如果cnt_sec0计数到9,则将cnt_sec0=0; cnt_sec0=0000; else-否则将cnt_sec0增加1; cnt_sec0=cnt_sec0+

    10、0001;-否则计数器加1 end if; end if; if(cnt_sec0=1000) then-产生进位标志 co_sec0=1; else co_sec0=0; end if; end if;end process counter_second0;counter_second1:-秒十位计数器process(clk1,rst)begin if(rst=1) then cnt_sec1=0000; elsif(clk1event and clk1=1)then if(co_sec0=1)then if(cnt_sec1=0101)then-如果溢出则置0 cnt_sec1=0000;

    11、 else cnt_sec1=cnt_sec1+0001;-否则计数器加1 end if; end if; if(cnt_sec0=1000 and cnt_sec1=0101)then-产生进位标志 co_sec1=1; else co_sec1=0; end if; end if;end process counter_second1;counter_miniute0:-分个位计数器process(clk1,rst,setmin)begin if(rst=1) then cnt_min0=0000; elsif(clk1event and clk1=1)then if(setmin=1)t

    12、hen cnt_min0=cnt_min0+0001; end if; if (co_sec1=1)then if(cnt_min0=1001)then-如果溢出则置0 cnt_min0=0000; else cnt_min0=cnt_min0+0001;-否则计数器加1 end if; end if; if(cnt_min0=1001 and cnt_sec0=1000 and cnt_sec1=0101)then-产生进位标志 co_min0=1; else co_min0=0; end if; end if;end process counter_miniute0;counter_min

    13、iute1:-分十位计数器process(clk1,rst)begin if(rst=1) then cnt_min1=0000; elsif(clk1event and clk1=1)then if(co_min0=1)then if(cnt_min1=0101)then-如果溢出则置0 cnt_min1=0000; else cnt_min1=cnt_min1+0001;-否则计数器加1 end if; end if; if(cnt_min1=0101 and cnt_min0=1001 and cnt_sec0=1000 and cnt_sec1=0101)then-产生进位标志 co_

    14、min1=1; else co_min1=0; end if; end if;end process counter_miniute1;counter_hour0:-小时个位计数器process(clk1,rst,sethr)begin if(rst=1) then cnt_hr0=0000; state_hour=00; elsif(clk1event and clk1=1)then if(sethr=1)then cnt_hr0-如果当前是00,cnt_hr0的计数范围从09 if (co_min1=1)then if(cnt_hr0=1001)then-如果溢出则置0 cnt_hr0=0

    15、000; state_hour=01; else cnt_hr0=cnt_hr0+0001;-否则计数器加1 end if; end if; if(cnt_hr0=1001 and cnt_min1=0101 and cnt_min0=1001 and cnt_sec0=1000 and cnt_sec1=0101)then co_hr0=1;-产生进位标志 else co_hr0-如果当前是01,cnt_hr0的计数范围从09 if (co_min1=1)then if(cnt_hr0=1001)then-如果溢出则置0 cnt_hr0=0000; state_hour=10; else c

    16、nt_hr0=cnt_hr0+0001;-否则计数器加1 end if; end if; if(cnt_hr0=1001 and cnt_min1=0101 and cnt_min0=1001 and cnt_sec0=1000 and cnt_sec1=0101)then co_hr0=1; else co_hr0-如果当前是10,cnt_hr0的计数范围从03 if (co_min1=1)then if(cnt_hr0=0011)then-如果溢出则置0 cnt_hr0=0000; state_hour=00; else cnt_hr0=cnt_hr0+0001;-否则计数器加1 end

    17、if; end if; if(cnt_hr0=0011 and cnt_min1=0101 and cnt_min0=1001 and cnt_sec0=1000 and cnt_sec1=0101)then co_hr0=1;-产生进位标志 else co_hr0 state_hour=00; end case; end if;end process counter_hour0;counter_hour1:-小时十位计数器process(clk1,rst)begin if(rst=1) then cnt_hr1=0000; elsif(clk1event and clk1=1)then if

    18、(co_hr0=1)then if(cnt_hr1=0010)then-如果溢出则置0 cnt_hr1=0000; else cnt_hr1=cnt_hr1+0001; end if; end if; end if;end process counter_hour1;-在*-59-5*的时候speak=1,否则等于0with (cnt_min1=0101 and cnt_min0=1001 and cnt_sec1=0101) selectspeak=1 when TRUE, 0 when others;-将计数器的值赋给相应的输出引脚hr0=cnt_hr0;hr1=cnt_hr1;min0=

    19、cnt_min0;min1=cnt_min1;sec0=cnt_sec0;sec1=cnt_sec1;end rtl;三、仿真结果及分析整体仿真结果如下因整体不清晰,做了局部仿真截图如下由上调试过程可知,该数字钟实现了计时、重置时间和整点报时的功能。在给数字钟重置时间后,数字钟便开始从所置的时间计时,到达59秒时,秒计时器回到0秒,并且给分钟加1;当到达59分时,分计时器回到0分钟,并且给小时加1;当到达23小时时,时计时器回到0小时。四、心得体会通过这次设计,进一步加深了对VHDL的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。总的来说,这次设计的数字钟还是比较成功的,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力。


    注意事项

    本文(数字时钟的VHDL设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开