文档介绍:VHDL实验报告一、实验目的1、设计一个24小时制数字钟,要求能显示时,分,秒,并且可以手动调整时和分。2、通过复杂实验,进一步加深对VHDL语言的掌握程度。二、实验原理数字钟的主体是计数器,它记录并显示接收到的秒脉冲个数,其中秒和分为模60计数器,小时是模24计数器,分别产生3位BCD码。BCD码经译码,驱动后接数码管显示电路。秒模60计数器的进位作为分模60计数器的时钟,分模60计数器的进位作为模24计数器的时钟。为了实现手动调整时间,在外部增加了setm(调整分),seth(调整时)按键,当这两个按键为低电平时,电路正常计时,当为高电平时,分别调整分,时。。三、实验步骤1、单元模块设计部分1)消抖动电路关键部分signalkey_in1,key_in2:std_logic:='0';beginprocess(clk,key_in)beginifclk'eventandclk='1'thenkey_in1<=key_in;key_in2<=key_in1;ifkey_in='1'andkey_in1='1'andkey_in2='1'thenkey_out<='1';elsekey_out<='0';endif;2)模60计数器程序关键部分:signalmd_temp,mg_temp:std_logic_vector(3downto0);beginprocess(clk,clr)beginifclr='1'thenmd_temp<="0000";mg_temp<="0000";elsifset='1'thenmd_temp<=setl;mg_temp<=seth;elsifclk'eventandclk='1'thenifmd_temp="1001"thenmd_temp<="0000";mg_temp<=mg_temp+'1';elsemd_temp<=md_temp+'1';ifmd_temp="1001"andmg_temp="0101"thenmd_temp<="0000";mg_temp<="0000";2、模24计数器程序关键部分signalhd_temp,hg_temp:std_logic_vector(3downto0);beginprocess(clk,clr,set,setl,seth)isbeginifset='1'thenhd_temp<=setl;hg_temp<=seth;elsifclr='1'thenhd_temp<="0000";hg_temp<="0000";elsifclk'eventandclk='1'thenifhg_temp="0010"andhd_temp="0011"thenhd_temp<="0000";hg_temp<="0000";elsifhd_temp="1001"thenhg_temp<=hg_temp+'1'hd_temp<="0000";elsehd_temp<=hd_temp+'1';endif;endif;endprocess;3、清零和调时部分显示部分关键程序process(sd,sg,md,mg,hd,hg)begincasesdiswhen"0000"=>sl<="1111110";when"0001"=>sl<="0110