61阅读

数字时钟电路设计-基于QuartusII软件的数字时钟设计

发布时间:2018-01-29 所属栏目:数字钟的设计

一 : 基于QuartusII软件的数字时钟设计

实验名称:数字时钟设计

姓名:杨 龙 成 班级: 电子与通信工程 学号: 3120302012 成绩:

一、实验目的

1.掌握各类计数器及它们相连的设计方法;

2.掌握多个数码管显示的原理与方法;

3.掌握模块化设计方式;

4.掌握用VHDL语言的设计思想以及整个数字系统的设计。[www.61k.com)

二、实验内容

1. 设计要求

1)具有时、分、秒计数显示功能,在数码管显示00:00:00~23:59:59,以24小时循环计时。

2)完成可以计时的数字时钟时钟计数显示时有LED灯的花样显示。

3)具有调节小时、分钟及清零的功能。

4)具有整点报时功能。

2. 性能指标及功能设计

1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分 60进制计数,时钟—24进制计数,并且在数码管上显示数值。

2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间。可以通过实验板上的键7和键4进行任意的调整,因为时钟信号均是1HZ的,所以LED灯每变化一次就来一个脉冲,即计数一次。

3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。

4)蜂鸣器在整点时有报时信号产生,产生“滴答.滴答”的报警声音。

5)根据进位情况,LED灯在时钟显示时有花样显示信号产生。

3. 系统方框图

数字钟的设计 基于QuartusII软件的数字时钟设计

三、设计原理和过程

3.1 硬件设计

本设计使用VHDL硬件开发板,可编程逻辑器件EMP1270T144C5系列。[www.61k.com]设计过程中用到的外围电路的设计有电源部分,可编程器件EMP1270T144C5,CPLD –JTAG接口,晶振和蜂鸣器,LED数码管显示,DIP开关与按键输入(具体电路见附录)

3.2 软件设计

3.2..1 程序包my_pkg的设计说明

为了简化程序设计增加可读性,系统采用模块化的设计方法,重复使用的组件以元件(component)的形式存在,以便相关块的调用。下面列出my_pkg组件包的代码。 library ieee;

use ieee.std_logic_1164.all;

package my_pkg is

component div40M------------------------------------------------------------------元器件1 Port( clk: in std_logic;

f1hz : out std_logic);

end component;

component count60-----------------------------------------------------------------元器件2 Port(clr,clk:in std_logic;

one :buffer std_logic_vector(3 downto 0);

ten :buffer std_logic_vector(3 downto 0);

full:out std_logic;

dout:buffer std_logic_vector(7 downto 0));

end component;

component count24-----------------------------------------------------------------元器件3 Port(clr,clk:in std_logic;

数字钟的设计 基于QuartusII软件的数字时钟设计

one :buffer std_logic_vector(3 downto 0);

ten :buffer std_logic_vector(3 downto 0);

full:out std_logic);

end component;

component scan6----------------------------------------------------------------元器件4 port (clr,clk : in STD_LOGIC;

h_ten,h_one,m_ten,m_one,s_ten,s_one: in STD_LOGIC_vector(3 downto 0);

cs: out STD_LOGIC_vector(5 downto 0);

mux_out: out STD_LOGIC_vector(3 downto 0));

end component;

component bin2led---------------------------------------------------------------元器件5 port (bin : in std_logic_vector (3 downto 0);

led : out std_logic_vector (7 downto 0) );

end component;

component sh1k ----------------------------------------------------------------------元器件6 Port( clk: in std_logic;--from system clock(40MHz)

f1hz : out std_logic);-- 1Hz output signal

end component;

component alarm_set------------------------------------------------------------------元器件7 Port(rst,hz1: in std_logic;--system clock 1Hz

alarm,ok: in std_logic;--keep pushing to declare alarm set

sec_tune: in std_logic;

sec_one,sec_ten:out std_logic_vector(3 downto 0));

end component;

end my_pkg;

3.2.2 count60组件

由此提供分(秒)计数值,当分计数器计数到59再来一个脉冲信号秒计数器清零从新开始计数,而进位则作为小时计数器的计数脉冲,使小时计数器计数加1,同时分计数器在分设置时钟信号的响应下设置分计数器的数值。(www.61k.com]在count60组件中,个位(one)和十位(ten)分别计数,都设为二进制四位矢量形式,当个位从0计到9时,在下一个clk上升沿来临后,十位进1,个位变0,十位从0到5计数,在十位为5,个位9的时候,下一个上升沿来临后,十位个位都变0,进位full加1。因此在程序设计中需要两个进程process来分别完成计数,秒计数以1Hz的输入为触发信号,分计数以秒的full信号为触发信号。具体的count60的组件代码如下:

Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.std_logic_unsigned.all;

Entity count60 is

Port(clr,clk:in std_logic;

one :buffer std_logic_vector(3 downto 0);

ten :buffer std_logic_vector(3 downto 0);

full:out std_logic;

dout:buffer std_logic_vector(7 downto 0));

数字钟的设计 基于QuartusII软件的数字时钟设计

end count60;

architecture behav of count60 is

begin

process(clr,clk)

begin

if(clr='0')then

one<="0000";

elsif(rising_edge(clk))then

if(one="1001")then

one<="0000";

else

one<=one+1;

end if;

