文档库 最新最全的文档下载
当前位置:文档库 › EDA数字钟实验五

EDA数字钟实验五

EDA数字钟实验五
EDA数字钟实验五

实验五具有音乐报点的数字钟实验

一.实验目的

1、掌握多位计数器相连的设计方法。

2、掌握十进制、六十进制、二十四进制计数器的设计方法。

3、继续巩固多位共阴极扫描显示数码管的驱动及编码。

4、了解和掌握分频电路实现的方法。

5、掌握扬声器的驱动。

6、使用FPGA产生不同的音乐频率。

7、LED 灯的花样显示。

8、掌握CPLD技术的层次化设计方法。

二.设计要求

1、具有时、分、秒计数显示功能,以24小时循环计时。

2、具有清零,调节小时、分钟功能。

3、整点时钟时LED灯花样显示。

三、硬件要求:

1、主芯片ACEX1K EP1K30QC208。

2、8个LED灯。

3、扬声器。

4、8位七段扫描共阴极数码显示管。

5、三个按键开关(清零,调小时,调分钟)。

四.实验原理

在同一块CPLD芯片EP1K10TC100—3上集成了如下电路模块:

1、时钟计数:

秒——60进制BCD码计数;

分——60进制BCD码计数;

时——24进制BCD码计数;

同时整个计数器有清零,调分,调时功能。在接近整点时能提供报时信号。

2、有驱动8位七段共阴极扫描数码管的片选驱动信号输出和七段字行译码

输出。编码和扫描可参照“实验四”。

3、扬声器在整点时有报时乐曲驱动信号产生。

音符的产生:音符的产生是利用计数器对输入的时钟信号进行分频,然后输出不同的频率来控制扬声器发不同的声音。计数器必须是模可变的计数器,也就是其初始计数值可变,这样便可以对其进行初始化,使其从不同的初始值开始计数,实现对输入时钟信号的不同分频。

节拍的产生:节拍也是利用计数器来实现,如果某一个音符需要维持的时间比较长,那么就可以在此计数器从计数值A到计数值B之间都维持该音符,很显

然,A和B之间的间隔越大,那么该音符维持的时间也就越长。

乐谱的存储:乐谱是一个固定的组合电路,根据不同的输入值,然后输出一个固定的值,该值就是音符产生计数器的分频的初始值。

适当的选择这些计数器和组合电路,便可完成不同的乐曲和不同节奏。

4、LED灯按个人要求在整点时有花样显示信号产生。

五.实验内容及步骤

1、根据电路特点,可在教师指导下用层次设计概念,将此设计任务分成若

干模块,规定每一模块的功能和各模块之间的接口。让几个学生分做和

调试其中之一,然后再将各模块合起来联试。以培养学生间的合作精神,同时加深层次化设计概念。

2、了解软件的元件管理深层含义,以及模块元件之间的连接概念,对于不

同目录下的同一设计,如何熔合。

3、用QuartusII6.0对其进行编译仿真。

4、在仿真确定无误后,选择芯片CycloneII EP2C35F672C6。

5、给芯片进行管脚绑定,在此进行编译。

6、根据自己绑定的管脚,在实验箱上对扬声器接口和FPGA之间进行正确连

线。

7、给目标板下载代码,观看实验结果。

六. 程序代码

(一)程序需要实现的功能:

1、完成秒/分/时的依次显示并正确计数;

2、秒/分/时各段个位满10正确进位,秒/分能做到满60向前进位;

3、定时闹钟:实现每到整点时报时,扬声器发出报时声音;

4、时间设置,也就是手动调时功能:当认为时钟不准确时,可以分别对分/时钟进行调整;秒还可以手动调0;

(二)各程序如下:

1、分频程序:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity yxfrequencydivider is

port(clk:in std_logic;

hz512,hz256,hz64,hz4,hz1:out std_logic);

end yxfrequencydivider ;

architecture hz of yxfrequencydivider is

signal count:std_logic_vector(9 downto 0);

process(clk)

begin

