《第8章 数字时钟设计PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第8章 数字时钟设计PPT讲稿.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章 数字时钟设计第1页,共37页,编辑于2022年,星期一1.多功能数字电子钟功能正常计时:秒(正常计时:秒(60)、分()、分(60)、小时()、小时(24)计数;)计数;秒计时的频率为秒计时的频率为1Hz,数码管用动态扫描实时显示计,数码管用动态扫描实时显示计时的小时、分、秒。时的小时、分、秒。整点报时:逢整点蜂鸣器在整点报时:逢整点蜂鸣器在“59”分钟的第分钟的第51、53、55、57秒发频率为秒发频率为512Hz的低音,在的低音,在“59”分钟的第分钟的第59秒发频率为秒发频率为1024Hz的高音。的高音。校时:校时:1)校小时)校小时,显示小时数码管以显示小时数码管以4Hz的频率
2、递增计数;的频率递增计数;2)校分)校分,显示分数码管以显示分数码管以4Hz的频率递增计数;的频率递增计数;3)校秒)校秒,秒清秒清0。第2页,共37页,编辑于2022年,星期一模60进制计数器模60进制计数器模24进制计数器CLK小时计时小时计时 分计时分计时 秒计时秒计时CLK1S显示小时显示分显示秒CLK/60CLK/36001小时1分钟个位十位个位十位个位十位计时计时动显动显1.计时、显示电路计时、显示电路RESET60/24进制计数器(进制计数器(VHDL)第3页,共37页,编辑于2022年,星期一8位数码管动态显示位数码管动态显示1 432 088选一数据选择器选一数据选择器4位B
3、CD码 产生选段码产生选段码ag信号;信号;gfedcbaM2M1M3M4M5M6M7M88路脉冲分配器路脉冲分配器 产生选位产生选位M8 M1 信号;信号;模模8计数器计数器 38译码器译码器第4页,共37页,编辑于2022年,星期一7段译码器段译码器3:8译码器译码器模模8clk1kd13.0q2.08:1MUXd73.0b3.0M8.1ag模模8计数器计数器38译码器译码器8路脉冲分配器路脉冲分配器8位数码管动态显示位数码管动态显示模模24clk1hzh3.0信号源CPLD芯片芯片模模60m3.0模模60s3.0d03.0d63.0h7.4s7.4m7.4d23.0,d53.0可定义为特
4、殊字(“1111”)d33.0d23.0d43.0d53.0遇特殊字(“1111”)时显示(g=1)第5页,共37页,编辑于2022年,星期一系统时钟系统时钟1)秒计数时钟)秒计数时钟1Hz2)校时时钟校时时钟4Hz3)动显扫描时钟动显扫描时钟1024Hz 4)蜂鸣器时钟蜂鸣器时钟 1024Hz 蜂鸣器时钟蜂鸣器时钟 512Hz3.报时、分频电路报时、分频电路报时:整点前报时:整点前59分分51,53,55,57秒输出秒输出512hz频率的时钟;频率的时钟;59秒输出秒输出1k 频率的时钟。频率的时钟。第6页,共37页,编辑于2022年,星期一4.系统框图系统框图报时控报时控制电路制电路显示显
5、示控制控制电路电路计时器计时器agclk1hz扫描显扫描显示电路示电路cstchtcmtresetclk1kclk4hzclk1kclk512M1M8蜂鸣器蜂鸣器第7页,共37页,编辑于2022年,星期一模块说明模块说明时钟的设计共化分为6个模块:秒计数器(count60),分计数器(count601),小时计数器(count24),报警电路(bs),扫描电路(set),译码电路(led7)。下面具体分析各个模块的原理、内容和功能。第8页,共37页,编辑于2022年,星期一1.秒计数器(count60)能够实现60进制循环计数,带有复位端reset、手动调分功能端setmin和向分进位端c,受
6、时钟上升沿信号控制,其文本语言(文件名:count60.vhd)为底层文本,图1为秒计数器的仿真波形图。第9页,共37页,编辑于2022年,星期一LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT60 IS PORT(CLK,RESET,SETMIN:IN STD_LOGIC;SEC0,SEC1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);C:OUT STD_LOGIC);END COUNT60;
7、ARCHITECTURE ONE OF COUNT60 ISSIGNAL SEC0_T,SEC1_T:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL E_1,E_2:STD_LOGIC;BEGIN SEC0=SEC0_T;SEC1=SEC1_T;E_2=(SETMIN and CLK);C=(E_1 or E_2);第10页,共37页,编辑于2022年,星期一PROCESS(CLK,RESET,SETMIN)BEGIN IF RESET=0THEN SEC0_T=0000;SEC1_T=0000;ELSIF CLKEVENT AND CLK=1 THEN IF SEC0
8、_T=1001 THEN SEC0_T=0000;SEC1_T=SEC1_T+1;ELSE SEC0_T=SEC0_T+1;END IF;IF SEC0_T=1001 AND SEC1_T=0101 THEN SEC0_T=0000;SEC1_T=0000;E_1=1;ELSE E_1=0;END IF;END IF;END PROCESS;END ONE;第11页,共37页,编辑于2022年,星期一图1.六十进制秒计数器的仿真波形第12页,共37页,编辑于2022年,星期一2.分计数器(COUNT601)能够实现60进制循环计数,带有带有复位端reset、手动调小时功能端sethour和向时
9、进位端CO,受时钟上升沿信号控制。其文本语言(文件名:COUNT601.vhd)为底层文本,图2为分计数器的仿真波形图第13页,共37页,编辑于2022年,星期一LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT601 IS PORT(CLK,RESET,CLK1,SETHOUR:IN STD_LOGIC;MIN0,MIN1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO:OUT STD_LOG
10、IC);END COUNT601;ARCHITECTURE ONE OF COUNT601 IS SIGNAL MIN0_T,MIN1_T:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL ENHOUR_1,ENHOUR_2:STD_LOGIC;BEGIN MIN0=MIN0_T;MIN1=MIN1_T;ENHOUR_2=(SETHOUR and CLK1);CO=(ENHOUR_1 or ENHOUR_2);第14页,共37页,编辑于2022年,星期一PROCESS(CLK,RESET,SETHOUR)BEGIN IF RESET=0THEN MIN0_T=0000;M
11、IN1_T=0000;ELSIF CLKEVENT AND CLK=1 THEN IF MIN0_T=1001 THEN MIN0_T=0000;MIN1_T=MIN1_T+1;ELSE MIN0_T=MIN0_T+1;END IF;IF MIN0_T=1001 AND MIN1_T=0101 THEN MIN0_T=0000;MIN1_T=0000;ENHOUR_1=1;ELSE ENHOUR_1=0;END IF;END IF;END PROCESS;END ONE;第15页,共37页,编辑于2022年,星期一图2.六十进制分计数器的仿真波形第16页,共37页,编辑于2022年,星期一3.
12、小时计数器(COUNT24)能够实现24进制循环计数,带有复位端reset,受时钟上升沿信号控制。其文本语言(文件名:COUNT24.vhd)为底层文本,图3为分计数器的仿真波形图。第17页,共37页,编辑于2022年,星期一LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT24 IS PORT(CLK,RESET:IN STD_LOGIC;H0,H1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
13、END COUNT24;ARCHITECTURE ONE OF COUNT24 IS SIGNAL H0_T,H1_T:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINH0=H0_T;H1=H1_T;第18页,共37页,编辑于2022年,星期一PROCESS(CLK,RESET)BEGIN IF RESET=0THEN H0_T=0000;H1_T=0000;ELSIF CLKEVENT AND CLK=1 THEN IF H0_T=0011 THEN H0_T=0000;H1_T=H1_T+1;ELSE H0_T=H0_T+1;END IF;IF H0_T=0011 AN
14、D H1_T=0010 THEN H0_T=0000;H1_T=0000;END IF;END IF;END PROCESS;END ONE;第19页,共37页,编辑于2022年,星期一图3.小时计数器的仿真波形第20页,共37页,编辑于2022年,星期一4.报警模块(报警模块(BS)能够实现整点报时和循环点亮能够实现整点报时和循环点亮3只只LED灯,灯,工作时受时钟上升沿控制。其文本语言工作时受时钟上升沿控制。其文本语言(文件名:(文件名:BS.vhd)为底层文本,图)为底层文本,图4为为其仿真波形。其仿真波形。第21页,共37页,编辑于2022年,星期一LIBRARY IEEE;USE I
15、EEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY BS IS PORT(CLK:IN STD_LOGIC;M0,M1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);SPEAK:OUT STD_LOGIC;LAMP:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END BS;ARCHITECTURE ONE OF BS ISSIGNAL COUNT:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL COUN
16、T1:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN第22页,共37页,编辑于2022年,星期一SPEAKER:PROCESS(CLK)BEGINSPEAK=10 THENCOUNT1=00;ELSE COUNT1=COUNT1+1;END IF;END IF;END IF;END PROCESS SPEAKER;LAMPER:PROCESS(CLK)LAMPER:PROCESS(CLK)BEGIN BEGINIF CLKEVENT AND CLK=1 IF CLKEVENT AND CLK=1 THENTHEN IF COUNT=10 THEN IF COUNT=10
17、THEN IF COUNT=00 THEN IF COUNT=00 THEN LAMP=001;LAMP=001;ELSIF COUNT=01 THENELSIF COUNT=01 THEN LAMP=010;LAMP=010;ELSIF COUNT=10 THENELSIF COUNT=10 THEN LAMP=100;LAMP=100;END IF;END IF;COUNT=COUNT+1;COUNT=COUNT+1;ELSE COUNT=00;ELSE COUNT=00;END IF;END IF;END IF;END IF;END PROCESS LAMPER;END PROCESS
18、LAMPER;END ONE;END ONE;第23页,共37页,编辑于2022年,星期一图4.声光报警仿真波形第24页,共37页,编辑于2022年,星期一5.扫描模块(SET)能够实现逐次扫描秒个位、秒十位、分个能够实现逐次扫描秒个位、秒十位、分个位、分十位、时个位、时十位,并输出扫位、分十位、时个位、时十位,并输出扫描数据和相应位的点描数据和相应位的点dp,带有复位端,带有复位端reset,受扫描时钟上升沿控制。其文本语言,受扫描时钟上升沿控制。其文本语言(文件名:(文件名:SET.vhd)为底层文本,图)为底层文本,图5为为其仿真波形。其仿真波形。第25页,共37页,编辑于2022年,星
19、期一LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SET IS PORT(CLK1,RESET:IN STD_LOGIC;SE0,SE1,MI0,MI1,HU0,HU1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);DP:OUT STD_LOGIC);END
20、SET;ARCHITECTURE ONE OF SET ISSIGNAL COUNT:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIG SEL=COUNT;第26页,共37页,编辑于2022年,星期一PROCESS(CLK1)BEGIN IF RESET=0 THEN COUNT=000;ELSIF CLK1EVENT AND CLK1=1 THEN IF COUNT=101 THEN COUNT=000;ELSE COUNTDOUT=SE0;DPDOUT=SE1;DPDOUT=MI0;DPDOUT=MI1;DPDOUT=HU0;DPDOUT=HU1;DPDOUTDOUTD
21、OUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUT=0000000;END CASE;END PROCESS;END ONE;第31页,共37页,编辑于2022年,星期一7.顶层文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CLOCK_TOP IS PORT(CLK,RESET,CLKDSP,SETMIN,SETHOUR:IN STD_LOGIC;A,B,C,D,E,F,G:OUT STD_LOGIC;LAMP,SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);DP,SPEAKER:OUT STD
22、_LOGIC);END CLOCK_TOP;ARCHITECTURE ONE OF CLOCK_TOP ISCOMPONENT COUNT60 -秒计数器秒计数器COUNT60的元件声明的元件声明PORT(CLK,RESET,SETMIN:IN STD_LOGIC;SEC0,SEC1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);C:OUT STD_LOGIC);END COMPONENT;第32页,共37页,编辑于2022年,星期一COMPONENT COUNT601 -分计数器分计数器COUNT601的元件声明的元件声明PORT(CLK,RESET,CLK1,SETHO
23、UR:IN STD_LOGIC;MIN0,MIN1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO:OUT STD_LOGIC);END COMPONENT;COMPONENT COUNT24 -时计数器时计数器COUNT24的元件声明的元件声明PORT(CLK,RESET:IN STD_LOGIC;H0,H1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;COMPONENT SET -时间数据扫描分时选择时间数据扫描分时选择SET的元件声明的元件声明 PORT(SE0,SE1,MI0,MI1,HU0,HU1:IN STD
24、_LOGIC_VECTOR(3 DOWNTO 0);RESET,CLK1:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);DP:OUT STD_LOGIC);END COMPONENT;第33页,共37页,编辑于2022年,星期一COMPONENT LED7 -7段译码段译码LED7的元件声明的元件声明PORT(DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END C
25、OMPONENT;COMPONENT BS -报警单元报警单元BS的元件声明的元件声明 PORT(CLK:IN STD_LOGIC;M0,M1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);SPEAK:OUT STD_LOGIC;LAMP:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END COMPONENT;SIGNAL SECOND_0,SECOND_1,MINUTE_0,MINUTE_1,HOUR_0,HOUR_1,SELTIME:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL JIN1,JIN2:STD_LOGIC;SIG
26、NAL LEDOUT:STD_LOGIC_VECTOR(6 DOWNTO 0);第34页,共37页,编辑于2022年,星期一BEGINA=LEDOUT(6);B=LEDOUT(5);C=LEDOUT(4);D=LEDOUT(3);E=LEDOUT(2);F=LEDOUT(1);GRESET,CLK=CLK,SETMIN=SETMIN,C=JIN1,SEC0=SECOND_0,SEC1=SECOND_1);-分计数器元件例化分计数器元件例化U2:COUNT601 PORT MAP(RESET=RESET,CLK1=CLK,SETHOUR=SETHOUR,CLK=JIN1,CO=JIN2,MIN0
27、=MINUTE_0,MIN1=MINUTE_1);第35页,共37页,编辑于2022年,星期一-时计数器元件例化时计数器元件例化U3:COUNT24 PORT MAP(CLK=JIN2,RESET=RESET,H0=HOUR_0,H1=HOUR_1);-时间数据扫描分时选择元件例化时间数据扫描分时选择元件例化U4:SET PORT MAP(SE0=SECOND_0,SE1=SECOND_1,MI0=MINUTE_0,MI1=MINUTE_1,HU0=HOUR_0,HU1=HOUR_1,CLK1=CLKDSP,RESET=RESET,DOUT=SELTIME,SEL=SEL,DP=DP);-7段译码段译码LED7的元件例化的元件例化U5:LED7 PORT MAP(DIN=SELTIME,DOUT=LEDOUT);-报警单元报警单元BS的元件例化的元件例化U6:BS PORT MAP(CLK=CLK,M0=MINUTE_0,M1=MINUTE_1,SPEAK=SPEAKER,LAMP=LAMP);END ONE;第36页,共37页,编辑于2022年,星期一五、数字钟的整体连接图五、数字钟的整体连接图图6.数字钟各个模块连接示意图第37页,共37页,编辑于2022年,星期一
限制150内