数字时钟设计报告.docx_第1页
数字时钟设计报告.docx_第2页
数字时钟设计报告.docx_第3页
数字时钟设计报告.docx_第4页
数字时钟设计报告.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设 计 报 告课程名称 在系统编程技术 任课教师 设计题目 数字时钟 班级 姓名 学号 日期 目录一、题目分析- 1 -二、选择方案- 1 -三、细化框图- 1 -四、应用程序并仿真- 2 -4.1秒模块- 2 -4.2分模块- 3 -4.3时模块- 4 -4.5报时模块- 6 -五、 全系统联调,整机电路,波形图- 7 -六、硬件测试及说明- 8 -七、结论- 9 -八、课程总结- 9 -九、参考文献目录- 10 -十、附录(源程序)- 10 -一、题目分析用verilog设计一个多功能的数字钟,具体功能为: (1)、计时功能:时、分、秒的计时; (2)、校时功能:对时、分、秒进行手动调整以校准时间; (3)、整点报时功能:每逢整点,由蜂鸣器产生2秒的“滴 滴”的报时音。二、选择方案多功能数字钟电路的设计总体方案,时钟脉冲为clk和clk1,clk=1hz,对秒进行计数,当秒计数为60时,产生脉冲控制分,当分计数为60时对,产生脉冲控制时,当时计数为23,分为59,秒为59时,下一脉冲来临时则重新计时恢复为00时00分00秒,并且报时,时间为两秒,报时频率由clk1控制。按键部分:复位键:高低平有效;设定时间键:高电平有效;时间控制键:高电平控制对分的设定,低电平控制对时的设定;键(io49,io42,io48,io43)四个控制时分的高四位,键(io47,io44,io46,io45)四个控制时分的低四位。当设定时间时,使定时间键为高电平,当时间控制键为高电平时,使用键(io49,io42,io48,io43)和(io47,io44,io46,io45)可以对分进行设定;使定时间键为高电平,当时间控制键为低电平时;使用键(io49,io42,io48,io43)和(io47,io44,io46,io45)可以对时进行设定。当时间为整点时,蜂鸣器报时,时间持续2秒。三、细化框图 分显示器 译码器 60进制分计数器 秒显示器 译码器 60进制秒计数器 时显示器 译码器 24进制时计数器 控 制 电 路 蜂鸣器clk clk1高四位按键sett低四位按键minhenminensecreset图1四、应用程序并仿真4.1秒模块图2library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity second is -秒实体 port(clk,reset:in std_logic; sec:buffer std_logic_vector(7 downto 0); ensec:out std_logic); -驱动分计时信号end;architecture a of second is-秒结构体beginprocess(clk,reset)beginif reset=1then sec=00000000;elsif clkevent and clk=1thenif sec=01011001then sec=00000000;ensec=1001 then sec(7 downto 4)=sec(7 downto 4)+1; sec(3 downto 0)=0000; else sec(3 downto 0)=sec(3 downto 0)+1;ensec=0;end if;end if;end process;end;图34.2分模块图4library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity minute is-分实体port(clkm,set,reset,minh:in std_logic; set1:in std_logic_vector(7 downto 0); min:buffer std_logic_vector(7 downto 0); enmin:out std_logic);-驱动时计时信end;architecture a of minute is-分结构体beginprocess(clkm,reset,set,minh)beginif reset=1then min=00000000;elsif set=1and minh=1then min=set1;elsif clkmevent and clkm=1thenif min=01011001then min=00000000;enmin=1001 then-进位语句 min(7 downto 4)=min(7 downto 4)+1; min(3 downto 0)=0000; else min(3 downto 0)=min(3 downto 0)+1;enmin=0;end if;end if;end process;end;图54.3时模块图6library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity hour1 is -时实体port(clkh,set,reset,minh:in std_logic; set1:in std_logic_vector(7 downto 0); hour:buffer std_logic_vector(7 downto 0);end;architecture a of hour1 is-时结构体体beginprocess(clkh,reset,set,minh)beginif reset=1then hour=00000000;elsif set=1and minh=0then hour=set1;elsif clkhevent and clkh=1thenif hour=00100011then hour=1001 then-进位 hour(7 downto 4)=hour(7 downto 4)+1; hour(3 downto 0)=0000; else hour(3 downto 0)=hour(3 downto 0)+1;end if;end if;end process;end;图74.5报时模块图8library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity alarm1 is-报时实体port(reset,clk1:in std_logic; sec,min:in std_logic_vector(7 downto 0); alarm:out std_logic);end;architecture a of alarm1 is-报时结构体begin process(clk1,sec,min,reset) beginif min=00000000 and reset=0 and (sec=00000000 or sec=00000001) then alarm=clk1;-报时语句,持续两秒else alarmreset,sec=sec,clk=clk, ensec=enm);u2:minute port map(reset=reset,set=sett,set1=set11,minh=minhh,min=min,clkm=enm,enmin=enh);u3:hour1 port map(reset=reset,set=sett,set1=set11,minh=minhh,hour=hour, clkh=enh);u4:alarm1 port map(reset=reset,min=min,sec=sec,clk1=clk1,alarm=alarm);end;秒模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity second is -秒实体 port(clk,reset:in std_logic; sec:buffer std_logic_vector(7 downto 0); ensec:out std_logic); -驱动分计时信号end;architecture a of second is-秒结构体beginprocess(clk,reset)beginif reset=1then sec=00000000;elsif clkevent and clk=1thenif sec=01011001then sec=00000000;ensec=1001 then sec(7 downto 4)=sec(7 downto 4)+1; sec(3 downto 0)=0000; else sec(3 downto 0)=sec(3 downto 0)+1;ensec=0;end if;end if;end process;end;分模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity minute is-分实体port(clkm,set,reset,minh:in std_logic; set1:in std_logic_vector(7 downto 0); min:buffer std_logic_vector(7 downto 0); enmin:out std_logic);-驱动时计时信end;architecture a of minute is-分结构体beginprocess(clkm,reset,set,minh)beginif reset=1then min=00000000;elsif set=1and minh=1then min=set1;elsif clkmevent and clkm=1thenif min=01011001then min=00000000;enmin=1001 then-进位语句 min(7 downto 4)=min(7 downto 4)+1; min(3 downto 0)=0000; else min(3 downto 0)=min(3 downto 0)+1;enmin=0;end if;end if;end process;end;时模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity hour1 is -时实体port(clkh,set,reset,minh:in std_logic; set1:in std_logic_vector(7 downto 0); hour:buffer std_logic_vector(7 downto 0);end;architecture a of hour1 is-时结构体体beginprocess(clkh,reset,set,minh)beginif reset=1then hour=00000000;elsif set=1and minh=0then hour=set1;elsif clkhevent and clkh=1thenif hour=00100011then hour=1001 then-进位 hour(7 downto 4)=hour(7 downto 4)+1; hour(3 downto 0)=0000; else hour(3 downto 0)=hour(3 downto 0)+1;end if;end if;end process;end;报警模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity alarm1 is-报时实体port(reset,clk1:in std_lo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论