资源描述:
《VHDL设计多功能数字钟.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、EDA期末作业班级:(一)选题目的学习使用QuartusII9.0,巩固已掌握的EDA知识,增强自己的动手实践能力。(二)设计目标实现多功能数字钟的设计,主要有以下功能:①计时,并且可以24小时制和12小时制转换。②闹钟③整点报时④秒表(三)实现方案该课题的实现过程大体如下:先对4MHZ的信号进行分频使其变为1HZ;将该信号加入计数器中(模60和模24/12)实现基本时钟功能;然后在此基础上加入闹钟,秒表,整点报时,24/12小时制转换模块;最后在动态显示电路中实现上述功能。分频器计时器闹钟整点报时秒表24/12小时转换动态显示电路输出(四)设计过程、模
2、块仿真及实现结果一、分频器分频器的VHDL语言为(4M分频)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfenpinqiisport(clk_in:instd_logic;clk_out:outstd_logic);endfenpinqi;architecturebehivoroffenpinqiissignalcou:std_logic_vector(21downto0);beginprocess(clk_in)beginifclk_in'eve
3、ntandclk_in='1'thencou<=cou+1;endif;endprocess;process(cou)beginclk_out<=cou(21);endprocess;endarchitecturebehivor;完成4Mhz到1hz的转换仿真结果略。二、计时器(模60,模24,模12)模60设计的电路图如下模24/12计数器如下合成模块分别如下仿真波形如下M60波形分析:ql[3..0]从0变到9,qh[3..0]从0变到5,当clk经过60个周期后,co输出一个脉冲。从而实现模60计数器的功能。M24/12模12计数器(sv6=0)模
4、24计数器(sv6=1)波形分析:由于要进行24/12小时制的转换,所以加入开关sv6来控制转换模24和模12计数器。由波形图可以看出,模24和模12功能均已实现。计时器总电路为三、动态显示功能1、由sv3和sv8来控制转换正常计数器、闹钟、秒表的转换。当sv3=0、sv8=0时,显示正常计时器;当sv3=0、sv8=1时,显示秒表;当sv3=1时,显示闹钟。实现此功能的VHDL语言如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitymandispo
5、rt(sv3,sv8:instd_logic;sl,sh,ml,mh,hl,hh,ap,d,rsl,rsh,rml,rmh,rhl,rhh,rap,rd,swa,swb,swc,swd:instd_logic_vector(3downto0);asl,ash,aml,amh,ahl,ahh,aap,ad:outstd_logic_vector(3downto0));endmand;architecturearcofmandissignaltmp:std_logic_vector(3downto0);beginprocess(sv3)beginif(sv3
6、='0')thenifsv8='0'thenasl<=sl;ash<=sh;aml<=ml;amh<=mh;ahl<=hl;ahh<=hh;aap<=ap;ad<=d;elseasl<=swa;ash<=swb;aml<=swc;amh<=swd;ahl<="1010";ahh<="1010";aap<="0000";ad<="1010";endif;elseasl<=rsl;ash<=rsh;aml<=rml;amh<=rmh;ahl<=rhl;ahh<=rhh;aap<=rap;ad<=rd;if(rap="0010"andrhh="0000"and
7、rhl="0000")thenahh<="0001";ahl<="0010";endif;endif;endprocess;endarc;2、数据选择器VHDL语言描述如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitychsisport(clk:instd_logic;sl,sh,ml,mh,hl,hh,ap,d:instd_logic_vector(3downto0);data:outstd_logic_vector(3downto0);en:o
8、utstd_logic_vector(7downto0));endchs;arc