资源描述:
《基于vhdl的时钟、正弦波和方波实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数字时钟、正弦波和方波实验报告一:实验要求。设计一个时钟,能设置两个时间,到这两个时间能够控制自动响铃30秒。时间调整和定时的设置使用两个按钮实现。二:试验程序及说明。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCLOCKISPORT(clk,k:INSTD_LOGIC;clk5,clk2:instd_logic;pb1,pb2:INSTD_LOGIC;pt1,pt2,ptml,ptmh,pthl,pthh:OUTstd_
2、logic_vector(3downto0);ring:OUTSTD_LOGIC);ENDCLOCK;ARCHITECTUREONEOFCLOCKISsignalq1,q2,q3,q4,q5,q6:integerrange0to9;signaldq1,dq2,dq3,dq4,dq5,dq6:std_logic_vector(3downto0);signaldpa1,dpa2,dpa3,dpa4,dpb1,dpb2,dpb3,dpb4:std_logic_vector(3downto0);signalc1,c2,c3,c4:STD
3、_LOGIC;signalclk1s,clk1m,clk1h:STD_LOGIC;signalhour:integerrange0to23;signalrhoura,rhourb:integerrange0to23;signalrminha,rminhb,rminla,rminlb:integerrange0to9;signalrhourha,rhourhb,rhourla,rhourlb:integerrange0to9;signalrhac,rhbc,rmac,rmbc:STD_LOGIC;signalsta:integer
4、range0to6;signalringa,ringb:STD_LOGIC;signalfig:integerrange0to1;说明:clk:时钟基准信号,做正常走时的秒时钟信号。clk2:用于在调整(校准)时间和设置闹铃时间时,相应的时钟位能闪烁。clk5:用于使蜂鸣器响所需的1KHz的时钟。pb1:用于调整时间的按钮。每按一下,相应的时钟位时钟加一。pb2:用于调整时钟的状态。正常走时状态0,设置时钟小时1,设置时钟分钟2,设置定时a小时时3,设置定时a分钟4,设置定时b小时5,设置定时b小时6,然后回到0。状态的变化根据
5、pb1的信号变化。pb2用来改变设置值。pt1:输出的秒时钟信号。pt2:输出的10秒位信号。ptml:输出的分钟信号的低位。ptmh:输出的分钟信号的高位。pthl:输出的小时信号的低位。pthh:输出的小时信号的高位。ring:输出的打铃信号,它和时钟信号clk5相与的结果作为蜂鸣器的输入信号。k:打铃开关信号,当为高电平时,打铃时间设置有效,到打铃时间,蜂鸣器会响;当为低电平时,到打铃时间,蜂鸣器不响。下面的signal信号均为中间量,并不作为最终的输出信号。q1,q2,q3,q4,q5,q6:秒的高低位输出信号,分钟的高
6、低位输出信号,小时的高低位输出信号。dq1,dq2,dq3,dq4,dq5,dq6:正常走时的时钟信号输出,相应的译码输出,分别对应:秒的高低位,分钟的高低位,小时的高低位。dpa1,dpa2,dpa3,dpa4,dpb1,dpb2,dpb3,dpb4:设置的打铃时间的小时和分钟的译码输出信号,分为a和b。dpa1,dpa2:a打铃时间的分钟的低高位,dpa3,dpa4:小时的低高位;dpb1,dpb2:b打铃时间的低高位,dpb3,dpb4:小时的低高位。c1,c2,c3,c4:c1:秒低位的进位信号,c2:秒高位的进位信号,
7、c3:分钟的低位进位信号,c4:分钟的高位进位信号。clk1s,clk1m,clk1h:秒、分、时的时钟信号。hour:正常走时的小时输出信号。rhoura,rhourb:设置的打铃时间的输出小时信号。rminha,rminhb,rminla,rminlb:设置的打铃时间a和b的分钟输出信号。rhourha,rhourhb,rhourla,rhourl:设置的打铃时间a和b的小时输出信号。rhac,rhbc,rmac,rmbc:设置打铃信号的时钟基准信号。sta:状态标志位。ringa,ringb:a和b的打铃标志位。fig:数
8、码管闪烁标志位。beginp1s:process(clk1s)----1s的计数beginifclk1s'EVENTandclk1s='1'thenifq1=9thenq1<=0;c1<='1';elseq1<=q1+1;c1<='0';endif;endif;