资源描述:
《EDA实验报告数字钟》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、南昌大学实验报告学生姓名:刘光林学号:6100209064专业班级:卓越(3+1)实验类型:□验证□综合■设计□创新实验日期:实验成绩:实验四多功能数字钟设计一、实验设计1、数字显示当前的小时、分钟;2、闹钟和24小时计时显示;3、一个调节键,用于调节目标数位的数字。对调节的内容敏感,如调节分钟或秒时,保持按下时自动计数,否则以脉冲计数;4、一个功能键,用于切换不同状态:计时、调时、调分、调秒。二、实验步骤根据实验要求可以将该工程设计几个模块:1、秒计时模块代码:libraryieee;useie
2、ee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitysecondisport(clk,reset,setmin:instd_logic;enmin:outstd_logic;sout:outstd_logic_vector(7downto0));endsecond;architecturebhvofsecondissignalcount:std_logic_vector(7downto0);signalenmin1,enmin2:s
3、td_logic;beginsout<=count;enmin2<=(setminandclk);enmin<=(enmin1orenmin2);process(clk,reset,setmin)beginifreset='0'thencount<="00000000";elsifclk'eventandclk='1'thenifcount(3downto0)="1001"thenifcount<16#60#thenifcount="01011001"thenenmin1<='1';count<=
4、"00000000";elsecount<=count+7;endif;elsecount<="00000000";endif;elsifcount<16#60#thencount<=count+1;enmin1<='0';elsecount<="00000000";endif;endif;endprocess;endbhv;其中,CLK是时钟信号,RESET是复位信号,SETMIN为分钟设置信号,ENMIN作为下一模块分钟设计的时钟信号,sout输出信号最后接在动态译管码芯片上,得出实验要求的秒
5、显示。2、分计时模块代码:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityminuteisport(clk,enmin,reset,sethour:instd_logic;enhour,speak:outstd_logic;mout:outstd_logic_vector(7downto0));endminute;architecturebhvofminuteissignalcount:std_
6、logic_vector(7downto0);signalenhour1,enhour2:std_logic;beginmout<=count;enhour2<=(sethourandclk);enhour<=(enhour1orenhour2);process(clk,reset,sethour)beginifreset='0'thencount<="00000000";elsifenmin'eventandenmin='1'thenifcount(3downto0)="1001"thenifc
7、ount<16#60#thenifcount="01011001"thenenhour1<='1';count<="00000000";elsecount<=count+7;endif;elsecount<="00000000";endif;elsifcount<16#60#thencount<=count+1;enhour1<='0';elsecount<="00000000";endif;endif;ifcount="00000000"thenspeak<='1';elsespeak<='0'
8、;endif;endprocess;endbhv;其中,CLK接秒模块中的ENMIN信号,RESET同样是复位信号,ENHOUR作为下一模块小时的时钟信号,mout输出信号最后接在动态译码管芯片上.得出实验要求得分显示,sehour为调时信号。3、小时模块代码:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityhourisport(enhour,reset:instd_logic;