ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:279.57KB ,
资源ID:25128738      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25128738.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多功能数字电子钟VHDL.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多功能数字电子钟VHDL.docx

1、多功能数字电子钟VHDL多功能数字电子钟_VHDL 作者: 日期: VHDL课程设计实验报告 多功能数字电子钟 姓 名: 班 级:学 号:指导老师: 成 绩:完成时间:2008年1月4日 星期五完成地点:502机房 一、实验目的1.学习数字系统设计的自顶向下设计法及控制器的设计。 2。加深利用EDA技术实现数字系统的体会。二、实验仪器及器件1。EDA 开发软件(1套) 2.微机(1台)3。实验开发系统(1台) 4。其他器件与材料(若干)三、实验要求及设计方案 1.设计一个具有24进制计时、显示、整点报时、时间设置和闹钟功能的数字钟,要求时钟的最小分辨率时间为1s。 2.数字钟的设计方案如下:

2、系统输入:mode为计时显示和闹钟定时显示转换输入;set为校时和定时设置的时、分、秒转换输入;k为校时和定时设置的时、分、秒手动加1输入;clk为时钟信号;reset为系统复位信号.输入信号均由按键产生. 系统输出:LED显示输出;蜂鸣器(bell)声音信号输出。 3.多功能数字钟系统功能的具体描述如下: 计时:正常工作状态下,每日按24小时计时制计时并显示,蜂鸣器逢整点报时。 校时:在计时显示状态下,按下“set键”,进入“小时”校时状态,再次按下“set键”,进入“分”校时状态,继续按下“set键,进入“秒”校时状态,第四次按下“set键又回复到正常计时显示状态。 1)“小时”校时状态:

3、进入“小时校时状态后,显示“小时”的数码管闪烁,每按动“k 键一次,“小时”+1,若不按动“k”键则小时数不变,一直按下“k 键则小时数一4Hz的频率递增计数。 2)“分”校时状态:进入“分校时状态后,显示“分”的数码管闪烁,每按动“k” 键一次,“分”+1,若不按动“k”键则分数不变,一直按下“k 键则分数一4Hz的频率递增计数。 3)“秒”校时状态:进入“秒校时状态后,显示“秒”的数码管闪烁,每按动“k” 键一次,“秒”+1,若不按动“k键则秒数不变,一直按下“k 键则秒数一4Hz的频率递增计数。 整点报时:蜂鸣器在“59分钟的第51、53、55、57秒发出频率为512Hz的低音,在“59

4、秒发出频率为1024Hz的高音,结束时为整点。 显示:采用8个LED数码管分别显示时、分、秒并且他们之间用“”隔开. 闹钟:闹钟定时时间到,蜂鸣器发出周期为1s的滴、滴声,持续时间为10秒;闹钟定时显示. 闹钟定时设置:在闹钟显示状态下,按下“set键,进入“小时”校时状态,再次按下“set键”,进入“分校时状态,继续按下“set键”,进入“秒”校时状态,第四次按下“set键”又回复到闹钟显示状态. 闹钟的时、分、秒设置过程和计时设置相同。 计时显示和闹钟显示之间的转换:按动“mode键,数字钟将在计时显示和闹钟定时显示之间转换。 4)多功能数字钟系统结构逻辑框图如下:mode5)控制器的MD

5、S图如下:set=0四、各功能模块的源程序代码:- CONTOR 模块library ieee;use ieee。std_logic_1164.all;use ieee.std_logic_unsigned。all;use ieee。std_logic_arith。all;entity contor is port(clk,k,set,reset,mode : in std_logic;chs,cht,cms,cmt,css,cst,flashh,flashm,flashs,sel_show :out std_logic);end contor;architecture contor_arch

6、 of contor istype states is(s0,s1,s2,s3,s4,s5,s6,s7);signal current_state,next_state :states;beginprocess (reset,clk,next_state)beginif (reset=1)thencurrent_state=s0;elsif (clkevent and clk=1)thencurrent_state=next_state;end if;end process;process(current_state,k,set)begincase current_state iswhen s

7、0=flashh=0;flashm=0;flashs=0;cht=0;cmt=0;cst=0; chs=0;cms=0;css=0;sel_show=1;if(mode=0)then next_state=s4;elsif(k=1and set=0 ) then next_state=s1;elsenext_state=s0;end if;when s1=flashh=1;flashm=0;flashs=0;cht=1;cmt=0;cst=0; chs=0;cms=0;css=0;sel_show=1;if (set=0 ) then next_state=s2;elsenext_state=

