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技术设计多功能数字钟
用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、前言本课题研究的背景和目的:二十一世纪是信息化高速发展的世纪,产业的信息化离不开硬件芯片的支持。
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中,观察设计结果是否和自己的编程思想一致。
eda2设计报告_多功能数字钟设计说明
EDA(Ⅱ)实验报告——多功能数字钟设计摘要本实验利用ALTERA公司的QUARTUSⅡ开发平台,对Cyclone系列的EP1C12Q240C8芯片进行开发,以实现数字钟。
具体功能有:计时,校时校分,清零,闹铃,整点报时等。
AbstractIn 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 设计多功能数字钟KeywordsFPGA 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、设计的收获与感受七、参考文献设计报告一、设计要求说明设计基本要求: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时可以快速校时);设计提高部分要求1、使时钟具有整点报时功能(当时钟计到59’53”时开始报时,在59’53”, 59’55”,59’57”时报时频率500Hz,59’59”时报时频率为1KHz, );2、闹表设计功能;二、方案论证本次实验是通过脉冲发生电路产生1Hz的频率作为计时电路的脉冲,计时电路是由两个模60的电路分别作为秒和分,一个模24的电路作为时,计时电路通过译码显示电路在七段数码管上显示;校分校时电路则是通过一个或门分别与秒的进位信号和分的进位信号相或,用或门的输出端控制分和时的计数器使能端使其计数;清零电路则是通过控制秒、分、时的计数器的清零端,使其一并清零;报时电路是根据所要求的时间由计时电路产生反馈信号再跟要求的报时频率相与后输出端跟蜂鸣器相连即可产生相应频率的报时信号。
eda课程设计——多功能数字钟
课程设计说明书课程名称EDA课程设计题目多功能数字钟课程设计任务书设计题目多功能数字钟设计一、课程设计目的1、综合运用EDA技术,独立完成一个课题的设计,考察运用所学知识,解决实际问题的能力;2、结合理论知识,考察阅读参考资料、文献、手册的能力;3、进一步熟悉EDA技术的开发流程,掌握文件编辑、编译、仿真、下载验证等环节的实现方法和应用技巧;4、锻炼撰写研究报告、研究论文的能力;5、通过本实践环节,培养科学和严谨的工作作风。
二、设计内容、技术条件和要求l、能进行正常的时、分、秒计时功能,分别由6个数码显示24小时、60分钟的计数器显示。
2、能利用实验系统上的按钮实现“校时”、“校分”功能;(1)按下“SA”键时,计时器迅速递增,并按24小时循环;(2)按下“SB”键时,计时器迅速递增,并按59分钟循环,并向“时”进位;(3)按下“SC”键时,秒清零;抖动的,必须对其消抖处理。
3、能利用扬声器做整点报时:(1)当计时到达59’50”时开始报时,频率可为500Hz;计满23小时后回零;计满59分钟后回零。
(2)到达59’59”时为最后一声整点报时,整点报时的频率可定为lKHz。
4定时闹钟功能5、用层次化设计方法设计该电路,用硬件描述语言编写各个功能模块。
6、报时功能。
报时功能用功能仿真的仿真验证,可通过观察有关波形确认电路设计是否正确。
三、时间进度安排1周:(1) 完成设计准备,确定实施方案;(2) 完成电路文件的输入和编译;(4) 完成功能仿真。
2周:(1) 完成文件至器件的下载,并进行硬件验证;(2) 撰写设计说明书。
四、主要参考文献(1)谭会生、瞿遂春,《EDA技术综合应用实例与分析》,西安电子科技大学出版社,2004(2)曹昕燕、周凤臣等,《EDA技术实验与课程设计》,清华大学出版社,2006指导教师签字:2010年9月5日引言:人类社会已进入到高度发达的信息化社会。
信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。
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课程设计——多功能数字钟课程设计报告剖析
多功能数字电子钟一、设计要求1、具有以二十四小时计时、显示、整点报时、时间设置和闹钟的功能。
2、设计精度要求为1S。
二.系统功能描述1 . 系统输入:系统状态及校时、定时转换的控制信号为k、mode、set;时钟信号clk,采用1024Hz;系统复位信号为reset。
输入信号均由按键产生。
系统输出:LED显示输出,蜂鸣器声音信号输出。
多功能数字钟系统功能的具体描述如下:2. 计时:正常工作状态下,每日按24h计时制计时并显示,蜂鸣器无声,逢整点报时。
3. 校时:在计时状态显示下,按下“set键”,进入“小时”校准状态,之后按下“k键”则进入“分”校准状态,继续按下“k键”则进入“秒复零”状态,第三次按下“k 键”又恢复到正常计时显示状态。
1)“小时”校准状态:在“小时”校准状态下,显示“小时”数码管以1Hz的频率递增计数。
2)“分”校准状态:在“分”校准状态下,显示“分”的数码管以1Hz的频率递增计数。
3)“秒”复零状态:在“秒复零”状态下,显示“秒”的数码管复零。
4. 整点报时:蜂鸣器在“59”分钟的第“51”、“53”、“55”、“57‘秒发频率为512Hz的低音,在“59”分钟的第“59”秒发频率为1024Hz的高音,结束时为整点。
5. 显示:要求采用扫描显示方式驱动6个LED数码管显示小时、分、秒。
闹钟:闹钟定时时间到,蜂鸣器发出周期为1s的“滴”、“滴”声,持续时间为10s;闹钟定时显示。
6. 闹钟定时设置:在闹钟定时显示状态下,按下“set键”,进入闹钟的“时”设置状态,之后按下“k键”进入闹钟的“分”设置状态,继续按下“k 键”则进入“秒”设置状态,第三次按下“k键”又恢复到闹钟定时显示状态。
1)闹钟“小时”设置状态:在闹钟“小时”设置状态下,显示“小时”的数码管以1Hz的频率递增计数。
2)闹钟:“分”设置状态:在闹钟“分”设置状态下,显示“分”的数码管以1Hz的频率递增计数。
三、控制器的MDS图及多功能数字系统结构逻辑框图1、控制器的MDS图S0:显示计时时间s1:调计时的时s2:调计时的分s3:调计时的秒S4:显示闹铃时间s5:调闹铃的时s6:调闹铃的分s7:调闹铃的秒2、多功能数字系统结构逻辑框图四、各功能模块设计说明及源程序1、控制器:设计说明:根据外部的输入控制信号,完成各个状态之间的转换,并在相应状态输出相应的控制信号,从而对整个系统的工作进行控制。
基于eda的多功能数字钟设计
目录一.设计说明 (1)I.功能说明 (1)II.功能简介 (1)二.总体方案分析 (3)三.各子模块设计原理 (3)I.脉冲分频模块 (3)II.时钟计时模块(包含校定和清零功能) (4)III.显示控制电路 (7)IV.显示模块和计时模块结合 (11)V.整点报时模块 (11)VI.闹钟模块 (13)四.调试与仿真 (17)I.脉冲发生模块 (17)II.计时电路 (18)III.仿真 (18)五.收获与体会 (19)六.附录 (20)一.设计说明I.功能说明:设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进行手动调节以校时间,每逢整点,产生报时音报时。
系统框图如图1-1所示:图1-1 多功能数字钟系统框图II.功能简介此设计问题可分为主控电路、计数器模块和扫描显示三大部,主控电路中各种特殊功能的实现设计问题的关键。
用两个电平信号A、B进行模式选择,AB=00为模式0,系统为计时状态;AB=01为模式1,系统为手动校时状态;AB=10为模式2,系统为闹钟设置状态。
设置一个cd信号,当cd=00时,表示在手动校对时,选择调整时部分;当cd=01时,表示在手动校对时,选择调整分钟部分;。
当cd=10时,表示在手动校对时,选择调整秒部分设置一个change信号,在手动校时或闹钟设置模式下,每按一次,计数器加1。
设置一个reset信号,当reset=0时,整个系统复位;当reset=1时,系统进行计时或其他特殊功能操作。
设置一个闹钟设置信号reset1,当reset1=1时,对闹钟进行设置,当reset1=0时,关闭闹钟信号。
设置一个E信号,当E=0时,表示在手动校对时,选择调整时部分;当E=1时,表示在手动校对时,选择调整分钟部分设置状态显示信号(连发光二极管):LD_alert指示是否设置了闹铃功能;LD_h指示当前调整的是小时信号;LD_m指示当前调整的是分钟信号。
本科毕业设计论文--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设计(二)课程设计报告理工大学2013 年09 月目录摘要及关键字 (3)一.设计要求 (3)二.总体方案设计 (3)三.各子模块设计原理 (4)1.分频部分 (4)2.输入部分 (5)1.防抖模块 (5)2.输入模块 (6)3.计时部分 (6)1.模60的计数器 (6)2.模24的计数器 (7)3.校准模块 (7)4.计时模块 (8)4.显示部分 (9)1.显示模块 (9)(1)6选1数据选择器 (10)(2)4-7译码器 (10)5.闹钟部分 (10)1.比较模块 (11)2.选择器 (11)6.报时部分 (13)四. 硬件下载与测试 (15)1.硬件下载 (15)2.测试 (15)3.功能扩展 (16)五.结论 (16)参考文献 (16)数字电子钟的设计摘要及关键字:数字电子钟是生活中最常用的电子设备之一,其主要功能是能够显示时、分、秒实时信息,并能够方便地进行时、分、秒的初始值设置,以便时间校准。
实现数字电子钟有很多方法,本课程是采用VHDL硬件语言的强大描述能力和EDA工具的结合在电子设计领域来设计一个具有多功能的数字电子钟。
关键字:数字电子钟VHDL硬件语言EDA工具一.设计要求:1.设计一个电子钟能够显示时,分,秒;24小时循环显示。
2.电子钟有校时,校分,清零,保持,整点报时和闹钟的功能,具体如下:(1)数字钟最大计时显示23点59分59秒。
(2)在数字钟正常工作时可以对数字钟进行快速校时,校分,即拨动开关K7可以对时进行校正,拨动开关K6可以对分进行校正。
(3)在数字中正常工作情况下可以对其进行不断地复位,即拨动开关K5可以是时,分,秒显示回零。
(4)在数字钟正常工作时拨动开关K4可以使数字钟保持原有显示,停止计时。
(5)整点报时是要求数字钟在每小时整点到来前进行鸣叫,鸣叫频率是在59:53, 59:55, 59:57 为1kHz,59:59为2kHz。
(6)当开关K8等于0就可以看到正常计数时钟界面,有小时:分钟:秒钟。
多功能数字钟(EDA设计)实验报告
多功能数字钟一、实验原理分析通过晶振产生的50MHz的脉冲,用分频器进行分频产生1Hz 的脉冲信号,即作为时钟的1s的信号进行计数。
秒钟每计数60秒后产生进位使分钟显示加1,分钟满60循环至0。
为实现手动校准时刻功能,能够对分和秒计数器进行加减。
为实现校准时刻时候的闪烁,对数码管利用消隐,把数码管的接地端口接一个脉冲信号。
在实验进程中,要注意很多细节,比如进行按键消抖,手动调整时刻时可不能进位。
二、逻辑分析三、功能模块分析功能模块包括分频模块,时刻计数及校准模块,数码管译码显示模块、裁决模块和消抖模块1.分频模块该电路由多个70LS90通过度频将由晶振产生的50MHz分频为1Hz方波,供后续时钟电路利用。
这一模块是整个电路的基础。
2.时刻计数及校准模块该模块连接至分频模块的信号输出端,以分频模块产生的1Hz 方波作为基础。
1Hz方波与秒同步,以秒为基础,别离实现电子钟中,分与时的运转,即1分钟=60秒,1小时=60分钟的循环运转。
为了修正电子钟在运行进程中产生的一些误差或其他以为错误,另设置校准功能,能够对电子钟的计时进行调整。
其中,此模块的逻辑部份需Verilog语言实现并进行封装。
此模块用到3个十进制计数器、2个六进制计数器和1个三进制计数器。
3.数码管译码显示模块本电子钟采纳数码管来显示,能够简单、直观地表现出确切的时刻,实现其他配套功能。
且数码管易于操作。
此模块中有四个数码管,每两个数码管别离显示小时与分钟。
由上一模块,即时刻计数及校准模块中的时刻计数器产生的数值,将其对应的七段码直接传送至相应的数码管译码显示。
4.裁决模块该电路裁决信号连接至开关,当开关选中数码管某位后,通过裁决器令改成停止计数,并开始1秒闪烁,按动按键可实现手动调整。
5.消抖模块通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时可不能马上稳固地接通,在断开时也可不能一下子断开。
数字系统设计—基于EDA技术的多功能数字钟
题目:数字系统设计基于EDA技术的多功能数字钟数字系统设计—基于EDA技术的多功能数字钟目录第 1 章EDA技术与数字系统设计 (2)1.1 引言 (2)1.2 EDA技术及其发展 (2)1.2.1 EDA简介 (2)1.2.2 EDA的设计流程 (3)1.2.3 EDA技术的应用 (3)1.2.4 EDA技术的发展前景 (4)1.3 常用的EDA开发工具 (5)1.3.1 集成的CPLD/FPGA开发工具 (6)1.3.2 HDL逻辑综合软件 (7)1.3.3 HDL仿真软件 (8)第 2 章多功能数字中的设计 (13)2.1 课题要求 (13)2.2 课题分析 (13)2.3 功能实现 (14)2.3.1 秒计时模块 (15)2.3.2 分计时模块 (17)2.3.3 小时计时模块 (18)2.3.4 校时校分模块 (20)2.3.5 整点报时模块 (21)2.3.6 时段控制模块 (22)2.3.7 连接各模块 (22)2.4 下载模块 (24)2.5 总结报告 (27)参考文献 (28)第一章EDA技术与数字系统设计1.1引言计算机技术和微电子工艺的发展,使得现代数字系统的设计和应用进入了新的阶段。
EDA技术在数字系统设计中的作用越来越重要,FPGA器件的更新换代也非常快,新的工具和新的设计方法不断推出,可编程逻辑器件不断增加新的模块,功能越来越强,硬件设计语言也顺应形势,推出新的标准,更加好用,更加便捷。
从应用领域来看,EDA技术已经渗透到各行各业,如上文所说,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA有应用。
另外,EDA软件的功能日益强大,原来功能比较单一的软件,现在增加了很多新用途。
如AutoCAD软件可用于机械及建筑设计,也扩展到建筑装璜及各类效果图,汽车和飞机的模型、电影特技等领域。
1.2 EDA技术及其发展EDA是电子设计自动化(Electronic Design Automation)的缩写。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA设计(二)课程设计报告理工大学2013 年09 月目录摘要及关键字 (3)一.设计要求 (3)二.总体方案设计 (3)三.各子模块设计原理 (4)1.分频部分 (4)2.输入部分 (5)1.防抖模块 (5)2.输入模块 (6)3.计时部分 (6)1.模60的计数器 (6)2.模24的计数器 (7)3.校准模块 (7)4.计时模块 (8)4.显示部分 (9)1.显示模块 (9)(1)6选1数据选择器 (10)(2)4-7译码器 (10)5.闹钟部分 (10)1.比较模块 (11)2.选择器 (11)6.报时部分 (13)四. 硬件下载与测试 (15)1.硬件下载 (15)2.测试 (15)3.功能扩展 (16)五.结论 (16)参考文献 (16)数字电子钟的设计摘要及关键字:数字电子钟是生活中最常用的电子设备之一,其主要功能是能够显示时、分、秒实时信息,并能够方便地进行时、分、秒的初始值设置,以便时间校准。
实现数字电子钟有很多方法,本课程是采用VHDL硬件语言的强大描述能力和EDA工具的结合在电子设计领域来设计一个具有多功能的数字电子钟。
关键字:数字电子钟VHDL硬件语言EDA工具一.设计要求:1.设计一个电子钟能够显示时,分,秒;24小时循环显示。
2.电子钟有校时,校分,清零,保持,整点报时和闹钟的功能,具体如下:(1)数字钟最大计时显示23点59分59秒。
(2)在数字钟正常工作时可以对数字钟进行快速校时,校分,即拨动开关K7可以对时进行校正,拨动开关K6可以对分进行校正。
(3)在数字中正常工作情况下可以对其进行不断地复位,即拨动开关K5可以是时,分,秒显示回零。
(4)在数字钟正常工作时拨动开关K4可以使数字钟保持原有显示,停止计时。
(5)整点报时是要求数字钟在每小时整点到来前进行鸣叫,鸣叫频率是在59:53, 59:55, 59:57 为1kHz,59:59为2kHz。
(6)当开关K8等于0就可以看到正常计数时钟界面,有小时:分钟:秒钟。
当k8等于1 是在输入定时闹钟界面,有小时:分钟(7)K1,k2:设定闹钟;(8)K3 :开闹钟,关或停止闹钟3.要求所有开关具有去抖动功能。
利用开发工具MAX+plus II 10.0并结合硬件描述语言VHDL,采用层次化的方法进行设计,要求设计层次清晰,合理;构成整个设计的功能可以采用原理图输入或文本输入法实现。
4.通过开发工具MAX+plus II 10.0对设计电路进行功能仿真。
5.将仿真通过的逻辑电路下载到EDA试验系统,对其功能进行验证。
二.总体方案设计:从设计要求可以对其进行层次化设计,将所要设计的多功能数字钟分层6个模块:(1)计时模块: 包括两个模60的计数器(计秒与计分)和一个模24的计数器(计时)。
(2)清零,保持模块:此模块功能是可以在计时模块直接嵌入即利用计数器的清零、保持功能就可以实现。
(3)校准模块: 其对时、分进行校正。
(4)显示模块: 将数字钟在数码管上显示。
(5)整点报时模块: 由两部分组成,一部分选择报时时间(59:53, 59:55, 59:57,59:59),一部分选择报时频率(1kHz,2kHz)。
(6)分频模块: 电子钟的激励源要求的是稳定1Hz,而试验台提供两个信号的时钟,所以要设计一个分频器将固有的时钟变成所需要的。
(7)防抖动模块:因为设计中有使用到开关,而对机械开关而言出现抖动现象会导致系统误差甚至不能正常工作。
所以在设计中要求有去抖动电路。
将数字钟的各功能模块级联,生成顶层电路,实现总体设计要求,设计框图如下图所示:三. 各子模块设计原理:1. 分频部分:因为设计中要有很多不同的频率:1Hz 的提供给计时模块;2Hz 供给校准用;1kHz 、2kHz 供给蜂鸣器报时用;试验台可以选不同的频率,我选了1hz 和16khz 所以要对其进行分频其将16kHz 分成2Hz 、1kHz 、2kHz 。
用VHDL 就可以很方便的实现分频:仿真波形如下: clk=16Khz计时 模块显示 模块报时,闹钟 模块清零 保持校时 校分分频 模块2.输入部分:1.防抖模块:因为机械开关的抖动现象对系统产生误差,甚至使不能正常工作,所以要适当地在开关和电路之间加入一个去抖动模块以防止机械开关所引起的不良影响。
采用锁存器就可以很方便地设计去抖动电路,如图下所示。
因为设计中一共有4开关所以采用两片7474,每片包括两个D锁存器,7474输出端的QN是开关信号稳定状态。
2.输入模块:3.计时部分:是一个模60和模24的计数器,具有计时、校准,保持、清零的功能。
采用VHDL 硬件语言编写,程序代码如下:1. 模60的计数器其仿真波形图如下:封装图为:2.模24的计数器,VHDL的程序代码如下:仿真波形图如下:封装图为:3.校准模块:在正常情况下,分的输入时钟clk信号是由秒的进位输出给的,而时的输入时钟clk信号由分进位输出信号给的。
当要进行校准时可以直接将2Hz的时钟信号(从分频器直接分出来)送到分或时的输入时钟clk端上,这样就可以快速的进行对电子钟的分或时校准。
因此采用VHDL语言实现,程序代码如下:(1)校时:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY jiaozhun ISPORT (a,b,key: IN BIT;y: OUT BIT);END ENTITY jiaozhun;ARCHITECTURE behav OF jiaozhun ISBEGINPROCESS(a,b,key)BEGINIF key='1' THENy<=a;ELSEy<=b;END IF;END PROCESS;END behav;其封装图为:4.计时模块如下:4.显示部分:包过显示模块和选择显示功能1.显示模块:采用动态显示方法,其动态扫描频率为1MHz。
显示模块包括一个6选1数据选择器(其从计数模块输出的6个输出选1个送出显示)和一个译码器(其对6选1数据选择器的输出信号进行译码送至数码管上显示)。
用VHDL硬件语言实现即程序代码如下:(1)6选1数据选择器:仿真波形:其封装图为:(2)4-7译码器:仿真波形:其封装图为:显示模块:5.闹钟部分:(此模块是我们实验组分工给我的模块,我描述详细一些):用四个比较器,选择器和门电路:1. 比较器:计算两个值:设定闹钟的值和时钟的值,相等时输出1。
VHDL程序:library ieee;use ieee.std_logic_1164.all;--use ieee.std_logic_arith.all;--use ieee.std_logic_unsigned.all;entity compare isport(a: in std_logic_vector ( 3 downto 0 );b: in std_logic_vector ( 3 downto 0 );f: out boolean );end;architecture comp of compare isbeginf<=(a=b); -end comp;封装模块:2.选择器:程序代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY mux2 ISPORT (a,b,k: IN BIT;y: OUT BIT);END ENTITY mux2;ARCHITECTURE behav OF mux2 ISSIGNAL tmp1,tmp2,tmp3: BIT;BEGINtmp1<=b and k;tmp2<=a and (not k);tmp3<=tmp1 or tmp2;y<=tmp3;END behav;封装模块:闹钟仿真电路如下:其中:impulse:给扬声器的2khz 信号mo60rst,mo60en,mo60clk,mo24rst,mo24en,mo24clk:时钟的清零,停止信号和clock信号alarm_set/shut: 闹钟打开或关闭clock_minQH,QL,clock_hourQH,QL: 当前时间mo60QH,QL,mo24QH,QL: 闹钟时间设置经过四个比较器,如果时钟和闹钟设定相等就全输出1给与非门,与非门输出0给二选一选择器,如果Y等于0,选择器输出0给非门,非门输出1给第二个选择器,选择器就选了输出2khz信号给场声器仿真波形:闹钟设置为15点25分:完全正确6.报时部分:由设计要求电子钟在每小时到来前进行报时:59:53, 55:55,59:57 鸣叫频率为1kHz;59:59鸣叫频率为2kHz,从而可以很容易采用VHDL语言编写程序实现:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY beep ISPORT( clk_1k: IN STD_LOGIC;clk_2k: IN STD_LOGIC;q1: IN STD_LOGIC_VECTOR(3 DOWNTO 0);q2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);q3: IN STD_LOGIC_VECTOR(3 DOWNTO 0);q4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);beep: OUT STD_LOGIC);END beep;ARCHITECTURE behav OF beep ISSIGNAL temp: STD_LOGIC;BEGINPROCESS(q1,q2,q3,q4)BEGINIF(q4="0101" AND q3="1001" AND q2="0101")THENIF(q1="0010" OR q1="0100" OR q1="0110")THENtemp<=clk_1k;ELSIF ( q1="1000") THENtemp<=clk_2k;END IF;ELSEtemp<='0';END IF;beep<=temp;END PROCESS;END behav;封装图如下所示:将上面所有各功能模块进行级联,生成顶层电路,实现了总体设计要求。