if (clk'event and clk='1') then

if (count="1111111111") then

count<="0000000000";

else

count<= count+1;

end if;

end if;

end process;

hz512 <= count(0);

hz256 <= count(1);

hz64 <= count(3);

hz4<=count(7);

hz1<=count(9);

end architecture;

模块说明:本实验clk的频率选为为1024hz,所以可以定义一个

std_logic_vecture(9 downto 0),使它不停地从0000000000加到1111111111然后又返回000000000,由于最低位在clk脉冲到来时从0变成1,然后又在下一个脉冲变回0,因此最低位的时钟周期为clk的时钟周期的两倍,它的频率就为clk频率的1/2即512HZ。同理,次高位的频率就为clk频率的1/2*1/2=1/4,用这种方法就可以得到各种能整除1024的频率,从而实现分频功能。

2、数字钟累加程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity smh is

port(reset:buffer std_logic;

s : buffer integer range 59 downto 0;

m : buffer integer range 59 downto 0;

h : buffer integer range 23 downto 0;

clk:in std_logic );

end smh;

architecture one of smh is

signal mclk:std_logic;

signal hclk:std_logic;

signal cs : std_logic;

signal cm : std_logic;

signal ch : std_logic;

signal cq1 : integer range 0 to 59;

signal cq2 : integer range 0 to 59;

signal cq3 : integer range 0 to 23;

begin

process(clk,reset)

begin

if reset= '0' then cq1<=0;

elsif clk'event and clk='1' then

if cq1=59 then cs<='1' ;

else cq1<=cq1+1;cs<='0';

end if;

end if;

s<=cq1;

end process;

process(cs,reset)

begin

if reset= '0' then cq2<=0;

elsif cs'event and cs='1' then

if cq2=59 then cm<='1' ;

else cq2<=cq2+1;cm<='0';

end if;

end if;

m<=cq2;

end process;

process(hclk,reset)

begin

if reset= '0' then cq3<=0;

elsif cm'event and cm='1' then

if cq3=23 then ch<='1' ;

else cq3<=cq3+1;ch<='0';

end if;

end if;

h<=cq3;

end process;

end ;

功能实现:数字钟程序代码是这样子运行的,周期为1秒的始终控制秒加法器,当累加结果为59时,产生一个分进位信号,当分加法器累加到59时,产生一个时进位信号,并用该信号作为整点报时的使能信号。

3、数码管显示程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity reg is

port(reset:buffer std_logic;

clk:in std_logic;

seg: out std_logic_vector(6 downto 0);

clk1:in std_logic;

choose : buffer std_logic_vector (2 downto 0);

s : buffer integer range 59 downto 0;

m : buffer integer range 59 downto 0;

h : buffer integer range 23 downto 0);

end reg;

architecture one of reg is

component smh

port(reset:buffer std_logic;

s : buffer integer range 59 downto 0;

m : buffer integer range 59 downto 0;

h : buffer integer range 23 downto 0;

segout : out std_logic_vector(6 downto 0);

clk : in std_logic );

end component;

signal hex0 : integer range 9 downto 0;

signal hex1 : integer range 9 downto 0;

signal hex2 : integer range 9 downto 0;

signal hex3 : integer range 9 downto 0;

signal hex4 : integer range 9 downto 0;

signal hex5 : integer range 9 downto 0;

signal hex6 : integer range 9 downto 0;

signal hex7 : integer range 9 downto 0;

signal seg:std_logic_vector(6 downto 0);

begin

u1:smh port map ( s=>s,m=>m,h=>h,clk=>clk,reset=>reset); process(choose) …………………………………………动态显示BEGIN

if clk1'event and clk1='1' then

if choose="000" then hex<=hex0; choose<="001";

elsif choose="001" then hex<=hex1;choose<="010";

elsif choose="010" then hex<=hex2;choose<="011" ;

elsif choose="011" then hex<=hex3;choose<="100";

elsif choose="100" then hex<=hex4;choose<="101";

elsif choose="101" then hex<=hex5;choose<="000" ;

else choose<="000";

end if;

end if;

END PROCESS;

scan_second: process (s) 两位显示的秒的拆分,hex1为十进位,hex0为个位begin

case s is

when 0 => hex1 <=0; hex0 <= 0;

when 1 => hex1 <=0; hex0 <= 1;

when 2 => hex1 <=0; hex0 <= 2;

when 3 => hex1 <=0; hex0 <= 3;

when 4 => hex1 <=0; hex0 <= 4;

when 5 => hex1 <=0; hex0 <= 5;

when 6 => hex1 <=0; hex0 <= 6;

when 7 => hex1 <=0; hex0 <= 7;

when 8 => hex1 <=0; hex0 <= 8;

when 9 => hex1 <=0; hex0 <= 9;

when 10 => hex1 <=1; hex0 <= 0;

when 11 => hex1 <=1; hex0 <= 1;

when 12 => hex1 <=1; hex0 <= 2;

when 13 => hex1 <=1; hex0 <= 3;

when 14 => hex1 <=1; hex0 <= 4;

when 15 => hex1 <=1; hex0 <= 5;

when 16 => hex1 <=1; hex0 <= 6;

when 17 => hex1 <=1; hex0 <= 7;

when 18 => hex1 <=1; hex0 <= 8;

when 19 => hex1 <=1; hex0 <= 9;

when 20 => hex1 <=2; hex0 <= 0;

when 21 => hex1 <=2; hex0 <= 1;

when 22 => hex1 <=2; hex0 <= 2;

when 23 => hex1 <=2; hex0 <= 3;

when 24 => hex1 <=2; hex0 <= 4;

when 25 => hex1 <=2; hex0 <= 5;

when 26 => hex1 <=2; hex0 <= 6;

when 27 => hex1 <=2; hex0 <= 7;

when 28 => hex1 <=2; hex0 <= 8;

when 29 => hex1 <=2; hex0 <= 9;

when 31 => hex1 <=3; hex0 <= 1;

when 32 => hex1 <=3; hex0 <= 2;

when 33 => hex1 <=3; hex0 <= 3;

when 34 => hex1 <=3; hex0 <= 4;

when 35 => hex1 <=3; hex0 <= 5;

when 36 => hex1 <=3; hex0 <= 6;

when 37 => hex1 <=3; hex0 <= 7;

when 38 => hex1 <=3; hex0 <= 8;

when 39 => hex1 <=3; hex0 <= 9;

when 40 => hex1 <=4; hex0 <= 0;

when 41 => hex1 <=4; hex0 <= 1;

when 42 => hex1 <=4; hex0 <= 2;

when 43 => hex1 <=4; hex0 <= 3;

when 44 => hex1 <=4; hex0 <= 4;

when 45 => hex1 <=4; hex0 <= 5;

when 46 => hex1 <=4; hex0 <= 6;

when 47 => hex1 <=4; hex0 <= 7;

when 48 => hex1 <=4; hex0 <= 8;

when 49 => hex1 <=4; hex0 <= 9;

when 50 => hex1 <=5; hex0 <= 0;

when 51 => hex1 <=5; hex0 <= 1;

when 52 => hex1 <=5; hex0 <= 2;

when 53 => hex1 <=5; hex0 <= 3;

when 54 => hex1 <=5; hex0 <= 4;

when 55 => hex1 <=5; hex0 <= 5;

when 56 => hex1 <=5; hex0 <= 6;

when 57 => hex1 <=5; hex0 <= 7;

when 58 => hex1 <=5; hex0 <= 8;

when 59 => hex1 <=5; hex0 <= 9;

when others => null;

end case;

end process scan_second;

--*********************************************

scan_minute: process (m)两位显示的分的拆分,hex3为十进位,hex2为个位begin

case m is

when 0 => hex3 <=0; hex2 <= 0;

when 1 => hex3 <=0; hex2 <= 1;

when 2 => hex3 <=0; hex2 <= 2;

when 3 => hex3 <=0; hex2 <= 3;

when 4 => hex3 <=0; hex2 <= 4;

when 5 => hex3 <=0; hex2 <= 5;

when 6 => hex3 <=0; hex2 <= 6;

when 8 => hex3 <=0; hex2 <= 8; when 9 => hex3 <=0; hex2 <= 9; when 10 => hex3 <=1; hex2 <= 0; when 11 => hex3 <=1; hex2 <= 1; when 12 => hex3 <=1; hex2 <= 2; when 13 => hex3 <=1; hex2 <= 3; when 14 => hex3 <=1; hex2 <= 4; when 15 => hex3 <=1; hex2 <= 5; when 16 => hex3 <=1; hex2 <= 6; when 17 => hex3 <=1; hex2 <= 7; when 18 => hex3 <=1; hex2 <= 8; when 19 => hex3 <=1; hex2 <= 9; when 20 => hex3 <=2; hex2 <= 0; when 21 => hex3 <=2; hex2 <= 1; when 22 => hex3 <=2; hex2 <= 2; when 23 => hex3 <=2; hex2 <= 3; when 24 => hex3 <=2; hex2 <= 4; when 25 => hex3 <=2; hex2 <= 5; when 26 => hex3 <=2; hex2 <= 6; when 27 => hex3 <=2; hex2 <= 7; when 28 => hex3 <=2; hex2 <= 8; when 29 => hex3 <=2; hex2 <= 9; when 30 => hex3 <=3; hex2 <= 0; when 31 => hex3 <=3; hex2 <= 1; when 32 => hex3 <=3; hex2 <= 2; when 33 => hex3 <=3; hex2 <= 3; when 34 => hex3 <=3; hex2 <= 4; when 35 => hex3 <=3; hex2 <= 5; when 36 => hex3 <=3; hex2 <= 6; when 37 => hex3 <=3; hex2 <= 7; when 38 => hex3 <=3; hex2 <= 8; when 39 => hex3 <=3; hex2 <= 9; when 40 => hex3 <=4; hex2 <= 0; when 41 => hex3 <=4; hex2 <= 1; when 42 => hex3 <=4; hex2 <= 2; when 43 => hex3 <=4; hex2 <= 3; when 44 => hex3 <=4; hex2 <= 4; when 45 => hex3 <=4; hex2 <= 5; when 46 => hex3 <=4; hex2 <= 6; when 47 => hex3 <=4; hex2 <= 7; when 48 => hex3 <=4; hex2 <= 8; when 49 => hex3 <=4; hex2 <= 9; when 50 => hex3 <=5; hex2 <= 0;

when 52 => hex3 <=5; hex2 <= 2;

when 53 => hex3 <=5; hex2 <= 3;

when 54 => hex3 <=5; hex2 <= 4;

when 55 => hex3 <=5; hex2 <= 5;

when 56 => hex3 <=5; hex2 <= 6;

when 57 => hex3 <=5; hex2 <= 7;

when 58 => hex3 <=5; hex2 <= 8;

when 59 => hex3 <=5; hex2 <= 9;

when others => null;

end case;

end process scan_minute;

--*********************************************

scan_hour: process (h) 两位显示的时的拆分,hex5为十进位,hex4为个位begin

case h is

when 0 => hex5 <=0; hex4 <= 0;

when 1 => hex5 <=0; hex4 <= 1;

when 2 => hex5 <=0; hex4 <= 2;

when 3 => hex5 <=0; hex4 <= 3;

when 4 => hex5 <=0; hex4 <= 4;

when 5 => hex5 <=0; hex4 <= 5;

when 6 => hex5 <=0; hex4 <= 6;

when 7 => hex5 <=0; hex4 <= 7;

when 8 => hex5 <=0; hex4 <= 8;

when 9 => hex5 <=0; hex4 <= 9;

when 10 => hex5 <=1; hex4 <= 0;

when 11 => hex5 <=1; hex4 <= 1;

when 12 => hex5 <=1; hex4 <= 2;

when 13 => hex5 <=1; hex4 <= 3;

when 14 => hex5 <=1; hex4 <= 4;

when 15 => hex5 <=1; hex4 <= 5;

when 16 => hex5 <=1; hex4 <= 6;

when 17 => hex5 <=1; hex4 <= 7;

when 18 => hex5 <=1; hex4 <= 8;

when 19 => hex5 <=1; hex4 <= 9;

when 20 => hex5 <=2; hex4 <= 0;

when 21 => hex5 <=2; hex4 <= 1;

when 22 => hex5 <=2; hex4 <= 2;

when 23 => hex5 <=2; hex4 <= 3;

when others => null;

end case;

end process scan_hour;

chip_control: PROCESS (choose)……………数码管显示电路

BEGIN

Case hex is

when ‘0’ => sg <= "00111111";

when ‘1’ => sg <= "00000110";

when ‘2’ => sg <= "01011011";

when ‘3’ => sg <= "01001111";

when ‘4’ => sg <= "01100110";

when ‘5’ => sg <= "01101101";

when ‘6’ => sg <= "01111101";

when ‘7’ => sg <= "00000111";

when ‘8’=> sg<= "01111111";

when others =>sg <= "01101111";

end case;

segout<=seg;

end process;

end ;

功能实现:定义一个std_signal_vector(2 downto 0)变量choose,它在0和5之间不断的循环,用来指示当前扫描的哪一根管,再定义一个std_logic_vector(6 downto 0)类型的seg,用来存放将由4位BCD码编码而来的7段显示码.最后在进程中定义一个整数类型的hex变量,用来存放时、分、秒的高位或低位,然后将该数编码成7段显示码,并赋给segout信号。

5、整点报时模块源程序:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity baoshi is

port(m1,m0,s1,s0:in std_logic_vector(3 downto 0);

sig500,sig1k:out std_logic);sig500,sig1k分别为500hz和1khz鸣叫的控制信号。end baoshi;

architecture behave of baoshi is

begin

process(m0)

begin

sig500<='0';

sig1k<='0';

if m1="0101" and m0="1001" then

if s1="0101"and (s0="0000" or s0="0010" or s0="0100" or s0="0110" or

s0="1000") then

sig500<='1';

else

sig500<='0';

end if;

end if;

if m1="0000" and m0="0000"and s1="0000" and s0="0000" then

sig1k<='1';

else

sig1k<='0';

end if;

end process;

end behave;

功能实现:定义temp500,temp1k信号,用于存放两种频率报时的控制信号;定义一个以m0为敏感信号的一个比较进程,在进程一开始的时候先给temp500和temp1k赋予初值0,然后判断分是否为59分,若是则判断秒的高位是否是5,若是则如果秒的低位为0、2、6、8则temp500为1;若分不是59则判断分和秒是否都为0,若都为0则temp1k为1。进程结束时把temp500,temp1k的值分别赋给sig500,sig1k。

七.思考题

1、了解乐曲节拍产生的过程,注意每一音符的节拍长短的变化是由什么控

制的?

答:由频率分频器可以分频出不同频率的信号,这些信号可以控制节拍长短。

2、改变时钟频率,看乐曲有什么改变?

答:乐曲的节拍由时钟分频产生,改变时钟频率,时钟频率增大,乐曲节奏加快,反之时钟频率减小,乐曲节奏减慢。

南理工EDA2多功能数字钟设计实验报告(蒋立平)——优秀

EDAⅡ实验报告 --多功能数字钟 学院专业: 学生学号: 指导老师:蒋立平 交稿时间:2012年3月25日

摘要 本实验借助于quartusⅡ软件设计一个多功能的数字时钟,具有24小时计时、星期显示、保持、清零、校分校时校星期、整点报时等基本功能,并在此基础上添加了闹钟、音乐闹钟、秒表等附加功能。同时,留有万年历的接口可以方便的进行扩展。.利用quartusⅡ进行相应的设计、仿真、调试,最后下载到SmartSOPC实验系统上验证设计的正确性。 关键词:多功能数字时钟,quartusⅡ,计时,星期显示,整点报时,闹钟,秒表 ABSTRACT This experiment is to design a multifunctional digital clock with quartus Ⅱ.The multifunctional digital clock has varities of the functions like 24-hour timer,week,keeping,clearing zero,adjusting time and chime on integral hour .It also include additional functions such as alarm clock,stopwatch and so on.At the sametimes,it can be added calendar.we designed and simulated with quartusⅡ.Finally downloaded it to the experiment platform to test. Key words:multifunctional digital clock,quartusⅡ,time,week,chime on integral hour, alarm clock,stopwatch

EDA设计II实验报告——多功能数字钟

『EDA设计II』 课程实验报告 姓名 学号 学院 指导教师 时间 2011年 05月

多功能数字钟 摘要:本实验利用Quartus II软件设计多功能数字钟并下载到Smart SOPC实验系统,实现校分、校时、清零、保持和整点报时等多种基本功能,以及闹钟等附加功能。本实验首先通过Quartus II 软件对各模块进行原理图设计,并进行仿真调试,最后下载至实验平台验证其功能。 关键词:多功能数字钟Quartus II软件仿真封装校分校时清零保持整点报时闹钟 Abstract:The experiment is to design a multi-purpose digital clock by Quartus II and then download to the test system of Smart SOPC. It can realize many functions such as minute adjusting, hour adjusting, resetting, keeping and reporting time on integral hour. Apart from this, it can also be used as a alarm clock. First of all, we design the schematic diagram of every part. In addition, we simulate through Quartus II. At last, we download it to the tests platform and test the function. Key words:multi-purpose digital clock Quartus II simulate seal minute- adjusting hour adjusting resetting keeping reporting time on integral hour alarm clock

eda,verilog数字钟设计报告

数字钟 一、任务解析 用Verilog硬件描述语言设计数字钟,实现: 1、具有时、分、秒计数显示功能,以二十四小时循环计时。 2、具有调节小时,分钟的功能,调整时对应的数字闪烁。 3、具有整点报时及闹铃时间可调的功能。 4、数字钟具有四种模式:正常显示、时间调整、闹铃时间调整、秒表。 二、方案论证 没有闹铃功能 三、重难点解析 选择模式:module beii(clr,selin_key,beii_out); input clr,selin_key; output [1:0]beii_out; wire [1:0]beii_out; reg [1:0]selout_key; always@(negedge clr or posedge selin_key) begin if(!clr) selout_key=0; else begin if(selout_key==2) selout_key=0; else selout_key=selout_key+1;end end assign beii_out=selout_key; endmodule

头文件中: module clk_top(clr,clk,upkey,downkey,sel,a,b,c,d,e,f,g,p,clr_key,selin_key); clr:清零clk:50M时钟 upkey:向上调downkey:向下调 clr_key:恢复初始状态selin_key:模式选择 四、硬件资源分配 60进制module mycnt60(clr,clk,upkey,downkey,selout,q,c); input clk,clr,upkey,downkey;//upkey为加按键 input [1:0] selout; output[7:0] q;//60进制输出 output c;//进位溢出位 reg c; reg[7:0] q; wire new_clk1,ckb,ckc,ckd,cko; assign new_clk1=clk|((!selout[0]&selout[1])&(upkey|downkey)); LCELL AA(new_clk1,ckb);//信号延迟 LCELL BB(ckb,ckc); LCELL CC(ckc,ckd); LCELL DD(ckd,cko); initial c=0; always @(posedge cko or negedge clr )begin if(!clr) q=8'h00; else begin if(selout==2) begin if(upkey)begin if(q==8'h59) q=8'h00; else if(q==8'h?9) q=q+4'h7; else q=q+1; end else if(downkey)begin if(q==8'h00) q=8'h59; else if(q==8'h?0) q=q-4'h7; else q=q-1; end

eda数字时钟实验报告

EDA数字时钟电工电子实习 实验报告 姓名 班级 学号20

一、实验目的: 1、掌握多位计数器相连的设计方法。 2、掌握十进制、六十进制和二十四进制计数器的设计方法。 3、巩固数码管的驱动原理及编程方法。 4、掌握CPLD技术的层次化设计方法。 二、实验要求: 基本要求:具有时、分、秒计数显示功能,以二十四小时循环计时。 扩展要求:具有整点报时功能。 三、实验原理: 计数时钟由模60秒计数器、模60分计数器、模24小时计数器、蜂鸣器(用于整点报时)、分/时设定模块、输出显示模块构成,秒计数模块的进位输出为分钟计数模块的进位输入,分钟计数模块的进位输出为小时计数模块的进位输入。 74163功能简介:

图1 图2 由图1可知,74163的脉冲上升沿的时候工作。 四、实验过程

1.模60计数器(如图3) 图3 由74163实现计数功能,第一片74163实现10进制,即做0-9的循环,9即二进制的1001,化简可得当q[0]与q[3]同时为1的时候进行清零。第二片74163实现6进制,即做0-5的循环,5即二进制的111,化简可得当q[4]与q[6]同时为1的时候进行清零,同时第一片74163的进位端作为第二片的脉冲端。这样就可实现60进制。60进制计数器用于秒计数器和分计数器,秒个位的进位端作为秒十位的脉冲端秒十位的进位端作为分个位的脉冲端,分个位的进位端作为分十位的脉冲端。 2.模24计数器(如图4) 图4 分十位的进位端作为时个位的脉冲端,时个位的进位端作为时十位的脉冲端。因为24进制的特殊性,当十位是0和1的时候,个位做十进制循环,即0-9,9的二进制为1001;当十位是2的时候,个位做0-3的循环。而十位做0-2的循环。2的二进制为0010,3的二进制为0011。所以第一片74163不仅要在q[14]与q[17]同时为1的时候清零,还要在第二片74163的q[19]、第一片的q[14]、q[15]同时为1(即23时)做清零。第二片是3进制,在q[19]=1的时候进行清零。

EDA数字钟实验报告

目录 1.设计思路—————————————————————(3) 1.1总体结构——————————————————(3) 2.方案论证与选择——————————————————(3) 3.单元模块设计部分—————————————————(3)3.1 CNT10 模块的设计———————————————(4)3.2 CNT6 模块的设计———————————————(5)3.3 CNT101模块的设计———————————————(6)3.4 CNT61模块的设计———————————————(7) 3.5 CNT23模块的设计———————————————(8) 4.系统仿真—————————————————————(9) 4.1数字钟的引脚锁定———————————————(9) 4.2数字钟原理图————————————————(12) 4.3数字钟仿真图————————————————(10) 4.4数字钟编译报告———————————————(11) 5.参考文献————————————————————(13)

EDA数字钟设计 中文摘要: 数字钟学习的目的是掌握各类计数器及它们相连的设计方法;掌握多个数码管显示的原理与方法;掌握FPGA技术的层次化设计方法;掌握用VHDL语言的设计思想以及整个数字系统的设计。此数字钟具有时,分,秒计数显示功能,以24小时为计数循环;能实现清零,调节小时,分钟以及整点报时的功能。 关键词:数字钟,计数器,,FPGA,VHDL 1.设计思路 基于VHDL语言,用Top—To--Down的思想进行设计。 1.1 确定总体结构,如图1-1所示。 图1-1 2. 方案论证与选择 方案:设置小时和分,输出整点报时信号和时,分,秒信号。方案采用自顶向下的设计方法,它由秒计数模块,分计数模块,小时计数模块和顶层模块四部分组成。 3. 单元模块设计部分 RES是整个系统的复位键,低电平有效,复位时,各个输出都为零,时间显示0时0分0秒;clk是输入时钟,提供秒信号,上升沿触发,每出发一次,时间增加一秒;HRTMP,MIN10TMP,MINTMPKEYI可以分别设置小时位,10分位,分位,起到调时的作用,高电平有效,有效时,每来一个CLK时钟(1s),所对应的位都将以各自的计数循环; RING是整点报时。

数字钟的设计实验报告

数字钟的设计实验报告 一、实验目的 1) 学习掌握数字钟的设计方法 2) 学习较复杂的数字系统设计方法 3) 了解数字钟的组成及工作原理 二、设计指标 1) 时间以 24 小时为一个周期 2) 显示时、分、秒 3) 有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间 4) 计时过程具有报时功能,当时间到达整点前 5 秒进行蜂鸣报时 三、实验原理 时标信号的频率由振荡器产生,由于及时最小单位是0.1s ,所以时 标信号经分频器后输出频率为10Hz 的秒脉冲clk 。 在无校准信号作用时,整个电路处于正常的计数状态。时,分,秒计 数器采用同步计数方式,其时钟脉冲端均接由分频器输出地时钟信号clk 。en 为计数使能端,高电平有效。秒计数的端en 始终为高电平,所以每来一个秒脉冲clk ,秒计数器计一个数,当秒计数器到六十时,其进位输出端co 输出高电平产生进位,使分计数器的使能端en 有效,每来一个分脉冲clk ,分计数器计一个数,这就意味着满60s 进1min;当秒计数器和分计数器到60,其相应的秒计数器的进位co 和分计数器的进位co 同时输出高电平使小时计数器的使能端en 有效时,每来一个计数脉冲,小时计数器计一个数。 四、实验内容 数字钟是数字电路中的一个典型应用,本设计实现数字钟的一些基本功能。能进行正常的时、分、秒计时功能,当计时达到59分52秒时开始报时,在59分52秒,59分54秒,59分56秒,59分58秒时鸣叫,鸣叫声频为500Hz ,在到达59分60秒时为最后一声整点报时,频率为1KHz 。其外部接口如图1所示,总体设计框图如图2所示,包含control 、sec 、main 、hour 、sst 五大模块。其中sec 和main 模块均为六十进制计数器,计时输出分别为秒和分的数值;hour 模块为二十四进制计数器,计时输出为小时的数值。 数字钟外部接口 D_clk inst clr sec01[3..0] qr sec00[3..0] s[5..0] min01[3..0] rst min00[3..0] clk second hour01[3..0] hour00[3..0]