8、s1;end if;when s2=flashh=0;flashm=1;flashs=0;cht=0;cmt=1;cst=0; chs=0;cms=0;css=0;sel_show=1;if (set=0) then next_state=s3;elsenext_stateflashh=0;flashm=0;flashs=1;cht=0;cmt=0; cst=1;chs=0;cms=0;css=0;sel_show=1;if ( set=0 ) then next_state=s0;elsenext_state=s3;end if;when s4=flashh=0;flashm=0;flash

9、s=0;cht=0;cmt=0;cst=0;chs=0;cms=0;css=0;sel_show=0;if ( mode=0 ) then next_state=s0;elsif ( k=1and set=0 ) then next_stateflashh=1;flashm=0;flashs=0;cht=0;cmt=0;cst=0;chs=1;cms=0;css=0;sel_show=0;if (set=0) then next_state=s6;elsenext_stateflashh=0;flashm=1;flashs=0;cht=0;cmt=0;cst=0;chs=0;cms=1;css

10、=0;sel_show=0;if (set=0 ) thennext_state=s7;elsenext_stateflashh=0;flashm=0;flashs=1;cht=0;cmt=0;cst=0;chs=0;cms=0;css=1;sel_show=0;If (set=0) then next_state=s4;elsenext_state=s7;end if;end case;end process;end contor_arch;-*TIMER模块*-*cnt60模块*library ieee;use ieee.std_logic_1164。all;use ieee。std_lo

