第8章-数字时钟设计.ppt_第1页
第8章-数字时钟设计.ppt_第2页
第8章-数字时钟设计.ppt_第3页
第8章-数字时钟设计.ppt_第4页
第8章-数字时钟设计.ppt_第5页
免费预览已结束,剩余31页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 多功能数字电子钟功能,正常计时:秒(60)、分(60)、小时(24)计数;秒计时的频率为1Hz,数码管用动态扫描实时显示计时的小时、分、秒。 整点报时:逢整点蜂鸣器在“59”分钟的第51、53、55、57秒发频率为512Hz的低音,在“59”分钟的第59秒发频率为1024Hz的高音。 校时: 1)校小时, 显示小时数码管以4Hz的频率递增计数; 2)校分, 显示分数码管以4Hz的频率递增计数; 3)校秒, 秒清0。,模60进,制计数器,模60进,制计数器,模24进,制计数器,CLK,小时计时 分计时 秒计时,CLK,1S,显示小时,显示分,显示秒,CLK/60,CLK/3600,1小时,

2、1分钟,个位,十位,个位,十位,个位,十位,计时,动显,1.计时、显示电路,RESET,60/24进制计数器(VHDL),8位数码管动态显示,8选一数据选择器4位BCD码 产生选段码ag信号;,gfedcba,M2,M1,M3,M4,M5,M6,M7,M8,8路脉冲分配器 产生选位M8 M1 信号;,模8计数器 38译码器,7段译码器,3:8译码器,模8,clk1k,d13.0,q2.0,8:1MUX,d73.0,b3.0,M8.1,ag,8位数码管动态显示,模24,clk1hz,h3.0,信号源,CPLD芯片,模60,m3.0,模60,s3.0,d03.0,d63.0,h7.4,s7.4,m

3、7.4,d23.0,d53.0可定义为特殊字(“1111”),d33.0,d23.0,d43.0,d53.0,遇特殊字(“1111”)时显示(g=1),系统时钟 1)秒计数时钟1Hz 2) 校时时钟4Hz 3) 动显扫描时钟1024Hz 4) 蜂鸣器时钟 1024Hz 蜂鸣器时钟 512Hz,3. 报时、分频电路,报时:整点前59分 51,53,55,57秒输出512hz频率的时钟; 59秒输出1k 频率的时钟。,4. 系统框图,报时控制电路,显示控制电路,计时器,ag,clk1hz,扫描显示电路,cst,cht,cmt,reset,clk1k,clk4hz,clk1k,clk512,M1M8

4、,蜂鸣器,模块说明,时钟的设计共化分为6个模块:秒计数器(count60),分计数器(count601),小时计数器(count24),报警电路(bs),扫描电路(set),译码电路(led7)。下面具体分析各个模块的原理、内容和功能。,1.秒计数器(count60),能够实现60进制循环计数,带有复位端reset、手动调分功能端setmin和向分进位端c ,受时钟上升沿信号控制,其文本语言(文件名:count60.vhd)为底层文本,图1为秒计数器的仿真波形图。,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARI

5、TH.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; ARCHITECTURE ONE OF COUNT60 IS SIGNAL SEC0_T,SEC1_T:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL E_1,E_2: STD_LOGIC; BEGIN SEC0=SEC0_T; SE

6、C1=SEC1_T; E_2=(SETMIN and CLK); C=(E_1 or E_2);,PROCESS(CLK,RESET,SETMIN) BEGIN IF RESET=0THEN SEC0_T=0000;SEC1_T=0000; ELSIF CLKEVENT AND CLK=1 THEN IF SEC0_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; E

7、LSE E_1=0; END IF; END IF; END PROCESS; END ONE;,图1. 六十进制秒计数器的仿真波形,2.分计数器(COUNT601),能够实现60进制循环计数,带有带有复位端reset、手动调小时功能端sethour和向时进位端CO ,受时钟上升沿信号控制。其文本语言(文件名:COUNT601.vhd)为底层文本,图2为分计数器的仿真波形图,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTIT

