多功能数字钟.doc_第1页
多功能数字钟.doc_第2页
多功能数字钟.doc_第3页
多功能数字钟.doc_第4页
多功能数字钟.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

河南科技大学课 程 设 计 说 明 书课程名称 EDA课程设计 题 目 多功能数字钟设计 学 院 电子信息工程学院班 级 电信科081 学生姓名 邢 中 普 指导教师 张 雷 鸣 日 期 2011年9月19日 课程设计任务书课程设计名称 EDA课程设计 学生姓名 邢中普 专业班级 电信科081 设计题目 多功能数字钟设计 一、 课程设计目的1、综合运用EDA技术,独立完成一个课题的设计,考察运用所学知识,解决实际问题的能力;2、结合理论知识,考察阅读参考资料、文献、手册的能力;3、进一步熟悉EDA技术的开发流程,掌握文件编辑、编译、仿真、下载验证等环节的实现方法和应用技巧;4、锻炼撰写研究报告、研究论文的能力;5、通过本实践环节,培养科学和严谨的工作作风。二、 设计内容、技术条件和要求l、能进行正常的时、分、秒计时功能,分别由6个数码显示24小时、60分钟的计数器显示。2、能利用实验系统上的按钮实现“校时”、“校分”功能;(1)按下“SA”键时,计时器迅速递增,并按24小时循环;(2)按下“SB”键时,计时器迅速递增,并按59分钟循环,并向“时”进位;(3)按下“SC”键时,秒清零;抖动的,必须对其消抖处理。3、能利用扬声器做整点报时:(1)当计时到达5950”时开始报时,频率可为500Hz;计满23小时后回零;计满59分钟后回零。(2)到达5959”时为最后一声整点报时,整点报时的频率可定为lKHz。4定时闹钟功能5、用层次化设计方法设计该电路,用硬件描述语言编写各个功能模块。6、报时功能。报时功能用功能仿真的仿真验证,可通过观察有关波形确认电路设计是否正确。三、 时间进度安排1周:(1) 完成设计准备,确定实施方案;(2) 完成电路文件的输入和编译;(4) 完成功能仿真。2周:(1) 完成文件至器件的下载,并进行硬件验证;(2) 撰写设计说明书。四、 主要参考文献(1)谭会生、瞿遂春,EDA技术综合应用实例与分析,西安电子科技大学出版社,2004(2)曹昕燕、周凤臣等,EDA技术实验与课程设计,清华大学出版社,2006指导教师签字: 2011年9月19日一、实验原理 : 用层次化设计的方法以VHDL语言编程实现以下功能:【1】 具有“时”、“分”、“秒”计时功能;时为24进制,分和秒都为60进制。【2】 具有消抖功能:手工按下键盘到是否这个过程大概50ms左右,在按下开始到弹簧片稳,定接触这段时间为5-10ms,从释放到弹片完全分开也是5-10ms,在达到稳定接触和完全分开的微观过程中,电平是时高时低的,因此如果在首次检测到键盘按下时延时10ms再检测就不会检测到抖动的毛刺电平了。64Hz的信号周期为15.6ms,正适合做消抖信号。【3】 具有校时和清零功能,能够用4Hz脉冲对“小时”和“分”进行调整,并可进行秒零;【4】 具有整点报时功能。在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。【5】 具有一键设定闹铃及正常计时与闹铃时间的显示转换。闹时时间为一分钟。二、程序流程:1、秒计数器模块设计:模块图如图1。六十进制带进位计数器,可清零,clk输入信号为1Hz脉冲,当q0计满9后q1增加1,当q0满9且q1记满5,q1、q0同时归零,co输出为高电平。q1为十位q0为个位。 图1程序如下:library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity c60 is Port ( clk,clr : in std_logic;co :out std_logic;q1,q0 : out std_logic_vector(3 downto 0); end c60; architecture one of c60 is begin process (clk,clr) variable cq1,cq0:std_logic_vector(3 downto 0); begin if clr=1 then cq1:=(others=0);cq0:=(others=0); elsif (clkevent and clk=1) then if cq09 then cq0:=cq0 +1;co=0; elsif cq10); elsif cq1=5 and cq0=9 then co0); cq0:=(others=0); else co=0; end if; end if; q1=cq1; q00);cq0:=(others=0); elsif (clkevent and clk=1) then if cq09 then cq0:=cq0 +1;co=0; elsif cq10); elsif cq1=5 and cq0=9 then co0); cq0:=(others=0); else co=0; end if; end if; q1=cq1; q0=cq0; end process; end one; 仿真结果如下图43、时计数器:模块图如图5。24进制无进位计数器,当计数信号计到23后再检测到计数信号时会自动零。带清零,clk输入为分秒进位相与的结果。q1为十位,q0为个位。图5程序如下:library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity c24 is Port ( clk : in std_logic;q1,q0 : out std_logic_vector(3 downto 0); end c24;architecture one of c24 is begin process (clk) variable cq1,cq0:std_logic_vector(3 downto 0); begin if (clkevent and clk=1) then if cq1=0010 and cq0=1001 then cq1:=0000; cq0:=0000; elsif cq01001 then cq0:=cq0+1; else cq0:=0000; cq1:=cq1+1; end if; end if; q1=cq1;q0=cq0; end process; end one;仿真波形如下图6:图64、分频器:模块图如图7。由四个分频器构成,输入信号in_clk为1024Hz脉冲信号。把输入的1024Hz信号分频为四个脉冲信号,即1Hz的秒脉冲,4Hz的校时、校分脉冲,64Hz的消抖脉冲以及512Hz的蜂鸣器低音输入。图7程序如下:library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity div is Port ( in_clk : in std_logic;clk_512, clk_1,clk_4 ,clk_64:out std_logic); end div;architecture one of div is signal q512,a,b,c:std_logic; signal c1,c4,c64:integer range 512 downto 0; begin process(in_clk) begin if in_clkevent and in_clk=1 then q512=7 then c64=0;c=not c;else c64=127 then c4=0;b=not b;else c4=511 then c1=0;a=not a;else c1=c1+1;end if; end if; end process; clk_512=q512; clk_1=a; clk_4=b; clk_64=c; end one;仿真波形如下图8:图85、消抖:模块图如图9。分频出的用64Hz信号对sa校时信号、sb校分信号、sc秒清零信号、sd闹时设置信号进行防抖动处理。是由四个两级d触发器构成的,分别对输入的sa、sb、sc、sd信号的相邻两个上升沿进行比较以确定按键的按下,从而达到消抖的目的。图9程序如下:library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity xd is Port ( clk_64 : in std_logic;hj,mj,sclr,sdo :out std_logic;sa,sb,sc,sd : in std_logic); end xd; architecture one of xd is begin process(clk_64) variable sa_n,sa_p,sb_n,sd_n,sb_p,sc_n,sc_p,sd_p:std_logic; begin if clk_64event and clk_64=1 then sa_p:=sa_n;sa_n:=sa; sb_p:=sb_n;sb_n:=sb; sc_p:=sc_n;sc_n:=sc; sd_p:=sd_n;sd_n:=sd; if sa_p= sa_n then hj=sa;end if; if sb_p= sb_n then mj=sb;end if; if sc_p= sc_n then sclr=sc;end if; if sd_p= sd_n then sdo=sd;end if; end if; end process; end one;仿真波形如下图10:图106、闹钟时间的设定:模块图如图11。一键设定闹铃时间,内部由四个d触发器构成。当确定sd键按下时,将当前时间的小时和分的个位十位分别存入四个d触发器内,作为闹时时间。图11程序如下library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity df4 is Port ( sd :in std_logic;hh,hl,mh,ml : in std_logic_vector(3 downto 0);hh_o,hl_o,mh_o,ml_o: out std_logic_vector(3 downto 0); end df4;architecture one of df4 is begin process (sd,hh,hl,mh,ml) begin if sd=1 then hh_o=hh;hl_o=hl;mh_o=mh;ml_o=ml;end if; end process; end one; 仿真波形如下图12:图127、二选一电路(1)一位二选一:模块图如图13。用以进行正常计时和校时/分的选择。alarm为经过消抖的校时/分信号。当按键未曾按下时,即校时/分信号没有到来时,二选一选择器会选择输出a(正常计时输入)信号,否则当alarm按键按下时输出y为校时/分输入信号4Hz。 图13程序如下:library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity xuan21 is Port ( alarm,a,b: in std_logic;y:out std_logic); end xuan21 ; architecture one of xuan21 is begin process(alarm,a,b) begin if alarm=0 then y=a;else y=b; end if; end process; end one;仿真波形如下图14:图14(2)三位二选一:模块图如图15。用以进行正常计时时间与闹铃时间显示的选择,alarm输入为按键。当alarm按键未曾按下时二选一选择器会选择输出显示正常的计时结果,否则当alarm按键按下时选择器将选择输出显示闹铃时间显示。图15程序如下:library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity x213 is Port ( alarm : in std_logic;y:out std_logic_vector(3 downto 0);a,b: in std_logic_vector(3 downto 0); end x213; architecture one of x213 is begin process(alarm,a,b) begin if alarm=0 then y=a;else y=b; end if; end process; end one;仿真结果如下图16:图168、整点报时及闹时:模块图如图17。在59分51秒、53秒、55秒、57秒给扬声器赋以低音512Hz信号,在59分59秒给扬声器赋以高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。当系统时间与闹铃时间相同时给扬声器赋以高音1024Hz信号。闹时时间为一分钟。图17程序如下:library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity voice is Port ( hou1,huo0,min1,min0,sec1,sec0,hh,hl,mh,ml: std_logic_vector(3 downto 0);in_1000,in_500:in std_logic;q : out std_logic); end voice; architecture one of voice is begin process(min1,min0,sec1,sec0) begin if min1=0101 and min0=1001 and sec1=0101 then if sec0=0001 or sec0=0011 or sec0=0101 or sec0=0111 then q=in_500; elsif sec1=0101

温馨提示

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

评论

0/150

提交评论