数字钟实验报告

EDA技术课程设计 ——多功能数字钟 学院:城市学院 专业、班级:电子C154 姓名:高阳夏岩 学号:158102 58128 指导老师:安亚军 2017年12月

一实验目的 1、具有时、分、秒记数显示功能,以24小时循环计时。 2、要求数字钟具有清零、调节小时、分钟功能。 3、具有整点报时,整点报时的同时LED灯花样显示 二实验原理 1时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。 2时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。 3清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。 4蜂鸣器在整点时有报时信号产生,蜂鸣器报警。产生“滴答.滴答”的报警声音。 5LED灯在时钟显示时有花样显示信号产生。即根据进位情况,LED不停的闪烁,从而产生“花样”信号 三实验内容 1时钟记数部分 1)小时部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下

2)分钟部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下 3)秒部分 其VHDL描述如下

编译,无误。 经仿真,其波形如下 2整点报时部分,其VHDL描述如下 编译,无误。

经仿真,其波形如下 3驱动8位八段共阴扫描数码管的片选驱动信号输出部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下 4驱动八段字形译码输出部分 该模块功能:信号输入后,模块驱动八段字形译码输出,A,B,C,D,E,F,G分别接八段共阴级数码管7个接口,即有字形输出。

数字时钟设计实验报

