EDA数字时钟设计.ppt

上传人:hyn****60 文档编号:82710324 上传时间:2023-03-26 格式:PPT 页数:36 大小:1.27MB
返回 下载 相关 举报
EDA数字时钟设计.ppt_第1页
第1页 / 共36页
EDA数字时钟设计.ppt_第2页
第2页 / 共36页
点击查看更多>>
资源描述

《EDA数字时钟设计.ppt》由会员分享,可在线阅读,更多相关《EDA数字时钟设计.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、该电子教案为一书的配套教学资源版权所有,不得用于其它商业用途数字时钟设计及实现 何宾2011.09数字时钟设计-本章概要 本章给出了本章给出了PLDPLD器件在复杂数字系统的典型应用实例器件在复杂数字系统的典型应用实例-数字时钟的设计。数字时钟的设计也是数字时钟的设计。数字时钟的设计也是PLDPLD在复杂数字系在复杂数字系统的经典应用。统的经典应用。该章首先介绍了数字时钟的功能要求和整体结构;随后该章首先介绍了数字时钟的功能要求和整体结构;随后具体介绍了数字时钟的模块设计,其中包括数字时钟控制具体介绍了数字时钟的模块设计,其中包括数字时钟控制信号和控制模块的具体结构。本章最后详细描述了设计的信

2、号和控制模块的具体结构。本章最后详细描述了设计的具体实现过程,具体包括数字时钟的计数模块设计、计数具体实现过程,具体包括数字时钟的计数模块设计、计数时钟及扫描时钟设计和显示控制模块设计。时钟及扫描时钟设计和显示控制模块设计。数字时钟设计-数字时钟的功能要求 数字钟时常见的一种计数装置,数字钟以数字钟时常见的一种计数装置,数字钟以1Hz1Hz的频率工的频率工作。该设计完成数字钟的运行和显示。其主要功能有:作。该设计完成数字钟的运行和显示。其主要功能有:1 1、数字钟以、数字钟以1Hz1Hz的频率工作,其输入频率为的频率工作,其输入频率为1MHz1MHz。2 2、数字钟显示时、分、秒信息。这些显示

3、信息在、数字钟显示时、分、秒信息。这些显示信息在6 6个个7 7段数码管上完成。段数码管上完成。3 3、通过按键设置时、分信息。并且具有对数字钟的复、通过按键设置时、分信息。并且具有对数字钟的复位功能。位功能。4 4、复位键将时、分、秒清零,并做好重新计数的准备。、复位键将时、分、秒清零,并做好重新计数的准备。5 5、按键具有预置时、分的功能。分别对当前的时和分、按键具有预置时、分的功能。分别对当前的时和分信息做递增设置和递减设置。信息做递增设置和递减设置。数字时钟设计-数字时钟的结构 数字时钟设计-数字时钟的结构 该数字钟的控制部分由该数字钟的控制部分由PLDPLD芯片完成。该芯片的输入芯片