11、gic_unsigned。all;entity cnt60 isport(clkin :in std_logic; mh,ml :buffer std_logic_vector(3 downto 0); co :buffer std_logic);end minute;architecture cnt60x of minutecnt60 isbeginprocess(clkin)beginif (rising_edge(clkin)thenif (mh=”0101”and ml=1001)thenmh=0000”;co=1;ml=”0000”;elsif(ml=1001)thenml=0000

12、;mh=mh+1;co=0;else ml=ml+1;co=0;end if;end if;end process;end cnt60x;-*MUX21 模块*library ieee;use ieee.std_logic_1164。all;entity mux2_1 isport(d0,d1,en :in std_logic; sel :in std_logic; y :out std_logic);end mux2_1;architecture mux2_1_arch of mux2_1 isbegin process(d0,d1,sel) begin if(sel=0)then y=d0

13、; elsif(sel=1and en=0)then y=d1 ; end if; end process;end mux2_1_arch;*Time_com 模块*library ieee;use ieee。std_logic_1164.all;use ieee.std_logic_arith。all;use ieee。std_logic_unsigned.all;entity time_com isport(hh,mh,sh,hl,ml,k :in std_logic_vector(3 downto 0); chs,cms,css,f4 :in std_logic; bsg,bmg,bhg

14、,bsd,bmd,bhd :buffer std_logic_vector(3 downto 0); comout :out std_logic);end time_com;architecture time_comx of time_com isbegincom:process(hh,mh,sh,hl,ml)beginif(bhg=hh and bhd=hl and bmg=mh and bmd=ml and bsg=sh)thencomout=1;elsecomout=0;end if;end process;set:process(f4)beginif(f4event and f4=1)

15、thenif(chs=1and k=0)thenif(bhg=”0010 and bhd=”0011)thenbhd=”0000”;bhg=”0000”;elsif(bhd=”1001”)thenbhd=0000”;bhg=bhg+1;elsif(bhd=”0000or bhd=0001 or bhd=”0010orbhd=0011or bhd=”0100”or bhd=”0101”or bhd=0110”orbhd=”0111or bhd=”1000”)then bhd=bhd+1;end if;end if;end if;end process;process(f4)beginif(f4e

16、vent and f4=1)thenif(cms=1and k=0)thenif(bmg=”0101 and bmd=”1001”)thenbmd=”0000”;bmg=”0000”;elsif(bmd=1001)thenbmd=0000”;bmg=bmg+1;elsif(bmd=”0000”or bmd=0001” or bmd=”0010orbmd=0011”or bmd=”0100or bmd=”0101”or bmd=0110”orbmd=0111or bmd=1000)then bmd=bmd+1;end if;end if;end if;end process;process(f4

17、)beginif(f4event and f4=1)thenif(css=1 and k=0)thenif(bsg=”0101” and bsd=”1001)thenbsd=”0000;bsg=”0000;elsif(bsd=1001”)thenbsd=”0000”;bsg=bsg+1;elsif(bsd=0000or bsd=0001” or bsd=0010”orbsd=”0011”or bsd=0100or bsd=”0101”or bsd=0110orbsd=”0111”or bsd=1000)then bsd=bsd+1;end if;end if;end if;end proces

18、s;end time_comx;-*Show_contor模块*library ieee;use ieee.std_logic_1164。all;use ieee。std_logic_arith。all;use ieee.std_logic_unsigned.all;entity show_contor isport(hh,mh,sh,bhh,bmh,bsh,hl,ml,sl,bhl,bml,bsl :in std_logic_vector(3 downto 0); flashh,flashm,flashs,clk1,sel_show :in std_logic; sld0,shd1,mld3

19、,mhd4,hld6,hhd7,line :out std_logic_vector(3 downto 0));end show_contor;architecture show_contor_arch of show_contor isbeginline=”1010”;process(clk1)beginif sel_show=1thensld0=sl;shd1=sh;mld3=ml;mhd4=mh;hld6=hl;hhd7=hh;elsif sel_show=0thensld0=bsl;shd1=bsh;mld3=bml;mhd4=bmh;hld6=bhl;hhd7=bhh;end if;

20、if(clk1=1 and flashs=1)thensld0=”1111”;shd1=1111”;end if;if(clk1=1 and flashm=1)thenmld3=1111;mhd4=1111”;end if;if(clk1=1 and flashh=1)thenhld6=1111”;hhd7=”1111;end if;end process;end show_contor_arch;-*Dynamic_show模块代码(略)*-*Bell模块*library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned

21、。all;entity bel isport(mh,sh,ml,sl :in std_logic_vector(3 downto 0); comout,f512hz,f1024hz,clk :in std_logic; bell :out std_logic);end bel;architecture bel_arch of bel isbeginprocess(clk,mh,ml,sh,sl,f1024hz,f512hz)beginif(comout=1)thenbell=clk;elsif(mh=0101and ml=1001” )then if(sh=”0101”) then if(sl

22、=”1001”) then bell=f1024hz; elsif(sl=0001 or sl=”0011 or sl=0101 or sl=0111)then bell=f512hz; end if; else bell=0; end if;elsif(ml1001or mh0101or sh0101 )then bell=0;end if;end process;end bel_arch;五、连接总图(如右): 六、波形仿真:七、引脚锁定、编译、连线并下载到实验箱进行验证12 14 16 111 150 151 152 153 154 155 156 78 79 80 183 182sel

23、0 sel1 sel2 bell y0 y1 y2 y3 y4 y5 y6 mode set k reset1 reset2 八、心得体会为期一周的课程设计在紧张与忙碌中飞逝而过,我所选择的多功能电子钟在老师孜孜不倦的指导下和同学的热心帮助下终于成功了。不但实现了题目所要求的全部功能,还实现了更人性化的功能(按一下按键执行一次加1操作)。这一功能的实现是在x老师的启发和指导以及在xxx同学的帮助与提问下才得以实现的。刚开始按照老师的思路虽然实现了按一下按键执行一次加1的功能,当时我以为自己成功了,可她发现秒钟到59后没有产生进位信号,分位没有加1。在她发现错误后,我仔细研究了产生这种错误的原因,原来我把控制校时的使能信号输入端放在了计数器里边,它屏蔽了进位信号.最后,我把控制校时的使能信号放在了mux2_1终于解决了不进位的错误。通过这件事使我认识到与同学的讨论是十分有必要和重要的。在与同学的讨论中不但使我发现了自己的错误和不足,还使自己开阔了眼界,增长了见识,增进了同学之间的友谊。课程设计全方位的培养和考察我们解决问题以及处理将理论应用到实际当中的能力。在设计编程的过程中,我们既经过了独立思考,也经过了团体协作。我们必须在短期内锻炼迅速掌握一门语言的能力,并学会利用其他的资料与书籍。可见课程设计的意义是十分重大和深远的。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1