end if;

end process;

process(clr,clk)

61阅读请您转载分享:

begin

if(clr='0')then

ten<="0000";

elsif(rising_edge(clk))then if(one="1001")then if(ten="0101")then ten<="0000"; else

ten<=ten+1; end if;

end if;

end if;

end process ;

dout<=ten&one;

process(clk)-----------------满59进位(置full值 begin

if(rising_edge(clk))then

if ten="0101"then

if one="1001"then

full<='1';

else full<='0';

end if;

else full<='0';

end if;

end if;

end process;

end behav;

设定clk与clr两个系统的输入后,课观察到one和ten的波形,在计数值达到59后,

数字钟的设计 基于QuartusII软件的数字时钟设计

即ten为0101,one为1001以后,即进位到0000 0000,full进1,波形如下。[www.61k.com)

3.2.3 count24组件

由此提供时计数值,当时计数器计数到23再来一个脉冲信号秒计数器清零从新开始计数,而进位则作为小时计数器的计数脉冲,使小时计数器计数加1,同时分计数器在分设置时钟信号的响应下设置时计数器的数值。在count24组件中,个位(one)和十位(ten)分别计数,都设为二进制四位矢量形式,在ten小于2的时候,个位从0计到9时,满9ten加1,在ten为2的时候,one从0到3计数,one为3时候,在下一个clk上升沿来临后,ten与one都变0,进位full加1。因此在程序设计中需要多个个进程process来分别完成计数,时计数以分的full的输入为触发信号,分计数以秒的full信号为触发信号。具体的count24的组件代码如下: Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.std_logic_unsigned.all;

Entity count24 is

Port(clr,clk:in std_logic;

one :buffer std_logic_vector(3 downto 0);

ten :buffer std_logic_vector(3 downto 0);

full:out std_logic

);

end count24;

architecture behav of count24 is

begin

process(clr,clk)-------------------------计数0到23

begin

if(clr='0')then

ten<="0000";

one<="0000";

elsif(rising_edge(clk))then

if(ten<"0010")then

if(one<"1001")then

one<=one+"0001";

end if;

if one="1001"then

one<="0000";

ten<=ten+"0001";

end if;

end if;

if(ten="0010") then

数字钟的设计 基于QuartusII软件的数字时钟设计

if(one<"0011")then

one<=one+"0001";

end if;

if one="0011"then

one<="0000";

ten<="0000";

end if;

end if;

end if;

end process;

process(clk)---------------------------------满23进位

begin

if(rising_edge(clk))then

if ten="0010"then

if one="0011"then

full<='1';

else full<='0';

end if;

else full<='0';

end if;

end if;

end process;

end behav;

小时计数模块图形分析:

用来对时进行计数,当记到计数器的低四位小于2时,one从0到9 计数,ten 为2时,one从0到3计数,所以完成了24进制的计数,clk为系统时钟信号,具体波形如下:

3.2.4 div40M分频组件

为了便于时钟计数,需要1Hz的时钟信号。(www.61k.com)为了节省电力耗电,输出采用7段LED数码管来显示。要提供秒钟的源信号,以便正常的计数,另外,6个led数码管要都显示,利用人眼的视觉暂留效应,需要1000hZ的时钟扫描信号。在本系统中,时钟信号发生器的信号频率为40MHz,因此要将其进行分频,产生1HZ和1KHz的信号。代码如下: Library IEEE;

Use IEEE.std_logic_1164.all;

Use ieee.std_logic_unsigned.all;

Use IEEE.std_logic_arith.all;

Entity div40M is

数字钟的设计 基于QuartusII软件的数字时钟设计

Port( clk: in std_logic ; --from system clock(40MHz)

f1hz: out std_logic);-- 1Hz output signal

end div40M;

architecture arch of div40M is

signal count : integer range 0 to 19999999;

begin

process (clk)

begin

if rising_edge(clk) then

count<=count+1;

if count>= 10000000 then f1hz<='1';

else f1hz<='0';

end if;

end if;

end process;

end arch;

-----------------本模块将40MHZ分频,分成1000HZ,提供扫描(片选)的时间----------------------- Library IEEE;

Use IEEE.std_logic_1164.all;

Use ieee.std_logic_unsigned.all;

Use IEEE.std_logic_arith.all;

Entity sh1k is

Port( clk: in std_logic;

f1hz: out std_logic);

end sh1k;

architecture arch of sh1k is

signal count : integer range 0 to 39999;

begin

process (clk)

begin

if rising_edge(clk) then

count<=count+1;

if count>=20000 then f1hz<='1';

else f1hz<='0';

end if;

end if;

end process;

end arch;

波形分析:

具体的分频波形如下,由于这里的40MHZ太大,仿真时不便观察这里我们以40KHZ来分频,效果如下:

数字钟的设计 基于QuartusII软件的数字时钟设计

3.2.5 scan6扫描组件

由于LED使用动态显示,因此要采用扫描的方式来点亮各个LED管,人眼的视觉延迟1/32秒。(www.61k.com)在本模块中,时、分、秒的每一位数都作为输入,同时提供一个片选(6位),每来一个clk 进行一次选位循环,即依次点亮6个LED灯管。在点亮的对应管上将该位的数字送给一个输出端口max_out.送到显示模块显示。具体的代码如下: library IEEE;

61阅读请您转载分享:

use IEEE.std_logic_1164.all;

use IEEE.std_logic_arith.all;

use IEEE.std_logic_unsigned.all;

entity scan6 is

port (clr,clk : in STD_LOGIC;

h_ten,h_one,m_ten,m_one,s_ten,s_one: in STD_LOGIC_vector(3 downto 0); cs: out STD_LOGIC_vector(5 downto 0);----------------------------片选

mux_out: out STD_LOGIC_vector(3 downto 0));--要显示的那一个时钟位 end scan6;

architecture arch of scan6 is

signal sel : std_logic_vector(2 downto 0);

begin

process (clr,clk,h_ten,h_one,m_ten,m_one,s_ten,s_one)

begin

if clr='0' then sel<="000";

elsif rising_edge(clk) then

sel<=sel + "001";

case sel is

when "000" => mux_out <= s_one; cs<="100000";

when "001" => mux_out <= s_ten; cs<="010000";

when "010" => mux_out <= m_one; cs<="001000";

when "011" => mux_out <= m_ten; cs<="000100";

when "100" => mux_out <= h_one; cs<="000010";

when "101" => mux_out <= h_ten; cs<="000001";

when others => mux_out <= "1110";

end case;

end if;

end process;

end arch;

波形仿真如下:

其中为23时46分28秒

数字钟的设计 基于QuartusII软件的数字时钟设计

3.2.6 bin2led组件

该组件的作用是将4位的二进制码转为八位的LED数码管的显示码,即译码模块。[www.61k.com] 将二进制数变为显示的0~9的数值。Bin为输入,led为输出,具体代码如下: Library IEEE;

Use IEEE.std_logic_1164.all;

Use IEEE.std_logic_unsigned.all;

Use IEEE.std_logic_arith.all;

entity bin2led is

port (bin : in std_logic_vector (3 downto 0);

led : out std_logic_vector (7 downto 0) );

end bin2led;

architecture arch of bin2led is

begin

PROCESS(bin)

BEGIN

CASE bin IS

WHEN "0000"=>led<="00111111";-----0

WHEN "0001"=>led<="00000110";-----1

WHEN "0010"=>led<="01011011";-----2

WHEN "0011"=>led<="01001111";-----3

WHEN "0100"=>led<="01100110";

WHEN "0101"=>led<="01101101";

WHEN "0110"=>led<="01111101";

WHEN "0111"=>led<="00000111";

WHEN "1000"=>led<="01111111";

WHEN "1001"=>led<="01101111";-----9

WHEN OTHERS =>NULL;

END CASE;

END PROCESS;

end arch;

仿真波形如下:

数字钟的设计 基于QuartusII软件的数字时钟设计

3.2.7 alarm_set组件

为了设定闹钟,我们设计一个目标调整程序,以1Hz的显示速率来调整时分秒的显示。(www.61k.com)这里的alarm为指拨开关,当为on时,六个数字即显示00:00:00,以等待输入,当持续按键后,秒从0到59依次增加,再返回0,任何时刻松开按键,即为要显示的值。调分键和调时键的动作原理相同。此时OK指拨开关的然在off状态。代码如下:

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_arith.all;

use IEEE.std_logic_unsigned.all;

Entity alarm_set is

Port(rst,hz1: in std_logic;--system clock 1Hz

alarm,ok: in std_logic;--keep pushing to declare alarm set

sec_tune: in std_logic;

sec_one,sec_ten:out std_logic_vector(3 downto 0));

End;

----define the signal_structure and _flow of the device

architecture arch of alarm_set is

signal sec_one_tmp: std_logic_vector(3 downto 0) ;

signal sec_ten_tmp: std_logic_vector(3 downto 0) ;

begin

tuning:process(rst,hz1,alarm,ok)

begin

if rst='1' then sec_one_tmp<="0000";sec_ten_tmp<="0000";

elsif rising_edge(hz1) then

if alarm='0' and ok='1' then

if sec_tune='1' then

if sec_one_tmp="1001" then sec_one_tmp<="0000";

if sec_ten_tmp<"0101" then

sec_ten_tmp<=sec_ten_tmp+"0001";

else sec_ten_tmp<="0000" ;

end if;

else sec_one_tmp<=sec_one_tmp +"0001";

end if;

end if;

else

null;

数字钟的设计 基于QuartusII软件的数字时钟设计

end if;

end if;

end process tuning;

sec_one<=sec_one_tmp;

sec_ten<=sec_ten_tmp;

end arch;

仿真波形图如下:

3.2.8 entity顶层模块

最后我们将各模块结合起来,已完成最后的系统功能。[www.61k.com)并且将该模块设置为top_level entity。在本entity中的包集合中要加上包use work.my_pkg.all; 具体代码如下:

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_arith.all;

use IEEE.std_logic_unsigned.all;

use work.my_pkg.all;

Entity clock is

Port(clr: in std_logic;

clk: in std_logic;

alarm,ok,sec_button:in std_logic; ----------------按钮

beep_driver:out std_logic;

dout: out std_logic_vector(7 downto 0);

cs: out std_logic_vector(5 downto 0));

End entity clock;

architecture arch of clock is

signal hz1,hz1k,beep_drive: std_logic;--1hz,1khz clock

signal sec_one,sec_ten,min_ten,min_one: std_logic_vector(3 downto 0); signal a,b,c,d,e,f: std_logic_vector(3 downto 0);

61阅读请您转载分享:

signal hour_one,hour_ten,time_bin: std_logic_vector(3 downto 0);

signal a_sec_one,a_sec_ten:std_logic_vector(3 downto 0);

signal bb:integer range 0 to 3;

begin

normal_counting:block----时钟计数模块,从00:00:00到23:59:59

数字钟的设计 基于QuartusII软件的数字时钟设计

signal full_sec:std_logic;

signal full_min:std_logic;

signal full_hour:std_logic;

begin

u0:div40M port map(clk=>clk,f1hz=>hz1);-----元件的调用

u1:count60

port map(clr=>clr,clk=>hz1,one=>sec_one,ten=>sec_ten,full=>full_sec);

u2:count60

port map(clr=>clr,clk=>full_sec,one=>min_one,ten=>min_ten,full=>full_min); u3:count24

port map(clr=>clr,clk=>full_min,one=>hour_one,ten=>hour_ten,full=>full_hour); end block normal_counting;

scantime:block---------------扫描时间的设定,这里为1毫秒(1000Hz) begin

u4:sh1k port map(clk=>clk,f1hz=>hz1k);

end block scantime;

scan_display:block----------------将4位二进制的时间转为BCD码,显示. begin

u7:alarm_set

port map(rst=>clr,hz1=>hz1,alarm=>alarm,ok=>ok,sec_tune=>sec_button, sec_one=>a_sec_one,sec_ten=>a_sec_ten);

u5:scan6 port map(clr=>clr,clk=>hz1k,s_one=>a,s_ten=>b, m_one=>c,m_ten=>d,

h_one=>e,h_ten=>f,

mux_out=>time_bin,

cs=>cs);

u6:bin2led port map(bin=>time_bin,led=>dout);------送到端口显示 end block scan_display;

beep:process(hz1,clr)-----------------------------------------

begin

if rising_edge(hz1) then

if sec_ten="0000"and sec_one="0000"and min_one="0000" and min_ten="0000" then

if bb<3 then

bb<=bb+1;

beep_driver<=hz1;

else beep_driver<='0';

end if;

end if;

end if;

end process;

process(clr,hz1,alarm,ok,sec_button)

begin

if alarm='0'and ok='1' then

数字钟的设计 基于QuartusII软件的数字时钟设计

a<=a_sec_ten;

b<=a_sec_one;

end if;

if alarm='1'and ok='1' then

a<=sec_one;

b<=sec_ten;

c<=min_one;

d<=min_ten;

e<=hour_one;

f<=hour_ten;

end if;

if alarm='1'and ok='0' then

a<=sec_one;

b<=sec_ten;

c<=min_one;

d<=min_ten;

e<=hour_one;

f<=hour_ten;

end if;

end process;

process(clr,hz1,alarm,ok,sec_button)

begin

if a_sec_ten =sec_ten and a_sec_one=sec_one then if bb<3 then

bb<=bb+1;

beep_driver<=hz1;

else beep_driver<='0';

end if;

end if;

end process;

end arch;

四、symbol文件的创立

4.1根据本程序设计产生的元件图

4.2 各引脚分配如下进行

数字钟的设计 基于QuartusII软件的数字时钟设计

五、实验小结

本设计采用自顶向下的设计方法和模块化设计方式,它由秒计数模块,分计数模块,小时计数模块,报警模块,秒分时设置模块和译码模块,程序包,entity模块(顶层模块)八部分组成。(www.61k.com)设计简单方便,层次清晰,工程的建立方便,无需单独设计各个组件模块产生原理图文件后再进行电路连接设计。

在接上硬件电路,可以看到数码管从00:00:00到23:59:59正常计数,当按下clr按键时,时钟复位到00:00:00 从新计数。整点报时和闹铃模块正常工作,由于按键数的限制,在本设计中,只设了调分和调秒的按键功能。在实验中叶遇到了一系列的问题,如引脚的分配,和扫描模块的设计。总的来说,对于做工程的,要先易后难,先一个模块一个模块着手,解决小的问题。最后将没有问题的部分整合起来,在检错方面也是这样的原则。通过本次的设计,我对硬件设计方面有了较为深刻的认识,其中包括工程的建立、流程、排错检错、完善,提高了我的实践能力。

61阅读请您转载分享:

二 : 应用Multism实现数字时钟电路的设计

【摘要】时钟电路属于典型的时序逻辑电路设计,能够综合锻炼学生时序逻辑电路设计以及分析的方法能力。Multism软件为NI公司推出的全功能电子设计仿真平台,能够对模拟电路、数字电路、混合信号电路进行完整的设计与仿真分析,在数字电路的教学中有重要的作用。阐述了仿真软件的基本功能,分析了时钟电路的基本工作原理以及设计方案,提出了电路的改进方案。

【关键词】Multism;数字电路;时钟;仿真分析;教学
在职业学校应用电子等相关专业的课程体系中,数字电路对于学生专业能力的形成具有极为重要的作用。数字电路主要讨论了时序逻辑电路、组合逻辑电路的设计与分析方案。其中组合逻辑电路主要侧重研究电路的输入与输出的逻辑关系,其电路的设计与分析较为简单;时序逻辑电路由于同时考虑到系统的初始状态以及输入状态,因此设计难度较大。为了能够使得在教学过程中,学生能够对于时序逻辑电路具有较好的掌握,可以应用时钟电路的设计作为一个教学项目,并使用Multism仿真软件,加强学生的直观理解,并有效提升数字电路的教学效果。
1.Multism简介
Multism是美国NI公司开发的全功能电子设计平台,又被称为虚拟实验室。软件为电子工程师以及所有的电子爱好者提供了完整的电子设计工作平台(EWB)。软件具有丰富的电子元器件库,包含常见的基本元件以及集成芯片,同时软件具备多种常见的分析测试仪器,主要包含万用表、示波器、逻辑分析仪、字信号发生器、信号源等。目前软件具备了直流分析、交流特性分析、逻辑状态分析、傅立叶分析、噪声分析等多种分析方案,能够为电路性能分析提供重要的参考。由于其功能强大,能够直观反映所设计电路的工作效果,因此在数字电路的教学过程中采用软件仿真的方案可以有效加强学生对电路的认识,提升教学效果。
2.时钟电路的设计与仿真
时钟电路设计中涉及到秒脉冲电路的设计、秒计时电路、分钟电路以及小时电路的设计。综合应用了555时基电路、计数器电路以及电路级联等方面的知识。对于学生的时序逻辑电路的设计与分析能力是一个比较综合的锻炼。
2.1 基于555时基电路的秒脉冲发生电路的设计
时钟电路计时主要是应用了74LS162计数器芯片的级联实现,计数器芯片需要标准的秒脉冲电路作为工作的CP脉冲实现精准的计时。产生秒脉冲的实现方案较多,可以采用振荡电路、555时基电路、晶振等多种方案实现。在本例中主要侧重对于数字电路知识的掌握,因此采用了555时基电路构建秒脉冲发生器。555时基电路的电路原理图以及工作波形如图1所示。
2.2 秒计时电路、分钟电路以及小时电路的设计
应用两片同步十进制计数器74LS162级联,并改变进制可以实现60进制的秒计时电路以及分钟计时电路,小时电路则使用二十四进制的方式。电路采用同步时序进行控制。秒、分钟计时电路的电路原理图如图2所示,小时电路的电路原理图如图3所示。
在时钟电路的分钟以及秒计时电路中,采用了60进制的方案,以秒计时电路为例,当计数值达到60的时候,与非门电路输出低电平控制计数器芯片的清零端,计数器清零,重新开始计数,同时秒计时电路还必须给分钟计时电路提供一个脉冲,使得分钟计时加一。分钟电路的工作原理与秒基本相同,在计时满60分钟的时候需要自身清零,同时向小时电路提供一个高电平脉冲。小时计时电路采用二十四进制,因此计数电路清零方式也与秒、分钟电路不同。整体电路采用了同步的时序,电路工作性能较为稳定。
2.3 各模块电路之间的连接
要能够完成整体时钟电路的仿真分析,需要将各个单元电路进行级联。在模拟电子产品的设计过程中单元电路级联的时候要充分考虑到阻抗特性以及耦合方式对于电路整体工作性能的影响。在数字电子产品的设计过程中,一般单元电路工作正常的前提下,只要单元电路之间连接正确都可以正常工作。各个模块之间的连接方式如图4所示。
3.数字时钟电路的功能拓展以及改进方案
本时钟电路采用了数字时序逻辑电路的方案进行了设计,能够完成对于时、分、秒的计时。但是同时也存在较多可以进一步优化的方案。主要包含以下几个方面,首现是功能的进一步拓展,可以在加上星期以及天数的计数模块,实现万年历的功能,添加温度、湿度等传感器实现温度、时间等共同显示,需要的时候还可以添加闹钟模块等;其次电路的性能也可以进一步优化,比如可以采用频率准确度更高的晶振电路提供秒脉冲信号,提升计时的精确度,可以使用DS1302计时芯片简化电路的结构等。在实际的教学过程中可以为学生提供一定的思路,指导学生在掌握本种设计方案的基础上,进行研究性学习,提升学习的积极性以及学习的实际效果。
4.结论
时钟电路是一个复杂度较小,但是较为综合的时序逻辑电路。在目前职业学校进行专业课程教学过程中,普遍存在着学生对于理论知识学习的兴趣不高,学习效果较差的现象。作为应用电子技术等相关专业的专业基础课程,数字电路在教学的过程中就要能够吸收教学改革的先进理念,应用现代化的教学手段,为学生的专业课程学习提供直观的教学方式。应用Multism软件进行时钟电路的设计,能够直观体现电路工作的性能,有效提升学生学习的积极性与主动性,改善课程[www.61k.com]的教学效果。
参考文献
[1]王斌,钱松.电子线路板设计与制作[M].北京:北京出版社,2011.
[2]夏路易,石宗义.电路原理图与电路板设计教程Protel 99SE[M].北京:北京希望电子出版社,2002.
[3]杜武林.高频电路原理与分析[M].西安:电子科技大学出版社,1990.
[4]清华大学通信教研组高频电路[M].北京人民邮电出版社,1979.
[5]张凤言.模拟乘(除)法器,分析、参数与应用[M].北京科学出版社,1990.
作者简介:陈琴(1982―),女,江苏江都人,江都职教集团电子信息工程系助教,南京理工大学在读硕士研究生,主要研究方向:电子产品的设计、职业教育研究。

三 : 数字时钟的设计

南华大学电气工程学院

《电子技术课程设计》任务书

设计题目: 数字时钟的设计

专 业:

学生姓名: 学 号:

起迄日期: 2011年 1月3日 ~ 2011年1月14日 指导教师: 陈 蔚

教研室主任: 管金云

1

《电——http://www.61k.com——子技术课程设计》任务书

2

3

目 录

引 言

1. 数字时钟总体方案 ?????????????????????????6

1.1 数字时钟总体方案的确定 ??????????????????????6

1.2 数字时钟总体方案图 ????????????????????????6

1.3 数字时钟电路的组成 ????????????????????????7

1.4 数字时钟的工作原理 ????????????????????????7

2. 数字时钟单元电路 ?????????????????????????8

2.1 电源电路 ?????????????????????????????8

2.2 校时、分电路 ??????????????????????? ????9

2.3 秒脉冲发生电路 ??????????????????????????9

2.3.1 由555定时器构成的多谐振荡电路 ?????????????????9

2.3.2 分频电路 ????????????????????????????11

2.3.3 秒脉冲发生电路总图 ???????????????????????12

2.4 计数电路 ?????????????????????????????12

2..4.1 异步十进制计数器74LS290介绍 ?????????????????12

2.4.2 二十四进制计数电路 ???????????????????????13

2.4.3 六十进制计数电路 ????????????????????????14

2.4.4 译码显示电路 ??????????????????????????14

3. 数字时钟单元电路和总电路的仿真图 ??????????????????17

4.数字时钟材料清单 ??????????????????????????20 总结 ?????????????????????????????????21 参考文献 ???????????????????????????????22 附图

4

引 言

随着数字技术的迅速发展,各种中、大规模集成电路在数字系统、控制系统、信号处理等方面都得到了广泛的应用。这就迫切要求理工科大学生熟悉和掌握常用中、大规模集成电路的功能以及在实际运用之中的方法。除通过实验教学培养数字电路的基本实验方法、分析问题和故障检查方法以及双踪示波器等常用仪器使用方法等基本电路的实验技能外,还必须培养大学生工程设计和组织实验的能力 。本次课程设计的目的在于培养学生对基本电路的应用和掌握,使学生在实验原理的指导下,初步具备基本电路的分析和设计能力,并掌握其应用方法:自行拟定实验方案、检查和排除故障、分析和处理实验结果及撰写实验报告的能力。数字时钟是一种计时装置,它具有“时”、“分”、“秒”计时功能和显示时间功能。数字时钟走时精确度高、稳定性好、不需要经常调校,使用携带方便,因此在定时控制、时间程序控制等方面都得到非常广泛的应用。本次设计我

查阅了许多有关数电方面的书籍,使自己对这方面的知识有了更深一步的了解。 5

数字时钟的设计

1. 数字时钟总体方案

1.1 数字时钟总体方案的确定

数字时钟的组成一般由计数器、译码器、显示器、振荡器及分频器等几部分组成。振荡器产生的时标信号送入分频器,分频器将其送入的时标信号分频成秒脉冲信号。再把秒脉冲送入计数器进行计数,并把累计的计数结果以“时”、“分”、“秒”的数字显示出来。“秒”的显示由二级计数器和译码器组成六十进制计数器电路来实现,“分”的显示电路与秒相同。“时”的显示由二级计数器和译码器组成的二十四进制计数器电路来实现。

秒脉冲信号发生器是整个数字时钟系统的时基信号,它直接决定数字时钟的走时精度,一般由石英晶体振荡器加分频器组成,但在本方案中考虑到一些客观因素和条件,采用由555定时器设计的多谐振荡器产生1kHz频率再与三级十分频器串接组成秒脉冲信号发生器。将秒脉冲送入“秒”计数器,“秒”计数器采用六十进制计数器,每累计六十秒发一个“分”脉冲信号。该信号将作为“分”计数器的时钟脉冲。“分”计数器也采用六十进制计数器,每累计六十分钟发出一个“时”脉冲信号,改脉冲信号将送入“时”计数器。“时”计数器采用二十四进制计时器,可实现对一天二十四小时的累计。再通过译码、显示电路把它显示出来。

1.2 数字时钟总体方案图

图1.1 数字时 钟总体方案

6

1.3 数字时钟电路的组成

数字时钟是用数字集成电路构成,用数码显示的一种现代化计数器。本系统由振荡器、分频器、校时电路、计数器、译码显示器以及电源电路组成。秒脉冲发生电路产生秒脉冲信号,不同进制的计数器、译码器和显示器组成计时系统,通过校时电路实现对时、分的校准,电源电路提供稳定的+5v的电压。

1.4 数字时钟的工作原理

由数字时钟总体方框图可以看出,由振荡电路产生的信号经过分频器作为秒脉冲, 秒脉冲送入计数器计数,计数结果通过“时”、“分”、“秒”译码器显示时间。其中,由555定时器设计的多谐振荡器产生1kHz频率与三级十分频器组成秒脉冲信号发生器,由不同进制的计数器、译码器和显示器组成计时系统。秒信号送入计数器进行计数,把累计的结果以“时”、“分”、“秒”的数字显示出来。“时”显示由二十四进制计数器、译码器、显示器构成,“分”、“秒”显示分别由六十进制计数器、译码器、显示器构成。

7

2. 数字时钟单元电路

2.1 电源电路

图2.1 电源电路

它由电源变压器T1,桥式整流电路D1~D4,滤波电容C1、C4 ,防止自激电容C2、C4和一只固定式三端稳压器(LM309K)搭建而成的。220v交流电通过电源变压器变换成交流电压,再经过桥式整流电桥D1~D4和滤波电容C1的整流和滤波,在固定式三端稳压器LM309K的Vin和GND两端形成一个较稳定的直流电压。此直流电压经过LM309K的稳压和C4电容德尔滤波便在稳压电源的输出端产生了较稳定的直流输出电压。输出电压的波形和数值可由示波器的截图可见,如图2.2所示:

图2.2 电源电路输出波形

8

2.2 校时、分电路

图2. 3 校时电路

校“时”和校“分”的校准电路是相同的,现以校“分”电路来说明时间的校准。 在正常计时时,与非门U2D的一个输入端为1,将它开通,使秒计数器输出的分脉冲加到U2D的另一输入端,并经U1D进入分计数器。而此时U3D由于一个输入端为0,因此被关断,校准用的秒脉冲进不去。

在校“分”时,按下开关J1,情况与上述情况适反。U2D被封闭,U3D打开,标准秒脉冲直接进入分计数器进行快速校“分”。

同理,在校“时”时,按下开关,标准秒脉冲直接进入时计数器进行快速校“时”。可见U1D、U2D、U3D构成的是一个二选一电路。

2.3 秒脉冲发生电路

本次设计采用由555定时器设计的多谐振荡器产生1kHz频率与三级十分频器组成秒脉冲信号发生器

2.3.1 由555定时器构成的多谐振荡电路

多谐振荡器是一种能产生矩形波的自激振荡器,也称矩形波发生器。“多谐”指矩形波中除了基波成分外,还含有丰富的高次谐波成分。多谐振荡器没有稳态,只有两个暂稳态。在工作时,电路的状态在这两个暂稳态之间自动地交替变换,由此产生矩形波脉 9

冲信号,常用作脉冲信号源及时序电路中的时钟信号。

图2.4 555定时器构成的多谐振荡器

用555定时器构成的多谐振荡器电路如图2.4所示:图中电容C、电阻R1和R2作为振荡器的定时元件,决定着输出矩形波正、负脉冲的宽度。定时器的触发输入端(2脚)和阀值输入端(6脚)与电容相连;集电极开路输出端(7脚)接R1、R2相连处,用以控制电容C的充、放电;外界控制输入端(5脚)通过0.01uF电容接地。

图2.5 工作波形

电路接通电源的瞬间,由于电容C来不及充电,Vc=0v,所以555定时器状态为1,输出Vo为高电平。同时,集电极输出端(7脚)对地断开,电源Vcc对电容C充电,电路进入暂稳态I,此后,电路周而复始地产生周期性的输出脉冲。多谐振荡器两个暂稳态的维持时间取决于RC充、放电回路的参数。暂稳态Ⅰ的维持时间,即输出Vo的正向脉冲宽度T1≈0.7(R1+R2)C;暂稳态Ⅱ的维持时间,即输出Vo的 负向脉冲宽度T2≈0.7R2C。

因此,振荡周期T=T1+T2=0.7(R1+2R2)C,振荡频率f=1/T。正向脉冲宽度T1与振荡周期T之比称矩形波的占空比D,由上述条件可得D=(R1+R2)/(R1+2R2),若使R2>>R1,则D≈1/2,即输出信号的正负向脉冲宽度相等的矩形波(方波)。

10

利用555定时器构成的多谐振荡器产生1kHz的脉冲信号,仿真图如2.6所示。

图2.6 利用555构成多谐网络日记振荡器产生1KHz脉冲信号仿真图

2.3.2 分频电路

74LS90是二、五,十进制异步加法器,用三片74LS90可以构成三级十分频器,将1kHz的矩形波脉冲信号分频得到1Hz基准秒计时信号。电路图如图2.7所示:

图2.7 三级十分频电路

11

2.3.3 秒脉冲发生电路总图

把555定时器设计的多谐振荡器产生1kHz频率与三级十分频器串接组成秒脉冲信号发生器,秒脉冲发生电路总图如图2.8所示:

图2.8 秒脉冲信号发生器电路

2.4 计数电路

2..4.1 异步十进制计数器74LS290介绍

图2.9 74LS290逻辑图及外引线排列图

74LS290是异步十进制计数器。其逻辑图和外引线排例图如图2.9所示。它由一个一位二进制计数器和一个异步五进制计数器组成。如果计数脉冲由端CP0输入,输出由Q0端引出,即得二进制计数器;如果计数脉冲由CP1端输入,输出由Q3Q2Q1引出,即是五进制计数器;如果将Q0与CP1相连,计数脉冲由CP0输入,输出由Q3Q2Q1Q0引出,即得8421码十进制计数器。因此,又称此电路为二—五—十进制计数器。

表2.1是74LS290的功能表。由表可以看出,当复位输入R0(1)=R0(2)=1,且置位输入S9(1)·S9(2)=0时,74LS290的输出被直接置零;只要置位输入S9(1)·S9(2)=1,则74LS290的输出将被直接置9,即Q3Q2Q1Q0=1001;只有同 时满足R0(1)·R0(2)=0和S9(1)·S9(2)=0时,才能在计数脉冲(下降沿)作用下实现二—五—十进制加法计数。 12

表2.1 74LS290的功能表

2.4.2 二十四进制计数电路

时计数电路是由U7和U8组成的二十四进制计数电路,如图2.11所示。

图2.11 二十四进制计数器电路

由图2.11可以看出,当“时”个位U8计数输入端到第10个触发信号时,U8计数器复零,进位端QD向U7“时”十位计数器输出进位信号,当第24个“时”(来自“分”计数器输出的进位信号)脉冲到达时,U8计数器的状态为“0100——http://www.61k.com——”,U7计数器的状态为“0010”,此时“时”个位计数器的QC和“时”十位计数器的QB输出为“1”。把他们分别送入U7、U8计数器的清零端R01和R02,通过74LS290内部的R01和R02与非 13

后清零,计数器复零,完成二十四进制计数。

2.4.3 六十进制计数电路

“秒”计数器电路与“分”计数器电路都是六十进制,它由一级十进制计数器和一级六进制计数器连接构成,如下图所示,采用两片74LS290串接起来构成“秒”“分”计数器。

图2.12 六十进制计数器电路

由图2.12可知,U13是十进制计数器,U13的QD作为十进制的进位信号,74LS290计数器是十进制异步计数器,用反馈归零方法实现十进制计数,U12和与非门组成六进制计数。74LS290是在CP信——文章窝——号的下降沿翻转计数,U12的QA和QC与0101的下降沿,作为“分(时)”计数器的输入信号。U12的输出0110高电平1分别送到计数器的R01和R02端清零,74LS290内部的R01和R02与非后清零而使计数器归零,完成六进制计数。由此可见,U12和U13串联实现了六十进制计数。

2.4.4 译码显示电路

用七段发光二极管来显示译码器输出的数字,显示器有两种:共阳极和共阴极显示器。74LS248译码器对应的显示器是共阴极(接地)显示器。在本设计中采用的是解码七段排列显示器。74LS248是四线—七段译码/驱动器,集电极开路输出,以高电平“1” 14

驱动,用于共阴极显示器。

图2.13 引脚图

图2.14 发光二极管共阴极接法

共阴极译码显示电网络日记路由七段译码器/驱动器74LS248和共阴极七段LED数码管组成。其原理图如图2.15所示。

图2.15 译码显示电路原理

15

74LS248将来至计数器的四位二进制代码翻译成对应的一组七位二进制代码,驱动七段LED数码管显示出数字来。共阴极七段数码管相当于阴极连接在一起的七个发光二极管,当从其某一输入端(发光二极管的阳极)输入一个高电平信号,对应的发光二极管导通发光,从而显示出一个数字来。

16

数字时钟单好文章元电路和总电路的仿真图

图3.1 电源电路输出电压波形

图3.2 六十进制计数器仿真

17 3.

图3.3 二十四进制计数器仿真

18

图3.5 数字时钟电路仿真(1)

图3.6 数字时钟电路仿真(2)

19

. 数字时钟材料清单

20 4

总 结

近两周时间的课程设计结束了,在这将近两个星期的时间里,有痛苦也有快乐,有抱怨也有坚持。虽困难重重,但最终我的课程设计顺利地完成了。尽管在设计中遇到很多专业知识问题,但是通过老师的辛勤指导和同学们的帮助,自己迎难而【文章窝】上,坚信胜利就在前方!

在这次的课程设计中不仅检验了我以前所学习的知识、拓宽了我对数电这块的知识面,也培养了我如何去筹划一件事情,如何去做一件事情,如何去完成一件事情。它还使我深刻懂得了理论与实际相结合的重要性。只有理论知识是远远不够的,只有把所学的理论知识与实践结合起来,把理论付诸实际行动,从实践中得出结论,才能更加深地理解书本所学的知识,进而提高自己的动手能力和独立思考的能力。

课程设计是我们专业课程知识综合应用的实践训练,它是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真地进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.

在这两周的设计期间,如果没有老师辛勤的指导和同学们热忱的帮助,我的课程设计是不可能这么顺利地完成的。在此,我由衷地表示感谢!

21

参考文献

[1]秦曾煌.电工学[M].北京:高等教育出版社,2002

[2]康华光.电子技术基础[M].北京:高等教育出版社 ,2001

[3]杨素行.模拟电子技术基础简明教程[M].北京:高等教育出版社,2002

[4]高吉祥等. 数字电子技术[M]. 北京:电子工业出版社,2003

[5]黄智伟.印制电路板(PCB)设计技术与实践[M]. 北京:电子工业出版社,2009

[6]黄智伟等.基于multisim2001的电子电路计算机仿真设计与分析.北京:电子工业出版社,2004

[7]黄智伟.全国大学生电子设计竞赛技能训练[M].北京:北京航空航天大学出版社,2007

22

本文标题:数字时钟电路设计-基于QuartusII软件的数字时钟设计
本文地址: http://www.61k.com/1168119.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1