电子课程设计题目:数字时钟

数字时钟设计实验报告 一、设计要求: 设计一个24小时制的数字时钟。 要求:计时、显示精度到秒;有校时功能。采用中小规模集成电路设计。 发挥:增加闹钟功能。 二、设计方案: 由秒时钟信号发生器、计时电路和校时电路构成电路。 秒时钟信号发生器可由振荡器和分频器构成。 计时电路中采用两个60进制计数器分别完成秒计时和分计时;24进制计数器完成时计时;采用译码器将计数器的输出译码后送七段数码管显示。 校时电路采用开关控制时、分、秒计数器的时钟信号为校时脉冲以完成校时。 三、电路框图: 图一 数字时钟电路框图 四、电路原理图: (一)秒脉冲信号发生器 秒脉冲信号发生器是数字电子钟的核心部分,它的精度和稳定度决定了数字钟的质量。由振荡器与分频器组合产生秒脉冲信号。 ? 振荡器: 通常用555定时器与RC 构成的多谐振荡器,经过调整输出1000Hz 脉冲。 ? 分频器: 分频器功能主要有两个,一是产生标准秒脉冲信号,一是提供功能 扩展电路所需要的信号,选用三片74LS290进行级联,因为每片为1/10分频器,三片级联好获得1Hz 标准秒脉冲。其电路图如下: 译码器 译码器 译码器 时计数器 (24进制) 分计数器 (60进制) 秒计数器 (60进制) 校 时 电 路 秒信号发生器

