欢迎来到天天文库
浏览记录
ID:54759015
大小:133.01 KB
页数:21页
时间:2020-04-21
《VHDL数字时钟实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、VHDL数字时钟设计一、实验目的:进一步练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言基本设计实体的编写方法。同时,在已有知识的基础上,简单综合编写程序,仿制简单器械。二、实验环境:PC个人计算机、WindowsXP操作系统、QuartusII集成开发环境软件。三、设计要求:运用VHDL语言编写一个数字钟,具体要求:1.具有时、分、秒计数的十进制数字显示功能,以24小时循环计时。2.具有手动调节小时,分钟的功能。3.具有闹钟的功能,能够在设定的闹钟时间发出闹铃声。四、实验步骤:1.定义输入输出信号量port(clk:instd_
2、logic;---时钟speak:outstd_logic;---铃dout:outstd_logic_vector(7downto0);---晶体管显示setclk:instd_logic_vector(2downto0);---操作按钮d1,d2,d3,d4,d5,d6:outstd_logic);---六个晶体管2.定义结构体中的信号量signalsel:std_logic_vector(2downto0);signalhou1:std_logic_vector(3downto0);--时分秒的个位和十位signalhou2:std_logi
3、c_vector(3downto0);signalmin1:std_logic_vector(3downto0);signalmin2:std_logic_vector(3downto0);signalseth1:std_logic_vector(3downto0);signalseth2:std_logic_vector(3downto0);signalsetm1:std_logic_vector(3downto0);signalsetm2:std_logic_vector(3downto0);signalsec1:std_logic_vecto
4、r(3downto0);signalsec2:std_logic_vector(3downto0);signalh1:std_logic_vector(3downto0);signalh2:std_logic_vector(3downto0);signalm1:std_logic_vector(3downto0);signalm2:std_logic_vector(3downto0);signals1:std_logic_vector(3downto0);signals2:std_logic_vector(3downto0);signalsph1,
5、sph2,spm1,spm2,sps1,sps2:std_logic_vector(3downto0);signalcount_sec:std_logic_vector(9downto0);signalsec_co:std_logic;signalco1,co2,co3,co4:std_logic;--进位signalswitch:std_logic_vector(1downto0);--表示状态3.分频模块用来定义秒count_sec用来计时钟个数,当count_sec=1111111111时,及得到1Hz信号。代码如下:process(clk)
6、is--defineasecondbeginif(clk'eventandclk='1')thenif(count_sec="1111111111")thencount_sec<="0000000000";sec_co<='1';elsecount_sec<=count_sec+'1';sec_co<='0';endif;endif;endprocess;4.时钟正常走时模块该模块使用6个进程实现,分别为秒个位计时、秒十位计时、分个位计时、分十位计时、时个位计时、时十位计时。process(sec_co)is------------秒个位begin
7、ifswitch="00"then--正常状态ifsec_co='1'thenifsec2="1001"thensec2<="0000";co1<='1';elsesec2<=sec2+'1';co1<='0';endif;endif;elsifswitch="01"then--调时状态sec2<="0000";endif;endprocess;--------------------------------------------------process(co1)is-------秒十位beginifswitch="00"thenifco1'e
8、ventandco1='1'thenif(sec1="0101")thensec1<="0000";co2<='1';el
此文档下载收益归作者所有