EDA多功能数字钟设计
EDA技术课程设计-多功能数字钟
EDA技术课程设计——多功能数字钟专业:通信c132姓名:苏莹洁138245史晓威138241指导老师:安亚军时间:2015.12.26目录1、设计目的 (3)2、设计系统环境 (3)3、设计性能指标及功能 (3) (3) (3)4、设计总体框图 (3)5、底层文件设计 (4)5.1秒计数器 (4)5.2分钟计数器 (4)5.3小时计数器 (5)5.4整点报时驱动信号产生模块 (5)5.5驱动8位八段共阴扫描数码管的片选驱动信号输出模块 (6)5.6驱动八段字形译码输出模块 (6)6、顶层文件设计 (6)7、心得体会 (7)附录(源程序) (8)1、设计目的掌握各类计数器和分频器以及它们相连的设计方法;掌握多个数码管的原理与方法;掌握CPLD技术的层次化设计的方法;掌握使用VHDL语言的设计思想;对整个系统的设计有一个了解。
2、设计系统环境(1)一台PC机;(2)一套GW48型EDA实验开发系统硬件;(3)X+PLUS Ⅱ集成化的开发系统硬件。
3、设计性能指标及功能3.1设计功能1)具有时、分、秒计数显示功能,以24小时循环计时。
2)时钟计数显示时有LED灯的花样显示。
3)具有调节小时、分钟、秒及清零的功能。
4)具有整点报时功能。
1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。
2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。
我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。
3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。
可以根据我们自己任意时间的复位。
4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。
产生“滴答.滴答”的报警声音。
EDA课程设计报告(多功能数字时钟的设计)
1 绪论1.1设计目的本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA 技术,加深对计算机体系结构的理解。
通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。
通过对实用数字钟的设计,巩固和综合运用计算机原理的基本理论和方法,理论联系实际,提高设计、分析、解决计算机技术实际问题的独立工作能力。
1.2设计要求(1)熟练掌握VHDL语言的结构特点并能运用到具体实际中。
(2)学会利用复杂的可编程逻辑器件进行简单的电子系统设计。
(3)熟悉并掌握基于EDA实验开发系统设计实际问题的方法和步骤。
(4)通过设计过程提高自己运用所学知识来分析解决问题的能力。
1.3设计内容本课程设计中使用Altera公司的EP2C35系列的FPGA芯片,利用SOPC-NIOSII-EP2C35开发板上的资源和QuartusII软件,实现一个多功能数字时钟。
本设计的任务要求显示格式为小时-分钟-秒钟,整点报时,报时时间为10秒,即从整点前10秒钟开始进行报时提示,喇叭开始发声,直到过整点时,在 5秒LED开始闪烁,过整点后,停止闪烁。
系统时钟选择时钟模块的10KHz,要得到1Hz时钟信号,必须对系统时钟进行10,000次分频。
调整时间的的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调整分钟,每按下一次,分钟增加一分钟。
另外用S8按键作为系统时钟复位,复位后全部显示00-00-00。
扩展内容:用16*16点阵显示实现日期的动态显示用4×4键盘阵列键盘替换按键实现日期、时钟的调整,用液晶显示模块日期、时间的显示。
1.4设计环境本次课题设计方要用到的开发环境是Altera公司的EDA设计工具软件QuartusII。
Altera公司的工作与EDA厂家紧密结合,使QuartusII软件可以与其它工业标准的设计输入、综合和校验工具相连接。
EDA多功能数字钟设
实验报告实验四多功能数字钟设计一、实验目的1、学习复杂数字电路系统的设计。
2、设计一个多功能数字钟。
二、实验要求1.数字显示当前的小时、分钟;2.可以预置为12小时计时显示和24小时计时显示;3.一个调节键,用于调节目标数位的数字。
对调节的内容敏感,如调节分钟或秒时,保持按下时自动计数,否则以脉冲计数;4.一个功能键,用于切换不同状态:计时、调时、调分、调秒、调小时制式。
三、实验仪器PC机、Quartus II软件、EDA实验箱四、实验原理1.系统需要两个六十进制计数器用于分钟和秒的计时,为方便译码采用60进制计数器(1)秒计时实验程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity second ISport(clk1,rst1:in std_logic;cout1:out std_logic;cq0:out std_logic_vector(3 downto 0);cq1:out std_logic_vector(3 downto 0));END second;ARCHITECTURE behave of second isSIGNAL d: std_logic_vector(3 downto 0);SIGNAL g: std_logic_vector(3 downto 0);BEGINprocess(clk1,rst1,d,g)BEGINif (rst1 ='1') thend <="0000";g <="0000";elsif(clk1'EVENT and clk1='1')thenif(d=9 and g=5)thencout1<='1';elsecout1<='0';end if;if(d=9)thend<="0000";if(g=5)theng<="0000";elseg<=g+1;end if;elsed<=d+1;end if;end if;end process;cq0<=d;cq1<=g;end behave;clk1是时钟信号,rst1是复位信号, cout1作为下一模块分钟设计的时钟信号,cq0,cq1输出信号最后接在动态译管码芯片上。
EDA课程设计——多功能数字钟的设计
E D A课程设计学院:电气信息学院专业年级:通信工程2013级姓名:学号课题:EDA课程设计指导老师:日期:2016年7月6日第一章多功能数字钟的设计1、设计任务了解数字钟的工作原理,进一步熟悉VHDL语言编写驱动七段数码管显示代码,并且掌握用多进程的方式实现一个综合性的程序。
最终实现硬件和软件多功能数字钟的设计。
(1)显示的格式为小时-分钟-秒钟,是24小时制,整点报时时间为5秒,级从整点前5秒钟开始进行报时提示,LED灯开始闪烁,过整点后,停止闪烁。
(2)系统时钟选择时钟模块的10KHz,要得到1Hz时钟信号,必须对系统时钟进行10000次分频。
(3)调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调节分钟,每按下一次,分钟增加一分钟。
另外用S8按键作为系统时钟复位,复位后全部显示00-00-00。
2、方案设计2.1软件设计方案用VHDL语言编写程序实现设计内容中需要实现的功能。
将编写好的VHDL的程序加载到硬件电路中,从而驱动七段数码管时间,并用按键控制时间的变化,用软件仿真验证实验结果。
2.2硬件设计方案在软件方案实现的基础上,将已经运行成功的程序,将结果烧制到硬件电路中,最后生成顶层电路原理图。
3、设计的具体实现3.1设计步骤3.1.1打开QUARTUSII软件,新建一个工程3.1.2建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框;3.1.3按照自己设计方案,在VHDL编辑窗口编写VHDL程序;(程序见附录) 3.1.4编写完VHDL程序后,保存在自己新建的文件夹在D盘的目录下;3.1.5对自己编写的VHDL程序进行编译仿真,对程序的错误进行修改,直到完全通过编译和仿真;3.1.6仿真无误后,依照按键开关、数码管、LED灯与FPGA的管脚连接表进行管脚分配。
分配完成后,在进行编译一次,以使管脚分配生效;3.1.7用下载电缆通过JTAG口将对应的sof文件加载到FPGA中,观察设计结果是否和自己的编程思想一致。
eda多功能数字钟实验报告
eda多功能数字钟实验报告
《EDA多功能数字钟实验报告》
摘要:
本实验通过对EDA多功能数字钟的组装和测试,探索了数字钟的功能和性能。
实验结果表明,EDA多功能数字钟具有精准的时间显示、多种闹铃设置、温度
和湿度监测等功能,是一款实用且性能稳定的数字钟产品。
引言:
数字钟作为现代生活中不可或缺的家居用品,其功能和性能一直备受关注。
本
次实验选择了EDA多功能数字钟作为研究对象,旨在通过对其组装和测试,深
入了解数字钟的各项功能和性能指标。
实验方法:
1. 组装数字钟:按照产品说明书,将数字钟的各个部件进行组装,并确保连接
牢固。
2. 功能测试:测试数字钟的时间显示、闹铃设置、温度和湿度监测等功能。
3. 性能测试:对数字钟的时间精准度、闹铃响铃声音、温度和湿度监测准确度
等进行测试。
实验结果:
1. 时间显示:数字钟的时间显示精准,误差在1秒以内。
2. 闹铃设置:数字钟支持多组闹铃设置,响铃声音清晰、音量适中。
3. 温度和湿度监测:数字钟的温湿度监测准确度高,与实际环境温湿度相符合。
讨论:
通过本次实验,我们发现EDA多功能数字钟具有精准的时间显示、多种闹铃设
置、温度和湿度监测等功能,性能稳定,符合用户对数字钟的基本需求。
同时,数字钟的组装和操作也相对简单,适合家庭使用。
结论:
EDA多功能数字钟是一款实用且性能稳定的数字钟产品,能够满足用户对数字
钟的基本需求。
在未来的生活中,数字钟将继续扮演重要的角色,为人们的生
活提供便利。
致谢:
感谢实验中提供支持和帮助的老师和同学们。
EDA课程设计+(数字钟)
EDA课程设计报告课题名称:多功能数字钟设计多功能数字钟设计一、数字钟简介:20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。
数字钟的设计方法有许多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等。
这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,并便于功能的扩展。
二、设计要求1. 具有以二十四小时制计时、显示、时间设置的功能。
2. 精度要求为1s。
三、系统功能简介1. 计时:时钟计时:秒——60进制BCD码计数;分——60进制BCD码计数;时——24进制BCD码计数;2. 校时:同时整个计数器有清零,调分,调时功能。
可手动校时,能分别进行时、分的校正3. 显示:具有驱动8位八段共阴极扫描数码管的片选驱动信号输出和八段字形译码输出。
内容规划:(1)根据电路特点,可用层次化结构化设计概念。
将此项设计分成若干模块,规定每一模块的功能和各模块之间的接口。
EDA多功能数字钟设计
多功能数字钟的设计1设计功能(1)在6位数码管上按24小时进制显示时分秒;(2)当电路发生走时误差时具有对时和分校是功能(3)具有整点报时功能,报时声响为4低1高,每一下响声持续1s,结束报时是正好整点;(4)能按设定的时间启动闹钟,如早上7点,即用800Hz方波驱动喇叭,持续1分钟自动停止。
2设计思路划分出实现该数字钟的各逻辑功能模块,采用VHDL语言编写后分别例化,最后在顶层文件中将各功能模块连接起来。
(1)分和秒的计时是60进制,时的计时是24 进制,分高低位。
(2)数据选择器选择时分秒进行输出实现6位数码管动态扫描。
(3)校时电路根据输入的不同开关进行分和时的调整。
(4)报时电路主要完成整点报时和定时闹钟。
3 各模块采用VHDL代码设计(1)秒的代码(2)library ieee;(3)use ieee.std_logic_1164.all;(4)use ieee.std_logic_unsigned.all;(5)entity second is(6)port((7)setmin, clk, reset : in std_logic;(8)sec1, sec2 : out std_logic_vector(3 downto 0);(9)carry : out std_logic );(10)end second;(11)architecture rtl of second is(12)signal sec1_t, sec2_t:std_logic_vector(3 downto 0);(13)begin(14)process(clk, reset)(15)begin(16)if reset = '1' then(17)sec1_t <= "0000";(18)sec2_t <= "0000";(19)elsifsetmin= '1' then(20)carry <= '1';(21)elsifclk'event and clk='1' then(22)if sec1_t = "1001" then(23)sec1_t <= "0000";(24)if sec2_t = "0101" then(25)sec2_t <= "0000";(26)else(27)sec2_t<=sec2_t+1;(28)end if;(29)else(30)sec1_t<=sec1_t+1;(31)end if;(32)(33)if sec1_t="1001" and sec2_t="0101" then carry<= '1'; (34)else(35)carry <= '0';(36)end if;(37)end if;(38)end process;(39)sec1 <= sec1_t;(40)sec2 <= sec2_t;(41)end rtl;(2)分的代码libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity minute isport(clk, reset, sethour : in std_logic;sec1, sec2 : out std_logic_vector(3 downto 0);carry : out std_logic );end minute;architecturertl of minute issignal sec1_t, sec2_t:std_logic_vector(3 downto 0);beginprocess(clk, reset)beginif reset = '1' thensec1_t <= "0000";sec2_t <= "0000";elsifsethour='1' then carry <= '1';elsifclk'event and clk='1' thenif sec1_t = "1001" thensec1_t <= "0000";if sec2_t = "0101" thensec2_t <= "0000";elsesec2_t<=sec2_t+1;end if;elsesec1_t<=sec1_t+1;end if;if sec1_t="1001" and sec2_t="0101" then carry <= '1';elsecarry<= '0';end if;end if;end process;sec1 <= sec1_t;sec2 <= sec2_t;endrtl;(3)时的代码libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity hour isport(clk, reset : in std_logic;hour1,hour2: out std_logic_vector(3 downto 0));end hour;architecturertl of hour issignal hour1_t,hour2_t:std_logic_vector(3 downto 0);beginprocess(clk,reset)beginif reset='1' thenhour1_t<="0000";hour2_t<="0000";elsifclk'event and clk='1' thenif hour1_t="0011" and hour2_t="0010" thenhour1_t<="0000";hour2_t<="0000";elseif hour1_t="1001" thenhour1_t<="0000";if hour2_t="0010" thenhour2_t<="0000";elsehour2_t<=hour2_t+1; end if;elsehour1_t<=hour1_t+1;end if;end if;end if;--hour1<=hour1_t;--hour2<=hour2_t;end process;hour1<=hour1_t;hour2<=hour2_t;endrtl;(4)数码管译码代码libraryieee;use ieee.std_logic_1164.all;entity segment7 isport(data:instd_logic_vector(3 downto 0);dout:outstd_logic_vector(6 downto 0));end;architecturebehav of segment7 isbeginprocess(data)begincase data iswhen "0000"=>dout<="0111111";when "0001"=>dout<="0000110";when "0010"=>dout<="1011011";when "0011"=>dout<="1001111";when "0100"=>dout<="1100110";when "0101"=>dout<="1101101";when "0110"=>dout<="1111101";when "0111"=>dout<="0000111";when "1000"=>dout<="1111111";when "1001"=>dout<="1101111";when "1010"=>dout<="1000000";when others=>null;end case;end process;endbehav;(5)动态扫描代码libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity mux6_1scan isport(clkscan,reset : in std_logic;in1,in2,in3,in4,in5,in6 : in std_logic_vector(3 downto 0);data : out std_logic_vector(3 downto 0);sel : out std_logic_vector(2 downto 0));end mux6_1scan;architecturertl of mux6_1scan issignalcount:std_logic_vector(2 downto 0);beginprocess(clkscan,reset)beginif reset='1' thencount<="000";elsifclkscan'event and clkscan='1' thenif count="111" thencount<="000";elsecount<=count+1;end if;end if;end process;process(count)begincase count iswhen "000"=>data<=in1;when "001"=>data<=in2;when "010"=>data<="1010";when "011"=>data<=in3;when "100"=>data<=in4;when "101"=>data<="1010";when "110"=>data<=in5;when "111"=>data<=in6;when others=>null;end case;end process;sel<=count;endrtl;(6)闹钟代码libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity alert isport( clk500hz,clk1khz : in std_logic;int1,int2,int3,int4,int5,int6 : in std_logic_vector(3 downto 0);speak : out std_logic);end alert;architecturertl of alert isbeginspeak<=clk500hz when (int4="0101" and int3="1001")and ((int2="0101" and int1="0101")or(int2="0101" and int1="0111"))elseclk1khz when (int4="0101" and int3="1001")and (int2="0101" and int1="1001")elseclk1khz when int6="0101" and int5="1001" else'0';endrtl;4顶层文件设计将VHDL语言所写的各个模块分别例化为元器件,顶层文件采用原理图的方式输入。
EDA课程设计——多功能数字钟的设计
E D A课程设计学院:电气信息学院专业年级:通信工程2013级姓名:学号课题: EDA课程设计指导老师:日期:2016年7月6日第一章多功能数字钟的设计1、设计任务了解数字钟的工作原理,进一步熟悉VHDL语言编写驱动七段数码管显示代码,并且掌握用多进程的方式实现一个综合性的程序。
最终实现硬件和软件多功能数字钟的设计。
(1)显示的格式为小时-分钟-秒钟,是24小时制,整点报时时间为5秒,级从整点前5秒钟开始进行报时提示,LED灯开始闪烁,过整点后,停止闪烁。
(2)系统时钟选择时钟模块的10KHz,要得到1Hz时钟信号,必须对系统时钟进行10000次分频。
(3)调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调节分钟,每按下一次,分钟增加一分钟。
另外用S8按键作为系统时钟复位,复位后全部显示00-00-00。
2、方案设计2.1软件设计方案用VHDL语言编写程序实现设计内容中需要实现的功能。
将编写好的VHDL的程序加载到硬件电路中,从而驱动七段数码管时间,并用按键控制时间的变化,用软件仿真验证实验结果。
2.2硬件设计方案在软件方案实现的基础上,将已经运行成功的程序,将结果烧制到硬件电路中,最后生成顶层电路原理图。
3、设计的具体实现3.1设计步骤3.1.1打开QUARTUSII软件,新建一个工程3.1.2建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框;3.1.3按照自己设计方案,在VHDL编辑窗口编写VHDL程序;(程序见附录) 3.1.4编写完VHDL程序后,保存在自己新建的文件夹在D盘的目录下;3.1.5对自己编写的VHDL程序进行编译仿真,对程序的错误进行修改,直到完全通过编译和仿真;3.1.6仿真无误后,依照按键开关、数码管、LED灯与FPGA的管脚连接表进行管脚分配。
分配完成后,在进行编译一次,以使管脚分配生效;3.1.7用下载电缆通过JTAG口将对应的sof文件加载到FPGA中,观察设计结果是否和自己的编程思想一致。
EDA课程设计 数字时钟
EDA课程设计报告一·设计任务使用硬件描述语言,在CPLD/FPGA上实现一个多功能数字钟。
二·设计要求除按键、LED、扬声器、时钟信号外,整个数字钟的功能要求在一块芯片上实现。
a)具有时,分,秒,计数显示功能,以24小时循环计时;b)具有时间清零功能;c)具有小时、分钟和秒钟调整功能(个位和十位分开调或合起来调)。
d)具有闹钟功能,能预设闹钟时间,精确到秒。
整个数字钟只设一个时钟输入端口,所需不同频率信号在内部分频实现。
(LED扫描频率设为50Hz以上)。
三·设计方案设计采用模块方式,分别为分频模块:产生1Hz的脉冲作为秒的输入,和产生1kHz的脉冲作为数码管显示的动态扫描。
计时模块:秒模块,分模块,时模块。
闹钟模块,显示模块,控制模块。
四·模块端口设置1. 分频模块输入:clkin : 本实验输入为50MHz晶振输出:clk : 为显示模块及始终调节提供1KHz脉冲clkt: 为计数器模块提供1Hz脉冲2. 计时模块m 是模式按键,当m=0 时,进入计时模式,在计时模式下可以进行时间调整。
num3,num4 产生加速调整时间,当其值为1 时,可以快速调整时间,该调整时间的频率由clk 提供。
counta,count1 是手动调节时间。
Turn 接按键,可以改变当前调节的是小时还是分钟,长按turn 键还可以使秒钟信号清零。
sec1,min1,hour1 输出的是计时的秒,分,时。
3.闹钟模块原理:num1,num2 产生加速调整时间,当其值为1 时,可以快速调整时间,该调整时间的频率由clk 提供。
countb,count2 是手动调节闹钟时间。
amin,ahour 是输出的闹钟的分钟和小时4. 控制模块m 是模式按键,当m=0 时,指当前输出的是计时功能;当m=1 时,指当前调整的是闹钟时间;当m=2 时,指当前调整的是计时时间;当m=3 时,此时turn 按键可用于跑表的暂停与开始。
EDA电子钟多功能数字时钟课程设计(含代码)[优秀]
多功能数字时钟设计说明:1.系统顶层框图:各模块电路功能如下:1.秒计数器、分计数器、时计数器组成最基本的数字钟,其计数输出送7段译码电路由数码管显示.2.基准频率分频器可分频出标准的1HZ频率信号,用于秒计数的时钟信号;分频出4HZ频率信号,用于校时、校分的快速递增信号;分频出64HZ频率信号,用于对按动“校时”,“校分”按键的消除抖动.2.多功能数字钟结构框图:一、系统功能概述已完成功能1.完成时/分/秒的依次显示并正确计数,利用六位数码管显示;2.时/分/秒各段个位满10正确进位,秒/分能做到满60向前进位,有系统时间清零功能;3.定时器:实现整点报时,通过扬声器发出高低报时声音;4.时间设置,也就是手动调时功能:当认为时钟不准确时,可以分别对分/时钟进行调整;5.闹钟:实现分/时闹钟设置,在时钟到达设定时间时通过扬声器响铃.有静音模式.待改进功能:1. 系统没有万年历功能,正在思考设计方法.2. 应添加秒表功能.二、系统组成以及系统各部分的设计1.时计数模块时计数模块就是一个2位10进制计数器,记数到23清零.VHDL的RTL描述如下:----cnt_h.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt_h isport(en,clk,clr:in std_logic;dout:out std_logic_vector(7 downto 0);c:out std_logic);end cnt_h;architecture rtl of cnt_h issignal t:std_logic_vector(7 downto 0);beginprocess(en,clk,clr)variable t:std_logic_vector(7 downto 0);beginif en='1' then --异步使能if clk 'event and clk='1' thent:=t+1;if t(3 downto 0)=X"A" then --个位等于10则十位加1t(7 downto 4):=t(7 downto 4)+1;t(3 downto 0):=X"0"; --个位清零end if;if t>X"23" then --大于23清零t:=X"00";end if;end if;if clr='1' then --异步清零t:=X"00";end if;end if;dout<=t;end process;end rtl;时计数器模块仿真波形如下从仿真波形可知,当计数到23时,下一个时钟上升沿到来时就清零了,符合设计要求.时计数模块框图如下2.分及秒计数模块分及秒计数模块也是一个2位10进制计数器,记数到59清零.VHDL的RTL描述如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt_s isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0);c:out std_logic);end cnt_s;architecture rtl of cnt_s isbeginprocess(en,clk,clr)beginif en='1' thenif clr='1' then --异步清零dout<=X"00";elsif clk 'event and clk='1' thenif dout(3 downto 0)<9 thendout(3 downto 0)<=dout(3 downto 0)+1;c<='0';elsif dout(7 downto 4)<5 thendout(3 downto 0)<=X"0";dout(7 downto 4)<=dout(7 downto 4)+1;elsedout<=X"00";c<='1';end if;end if;else dout<="ZZZZZZZZ";end if;end process;end rtl;分和秒计数器模块仿真波形如下从仿真波形可知,当计数到59时,下一个时钟上升沿到来时就清零了,并且产生进位信号,符合设计要求.分和秒计数模块框图如下3.按键消抖动模块按键消抖动有很多方案,这里选择的是计数消抖,即只当有效电平到来后开始计数,当计数值大于一定值后再输出该有效电平,否则不输出,从而达到消抖目的. VHDL的RTL描述如下:library ieee;use ieee.std_logic_1164.all;entity haoin isport(din,clk:in std_logic;dout:out std_logic); end haoin;architecture rtl of haoin isbeginprocess(din)variable t: integer range 0 to 63:=0;beginif din='1' thenif clk 'event and clk='1'thent:=t+1;if t>10 thendout<='1';t:=t-1;else dout<='0';end if;end if;else dout<='0';t:=0;end if;end process;end rtl;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ring isport(clk: in std_logic;clk500: in std_logic;clk1k:in std_logic;beep:out std_logic);end ring;architecture rtl of ring isbeginprocess(clk)variable t: std_logic;variable n: integer range 0 to 15:=0;beginif clk 'event and clk='1' thent:=not t;n:=n+1;end if;if t='1' and n<11 thenbeep<=clk500;elsif n=11 thenbeep<=clk1k;else beep<='Z';end if;end process;end rtl;library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity clock isport(SA: in std_logic;SB: in std_logic;SC: in std_logic;SD: in std_logic;clk1: in std_logic;dout: buffer std_logic_vector(23 downto 0);--seg_data:out std_logic_vector(7 downto 0);--seg_co米:out std_logic_vector(3 downto 0);beep: out std_logic--led:out std_logic_vector(3 downto 0));end entity clock;architecture rtl of clock isco米ponent cnt_s isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0);c:out std_logic);end co米ponent;co米ponent cnt_h isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0));end co米ponent;--co米ponent seg米ain is--port(clk,reset_n:in std_logic;--datain:in std_logic_vector(15 downto 0);--seg_data:out std_logic_vector(7 downto 0);--seg_co米:out std_logic_vector(3 downto 0));--end co米ponent;--co米ponent ring is--port( en: in std_logic;-- clk: in std_logic;--clk500: in std_logic;--clk1k:in std_logic;--beep:out std_logic);--end co米ponent;co米ponent haoin isport(din,clk:in std_logic;dout:out std_logic);end co米ponent;co米ponent naoling isport (h,米:in std_logic_vector(7 downto 0);clk4hzh,clk4hz米:in std_logic;sys_en,sys_rst:in std_logic;h_o,米_o: out std_logic_vector(7 downto 0);beep:out std_logic);end co米ponent;signal reg_h:std_logic_vector(7 downto 0);signal reg_米:std_logic_vector(7 downto 0);signal reg_s:std_logic_vector(7 downto 0);signal reg_米_s:std_logic_vector(7 downto 0):=X"59"; signal reg_米_米:std_logic_vector(7 downto 0):=X"59";signal reg_米_h:std_logic_vector(7 downto 0):=X"59";signal clk_h:std_logic;signal clk_米:std_logic;signal clk_s:std_logic;signal c_s :std_logic;signal c_米:std_logic;signal c_h :std_logic;signal sys_clk1:std_logic;signal sys_clk4:std_logic;signal sys_clk64:std_logic;signal sys_clk500:std_logic;signal sys_clk1k:std_logic;signal clki:integer:=750000;signal sys_rst:std_logic:='0';signal sys_en:std_logic:='1';signal clk_ring,米h:std_logic;signal SAc,SBc,SCc,SDc:std_logic;signal en_r:std_logic;signal NL_reg_h,NL_reg_米:std_logic_vector(7 downto 0);signal NL_ring:std_logic;signal sys_clk4_NL_h,sys_clk4_NL_米:std_logic;beginh:cnt_h port 米ap(en=>sys_en,clk=>clk_h,clr=>sys_rst,dout=>reg_h);米:cnt_s port 米ap(en=>sys_en,clk=>clk_米,clr=>sys_rst,dout=>reg_米,c=>c_米);s:cnt_s port 米ap(en=>sys_en,clk=>sys_clk1,clr=>SCc,dout=>reg_s,c=>c_s);--sled:seg米ain port 米ap(clk=>clk1,reset_n=>SCc,seg_data=>seg_data,seg_co 米=>seg_co米,datain=>dout(15 downto 0));--ring0:ring port 米ap(en=>en_r,clk=>clk_ring,clk500=>sys_clk500,clk1k=>sys_clk1k,beep=>beep); haoin1:haoin port 米ap( SA,sys_clk64,SAc);haoin2:haoin port 米ap( SB,sys_clk64,SBc);haoin3:haoin port 米ap( SC,sys_clk64,SCc);haoin4:haoin port 米ap( SD,sys_clk64,SDc);NL:naoling port 米ap(beep=>NL_ring,h=>reg_h,米=>reg_米,clk4hzh=>sys_clk4_NL_h,clk4hz米=>sys_clk4_NL_米,sys_en=>sys_en,sys_rst=>sys_rst,h_o=>NL_reg_h,米_o=>NL_reg_米);beep<=clk_ring and 米h;--led<=reg_s(3 downto 0);p_sys_clk:process(clk1)variable t1,t4,t64,t500,t1k:integer range 0 to 50000000;beginif clk1 'event and clk1='1' thent1:=t1+1;t4:=t4+1;t64:=t64+1;t500:=t500+1;t1k:=t1k+1;if t1=clki/2 thent1:=0;sys_clk1<=not sys_clk1;end if;if t4=clki/8 thent4:=0;sys_clk4<=not sys_clk4;end if;if t64=clki/128 thent64:=0;sys_clk64<=not sys_clk64;end if;if t500=clki/1000 thent500:=0;sys_clk500<=not sys_clk500;end if;if t1k=clki/2000 thent1k:=0;sys_clk1k<=not sys_clk1k;end if;end if;end process p_sys_clk;p_c:process(SAc,SBc,SCc,SDc)beginif SAc='1' and SDc='0' thenclk_h<=sys_clk4;elseclk_h<=c_米;end if;if SAc='1' and SDc='1' thensys_clk4_NL_h<=sys_clk4;elsesys_clk4_NL_h<='0';end if;if SBc='1' and SDc='0'thenclk_米<=sys_clk4;elseclk_米<=c_s;end if;if SBc='1' and SDc='1'thensys_clk4_NL_米<=sys_clk4;elsesys_clk4_NL_米<='0';end if;if SDc='0' thendout(7 downto 0)<=reg_s;dout(15 downto 8)<=reg_米;dout(23 downto 16)<=reg_h;elsedout(7 downto 0)<="ZZZZZZZZ";dout(15 downto 8)<=NL_reg_米;dout(23 downto 16)<=NL_reg_h;end if;end process p_c;P_ring:process(reg_米,reg_s,sys_clk1k)variable clk_ring_t:std_logic;variable t:std_logic_vector(3 downto 0);beginif reg_米=X"59" and (reg_s=X"50" or reg_s=X"52" or reg_s=X"54" or reg_s=X"56" or reg_s=X"58") thenclk_ring_t:=sys_clk500;elsif reg_米=X"00" and reg_s=X"00" thenclk_ring_t:=sys_clk1k;else clk_ring_t:='Z';end if;if NL_ring='1' thenclk_ring_t:=sys_clk1k;end if;if sys_clk1k 'event and sys_clk1k='1' thent:=t+1;end if;if t>1 then 米h<='1';end if;clk_ring<=clk_ring_t;end process p_ring;end rtl;。
EDA设计-多功能数字钟
设计一个数字计时器,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等功能。
具体实现方法为:首先利用一个模48和两个模1000的计数器将原始的48MHZ转换成数字计时器所需的1HZ。
然后利用1HZ作为时钟,用两个模60和一个模24计数器形成基本数字钟。
快速校时和校分只需利用适当的与门和或门添加到相应计时模块的时钟即可。
至于整点报时,利用相应的判别条件,再连入相应的的频率,最后送到蜂鸣器端口即可完成功能。
对于附加功能闹钟和星期。
闹钟的具体功能为可设置时间,可先清零后再重新设置,到点后以1KHZ鸣叫10秒,期间可关掉闹钟。
具体实现方法为:将开关K5作为闹钟的小时设定,开关K6作为闹钟的分钟设定,均作为计数器的时钟。
当这两个开关上下一次,小时和分钟均增加1。
然后再将闹钟的时间与数字钟的时间相比较,当两者完全相同时,蜂鸣器响起。
对于星期的设置比较简单,只需在数字钟小时模块后添加一个模8计数器,并在显示模块添加星期的相应输出即可。
对于实验调试所需注意的是:要对开关进行消颤,利用D触发器,且添加的频率不能太大。
关键字:分频、计数器、D触发器AbstractDesign a digital timer, which has the timing function counting from 00:00:00 to23:59:59, and can also maintain time 、clear time、rapidly adjust the minutes 、rapidly adjust the hours and timekeeping. The realizing specific methods are as follows .First, use a mold 48 and two mode 1000 counters to turn the original 48 MHz into a digital timer required 1HZ. Second , take the 1HZ as the clock to the basic digital clock formation of two mold 60 and a modulo 24 counters . Use the appropriate AND and OR gates added to the appropriate timing module can realize rapidly adjusting the minutes . As for timekeeping , using the corresponding discriminant conditions, connecting them with the corresponding frequency, and sending to the buzzer port can complete the function.Additional features include alarm clock and counting days of the week. The alarm clock can set the time, can be first cleared and then reseted, can sound for 10 seconds, and in the period can turn off the alarm. The specific method is: take K5 as the switch setting hour and take K6 as the switch setting minute, both as counters’ clock. Once these two switches up and down, hour and minute are both increase 1. Then compare the alarm time with the time of the digital clock . When they are the same, the buzzer start sounding . Setting the week is relatively simple, just adding a modulo 8 counter behind digital clock hour module and adding the corresponding output to the display module.For the debug experiments , use the D flip-flop to eliminate chatter and the frequency added can not be too much.Keywords:frequency converteion、counter、D flip-flop一.设计要求 (3)二.方案论证 (4)三.各子模块设计原理 (6)3.1 脉冲发生电路 (6)3.2 计时电路 (8)3.3 译码显示电路 (11)3.4整点报时电路 (12)3.5保持电路 (13)3.6清零电路 (14)3.7校分、校时电路 (14)3.8闹钟电路 (15)3.9星期电路 (20)四.下载调试 (20)五.结论 (21)六.实验感想 (21)参考文献 (24)附录 (24)多功能数字钟一、设计要求设计一个数字计时器,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等功能。
eda多功能数字时钟课程设计
eda多功能数字时钟课程设计一、课程目标知识目标:1. 学生能理解数字时钟的基本原理,掌握EDA工具的使用方法,并运用相关电路知识设计多功能数字时钟。
2. 学生能够运用所学知识,分析并解释数字时钟电路中各个部分的功能及其相互关系。
3. 学生了解数字时钟在实际生活中的应用,理解其重要性。
技能目标:1. 学生能够运用EDA工具进行电路设计,具备实际操作能力。
2. 学生通过动手实践,培养解决实际问题的能力,提高创新意识和团队协作能力。
3. 学生能够运用所学知识,对数字时钟电路进行调试和优化。
情感态度价值观目标:1. 学生在学习过程中,培养对电子技术的兴趣,激发创新精神。
2. 学生通过团队合作,学会尊重他人,培养良好的沟通能力和团队精神。
3. 学生认识到科技发展对社会进步的重要性,树立正确的价值观。
课程性质:本课程为实践性较强的课程,结合理论教学,注重培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的电子技术基础知识,对实践操作有较高的兴趣。
教学要求:教师需结合理论教学,指导学生进行实践操作,注重启发式教学,引导学生主动探究,提高学生的综合能力。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
通过课程学习,使学生能够将所学知识应用于实际生活中,提高学生的创新意识和实践能力。
二、教学内容本课程教学内容主要包括以下几部分:1. 数字时钟原理:讲解数字时钟的基本工作原理,包括时钟信号、计数器、显示驱动等组成部分。
2. EDA工具使用:介绍EDA工具的基本操作,如原理图绘制、电路仿真、PCB设计等。
3. 电路设计与实现:指导学生运用EDA工具设计多功能数字时钟电路,包括时钟信号电路、分频器、计数器、显示驱动和按键控制等模块。
4. 电路调试与优化:教授学生如何对设计的数字时钟电路进行调试,找出问题并进行优化。
教学内容与教材关联性如下:1. 《电子技术基础》中关于数字电路的基础知识,为理解数字时钟原理提供理论支持。
eda课程设计数字时钟设计
eda课程设计数字时钟设计一、教学目标本课程旨在通过数字时钟设计项目,让学生掌握EDA(电子设计自动化)工具的基本使用,理解数字电路的设计原理,培养学生的动手实践能力和创新能力。
具体目标如下:1.知识目标:•掌握数字电路的基本概念和设计方法。
•学习常用的EDA工具,如Multisim、Proteus等,并能够运用它们进行数字电路的设计和仿真。
•了解时钟信号的产生和应用,理解RTC(实时时钟)的工作原理。
2.技能目标:•能够运用EDA工具设计简单的数字时钟电路。
•能够进行电路仿真,调试并优化设计。
•学会阅读和理解电子电路图,培养良好的电子工程实践能力。
3.情感态度价值观目标:•培养学生对电子科技的兴趣,增强其科技意识。
•培养学生团队协作精神和自主学习能力。
•培养学生解决问题的能力,增强其面对挑战的信心。
二、教学内容本课程的教学内容主要包括数字电路基础、EDA工具的使用、数字时钟设计原理和RTC的应用。
具体安排如下:1.数字电路基础:•数字逻辑门电路•组合逻辑电路•时序逻辑电路2.EDA工具的使用:•Multisim和Proteus的基本操作•数字电路图的绘制和仿真3.数字时钟设计原理:•常见的时钟信号生成电路•数字时钟电路的设计方法4.RTC的应用:•RTC的工作原理•RTC在数字时钟中的应用三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:用于讲解数字电路基础和EDA工具的使用方法。
2.案例分析法:通过分析具体的数字时钟设计案例,让学生理解数字时钟的设计过程。
3.实验法:让学生动手实践,使用EDA工具进行数字时钟的设计和仿真。
四、教学资源为了支持教学,我们将准备以下教学资源:1.教材:选用《数字电路与EDA技术》作为主要教材。
2.参考书:提供《EDA技术教程》等参考书籍,供学生课后自主学习。
3.多媒体资料:制作课件和教学视频,用于课堂讲解和课后复习。
4.实验设备:提供计算机、EDA工具软件、电路仿真实验板等,供学生进行实验和实践。
EDA多功能数字钟
个位计数器再输入一个秒脉冲时,数字钟应自动显 示为00时00分00秒。 12小时制:当数字钟运行到12时59分59秒时,秒的 个位计数器再输入一个秒脉冲时,数字钟应自动显 示为01时00分00秒。
数字钟主体计时模块框图举例
任 意 闹 钟 设 定 作 用 模 块
多功能数字钟总体框图举例
7 段 数 码 管 扫 描 显 示
层次化设计举例(续) -100进制计数器
由10进制计数器构成100进制计数器
//**************** counter10.v ( BCD: 0~9 ) ************** module counter10(Q, nCR, EN, CP); input CP, nCR, EN; output [3:0] Q; reg [3:0] Q; always @(posedge CP or negedge nCR) begin if(~nCR) Q <= 4'b0000; // nCR=0,计数器被异步清零 else if(~EN) Q <= Q; //EN=0,暂停计数 else if(Q == 4'b1001) Q <= 4'b0000; else Q <= Q + 1'b1; //计数器增1计数 end endmodule
7 段 数 码 管 扫 描 显 示
always @ (count[11:10]) begin case(count[11:10]) 2'b00: scan<=4'b0111; 2'b01: scan<=4'b1011; 2'b10: scan<=4'b1101; 2'b11: scan<=4'b1110; endcase end always @ (count[11:10]) begin case(count[11:10]) 2'b00: temp<=h1; 2'b01: temp<=h0; 2'b10: temp<=m1; 2'b11: temp<=m0; endcase end
本科毕业设计论文--eda课程设计报告多功能数字钟设计
湖北大学物电学院EDA课程设计报告(论文)题目:多功能数字钟设计专业班级: 14微电子科学与工程*名:**时间:2016年12月20日指导教师:万美琳卢仕完成日期:2015年12月20日多功能数字钟设计任务书1.设计目的与要求了解多功能数字钟的工作原理,加深利用EDA技术实现数字系统的理解2.设计内容1,能正常走时,时分秒各占2个数码管,时分秒之间用小时个位和分钟个位所在数码管的小数点隔开;2,能用按键调时调分;3,能整点报时,到达整点时,蜂鸣器响一秒;4,拓展功能:秒表,闹钟,闹钟可调3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。
4.答辩在规定时间内,完成叙述并回答问题。
目录(四号仿宋_GB2312加粗居中)(空一行)1 引言 (1)2 总体设计方案 (1)2.1 设计思路 (1)2.2总体设计框图 (2)3设计原理分析 (3)3.1分频器 (4)3.2计时器和时间调节 (4)3.3秒表模块 (5)3.4状态机模块 (6)3.5数码管显示模块 (7)3.6顶层模块 (8)3.7管脚绑定和顶层原理图 (9)4 总结与体会 (11)多功能电子表摘要:本EDA课程主要利用QuartusII软件Verilog语言的基本运用设计一个多功能数字钟,进行试验设计和软件仿真调试,分别实现时分秒计时,闹钟闹铃,时分手动较时,时分秒清零,时间保持和整点报时等多种基本功能关键词:Verilog语言,多功能数字钟,数码管显示;1 引言QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL 以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程,解决了传统硬件电路连线麻烦,出错率高且不易修改,很难控制成本的缺点。
利用软件电路设计连线方便,修改容易;电路结构清楚,功能一目了然2 总体设计方案2.1 设计思路根据系统设计的要求,系统设计采用自顶层向下的设计方法,由时钟分频部分,计时部分,按键调时部分,数码管显示部分,蜂鸣器四部分组成。
用EDA技术设计多功能数字钟
用EDA技术设计多功能数字钟摘要近年来,随着电子技术和通信技术的飞速发展,要求设计研究方面运用电子设计自动化(Electronic Design Automation,简称EDA)工具进行开发。
在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可靠性,减轻了设计者的劳动强度。
本设计为通过EDA仿真软件MAX+PLUSII设计一个多功能数字钟,并下载到硬件中实现。
本系统的设计电路由计时电路、动态显示电路、闹钟电路、控制电路、显示电路等部分组成。
本系统采用动态显示的原理在数码管上显示12小时计时的时刻,具有清零、保持、校时、报时的功能,并在此基础上增加了闹铃、秒表、12小时制计时、A/P显示等功能。
在设计过程中,将各部分均模块化,各模块间相互独立,又相互联系。
本实验吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。
本系统不仅成功的实现了要求的基本功能,发挥部分也得到完全的实现,而且有一定的创新功能。
关键词数字钟、计数器、多功能、动态显示、原理图、仿真、模块化AbstractRecently, with the rapid development of electronic and communication technology, it is required to use Electronic Design Automation (EDA) as a tool in designing systems. EDA derives from the concepts of Computer Aided Design, Computer Aided Manufacture, Computer Aided Test and Computer Aided Engineering in the 1990s. Designers use Hardware Describe Language to accomplish designing files on the platform of software. Then, computer will finish the work of logical compiling, simplification, division, synthesis, optimizing, layout, tracking and simulating automatically, and it can also accomplish the work of proper compiling, logical projecting and downloading of the target chip. As a result, it evidently improves the efficiency and reliability of the circuit design, and it also lighten designer’s workload.This experiment has designed a multifunctional digital clock via using the MAX+PLUSII, and the basic and extended performances and functions are successfully realized in the hardware. This system includes time circuit, alarm circuit, dynamic display circuit, control circuit, display circuit. In the system, the segment display can display time in the 24-hour format, it includes such functions as clear, hold, check the time and so on. We can also add alarm, stopwatch, 12-hour format display and other functions on that basic. In the designing process, many parts are modularized, they are not only independent but also related. Many functions are finished by the software. So it simples the circuit and enhances the stability of the system. Not only all the basic and extended performances and functions are successfully realized, but also accomplish some innovation functions.KeywordsDigital clock, arithmometer, multifunctional, dynamic display,schematic diagram, simulate, modularization目录摘要 1ABSTRACT 11、前言62、EDA技术的介绍及发展 73、总体方案设计 93.1 设计内容 93.2 方案比较 (9)3.3 方案论证 (10)3.4 方案选择 104、多功能数字中的设计 124.1 课题要求 124.2 课题分析 12 4.3 功能实现 134.3.1 秒计时模块 144.3.2 分计时模块 164.3.3 小时计时模块 17 4.3.4 校时校分模块 194.3.5 整点报时模块 194.3.6 时段控制模块 204.3.7 连接各模块 214.4 下载过程 234.5 总结报告 265、设计总结 285.1 设计小结 28 5.2 设计收获 285.3 设计改进 286、致谢 287、参考文献 301、前言本课题研究的背景和目的:二十一世纪是信息化高速发展的世纪,产业的信息化离不开硬件芯片的支持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA设计(二)——多功能数字钟设计姓名:周婷婷学号:0904220116院系:电光学院指导老师:花汉兵蒋立平完成时间:2011年12月15号多功能数字钟设计摘要该实验时利用QuartusII软件设计一个数字钟,进行实验设计和仿真调试,实现了计时,校时,校分,清零,保持和整点报时等多种基本功能,并下载到SmartSOPC实验系统中进行调试和验证。
此外还添加了星期功能,使得设计的数字钟功能更加完善。
Abstract:This experiment is to design a digital clock which is based on Quartus software and in which many basic functions like time-counting , hour-correcting , minute-correcting , reset , timing-holding and belling on the hour. And then validated the design on the experimental board . In addition, additional functions like reseting the week make this digital clock a perfect one.目录1.设计要求 (4)2.工作原理 (4)3.各模块说明 (5)1)分频模块 (5)2)计时模块 (9)3)显示模块 (11)4)校分与校时模块 (11)5)清零模块 (12)6)保持模块 (13)7)报时模块 (13)4.扩展模块 (13)1)星期模块 (13)5.调试、编程下载 (14)6.实验中出现问题及解决办法 (14)7.实验收获与感受 (14)8.参考文献 (15)一、设计要求1.设计一个数字计时器,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等基本功能。
2.具体要求如下:1)能进行正常的时、分、秒计时功能,最大计时显示23小时59分59秒。
2)分别由六个数码管显示时分秒的计时。
3)K1是系统的使能开关,K1=0正常工作,K1=1时钟保持不变。
4)K2是系统的清零开关,K2=0正常工作,K2=1时钟的分、秒全清零。
5)在数字钟正常工作时可以对数字钟进行快速校时和校分。
K3是系统的校分开关,K3=0正常工作K3=1时可以快速校分;K4是系统的校时开关,K4=0正常工作,K4=1时可以快速校时。
3.设计提高部分要求1)时钟具有整点报时功能,当时钟计到59’51”时开始报时,在59’51”,59’53”, 59’55”,59’57”时报时频率为512Hz,59’59”时报时频率为1KHz。
2)星期显示:星期显示功能是在数字钟界面显示星期,到计时到24小时时,星期上显示的数据进一位。
3)闹表设定功能。
4.仿真与验证用Quartus软件对设计电路进行功能仿真,并下载到实验板上对其功能进行验证。
二、工作原理数字计时器是由计时电路、译码显示电路、脉冲发生电路和控制电路等几部分组成的,控制电路按要求可由校分校时电路、清零电路和保持电路组成。
其中,脉冲发生电路将试验箱提供的48Mhz的频率分成电路所需要的频率;计时电路与动态显示电路相连,将时间与星期显示在七段数码管上,并且驱动蜂鸣器整点报时;校时校分电路对时、分、星期提供快速校时;清零电路作用时,系统的分秒时同时归零;保持电路作用时,系统停止计时并保持时间不变。
其原理框图如图所示:三、各模块说明1、分频模块实验板上振荡源为48MHz,为获得秒脉冲信号和报时电路中需要的音频,需要对该振荡源进行分频处理。
处理的过程示意如下:(1)2分频电路2分频电路是通过将D触发器的Q端与D端接在一起就可以从Q端得到触发器信号的2分频信号,电路图如下:波形图如下:(2)3分频电路Q Q Q Q按照如下方式3分频电路是通过74160用置数法实现。
其输出端D C B AQ直接引出。
循环计数时就可以对其输入的脉冲进行3分频,输出信号由B ArrayQ作为置数信号的输入。
3分频电路图74160置数端为低电平有效,所以将B如下:波形图如下:封装的子模块图为:(3)8分频将3个2分频串联实现8分频电路。
8分频电路图如下:波形图如下:将3分频和8分频电路串联可以构成24分频电路图,电路图如下:波形图如下:(4)1000分频电路1000分频电路通过3模10计数器串联而成。
模10计数器是由计数器74161来QD QCQBQA=1111时置数,使计数器按如下方式进行循环:为了获得占空比接近1:1的输出信号,将QC作为输出,占空比为6:4。
电路图如下所示:将3个10分频进行串联获得1000分频的分频器,电路图如下:最终将各种分频所获得的信号输出按照分频电路设计图连接,并封装在一个总的模块内,即得到分频模块,输入信号为48MHZ,输出信号为1KHZ,500HZ,2HZ,1HZ。
封装电路图如下:2、计时模块计时模块包括秒、分、时,星期四个模块,依次进位。
其中秒和分的模块都是一个模60计数器,时模块是一个模24技术区,星期采用的是模7计数器。
计时采用的是同步计数器,它们所用的时钟信号均为1HZ。
(2)秒计时模块当秒计时至59秒的时候由四与非门输出一个低电平将秒个位及秒十位置零,同时将此低电平作为进位信号传递给分个位。
波形图如下:(3)分计时模块其结构与秒计时模块大致一致,不同的是分清零的条件不仅是分计时到59而且秒也要计时到59,所以清零信号的输入还要添加秒计时模块的输出。
波形图如下,与秒计时相似:(4)时计时模块时计时模块与秒、分计时模块累死,要使进位信号设计在23时置零进位,必须得等到秒与分信号都计时到59时才能进位清零,所以清零信号的输入还要添加秒和分计时模块的输出。
其波形图如下:3、显示模块此模块是用于数码管的动态显示,在本实验中一共需要6个数码管参与显示(秒2位,分2位,时2位),所以计数器74161设计为模6的循环,其输出既作为4片74151的控制端,又作为3-8译码器74138的控制端。
因为只有一片BCD译码器7447,所以当计数器到某一个数值时,四片74151同时选取对应位的一个输入组成计时器某一位的BCD编码接入显示译码器7447,与此同时根据计数器的数值,74138译码器也从六个显示管的使能端选择对应位有效,从而在实验箱上显现一个有效数据。
扫描的频率为几千赫兹,因为人眼视觉停留的原因,会感觉七个数码管同时显示。
原理图如下:(1)校分模块当K3为0时,校分模块输出1hz的脉冲供给分计时模块正常计数;当K3为1时,校分模块输出2hz的脉冲供给分计时模块校分。
其中为了防止拨开关时引发的颤动给校分带来影响,在校分模块中加入了消颤的D触发器。
由于校分的时候无论秒计时模块是否计到59,都能进行校分,故秒计时模块的输出要与开关K3相或才能供给校分模块的使能端。
(2)校时模块当K4为0时,校时模块输出1hz的脉冲供给时计时模块正常计数;当K4为1时,校时模块输出2hz的脉冲供给时计时模块校分。
其中为了防止拨开关时引发的颤动给校时带来影响,在校时模块中加入了消颤的D触发器。
由于校时的时候无论秒和分计时模块是否都计到59,都能进行校时,故秒计时模块的输出要与开关K4相或才能供给校分模块的使能端。
5、清零模块通过增加一个开关K2来控制计时电路,开关通过非门直接接在每个74160的清零端,当开关断开的时候,计时器正常工作,当开关闭合时,计时器清零。
K2=0 CLR=1 ,K2=1 CLR=06、保持模块通过开关K1控制秒的使能信号,当秒停止计时时,计时器就“保持”了。
K1=0,ENT=1; K1=1,ENT=07、报时模块当电路计时到59分51,53,55,57秒时,分别发出一声较低的蜂鸣声;当计时到59分59秒时,发出一声较高的蜂鸣声。
需要在某时刻报时,就将该时刻输出为“1”的信号作为触发信号,选通报时脉冲信号进行报时。
设F是报时函数,F1是低音报时函数,F2是高音报时函数。
所有函数为高电平时报时。
则有:F=59’53’’F1+59’55’’F1+59’57’’F1+59’59’’F2=59’51’’(2’’F1+4’’F1+6’’F1+8’’F2)=59’51’’·(2’’F1·4’’F1·8’’F2)原理图如下:四、扩展模块1、星期模块星期计时关键是实现一个模七的计时循环,这里利用同步十进制计数器74160来实现。
星期的跳变需要秒分计到59并且时计到23,即时的进位输出。
原理图如下:五、调试、编程下载选择“Processing-start complication”进行全编译,编译通过后要进行管脚分配,选择“Assignments Pins”,在打开的对话框中的“Location”栏中选择相应的管脚填入,并将未用到的管脚置为三态,最后将程序下载到SmartSOPC实验系统中运行,检验结果是否正确。
六、实验中出现的问题以及解决方法1、一开始在设计分计时和时计时时没有考虑到后位与前位的进位关系,导致在59分的时候便开始向时计时进位,不正确。
后来在分向时进位的时候加入秒进位信息来解决这个问题。
2、在调试的时候发现拨动开关时数字显示跳动不正常,这是由于开关拨动是产生抖动造成的,所以给开关加上运用D锁存器的锁存功能进行消颤处理,即可正常显示。
3、在一开始调试校分电路时,发现分和时并不在59后归零,而是一直不停的计数下去。
经讨论,是因为原先分清零的要求是分和秒的计数值都为59,而在校分的时候,不需要秒位也是59,因此对分的清零信号进行修改,要加入K3的作用,同理,时的清零信号要加入K4的作用。
七、实验收获和感受这次实验强化了我们上学期所学的数字逻辑电路的实质,另一方面也让我们学习和掌握了软件QuartusⅡ和试验箱的用法。
和电工电子实习所要得到的结果大致相同,但是所用的方法却不一样。
电工电子实验所用的multisim软件中的器件是齐全的,所以只需要我们找出所需的元件,然后连线就可以了。
可是这次的实验所用的quartus软件却需要我们根据自己的需要自行合成所需功能的元件,更具有可创性,也更具有挑战性。
同时本次实验可以利用软件仿真,观察波形,进行调试,比较安全。
刚开始的时候对这个实验不是很熟悉,并且刚接触这个软件,比较生疏,有点停滞不前。
不过在熟悉了这个软件之后,便开始尝试按照老师课上讲的分部完成。
首先分频,必须具有全局观念,要把整个试验中所需的频率都做出来,合成为一个新的器件,供后面使用。
然后便是计时模块,设计的时候刚开始先是做出了2个模60和一个模24的计数器,并没有考虑到它们之间的关系,所以造成一开始的调试失误。