图二秒脉冲信号发生器 (二)秒、分、时计时器电路设计 秒、分计数器为60进制计数器,小时计数器为24进制计数器。 ?60进制——秒计数器 秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成60进制计数器。当计数到59时清零并重新开始计数。秒的个位部分的设计:利用十进制计数器CD40110设计10进制计数器显示秒的个位。个位计数器由0增加到9时产生进位,连在十位部计数器脉冲输入端CP,从而实现10进制计数和进位功能。利用74LS161和74LS11设计6进制计数器显示秒的十位,当十位计数器由0增加到5时利用74LS11与门产生一个高电平接到个位、十位的CD40110的清零端,同时产生一个脉冲给分的个位。其电路图如下: 图三60进制--秒计数电路

eda2设计报告——多功能数字钟设计

EDA(Ⅱ)实验报告 ——多功能数字钟设计

摘要 本实验利用ALTERA公司的QUARTUSⅡ开发平台,对Cyclone系列的EP1C12Q240C8芯片进行开发,以实现数字钟。具体功能有:计时,校时校分,清零,闹铃,整点报时等。 Abstract In this study, the company's QUARTUS Ⅱ ALTERA development platform, on the Cyclone series EP1C12Q240C8 chip development to digital clock. Specific features include: time, school hours when the school, clear, alarm, and so the whole point timekeeping. 关键字 FPGA QUARTUSII 设计多功能数字钟 Keywords FPGA QUARTUSII design multi-function digital clock

