资源描述:
《基于vhdl的电子钟设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、EDA课程设计题目:利用VHDL进行电子钟设计院系:物理工程学院专业班级:学生姓名:学生学号:2010年6月3日17一、设计要求:功能:显示年月日、星期、时分秒、闹钟和整点报时(几点响几下),并且所有显示均可调。二、设计原理:1)模块设计:根据要求可将实验分成三个大的模块:年月日,时分秒和闹钟。时分秒:时、分、秒分为三个独立模块,同时秒的脉冲为1HZ,秒进位作为分的时钟信号,分进位作为时的时钟信号,时进位作为日和星期的时钟信号。年月日:日进位作为月的时钟信号,月进位作为年的时钟信号。由于年、月、日三者之间存在反馈机制(即闰年与非闰年有差别,大月与
2、小月间有差别),故将它们放在同一个模块中。闹钟和整点报时具有相似性,故归为一类。总共需要13个独立模块。2):显示设计:根据实验箱上只有8个LED数码管的具体情况,将显示分三种模式显示出来:(1)星期、时分秒;(2)年月日;(3)闹钟时间。3):按键设计:共设计5个按键:J8键:高电平显示年月日,低电平显示星期、时分秒。J7键:高电平显示闹钟。J5键:系统复位键,高电平有效。J3键:可调区域选择键,高电平有效,选中可调区域相应灯亮。J1键:累加键,高电平有效,可调区域实现累加。4):报时设计:蜂鸣器在整点报时时几点响几下,闹时响一分钟。5):时钟
3、设计:秒和时钟clk接1HZ,其它模块clk1接2HZ。6):模式设计:实验箱选择模式5。三、注意事项:1:由于本设计采用了两个不同频率的时钟,所以在刚下载完程序后会发现所有数码管都在跑动。解决办法:按下J3键,将各个模块扫描一遍。2:xian1中输出的res需和J5的reset经过一个或门后输出,再与各模块的reset相连。17四:实验程序:----------------------------------------------------------秒计数器libraryieee;useieee.std_logic_1164.all;us
4、eieee.std_logic_unsigned.all;entitysecondisport(clk,setmin,reset,clk1:instd_logic;--clk接1HZclock0,clk1为按键触发时钟,接2HZclk2seout:outstd_logic_vector(6downto0);enmin:outstd_logic);endentitysecond;architectureoneofsecondissignalcount:std_logic_vector(6downto0);signalenmin1,enmin2:st
5、d_logic;--enmin1为59秒时进位信号,enmin2由clk1调制后的手动调分脉冲beginseout<=count;enmin2<=(setminandclk1);enmin<=(enmin1orenmin2);process(clk,reset,setmin)beginif(reset='1')thencount<="0000000";elsif(clk'eventandclk='1')thenif(count(3downto0)="1001")thenif(count<16#60#)then--即60H,为16进制数写法,此步是
6、必须的if(count="1011001")thenenmin1<='1';count<="0000000";--如果count已经到了59D,则置进位为1及count为0elsecount<=count+7;--则加7,由09h变为10hendif;elsecount<="0000000";-->60h,为无效操作endif;elsif(count<16#60#)thencount<=count+1;enmin1<='0';elsecount<="0000000";endif;endif;endprocess;endone;17--------
7、-------------------------------------分计数器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityminisport(clk,sethour,reset,clk1:instd_logic;miout:outstd_logic_vector(6downto0);enhour:outstd_logic);endentitymin;architectureoneofminissignalcount:std_logic_
8、vector(6downto0);signalenhour1,enhour2:std_logic;--enhour1为59秒时进位信号,