《基于eda的万年历设计(共18页).doc》由会员分享,可在线阅读,更多相关《基于eda的万年历设计(共18页).doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上EDA设计实验报告学校:郑州大学专业:测控技术与仪器班级:一班姓名:史占东辅导老师:郭敏一、设计要求:(1)、能够显示年、月、日、时、分、秒、星期;并具有闰年判断补偿功能;(2)、具有整点报时及定时功能;二、实用方法:设计中用到了6个按键,在模式5下,K1,K2,K3,K4,ZHENG,NAO;其中K1用于切换显示模式,刚开始时显示时间,按两次K1显示定时时间,再按两次K1显示日期,再按两次重新显示时间;K2用于控制中间信号W,每按下两下中间信号加一,加至8时清零,W=1时,每按两下K3键分钟加一;W=2时,每按两下K3键小时加一;W=3时,每按两下K3键星期加一;W
2、=4时,每按两下K3键日期加一;W=5时,每按两下K3键月份加一;W=6时,每按两下K3键年低两位加一;W=7时,每按两下K3键年高两位加一;W=8时,当K4=0时,每按两下K3键定时分钟加一;当K4=1时,每按两下K3键定时小时加一;按键ZHENG为整点报时的使能端;按键NAO为定时闹钟的使能端。 三、程序及仿真:(1)24进制计数器程序及仿真图如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt24 isport(clk:in std_logic;q1,q2:out st
3、d_logic_vector(3 downto 0);cout:out std_logic);end cnt24;architecture one of cnt24 issignal q11,q22:std_logic_vector(3 downto 0);beginprocess(clk)beginif clkevent and clk=1 thenq11=q11+1;if q11=9 then q110);q22=q22+1;end if;if q22=2 and q11=3 then q22=0000;q11=0000;cout=1;else cout=0;end if;end if;e
4、nd process;q1=q11;q2=q22;end;(2)60进制计数器程序及仿真图如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60 isport(clk:in std_logic;q1,q2:out std_logic_vector(3 downto 0);cout:out std_logic);end cnt60;architecture one of cnt60 issignal q11,q22:std_logic_vector(3 downto 0);b
5、eginprocess(clk)beginif clkevent and clk=1 thenq11=q11+1;if q11=9 then q110);q22=q22+1;end if;if q22=5 and q11=9 then q22=0000;q11=0000;cout=1;else cout=0;end if;end if;end process;q1=q11;q2=q22;end;(3)天计数器程序及仿真图如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity day i
6、sport(clk,s1,s2:in std_logic;d1,d2:out std_logic_vector(3 downto 0);cout:out std_logic);end day;architecture one of day issignal q11,q22:std_logic_vector(3 downto 0);signal s1s2:std_logic_vector(1 downto 0);beginprocess(clk,s1,s2)beginif clkevent and clk=1 thenq11=q11+1;if q11=9 then q110);q22=q22+1
7、;end if;s1s2if q22=3 and q11=1 then q22=0000;q11=0001;cout=1;else coutif q22=3 and q11=0 then q22=0000;q11=0001;cout=1;else coutif q22=2 and q11=8 then q22=0000;q11=0001;cout=1;else coutif q22=2 and q11=9 then q22=0000;q11=0001;cout=1;else coutnull;end case;end if;end process;d1=q11;d2=q22;end;(4)月计
8、数器程序及仿真图如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity month isport(clk,run:in std_logic;m1,m2:out std_logic_vector(3 downto 0);a,b,cout:out std_logic);end month;architecture one of month issignal q1,q2:std_logic_vector(3 downto 0);signal q2q1:std_logic_vector(7 d
9、ownto 0);beginprocess(clk)beginif clkevent and clk=1 thenq1=q1+1;if q1=9 then q10);q2=q2+1;end if;if q2=1 and q1=2 then q2=0000;q1=0001;cout=1;else cout=0;end if;end if;q2q1a=0;bif run=1 then a=1;b=1;else a=1;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;bnull;end case;end process;m1=q1;m2=q2;en
10、d;(5)年低两位计数器程序及仿真图如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity year isport(clk:in std_logic;y1,y2:out std_logic_vector(3 downto 0);run,cout:out std_logic);end year;architecture one of year issignal q1,q2,q3:std_logic_vector(3 downto 0);beginprocess(clk)beginif c
11、lkevent and clk=1 thenq1=q1+1;if q1=9 then q10);q2=q2+1;end if;if q2=9 and q1=9 then q2=0000;q1=0000;cout=1;else cout=0;end if;end if;end process;process(clk)beginif clkevent and clk=1 thenq3=q3+1;if q3=3 then q30);run=1;else run =0;end if;end if;y1=q1;y2=q2;end process;end;(6)年高两位计数器程序及仿真图如下:librar
12、y ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity year1 isport(clk:in std_logic;y3,y4:out std_logic_vector(3 downto 0);run,cout:out std_logic);end year1;architecture one of year1 issignal q1,q2:std_logic_vector(3 downto 0);beginprocess(clk)beginif clkevent and clk=1 thenq1=q1
13、+1;if q1=9 then q10);q2=q2+1;end if;if q2=9 and q1=9 then q2=0000;q1=0000;cout=1;else cout=0;end if;end if;end process;process(q1)beginif q1(1 downto 0)/=00 thenrun=1;else run =0;end if;y3=q1;y4=q2;end process;end;(7)星期计数器程序及仿真图如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.
14、all;entity cnt7 isport(clk:in std_logic;q1,q2:out std_logic_vector(3 downto 0);end cnt7;architecture one of cnt7 issignal q11,q22:std_logic_vector(3 downto 0);beginprocess(clk)beginif clkevent and clk=1 thenq11=q11+1;if q11=7 then q11=0001;end if;end if;q22=0000;end process;q1=q11;q2=q22;end;(8)调节时间
15、及实现定时程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity tiaoshi isport(sout,fout,hout,dout,mout,yout0:in std_logic;k2,k3:in std_logic;fin,hin,din,min,yin0,yin1,dingshi,win:out std_logic;q:out std_logic_vector(3 downto 0);end tiaoshi;architecture one of tiaoshi issig
16、nal w:std_logic_vector(3 downto 0);beginprocess(k2,k3)beginif k2event and k2=1 then w=w+1;if w=8 then wfin=sout;hin=fout;din=hout;min=dout;yin0=mout;yin1=yout0;dingshi=0;win=hout; qfin=k3;hin=0;din=0;min=0;yin0=0;yin1=0;dingshi=0;win=0; qfin=0;hin=k3;din=0;min=0;yin0=0;yin1=0;dingshi=0;win=0; qfin=0
17、;hin=0;din=0;min=0;yin0=0;yin1=0;dingshi=0;win=k3; qfin=0;hin=0;din=k3;min=0;yin0=0;yin1=0;dingshi=0;win=0; qfin=0;hin=0;din=0;min=k3;yin0=0;yin1=0;dingshi=0;win=0; qfin=0;hin=0;din=0;min=0;yin0=k3;yin1=0;dingshi=0;win=0; qfin=0;hin=0;din=0;min=0;yin0=0;yin1=k3;dingshi=0;win=0; qfin=0;hin=0;din=0;mi
18、n=0;yin0=0;yin1=0;dingshi=k3; qnull;end case;end process;end;(9)切换显示状态程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity control isport(fld,fhd,hld,hhd,sl,sh,fl,fh,hl,hh,dl,dh,ml,mh,yl,yh,yl1,yh1,wl,wh:in std_logic_vector(3 downto 0);k1:in std_logic;q1,q2,q3,q4,q5,q
19、6,q7,q8:out std_logic_vector(3 downto 0);l1:out std_logic_vector(3 downto 0);end control;architecture one of control issignal w:std_logic_vector(1 downto 0);beginprocess(k1)begin if k1event and k1=1 then w=w+1;if w=2 then wq8=yh1;q7=yl1;q6=yh;q5=yl;q4=mh;q3=ml;q2=dh;q1=dl;l1q8=wh;q7=wl;q6=hh;q5=hl;q
20、4=fh;q3=fl;q2=sh;q1=sl;l1q8=0000;q7=0000;q6=0000;q5=0000;q4=hhd;q3=hld;q2=fhd;q1=fld;l1null;end case;end process;end;(10)闹钟控制程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alarm isport(fld,fhd,hld,hhd,fl,fh,hl,hh:in std_logic_vector(3 downto 0); zheng,nao,clk:in
21、 std_logic; alarm:out std_logic);end alarm;architecture one of alarm issignal a1,a2:std_logic;beginprocess(fld,fhd,hld,hhd,fl,fh,hl,hh,a1)beginif fld=fl and fhd=fh and hld=hl and hhd=hh then a1=1;else a1=0;end if;end process;process(fl,fh,a2)beginif fl=0000 and fh=0000 then a2=1;else a2=0;end if;end process;process(clk,a1,a2,zheng,nao)beginif nao=0 and a1=1 then alarm=clk;elsif zheng=0 and a2=1 then alarm=clk;else alarm=0;end if;end process;end;四、引脚分配图:五、原理图文件:六、顶层文件七、参考文献:EDA技术实用教程第三版,潘松、黄继业编著,科学出版社;专心-专注-专业
限制150内