目录 一、设计要求说明 二、方案论证 三、各子模块设计原理 1、脉冲发生模块 (1) 48分频 (2) 1000分频 (3) 计时信号的产生 2、模块设计 (1)24小时模块 (2)报时电路模块 (3)较时较分清零模块说明 (4)闹钟模块 1.闹钟清零 2.闹钟较分较时 3、译码显示模块 (1)译码显示

(2)显示转换模块 4、整体电路构成 附各开关使用说明 四、编译及仿真下载 1、编译 2、下载 五、结论 六、设计感想 1、设计过程中遇到的问题及解决方法 2、设计的收获与感受 七、参考文献

EDA数字钟的设计实验报告

五邑大学实验报告 实验课程名称: EDA实验 院系名称:信息工程学院 专业名称:通信工程(物联网) (一)实验目的: 设计并实现具有一定功能的数字钟。掌握各类计数器及它们相连的设计方法,掌握多个数码管显示的原理与方法,掌握FPGA的层次化设计方法,掌握VHDL语言的设计思想以及整个数字系统的设计。此数字钟具有时,分,秒计数显示功能,能实现清零,调节小时,分钟以及整点报时的功能。 (二)实验器材: 计算机一台,EDA实验箱一台。 (三)实验原理:

实验内容: 1.正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟,60秒钟的计数器显示。 2.按键实现“校时”“校分”功能; 3.用扬声器做整点报时。当计时到达59’50”时鸣叫。 方案:利用试验箱上的七段码译码器(模式7),采用静态显示,系统时钟选择1Hz。整个系统可以是若干文件组成,用PORT MAP 实现的方式;也可以是一个文件用多进程方式实现;亦或者是用文本和图形混合的方式实现;亦或者是用LPM参数化模块实现。 (五)实验步骤: 1. 新建一个文件夹,命名为shuzizhong. 2. 输入源程序。打开QuartusⅡ,选择File→new命令。在New窗口中的DesignFiles 栏选择编译文件-的语言类型,这里选择VHDL File选项。然后在VHDL文本编译窗口中输入秒模块程序。

秒模块源程序如下: library ieee; use SECOND is port(clk,clr:in std_logic;----时钟/清零信号 sec1,sec0:out std_logic_vector(3 downto 0);----秒高位/低位 co:out std_logic);-------输出/进位信号 end SECOND; architecture SEC of SECOND is begin process(clk,clr) variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数 begin if clr='1' then----当ckr为1时,高低位均为0 cnt1:="0000"; cnt0:="0000"; elsif clk'event and clk='1' then if cnt1="0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲)co<='1';----进位 cnt0:="1001";----低位为9 elsif cnt0<"1001" then----小于9时 cnt0:=cnt0+1;----计数 else cnt0:="0000"; if cnt1<"0101" then----高位小于5时 cnt1:=cnt1+1; else cnt1:="0000"; co<='0'; end if; end if; end if; sec1<=cnt1; sec0<=cnt0; end process; end SEC; 3.文件存盘。选择File→Save As命令,找到已经设立的文件夹,存盘文件名应与实体名一致。 4.创建工程。打开并建立新工程管理窗口,选择File→New Project Wizard命令,即弹出设置窗口,命名为57。

EDA实验报告(绝对有用)

EDA 设计与实验 院系:电子工程与光电技术学院 专业:通信工程 班级: 07042201 姓名:包华广(32号) 学号: 0704330107 指导老师:蒋立平花汉兵

目录: 摘要 - - - - - - - - - - - - - - - 1 一.正文部分 1.设计电路功能要求 - - - - - - - - - - - - - 1 2.方案论证 - - - - - - - - - - - - - 1 3.各子模块设计原理 - - - - - - - - - - - - 2 3.1 时钟信号发生模块 - - - - - - - - - - - - 2 3.2 计时模块- - - - - - - - - - - 4 3.3 计时电路 - - - - - - - - - - - - 6 3.4 校正电路模块 - - - - - - - - - - - - 6 3.5 整点报时模块 - - - - - - - - - - - - 8 3.6 闹钟功能模块 - - - - - - - - - - - - 8 4、设计总电路原理 - - - - - - - - - - - - - 9 二.总结部分 5. 调试、仿真与下载 - - - - - - - - - - - - - 10 6.实验结果 - - - - - - - - - - - - - 10 7. 实验中遇到的问题与解决方法 - - - - - - - - - 11 8. 实验体会与收获 - - - - - - - - - - - - - 12 9.参考文献 - - - - - - - - - - - - - - - - 12

南京理工大学EDA2数字钟实验报告

EDAⅡ实验报告(多功能数字时钟设计) 学号: 姓名: 学院:自动化学院 指导老师:花汉兵 时间:2015年3月8日

摘要 本次实验利用QuartusII7.0软件设计了一个具有24小时计时、保持、清零、快速校时校分、整点报时、动态显示等功能的的多功能数字钟。并利用QuartusII7.0软件对电路进行了详细的仿真,同时通过SMART SOPC实验箱对电路的实验结果进行验证。 Abstract This experiment uses the QuartusII7.0 software to design one to have 24 hours time, the maintenance, the reset, the fast timing school minute,the integral point reports time and so on digital clocks.And using the QuartusII software realizes the multi-purpose digital clock simulation. Through the SmartSOPC experiment box, I confirm the result of this experiment. 1.设计要求 本次EDA设计利用Quartus II7.0软件设计一个多功能数字钟,并下载到Smart SOPC实验系统中进行验证。该数字计时器可以完成从00:00:00到

17:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时以及众多附加功能。 1、能进行正常的时、分、秒计时功能; 2、分别由六个数码管显示时分秒的计时; 3、 K1是系统的使能开关(K1=0正常工作,K1=1时钟保持不变); 4、 K2是系统的清零开关(K2=0正常工作,K2=1时钟的分、秒全清零); 5、 K3是系统的校分开关(K3=0正常工作,K3=1时可以快速校分); 6、 K4是系统的校时开关(K4=0正常工作,K4=1时可以快速校时) 2.设计方案原理 本实验要求的数字时钟是由脉冲发生电路,计时电路,校时校分保持电路,清零电路,报时电路以及译码显示电路组成。实验为了设计时清晰明了,采取了分模块设计的方式,最后由各模块组装成总的电路。 其中脉冲发生电路是将实验室提供的48Mhz 的频率进行分频得到设计要求的各频率脉冲,计时电路由模60和模17计时器构成,校时校分保持及清零电路分别由各自的开关K 控制,报时电路是通过计时电路的时分秒的输出的反馈信号,连接到一个蜂鸣器上实现报时,译码显示电路时由24to4模块和一个译码器7447组成,连接六个数码管。 简易的总体原理图如下: 计时电路 校分校时保持清零电路 脉冲发生电路 译码显示电路 报时电路