4、完成。该芯片的输入和输出接口由下面信号组成:和输出接口由下面信号组成:输入信号:输入信号:l l复位信号(复位信号(resetreset)l l时钟输入信号(时钟输入信号(clkclk)l l小时递增信号(小时递增信号(inc_hourinc_hour)l l小时递减信号小时递减信号(sub_hoursub_hour)l l分钟递增信号(分钟递增信号(inc_mininc_min)l l分钟递减信号(分钟递减信号(sub_minsub_min)输出信号:输出信号:l l7 7段数码管选信号(段数码管选信号(selsel)l l7 7段数码管段选信号段数码管段选信号(q)(q)数字时钟设计-控制

5、模块结构 该设计分成下面四个模块:定时时钟模块、扫描时钟模该设计分成下面四个模块:定时时钟模块、扫描时钟模块、按键处理模块、定时计数模块和显示控制模块。图块、按键处理模块、定时计数模块和显示控制模块。图11.211.2给出了这几个模块之间的信号连接关系。给出了这几个模块之间的信号连接关系。数字时钟设计-控制模块结构 1 1、按键处理模块、按键处理模块 由于由于VHDLVHDL语言的规则,将按键的处理和定时模块设计语言的规则,将按键的处理和定时模块设计在一起。为了描述清楚,将对按键的处理进行说明。在该在一起。为了描述清楚,将对按键的处理进行说明。在该设计中,采用异步复位电路方式。当复位信号低有效

6、时,设计中,采用异步复位电路方式。当复位信号低有效时,计数器停止计数,时、分、秒清零。计数器停止计数,时、分、秒清零。对于小时的递增、递减按键操作,通过一个对于小时的递增、递减按键操作,通过一个1Hz1Hz的计数的计数时钟采样。图时钟采样。图11.311.3给出了递增、递减的操作时序。给出了递增、递减的操作时序。数字时钟设计-控制模块结构 数字时钟设计-控制模块结构 当当1Hz1Hz的的div_clkdiv_clk信号的上升沿到来时,检测信号的上升沿到来时,检测hour_inchour_inc和和hour_dechour_dec按键,图中的虚线表示在时钟的上升沿对按键,图中的虚线表示在时钟的上

7、升沿对按键信号进行采样。当按键信号进行采样。当hour_inchour_inc或或hour_dechour_dec按键低有效按键低有效时,对小时进行递加或递减操作。时,对小时进行递加或递减操作。对于分钟的递加、递减按键操作,也是通过一个对于分钟的递加、递减按键操作,也是通过一个1Hz1Hz的计数时钟采样。原理同图的计数时钟采样。原理同图11.411.4。数字时钟设计-控制模块结构 2 2、定时时钟模块、定时时钟模块 定时时钟模块其作用就是将外部提供的定时时钟模块其作用就是将外部提供的1MHz1MHz的时钟,的时钟,通过分频器后向模块内的定时计数模块提供通过分频器后向模块内的定时计数模块提供1H

8、z1Hz的定时计的定时计数时钟。在设计定时时钟模块时,采用同步计数电路。数时钟。在设计定时时钟模块时,采用同步计数电路。数字时钟设计-控制模块结构 3 3、扫描时钟模块、扫描时钟模块 扫描时钟模块的作用就是通过对扫描时钟模块的作用就是通过对1MHz1MHz的分频处理后,的分频处理后,向显示控制模块提供合适的显示扫描时钟,该时钟必须经向显示控制模块提供合适的显示扫描时钟,该时钟必须经过合理的设计,才能保证过合理的设计,才能保证7 7段数码显示的稳定。在设计扫段数码显示的稳定。在设计扫描时钟模块时,采用同步计数电路。描时钟模块时,采用同步计数电路。数字时钟设计-控制模块结构 4 4、定时计数模块、

9、定时计数模块 定时计数模块是该设计中最重要的一部分,在设计该模定时计数模块是该设计中最重要的一部分,在设计该模块时,为了便于后续显示控制模块的设计,将时、分、秒块时,为了便于后续显示控制模块的设计,将时、分、秒进行分离,即小时分成了小时的十位和个位分别处理,分进行分离,即小时分成了小时的十位和个位分别处理,分钟分成了分钟的十位和个位分别处理。秒分成了秒的十位钟分成了分钟的十位和个位分别处理。秒分成了秒的十位和个位分别处理。在该设计中,采用和个位分别处理。在该设计中,采用2424小时计数模式。小时计数模式。例如:例如:1313:2828:5757。1313为小时的表示,为小时的表示,1 1为小时

10、的十为小时的十位,位,3 3为小时的个位;为小时的个位;2828为分钟的表示,为分钟的表示,2 2为分钟的十位,为分钟的十位,8 8为分钟的个位;为分钟的个位;5757为秒的表示,为秒的表示,5 5为秒的十位,为秒的十位,7 7为秒的为秒的个位。个位。数字时钟设计-控制模块结构 秒的个位计数从秒的个位计数从0-90-9,即十进制计数。当秒的个位计,即十进制计数。当秒的个位计数到数到9 9后,准备向秒的十位进位。秒的十位计数从后,准备向秒的十位进位。秒的十位计数从0-50-5,即,即六进制计数。当秒的十位计数到六进制计数。当秒的十位计数到5 5后,准备向分的个位进后,准备向分的个位进位。位。分钟

11、的个位计数从分钟的个位计数从0-90-9,即十进制计数。当分钟的个位,即十进制计数。当分钟的个位计数到计数到9 9后,准备向分钟的十位进位。分钟的十位计数从后,准备向分钟的十位进位。分钟的十位计数从0-50-5,即六进制计数。当分钟的十位计数到,即六进制计数。当分钟的十位计数到5 5后,准备向小后,准备向小时的个位进位。时的个位进位。数字时钟设计-控制模块结构 对于小时的处理比较复杂,小时的十位和个位之对于小时的处理比较复杂,小时的十位和个位之间存在下面的关系:间存在下面的关系:当小时的十位为当小时的十位为0 0或或1 1时,小时的个位可以计数范时,小时的个位可以计数范围为围为0-90-9,即

12、十进制计数;,即十进制计数;当小时的十位为当小时的十位为2 2时,小时的各位可以计数的范围时,小时的各位可以计数的范围为为0-30-3,即四进制计数;,即四进制计数;数字时钟设计-控制模块结构数字时钟设计-控制模块结构 5 5、显示控制模块、显示控制模块 显示控制模块主要作用是在显示控制模块主要作用是在7 7段数码管上正确的显示段数码管上正确的显示0-0-9 9的数字。的数字。selsel三位选择线和三位选择线和3-83-8译码器相连译码器相连 数字时钟设计-主程序library IEEE;library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.ST

13、D_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;-实体定义部分实体定义部分entity clock isentity clock is port(port(clkclk:in :in std_logicstd_logic;rstrst:in :in std_logicstd_logic;inc_mininc_min:in :in std_logicstd_logic;

14、sub_minsub_min:in :in std_logicstd_logic;inc_hourinc_hour:in :in std_logicstd_logic;sub_hoursub_hour:in :in std_logicstd_logic;selsel:out std_logic_vector(2 :out std_logic_vector(2 downtodownto 0);0);q :out std_logic_vector(7 q :out std_logic_vector(7 downtodownto 0);0);end clock;end clock;-信号定义:信号定

15、义:architecture Behavioral of clock isarchitecture Behavioral of clock is signal sec_counter1:std_logic_vector(3 signal sec_counter1:std_logic_vector(3 downtodownto 0);0);signal sec_counter2:std_logic_vector(3 signal sec_counter2:std_logic_vector(3 downtodownto 0);0);signal min_counter1:std_logic_vec

16、tor(3 signal min_counter1:std_logic_vector(3 downtodownto 0);0);signal min_counter2:std_logic_vector(3 signal min_counter2:std_logic_vector(3 downtodownto 0);0);signal hour_counter1:std_logic_vector(3 signal hour_counter1:std_logic_vector(3 downtodownto 0);0);signal hour_counter2:std_logic_vector(3

17、signal hour_counter2:std_logic_vector(3 downtodownto 0);0);signal signal divcounterdivcounter:std_logic_vector(3 :std_logic_vector(3 downtodownto 0);0);signal signal div_clkdiv_clk:std_logicstd_logic;signal signal scancounterscancounter:std_logic_vector(1 :std_logic_vector(1 downtodownto 0);0);signa

18、l signal scan_clkscan_clk:std_logicstd_logic;signal signal scan_outscan_out:std_logic_vector(2 :std_logic_vector(2 downtodownto 0);0);signal signal secseg1,secseg2,minseg1,minseg2,hourseg1,hourseg2:std_logic_vector(7 secseg1,secseg2,minseg1,minseg2,hourseg1,hourseg2:std_logic_vector(7 downtodownto 0

19、);0);begin begin数字时钟设计-主程序-计数时钟,对外部输入时钟分频,此处只适用于仿真,实计数时钟,对外部输入时钟分频,此处只适用于仿真,实际进行时间计数时,分频后时钟应该满足际进行时间计数时,分频后时钟应该满足1HZ1HZ。process(rst,clkprocess(rst,clk)begin begin if(rstif(rst=0)then=0)thendivcounterdivcounter=0000;=0000;div_clkdiv_clk=0;=0;elsif(rising_edge(clkelsif(rising_edge(clk)thenthenif(divco

20、unterif(divcounter=1111)then=1111)then divcounterdivcounter=0000;=0000;div_clkdiv_clk=not=not div_clkdiv_clk;else else divcounterdivcounter=divcounter+1;=divcounter+1;end if;end if;end if;end if;end process;end process;数字时钟设计-主程序-仿真时数码管扫描时钟,实际中需根据具体情况进行调解时钟频率仿真时数码管扫描时钟,实际中需根据具体情况进行调解时钟频率process(rst,

21、clkprocess(rst,clk)begin beginif(rstif(rst=0)then=0)then scancounterscancounter=00;=00;scan_clkscan_clk=0;=0;elsif(rising_edge(clkelsif(rising_edge(clk)thenthen if(scancounterif(scancounter=11)then=11)then scancounterscancounter=00;=00;scan_clkscan_clk=not=not scan_clkscan_clk;else else scancounters

22、cancounter=scancounter+1;=scancounter+1;end if;end if;end if;end if;end process;end process;第11章 数字时钟设计-主程序-时钟计数部分主进程时钟计数部分主进程 -时钟复位时钟复位clock:process(div_clk,rstclock:process(div_clk,rst)begin begin if(rstif(rst=0)then=0)thensec_counter1=X0;sec_counter1=X0;sec_counter2=X0;sec_counter2=X0;min_counter

23、1=X0;min_counter1=X0;min_counter2=X0;min_counter2=X0;hour_counter1=X0;hour_counter1=X0;hour_counter2=X0;hour_counter2=X0;数字时钟设计-主程序 -手动调分,递增手动调分,递增elsif(rising_edge(div_clk)thenelsif(rising_edge(div_clk)then if(inc_minif(inc_min=0)then=0)then if(min_counter1=X9)then if(min_counter1=X9)then min_count

24、er1=X0;min_counter1=X5)then if(min_counter2=X5)then min_counter2=X0;min_counter2=X0;else else min_counter2=min_counter2+1;min_counter2=min_counter2+1;end if;end if;else else min_counter1=min_counter1+1;min_counter1=min_counter1+1;end if;end if;数字时钟设计-主程序-手动调分,递减手动调分,递减elsif(sub_minelsif(sub_min=0)th

25、en=0)then if(min_counter1=X0)then if(min_counter1=X0)then min_counter1=X9;min_counter1=X9;if(min_counter2=X0)then if(min_counter2=X0)then min_counter2=X5;min_counter2=X5;else else min_counter2=min_counter2-1;min_counter2=min_counter2-1;end if;end if;else else min_counter1=min_counter1-1;min_counter1

26、=min_counter1-1;end if;end if;数字时钟设计-主程序-手动调时,增时手动调时,增时elsif(inc_hourelsif(inc_hour=0)then=0)then if(hour_counter2=X2)then if(hour_counter2=X2)then if(hour_counter1=X3)then if(hour_counter1=X3)then hour_counter1=X0;hour_counter1=X0;hour_counter2=X0;hour_counter2=X0;else else hour_counter1=hour_count

27、er1+1;hour_counter1=hour_counter1+1;end if;end if;else else if(hour_counter1=X9)then if(hour_counter1=X9)then hour_counter1=X0;hour_counter1=X0;hour_counter2=hour_counter2+1;hour_counter2=hour_counter2+1;else else hour_counter1=hour_counter1+1;hour_counter1=hour_counter1+1;end if;end if;end if;end i

28、f;第11章 数字时钟设计-主程序-手动调时,减时手动调时,减时elsif(sub_hourelsif(sub_hour=0)then=0)then if(hour_counter1=X0)then if(hour_counter1=X0)then if(hour_counter2=X0)then if(hour_counter2=X0)then hour_counter1=X3;hour_counter1=X3;hour_counter2=X2;hour_counter2=X2;elseelse hour_counter2=hour_counter2-1;hour_counter2=hour

29、_counter2-1;hour_counter1=X9;hour_counter1=X9;end if;end if;else else hour_counter1=hour_counter1-1;hour_counter1=X9)then if(sec_counter1=X9)then sec_counter1=X0;sec_counter1=X5)then if(sec_counter2=X5)then sec_counter2=X0;sec_counter2=X9)then if(min_counter1=X9)then min_counter1=X0;min_counter1=X5)

30、then if(min_counter2=X5)then min_counter2=X0;min_counter2=X0;if(hour_counter2=X2)then if(hour_counter2=X2)then if(hour_counter1=X3)then if(hour_counter1=X3)then hour_counter1=X0;hour_counter1=X0;hour_counter2=X0;hour_counter2=X0;第11章 数字时钟设计-主程序 elseelse hour_counter1=hour_counter1+1;hour_counter1=ho

31、ur_counter1+1;end if;end if;else else if(hour_counter1=X9)then if(hour_counter1=X9)then hour_counter1=X0;hour_counter1=X0;hour_counter2=hour_counter2+1;hour_counter2=hour_counter2+1;else else hour_counter1=hour_counter1+1;hour_counter1=hour_counter1+1;end if;end if;end if;end if;else else min_counte

32、r2=min_counter2+1;min_counter2=min_counter2+1;end if;end if;数字时钟设计-主程序 elseelse min_counter1=min_counter1+1;min_counter1=min_counter1+1;end if;end if;else else sec_counter2=sec_counter2+1;sec_counter2=sec_counter2+1;end if;end if;else else sec_counter1=sec_counter1+1;sec_counter1=sec_counter1+1;end

33、if;end if;end if;end if;end if;end if;end process clock;end process clock;数字时钟设计-主程序-生成扫描时钟生成扫描时钟process(rst,scan_clkprocess(rst,scan_clk)begin begin if(if(rstrst=0)then=0)then scan_outscan_out=000;=000;elsif(rising_edge(scan_clkelsif(rising_edge(scan_clk)then)then if(scan_outif(scan_out=101)then=10

34、1)then scan_outscan_out=000;=000;else else scan_outscan_out=scan_out+1;q q=secseg1;selsel=000;q q=secseg2;selsel=001;q q=minseg1;selsel=010;q q=minseg2;selsel=011;q q=hourseg1;selsel=100;q q=hourseg2;selsel=101;q=11111111;sel q=11111111;sel secseg1 secseg1 secseg1 secseg1 secseg1 secseg1 secseg1 sec

35、seg1 secseg1 secseg1 secseg1 secseg1 secseg1 secseg1 secseg1 secseg1 secseg1 secseg1 secseg1 secseg1 secseg1 secseg1 secseg2 secseg2 secseg2 secseg2 secseg2 secseg2 secseg2 secseg2 secseg2 secseg2 secseg2 secseg2 secseg2 secseg2 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1

36、 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1 minseg1 minseg2 minseg2 minseg2 minseg2 minseg2 minseg2 minseg2 minseg2 minseg2 minseg2 minseg2 minseg2 minseg2 minseg2 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg1 hourseg2 hourseg2 hourseg2 hourseg2 hourseg2 hourseg2 hourseg2 hourseg2=01111111;end case;end case;end process;end process;end Behavioral;end Behavioral;数字时钟设计-主程序

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