8、Y COUNT601 IS PORT(CLK,RESET,CLK1,SETHOUR:IN STD_LOGIC; MIN0,MIN1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OUT STD_LOGIC); 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=(SETHOU

9、R and CLK1); CO=(ENHOUR_1 or ENHOUR_2);,PROCESS(CLK,RESET,SETHOUR) BEGIN IF RESET=0THEN MIN0_T=0000;MIN1_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

10、 ENHOUR_1=0; END IF; END IF; END PROCESS; END ONE;,图2. 六十进制分计数器的仿真波形,3.小时计数器(COUNT24),能够实现24进制循环计数,带有复位端reset,受时钟上升沿信号控制。其文本语言(文件名:COUNT24.vhd)为底层文本,图3为分计数器的仿真波形图。,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,RES

11、ET:IN STD_LOGIC; H0,H1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COUNT24; ARCHITECTURE ONE OF COUNT24 IS SIGNAL H0_T,H1_T:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN H0=H0_T;H1=H1_T;,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

12、+1; ELSE H0_T=H0_T+1; END IF; IF H0_T=0011 AND H1_T=0010 THEN H0_T=0000;H1_T=0000; END IF; END IF; END PROCESS; END ONE;,图3. 小时计数器的仿真波形,4.报警模块(BS),能够实现整点报时和循环点亮3只LED灯,工作时受时钟上升沿控制。其文本语言(文件名:BS.vhd)为底层文本,图4为其仿真波形。,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LO

13、GIC_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 IS SIGNAL COUNT: STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL COUNT1:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN,SPEAKER:PROCESS(CLK

14、) BEGIN SPEAK=10 THEN COUNT1=00; ELSE COUNT1=COUNT1+1; END IF; END IF; END IF; END PROCESS SPEAKER;,LAMPER:PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN IF COUNT=10 THEN IF COUNT=00 THEN LAMP=001; ELSIF COUNT=01 THEN LAMP=010; ELSIF COUNT=10 THEN LAMP=100; END IF; COUNT=COUNT+1; ELSE COUNT=00; END I

15、F;END IF; END PROCESS LAMPER ; END ONE;,图4. 声光报警仿真波形,5.扫描模块(SET),能够实现逐次扫描秒个位、秒十位、分个位、分十位、时个位、时十位,并输出扫描数据和相应位的点dp,带有复位端reset,受扫描时钟上升沿控制。其文本语言(文件名:SET.vhd)为底层文本,图5为其仿真波形。,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,R

16、ESET: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 SET; ARCHITECTURE ONE OF SET IS SIGNAL COUNT:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIG SEL=COUNT;,PROCESS(CLK1) BEGIN IF RESET=0

17、 THEN COUNTDOUTDOUTDOUTDOUTDOUTDOUT=HU1;DP=0; END CASE; END PROCESS; END ONE;,图5. 时间数据扫描分时选择模块的仿真波形,6.译码器模块(LED7),能够实现译码功能,将扫描到的数据能够译码显示在7段数码管上,输出端led6.0分别对应数码管的ag。其文本语言(文件名:LED7.vhd)为底层文本。,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTI

18、TY LED7 IS PORT( DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END LED7; ARCHITECTURE ONE OF LED7 IS BEGIN,PROCESS(DIN) BEGIN CASE DIN IS WHEN0000=DOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUT=0000000; END CASE; END PROCESS; END ONE;,7.顶层文件,LIBRARY IEEE; USE IEEE.STD_LOG

19、IC_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_LOGIC); END CLOCK_TOP; ARCHITECTURE ONE OF CLOCK_TOP IS COMPONENT COUNT60 -秒计数器COUNT60的元件声明 PORT(CLK,RESET,SETMIN:IN STD_LOG

20、IC; SEC0,SEC1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); C:OUT STD_LOGIC); END COMPONENT;,COMPONENT COUNT601 -分计数器COUNT601的元件声明 PORT(CLK,RESET,CLK1,SETHOUR: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_LOG

21、IC; H0,H1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT; COMPONENT SET -时间数据扫描分时选择SET的元件声明 PORT(SE0,SE1,MI0,MI1,HU0,HU1:IN STD_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;,COMPONE

22、NT LED7 -7段译码LED7的元件声明 PORT( DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR (6 DOWNTO 0); END COMPONENT; 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,H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论