VHDL数字钟实验报告

XXXXXXXXXXXXXXXXXX CPLD实验报告 实验名称:VHDL数字钟 姓名: XXXXXX 班级:电子与电气081 学号: 830702043 指导老师: XXXXXX

实验摘要 一、实验摘要 数字钟用到了很多我们数字电路里所学的数电知识,例如译码器、编码器、数据选择器、计数器等~。因此,做数字钟有着非常现实的意义。本实验使用VHDL 语句进行各模块的编写。由于本实验采用的是动态扫描的方式循环点亮四个共阳数码管,所以需要编写共阳显示译码器,三态门芯片、四进制计数器以及二~四译码器。 关键字:数字钟、CPLD、VHDL、动态扫描、三态门 实验目的 二、实验目的 学会使用Quartus Ⅱ这款EDA常用设计软件。 掌握在Quartus Ⅱ中VHDL语句的使用方法。 加强巩固层次设计思路、电路图的作法、仿真方法和作图技巧。 掌握CPLD实验箱的使用和电路的加载运行方法。 实验内容 三、实验内容 (1)认识VHDL 数字系统设计分为硬件设计和软件设计,但是随着计算机技术、超大规模集成电路(CPLD、FPGA)的发展和硬件描述语言的出现,软、硬件设计之间的界限被打破数字系统的硬件设计可以完全用软件来实现,只要掌握了HDL语言就可以设计出各种各样的数字逻辑电路。 (2)60进制计数器的设计 60进制计数器输入信号:时钟脉冲,对于本次数字钟设计为节省资源占用可不设置清零输入,输出信号:两位BCD码输出,一个进位输出。 entity counter60v is port( clk :in bit; ql :buffer integer range 9 downto 0; qh :buffer integer range 5 downto 0; jinwei:out bit); end counter60v; architecture c60 of counter60v is 生成的模块功能示意图: begin process( clk ) begin if(clk'event and clk='1')then if ql=9 then Array ql<=0; if qh=5 then qh<=0; else qh<=qh+1; end if; else ql<=ql+1; end if; end if; if(qh=5 and ql=9)then jinwei<='1'; else jinwei<='0'; end if; end process; end c60;

《多功能数字钟》EDA实验报告

《EDA课程设计》实验报告 多功能数字钟 姓名: 学号: 联系方式: 成绩:

1.摘要 在当代,随着人类社会进入到高度发达的信息化社会。信息技术的发展起着越来越大的作用,它几乎涉及到我们日常生活的每个领域,可以说要衡量一个当今社会的发展文明程度信息化技术的发展程度是一个非常重要的指标。众所周知,信息化社会的发展离不开电子信息技术产品的开发、产品品质的提高和改善。电子信息产品随着科学技术的进步,其电子器件和设计方法更新、换代的速度快的惊人,几乎是日新月异。然而实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。 由于基于PLD的EDA技术的发展和应用领域的扩大和深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益提高。 EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言在EDA平台上设计一个电子数字钟,它的计时为24小时小时制,显示满刻度为23时59分59秒,另外还具有校时功能和闹钟功能。总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块,时、分、秒计数和校时程序模块、数据选择器程序模块、显示程序模块和例化程序模块。并且使用QUARTUS II软件进行电路波形仿真,下载到EDA实验箱进行验证。 作为现在的大学生应熟练掌握这门技术,为以后的发展打下良好的基础,本实验设计是应用QuartusII环境及VHDL语言设计一个时间可调的数字时钟。使自己熟练使用QuartusII 环境来进行设计,掌握VHDL语言的设计方法。注重理论与实践之间的不同,从而培养自己

eda2实验报告数字钟

EDAⅡ实验报告--多功能数字钟 学院: 姓名: 学号: 专业: 指导老师: 完成时间: 2012年11 月

摘要 本实验借助于quartusⅡ软件设计一个多功能的数字时钟,具有24小时计时、星期显示、保持、清零、校分校时校星期、整点报时等基本功能,并在此基础上添加了万年历的显示、保持、清零、校准的附加功能。同时,还能进行闹铃,秒表等功能扩展。利用quartus Ⅱ进行相应的设计、仿真、调试,最后下载到SmartSOPC实验系统上验证设计的正确性。 关键词 多功能数字时钟 quartusⅡ计时星期显示整点报时万年历显示 Abstract This experiment is to design a multifunctional digital clock with quartusⅡ.The multifunctional digital clock has varities of the functions like 24-hour timer,week,keeping,clearing zero,adjusting time and chime on integral hour .It also include additional functions such as canlendar and so on.At the sametimes,it can be added other functions.we designed and simulated with quartusⅡ.Finally downloaded it to the experiment platform to test. Keywords multifunctional digital clock quartusⅡtime week chime on integral hour calendar.

EDA设计数字钟实验报告

南京理工大学 EDA(Ⅱ)实验报告 ——多功能数字钟 姓名: 学号: 学院: 指导教师: 时间:2014/11/3~2014/11/7

摘要 日益复杂的电子线路使得基于原理图的设计越来越复杂,甚至不切实际。硬件描述语言的诞生,对设计自动化起到了极大的促进和推动作用。Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,实现了从算法级、门级到开关级的多种抽象设计层次的数字系统建模,具有仿真,验证,故障模拟与时序分析等功能。 本文利用Verilog HDL语言,采用自顶向下的设计方法设计多功能数字钟,并通过QuartusⅡ分块进行了仿真。此程序通过下载到FPGA芯片后,可实现实际的数字钟显示,具有基本的计时显示和设置,时间校正,整点报时,12h/24h转换,闹钟设置和闹铃控制的功能。 关键词: FPGA, Verilog HDL, QuartusⅡ, EP3C25F324C8,数字钟

Abstract The development of electronic circuit has grown to be too complicated to be designed base on schematic diagram. The birth of HDL accelerated the development of electronic design automation drastically. Verilog HDL is one of the HDL with multiple and strong functions. In this thesis, a complex digital system is designed in the bottom-up way with Verilog HDL and is simulated by QuartusⅡ. The function of a digital clock can be realized by downloading the program to FPGA, which includes timing, time-setting, hourly chiming, 12/24transforming, bell-setting and bell-controlling. Keywords: FPGA, Verilog HDL, QuartusⅡ, EP3C25F324C8, Digital clock

南京理工大学EDA2实验报告

南京理工大学EDA(二)实验报告 学号: 姓名: 学院: 指导老师: 时间:2014年11月30日

摘要:本实验通过使用QuartusⅡ软件,并结合数字逻辑电路的知识设计多功能数字钟,可以实现正常的时、分、秒的计数功能,分别由六个数码管显示计时,可以利用开关实现系统的计时保持、清零和校分、校时、校星期的功能。同时,该电路系统还可以完成在59'53'', 59'55'',59'57''低音报时,59'59''高音报时的基本功能。在此基础上,本实验还设计了扩展功能,包括星期计时、校星期以及通过开关与门电路切换到秒表计时的功能。我原本还尝试设计闹钟的功能,但是闹钟的扩展功能还不够完善,目前完成了切换显示部分,但是报时还存在缺陷。在利用QuartusⅡ进行相应的设计、仿真、调试后下载到SmartSOPC实验系统上验证设计的正确性。 关键词:QuartusII,数字钟,分频,计时显示,保持清零,校分校时校星期,报时,星期计数,秒表 Abstract:This experiment is based on QuartusⅡ,with the help of knowledge regarding the digital logic circuits and system design,to design a multifunctional digital clock.The basic function of the multifunctional digital clock is a24-hour timer,and the exact time can be showed by six led lights. Also we can achieve the functions like time keeping, clearing and time and week adjusting by using the switches. Beyond the basic function,I improved the multifunctional digital clock and it can beep in low frequency at59'53'', 59'55'',59'57''and in high frequency at59'59''.Based on

EDA数字时钟综合设计性实验报告

广州大学 综合设计性实验 报告册 实验项目 EDA数字时钟 学院物理与电子工程学院 年级专业班电子132班 姓名张燕州学号 1319200092成绩 实验地点理学实验楼317指导教师宋沛

《综合设计性实验》预习报告 实验项目: EDA数字时钟 一引言:数字时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,数字时钟可植入自动控制、测试等系统内部,作为系统的时钟源,可为系统提供定时信号或中断控制的时间基准,具有广泛的用途。由于数字集成电路的发展使得数字时钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的单一报时功能。加入了一些诸如自动报时、定时闹钟等功能。这些都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用,有着非常现实的意义。 二实验目的:进一步掌握用VerilogHDL 语言编写任意进制计数器的方法,通过本次实验要充分认识到,顶层结构的设计和优化在综合设计中的重要性。 三实验原理:数字钟秒到分、分到时均为60进制,利用VerilogHDL编写模60的计数器,秒模块的CLK可从实验板上取得,秒模块的本身输出用来驱动显示秒的数码管,进位

输出恰好是分模块的CLK。分模块的进位作为时模块的CLK。时模块为24进制。 需要调整时间时,可以用数据选择器将正常的各个模块时钟切断取而代之的是由实验箱上的按键产生的单脉冲,从而实现调整时间的功能。 闹铃时间与当前时间要共用数码管的方式显示,同样我们可以采用多位数据选择器来实现。 闹铃实现可采用比较计时模块输出与闹钟设定输出完全相等时,输出控制信号使扬声器发声。 四实验内容:1、根据题目要求,参考GW48使用说明书,选取适当的模式来实现。 2、依据题目要求功能,设计顶层总体结构图。 3、使用VerilogHDL 语言来实现顶层结构中各个模块的功能,并创建顶层文件可调用的图形元件,如:2 4、60进制计数器,数据选择器等模块。 4、创建顶层GDF文档,并将各模块连接。 5、根据题目要求,以及第一步所选模式,并查表,定义引脚。 6、编译并下载到目标芯片中。 7、利用实验箱验证所设计的数字钟功能。 五重点问题:利用前面实验所学知识,设计一数字钟并在GW48 实验箱上实现。具体要求如下:

数字钟实验报告

电子线路设计、测试及实验(二)多功能数字钟实验报告

一、实验名称:多功能数字钟 二、实验任务及要求: 1 .实验任务:用FPGA器件和EDA技术实现多功能数字钟的设计 2.实验要求:基本功能:以数字形式显示时、分、秒的时间 小时计数器为同步24进制,要求手动校时校分扩展功能:任意时刻闹钟 小时显示(12/24)切换电路 仿广播电台整点报时 自动报整点时数 三、实验条件 1.实验仪器:FPGA实验开发装置 2.实验软件:ISE 3.实验板:Basys2 四、电路设计过程 1.组成框图 主体电路Verilog实现的层次图

任意闹钟设定模块 数字钟总体设计框图

2.工作原理 分频器模块:设置输入为50MHz的时钟信号,设置一个25位宽计数信号 Count,每经过一个周期 Count加一,当Count从0计数经过9500000 个cp周期时输出信号翻转一次并且Count清零重新开始计数,最终输出 1Hz时钟信号。 时分秒记时显示模块:由10进制计数器和6进制计数器组成60进制秒 计数器模块和60进制分计数器模块分别显示秒钟和分钟,由24进制计 数器显示小时。将1Hz的时钟信号作为60进制秒计数器的时钟脉冲,将 60进制秒计数器的进位信号作为60进制分计数器的使能信号,将60进 制分计数器的进位信号作为24进制时计数器的使能信号,进而完成时分 秒的显示控制。 12/24进制转换模块:设置一个选择控制信号en和上、下午指示信号PM, 当en=1时选择12进制,en=0时选择24进制。选择12进制时,若小时 大于12则使其自动减12,否则保持不变。当小时大于12时PM=1,指示 灯亮表示下午,否则指示灯不亮表示上午。 整点报时模块:设置一个计数信号right,它的值为24进制时的整点数, 用1Hz时钟信号作为脉冲控制,每1s响一次,每响一次right值减一, 控制整点报时的次数。 七段数码管显示控制模块;设置一个选择信号switch,当switch=1时显 示小时和分钟;当switch=0时选择显示分钟和秒。显示小时时若en=1 且小时数大于12则自动减12显示12进制,若en=0则显示24进制。 动态显示控制模块:用50Hz作为脉冲信号,设置一个20位计数信号Count,每经过一个时钟脉冲加计数,设置2-4线译码器输入信号 s1=Count[19],s2=Count[18],则每经过262144个时钟周期,即约0.005s 后s1s0加一,译码器输出改变一次,进而控制让哪个显示器显示出时间。3.单元电路设计(或源代码及注释)及仿真波形 10进制计数器: module counter10(output reg [3:0] Q10,input cp,input cr,input en); always@(posedge cp or negedge cr) begin if(~cr) Q10<=4'b0000; //异步清零 else if(~en) Q10<=Q10; //保持计数器不变 else if(Q10==4'b1001)Q10<=4'b0000; //计到9变回0 else Q10<=Q10+1'b1; //计数器加1 end endmodule 6进制计数器 module counter6(output reg [3:0] Q6,input cr,input cp,input en); always@(posedge cp or negedge cr) begin if(~cr) Q6<=4'b0000; //异步清零

相关文档
相关文档 最新文档