eda数字钟程序及波形仿真图
LED数码显示时钟(EDA程序设计)
LED 数码显示时钟一、实验目的 :1、地运用数字系统的设计方法进行数字系统设计。
2、能进行较复杂的数字系统设计。
3、数字钟的工作原理, 数字钟的工作流程图与原理方框图, 自顶向下的数字系统设计方法。
二、实验原理:1、数字钟的基本工作原理:数字钟以其显示时间的直观性、走时准确性而受到了人们的欢迎并很快走进了千 家万户。
作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。
数字钟的基本原理方框图如下:(1)时基T 产生电路:由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为 1Hz 的、非常稳定的计数时钟脉冲。
(2)控制逻辑电路:产生调时、调分信号及位选信号。
调时、调分信号的产生:由计数器的计数过程可知,正常计数时,当秒计数器( 60进制)计数到59 时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。
现在我们把电路稍做变动:把秒计数器的进位脉冲和一个频率为2Hz 的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个2Hz 的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按键开关,从而达到调时的目的。
调节小时的时间也一样的实现。
(3)计数显示电路:由计数部分、数据选择器、译码器组成,是时钟的关键部分。
计数部分: 由两个 60进制计数器和一个24 进制计数器组成,其中60 进制计数器可用6 进制计数器和10 进制计数器构成;24 进制的小时计数同样可用6 进制计数器和10 进制计数器得到:当计数器计数到24 时,“2”和“4”同时进行清零,则可实现24 进制计数。
数据选择器:84输入14输出的多路数据选择器,因为本实验用到了8个数码管(有两个用来产生隔离符号‘—')。
用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、前言本课题研究的背景和目的:二十一世纪是信息化高速发展的世纪,产业的信息化离不开硬件芯片的支持。
二十四小时计时器南理工EDAquartus应用
实验一 二十四小时数字计时器、实验内容及题目简介利用QuartusII 软件设计一个数字钟,并下载到SmartSOPC 实验系统中,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校 时、快速校分、整点报时等功能。
、实验设计要求(1)设计基本要求(2)设计提高部分要求1、使时钟具有整点报时功能(当时钟计到59' 53”时开始报时,在59' 53” , 59 '55” ,59 ' 57”时报时频率为512Hz,59' 59”时报时频率为1KHz,); 2、闹表设定功能; 3、自己添加其他功能;三、方案论证数字钟整体框图如下图所示1、能进行正常的时、分、秒计时功能; 2、3、 分别由六个数码管显示时分秒的计时; K1是系统的使能开关(K 仁0正常工作, K1=1时钟保持不变);4、5、 K2是系统的清零开关(K2=0正常工作, K3是系统的校分开关(K3=0正常工作,K2=1时钟的分、秒全清零); K3=1时可以快速校分); 6、 K4是系统的校时开关(K4=0正常工作, K4=1时可以快速校时);本实验的目的是利用QuartusII软件设计一个多功能的数字计时器,使该计时器具有计时,显示,清零,较分,校时及整点报时功能。
依据上述数字钟电路结构方框图可知,秒计时器和分计时器均为60进制,小时计时器是24进制计数器。
当秒计时器对1HZ时钟脉冲信号计数到60时,产生一个进位脉冲,使分计时器的数值加1,同样,分计时器计数到60时,使小时计时器的数值加一。
秒计数模块和分计数模块的核心是模60的计数器,时计数模块的核心为模24的计数器,并且采用同步计数的方法,即三个模块的时钟信号均来自同一个频率信号。
当数字钟走时出现误差时,通过校时电路对时,分的时间进行校正,其中校时电路和清零电路只需在原有电路的基础上采用一定的逻辑门电路实现。
[新版]EDA试验法度模范及仿真波形图
本课程设计的VHDL程序,仿真波形及实验输出波形library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity MGPP isport(input:in std_logic_vector(4 downto 0);clk,f1:in std_logic;f2:in std_logic_vector(1 downto 0);fout :out integer range 255 downto 0);END;architecture one of MGPP issignal q1,q2: integer range 255 downto 0;signal D,d2 : integer range 255 downto 0;signal full:std_logic;signal s1,s2,s3,s4:integer range 255 downto 0;beginprocess (clk)variable r1:std_logic_vector(4 downto 0);beginif clk'event and clk ='1' thenif r1="11111" thenr1:=input;full<=not full;else r1:=r1+1;full<='0';end if;end if;END PROCESS;PROCESS(full)variable r2:integer range 255 downto 0;beginif full'event and full='1' thenif r2<255 thenr2:=r2+1;else r2:=0;end if;end if;if f1='1' thenq1<=r2;else q2<=r2;end if;end process;PROCESS (q1)BEGINCASE q1 ISWHEN 00=> D <=127;WHEN 01=> D <=130;WHEN 02=> D <=133;…….WHEN 255=> D <=117;WHEN OTHERS => NULL;END CASE;END PROCESS;process(f2)begincase f2 iswhen "00"=>s1<=255;s2<=0;s3<=0;s4<=0;when "01"=>s1<=255;s2<=255;s3<=0;s4<=0;when "10"=>s1<=255;s2<=255;s3<=255;s4<=0;when "11"=>s1<=255;s2<=255;s3<=255;s4<=255;when others=>null;end case;end process;process(q2)BEGINcase q2 isWHEN 00=> D2 <=s1;WHEN 01=> D2 <=s1;WHEN 02=> D2 <=s1;….WHEN 48=> D2 <=s1;WHEN 49=> D2 <=s1;WHEN 50=> D2 <=s1;WHEN 51=> D2 <=s2;WHEN 52=> D2 <=s2;WHEN 53=> D2 <=s2;WHEN 54=> D2 <=s2;…..…..WHEN 66=> D2 <=s2;WHEN 67=> D2 <=s2;WHEN 68=> D2 <=s2;WHEN 69=> D2 <=s2;WHEN 102=> D2 <=s2;WHEN 103=> D2 <=s2;WHEN 104=> D2 <=s2;WHEN 105=> D2 <=s3;WHEN 106=> D2 <=s3;WHEN 107=> D2 <=s3;WHEN 108=> D2 <=s3;…..…...WHEN 151=> D2 <=s3;WHEN 152=> D2 <=s3;WHEN 153=> D2 <=s3;WHEN 154=> D2 <=s3;WHEN 155=> D2 <=s4;WHEN 156=> D2 <=s4;WHEN 157=> D2 <=s4;WHEN 158=> D2 <=s4;WHEN 159=> D2 <=s4;…..……WHEN 217=> D2 <=s4;WHEN 218=> D2 <=s4;WHEN 219=> D2 <=s4;WHEN 220=> D2 <=s4;WHEN 221=> D2 <=0;WHEN 222=> D2 <=0;WHEN 223=> D2 <=0;………….WHEN 253=> D2 <=0;WHEN 254=> D2 <=0;WHEN 255=> D2 <=0;WHEN OTHERS => NULL;END CASE;end process;PROCESS(D,D2)BEGINIF f1='1' THENfout<=D;ELSE fout<=D2;END IF;END PROCESS;END;图1.17分频时正弦波形输出图2. 32分频和20分频正弦输出图3. 仿真波形正弦波各分频概况图4. 正弦波2分频的波形输出图5. 方波不同占空比波形图6.频率为2.8KHZ的正弦波形输出图7.频率为4.7KHZ的正弦输出波形图8.占空比为1/5的方波输出波形图9. 占空比为2/5方波输出波形。
EDA 秒表VHDL程序及仿真
EDA 实验报告学院电子工程专业班级学号姓名导师姓名实验一内容:学习QUARTUS II 软件的使用,掌握软件工程的建立、VHDL 源文件的设计和波形仿真等基本内容。
设计含有异步清零和计数使能及控制加减的4 位二进制计数器。
实验过程:新建vhdl文件,输入代码,编译成功后进行波形仿真。
cnt.vhd文件代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY cnt ISPORT(clk,rst,en,updown:IN std_logic;co:OUT std_logic;qout:buffer std_logic_vector(3 downto 0));END ENTITY cnt;ARCHITECTURE arc of cnt ISsignal cnt:std_logic_vector(3 downto 0);BEGINPROCESS(clk,rst)BEGINIF(rst='0') THENcnt<=(others=>'0');IF(en='0') THENcnt<=cnt;END IF;ELSIF(clk'event and clk='1') THENIF(updown='1') THENcnt<=cnt+1;IF(cnt="1111") THENco<='1';else co<='0';END IF;ELSEcnt<=cnt-1;IF(cnt=0) THENco<='1';else co<='0';END IF;END IF;END IF;END PROCESS;qout<=cnt;END arc;波形图如下:实验二内容:1.学习QUARTUS II 中的原理图输入法设计组合电路。
eda数字钟程序及波形仿真图
部件一:60进制程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK60 ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK60;ARCHITECTURE ARTCLOCK60 OF CLOCK60 ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0';----进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN -----异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN------同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9)THENQL<="0000";IF(QH=5)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK60;60进制波形图如下:部件二:24进制程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK24 ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK24;ARCHITECTURE ARTCLOCK24 OF CLOCK24 ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0';----进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN -----异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN------同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9 or (QH=2 AND QL=3))THENQL<="0000";IF(QH=2)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK24;24进制的波形图如下:数字钟的全部程序如下:LIBRARY IEEE; ---秒信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK60s ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK60s;ARCHITECTURE ARTCLOCK60s OF CLOCK60s ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0'; --进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN ---异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN --同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9)THENQL<="0000";IF(QH=5)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK60s;LIBRARY IEEE; ---分信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK60m ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK60m;ARCHITECTURE ARTCLOCK60m OF CLOCK60m ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0'; --进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN --异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN ---同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9)THENQL<="0000";IF(QH=5)THENQH<="0000";ELSEEND IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK60m;LIBRARY IEEE; ---时信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK24 ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; --进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK24;ARCHITECTURE ARTCLOCK24 OF CLOCK24 ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0'; ---进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN ---异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN ---同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9 or (QH=2 AND QL=3))THENQL<="0000";IF(QH=2)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEEND IF;END IF;END IF;END PROCESS;END ARTCLOCK24;LIBRARY IEEE; ---时信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESETS: IN STD_LOGIC; ---复位端LOADS: IN STD_LOGIC; ---置数端NRESETM: IN STD_LOGIC; ---复位端LOADM: IN STD_LOGIC; ---置数端NRESETH: IN STD_LOGIC; ---复位端LOADH: IN STD_LOGIC; ---置数端DS: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端DM: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端DH: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH1: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL1: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QH2: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL2: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QH3: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL3: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END hour;ARCHITECTURE ART OF hour ISCOMPONENT CLOCK60SPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT CLOCK60MPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT CLOCK24PORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; --始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNAL Z1,Z2:STD_LOGIC;BEGINU1: CLOCK60S PORT MAP(CLK,NRESETS,LOADS,DS,CI,Z1,QH1,QL1);U2: CLOCK60M PORT MAP(CLK,NRESETM,LOADM,DM,Z1,Z2,QH2,QL2);U3: CLOCK24 PORT MAP(CLK,NRESETH,LOADH,DH,Z2,CO,QH3,QL3);END ARCHITECTURE ART;电子钟全部引脚显示波形:00:00:59波形显示如下:00:59:59波形图如下,进位后为01:00:00 23:59:59波形图如下:调时间波形如下:用置位端进行调时,调到02:51:15波形如下:经验证,以上设计完全符合题目要求!。
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设计报告-数字钟
一、设计要求1、设计一个能显示1/10秒、秒、分、时的12小时数字钟。
2、熟练掌握各种计数器的使用。
能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。
能用低位的进位输出构成高位的计数脉冲。
3、“时显示”部分应注意12点后显示1点。
4、注意各部分的关系,由低位到高位逐级设计、调试。
5、时钟显示使用数码管显示。
二、系统方案论证与模块划分1、计数器模块计数器模块中,1/10秒采用带进位的10进制功能模块,秒和分采用带进位的60进制功能模块,小时采用不带进位的12进制功能模块。
计数器模块均用Verilog HDL语言编写,实现计数逻辑功能。
(1)十进制计数器设计程序如下:module ssecond(q,rco,clk,reset);input clk,reset;output [3:0] q;output rco;reg rco;reg [3:0] q;always @(posedge clk or negedge reset)beginif(~reset)q<=4'b0000;else if (q==4'b1001) begin q<=4'b0000; rco=1;endelse begin q<=q+1'b1; rco=0;endendendmodule经编译、仿真、下载,满足要求。
然后通过Create Default Symbol,生成符号体如下:(2)六十进制计数器设计程序如下:module second(qh,ql,rco,clk,reset);output[3:0]qh;output[3:0]ql;output rco;reg [3:0]qh;reg [3:0]ql;reg rco;input clk,reset;always @(posedge clk or negedge reset)beginif(~reset){qh,ql}<=0;elsebeginif({qh,ql}==8'h59)begin {qh,ql}<=0;rco<=1;endelsebeginif(ql==9)begin ql<=0; qh<=qh+1;endelsebegin ql<=ql+1;rco<=0;endendendendendmodule经编译、仿真、下载,满足要求。
基于EDA技术的数字秒表的设计.EDA课程设计
--进程开始
begin
if clr='0' then
cqi<=0;
elsif clk'event and clk='1' then --采取时钟信号的上升沿
技术
if ena='1' then
if cqi<99 then
cqi<=cqi+1;
else
cqi<=0;
end if;
end if;
end if;
总体方案设计图如图3.1:
图3.1总体方案设计图
3.2秒表系统各模块直接的连接
从设计的秒表的顶层实体上来看,这个秒表有一个系统时钟输入, 有清零键CLR,暂停键STOP二个使能控制输入,输出则是、都是接到数 码管上的。因此,我们要把系统时钟接到分频器的输入端,将分频器的 输出即100 Hz标准时钟接到即使系统的输入端上。计时系统有一个100
entity cnt100 is
port (clk:in std_logic;
--声明clk是标准逻辑位类型的
输入端口
clr:in std_logic;
--声明clr是标准逻辑位类型的输
入端口
ห้องสมุดไป่ตู้
ena:in std_logic;
--声明ena是标准逻辑位类型的输
入端口
cq:out std_logic_vector(6 downto 0);
口
clr:in std_logic; --声明clr是标准逻辑位类型的输入端
口
ena:in std_logic; --声明ena是标准逻辑位类型的输入端口
cq:out std_logic_vector(6 downto 0);
EDA课程设计数字时钟
泰山学院2011级电子信息科学与技术本科班EDA课程设计·数字时钟姓名:胡乃宽学号:2011080032学院:物电学院班级:2011级电本任课老师:王春玲设计时间:2013-11-21摘要:以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以QⅡ开发软件和EDA试验箱为设计工具,阐述了数字时钟的工作原理和软件实现方法。
并通过对所设计的数字时钟进行了时序仿真,使我们小组成员掌握综合性电路的设计、仿真、下载、调试方法,并能写出简单的EDA实验程序。
作为学习电子的本科生,我们必须不断接受先进的电子知识,这就要求我们努力学好EDA这门课程,并熟练掌握相关软件及硬件的操作。
除此之外,我们在课下还要不断练习,争取掌握一定的EDA编程方法,并且利用现有的条件不断实践。
这样一来,我们可以学好EDA这门课程。
此次课程设计不是我们EDA课程的结束,而是一个继续学习EDA相关课程的开始。
关键词:QⅡ开发软件;数字时钟;EDAAbstract:Field programmable logic device (FPGA) design support , hardware description language (VHDL) as the main expression to Q Ⅱchamber for the development of software and EDA design tools , digital clock describes the working principle and software implementation .As e- learning undergraduate , we must continue to accept advanced electronic knowledge , which requires us to strive to learn EDA this course , proficiency in relevant software and hardware operations. In addition, we also continue to practice in class, fight master certain EDA programming methods , and the use of the existing conditions of continuous practice . In this way , we can learn EDA this course .The course design is not the end of our EDA programs , but a continuing study began EDA related courses .Keywords : Q Ⅱsoftware development ; digital clock ; EDA一课程设计任务及要求1.1实验目的(1)掌握VHDL语言的简单运用(2)掌握VHDL编程设计方法及会简单编程(3)掌握QII的简单操作并会使用EDA实验箱(4)掌握一个基本EDA课程设计的操作(5)掌握综合性电路的设计、仿真、下载、调试方法(6)学会使用试验箱1.2功能设计(1)有时、分、秒计数显示功能,小时为24进制,分钟和秒为60进制以24小时循环计时(2)部分显示功能(3)具有整点报时功能1.3实验仪器(1)PC机1台(2)QII软件1套二设计思想1.1功能设计概述(1)时、分、秒计时器时、分、秒计时器分别有三个程序驱动,其中时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。
简易数字钟的EDA设计
6.2 简易数字钟的EDA设计6.2.1 设计要求本案例将在QuartusII开发系统中用可编程逻辑器件,完成简易数字钟的EDA设计,具体要求为:1数字钟功能:数字钟的时间为24小时一个周期;数字钟须显示时、分、秒;2校时功能:可以分别对时、分、秒进行单独校时,使期调整到标准时间;3扩展功能:整点报时系统。
设计报整点报时电路,每当数字钟计时59分50秒时开始报时,并发出鸣叫声,到达整点时鸣叫结束,鸣叫频率为100Hz。
6.2.2 功能描述数字式电子钟实际上是一个对标准1Hz进行计数的计数电路,秒计数器满60后向分计数器进位, 分计数器满60后向时计数器进位, 时计数器按24翻1规律计数, 计数输出经译码器送LED显示器, 由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加上一个校时电路,该数字式电子钟除用于计时外,还能整点报时,如图6-4所示为多功能数字式电子钟的构成框图。
除校时功能外,电子钟处于其他功能状态时并不影响数字钟的运行,该电子钟利用GW48 实验平台的扬声器进行整点报时,设置2个按键作为功能键和调整键。
图6-4多功能数字式电子钟的系统框图1输入1)K1:模式选择键,第一次按K1按钮时为校秒状态, 按第二次为校分状态, 按第三次为校时状态,按第四次为计时状态,系统初始状态为计时状态。
2)K2:手动校时调整键,当按住该键不放时,表示调整时间直至校准的数值,松开该键则停止调整。
3)clk_1kHz:1000Hz的基准时钟输入,该信号10分频后作为整点报时所需的音频信号的输入时钟,1000分频后作为数字钟输入时钟。
2输出HH[1..0] HL[3..0]为BCD码小时输出显示;MH[2..0] ML[3..0] 为BCD码分输出显示;SH[2..0] SL[3..0]为BCD码秒输出显示;alarm为报时输出。
6.2.3 数字钟的层次化设计方案根据上述功能,可以把多功能数字式电子钟系统划分为三部分:时钟源(即标准秒钟的产生电路),时分秒计数器模块、数字钟模块、校时模块、数字秒表模块、闹钟和整点报模块。
实验10、EDA-数字钟
(1)创建一个新文件
在此步骤中将创建一个名为 count10.gdf 的文件。 步骤如下:
a. 进入 Altera 软件包, 如图所示
b. 选择 FileNew 菜单,或单击 ,弹出 New 对话框。
c. 选中 Graphic Editor file (图形设计文件)单 选按钮。 •d.图在形下编拉辑表输框入中选择 .gdf •作符为号文编件辑的输扩入展名。单击 •ok文按本钮编。辑弹输出入Graphic •E波dit形or编窗辑口输。入
要保存文件,选择 FileSave As 选项,弹出 Save As 对话框。如图所示。
在 文本框中输入 count10.gdf ,并在 Directories 列表框中选择文 件的保存目录。
注意 在 MAX+PLUSⅡ 的有些版本中,保存文件目
录的路径字符串中不能包含中文字符。
(4)检查错误
为了确保输入的逻辑正确,可以保存文件并检查 错误。步骤如下:
Q3 Q2 Q1 Q0 LD
ETP
7
CC40161 ETT 10
CR 1
D3 D2 D1 D0 CP
654 3 2
优点:简单
1 00 1
& 11 12 13 14
+VDD
9
Q3 Q2 Q1 Q0 LD
ETP
7
CC40161 ETT 10
CR 1
D3 D2 D1 D0 CP
654 3 2
CP
缺点:速度较慢 出现竞争冒险的可能性较大!
清零 数据输入 置数
使能
1 1 1 ET=ETT&ETP
计数
CO=Q3Q2Q1Q0
1. 40161的时序波形图
EDA课程设计_数字钟
数字钟一、原理图:二、模块说明:该模块实现分频即将24M时钟源分频为1HZ信号。
该分频器由D触发器和计数器构成,每个D 触发器的输出信号频率为输入信号频率的一半从而实现分频,COUNTER为计数器,配合D触发器进行进一步分频最终达到合适的频率。
对二分频器进行波形仿真为对COUNTER即87计数器仿真为即输入89个时钟脉冲后输出才为一。
对COUNTER1即80计数器仿真为即输入80个时钟脉冲后输出为一。
Second模块实现秒计数为六十进制计数模式,当计数达到59后如再来一个时钟脉冲则进位即分钟加一,秒位清零即为00。
Minute模块实现分计数也为六十进制计数模式,当计数达到59时再来一个脉冲则进位即时钟加一,分位清零即为00。
Hour模块实现时计数为二十四进制计数模式,当计数达到23时再来一个脉冲则复位即为00。
Link模块实现隔离即将分与秒,时与分隔开。
分隔符表现形式为“-”,用了此模块后时钟显示更直观。
Sel_clock模块实现扫描显示即每一瞬间输出的数据为秒的个位或十位,或者为分的个位或十位,或者时的个位或十位。
因该试验增加了一些功能,所以该模块要做相应修改――增加为八位显示。
此时连线时应注意各模块的个位十位接线和分隔符接线。
Deled模块为字符译码模块即将十六进制字符翻译为七段数码管相应段位亮灭从而实现字符译码。
该模块也要作少许修改,如把h"f" =>1,0,0,0,1,1,1;改为了h"f" =>0,0,0,0,0,0,1;这样显示后就起到分隔的作用了。
当然这也不是唯一的修改方法,关键是修改要和你的link模块相匹配。
Alert为整点报时模块,呐叭发声为脉冲激发,不同频率的信号会得到不同音调的声音,如果不停的改变信号频率就会得到一串抑扬顿挫的声音。
对second模块仿真为对minute模块进行仿真为:对hour模块进行仿真:对deled字符译码模块仿真该模块将字符转换成数码管相应的段码以便数码管能显示为人们习惯的字符。
数字钟设计(带仿真图)
数字钟的设计一.设计要求:1)采用24小时制,要有时/分/秒显示,显示采用六只LED数码管分别显示时分秒;2)时、分、秒之间用二极管显示“:”,并每秒种闪烁一次;3)时间的小时、分可手动调整;4)采用+5V电源供电。
二.题目分析:数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时序电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法.三.总体方案:数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。
由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ 时间信号必须做到准确稳定。
通常使用石英晶体振荡器电路构成数字钟。
计数部分分为一个二十四进制和两个六十进制计数,采用74HC390芯片。
显示部分,采用CD4511译码器,而CD4511输出的是高电平有效,所以数码管采用的共阴数码管。
校时部分为了防抖动采用了串联RS触发器。
图1 数字时钟线路原理框图四.原理图设计我们这次做的数字钟总体分为四个部分,晶体振荡部分、计数部分、译码显示部分和校时部分。
图2 数字时钟整体原理图五.各部分定性说明以及定量计算:(一)晶体振荡部分由于要产生稳定的1Hz的脉冲信号,所以选用石英晶体振荡器。
选用的石英晶体振荡器的频率是32768Hz的,故需对其分频。
用CD4060分得2Hz的频率后再用CD4013双D触发器得到1Hz的频率。
原理图如下。
图3 晶体振荡部分原理图振荡部分使用的元器件主要有:1片CD4060,1片CD4013,1个3276Hz的晶体振荡器,1个22兆欧的电阻,1个20Pf和1个30Pf的电容。
EDA实验三四程序及仿真波形
1.含异步清0和同步时钟使能的十进制加法计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK,RST,EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT: OUT STD_LOGIC);END ENTITY CNT10;ARCHITECTURE behav OF CNT10 ISBEGINPROCESS (CLK,RST,EN)V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='1' THEN CQI:=(OTHERS =>'0');--计数器异步复位ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿IF EN='1' THEN --检测是否允许计数(同步他能)IF CQI<9 THEN CQI:=CQI+1; --允许计数,检测是否小于9ELSE CQI := (OTHERS =>'0'); --大于9,计数值清零END IF;END IF;END IF;IF CQI=9 THEN COUT<='1'; --计数大于9,输出进位信号ELSE COUT<='0';END IF;CQ<=CQI; --将计数值向端口输出END PROCESS;END ARCHITECTURE behav;波形仿真2. 含异步清0和同步时钟使能的十进制加减可控计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNTID10 ISPORT(CLK,RST,EN,MOD1: IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC);END ENTITY CNTID10;ARCHITECTURE behav OF CNTID10 ISBEGINPROCESS (CLK,RST,EN,MOD1)V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='1' THEN CQI:=(OTHERS =>'0');--计数器异步复位ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿IF EN='1' THENIF MOD1='0' THEN --检测是否允许计数(同步他能) IF CQI<9 THEN CQI:=CQI+1; --允许加计数,检测是否小于9ELSE CQI := (OTHERS =>'0'); --大于9,计数值清零END IF;ELSEIF CQI>0THEN CQI:=CQI-1; --允许减计数,检测是否大于0ELSE CQI(3):= '1'; --等于0,计数值置9CQI(2):= '0';CQI(1):= '0';CQI(0):= '1';END IF;END IF;END IF;END IF;IF MOD1='0' THENIF CQI=9 THEN COUT<='1'; -- 加计数大于9,输出进位信号ELSE COUT<='0';END IF;ELSEIF CQI=0 THEN COUT<='1'; -- 减计数大于9,输出进位信号ELSE COUT<='0';END IF;END IF;CQ<=CQI; --将计数值向端口输出END PROCESS;END ARCHITECTURE behav;波形仿真1. 七段数码显示译码器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DECL7S ISPORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; END ;ARCHITECTURE one OF DECL7S ISBEGINPROCESS( A )BEGINCASE A ISWHEN "0000" => LED7S <= "0111111" ;WHEN "0001" => LED7S <= "0000110" ;WHEN "0010" => LED7S <= "1011011" ;WHEN "0011" => LED7S <= "1001111" ;WHEN "0100" => LED7S <= "1100110" ;WHEN "0101" => LED7S <= "1101101" ;WHEN "0110" => LED7S <= "1111101" ;WHEN "0111" => LED7S <= "0000111" ;WHEN "1000" => LED7S <= "1111111" ;WHEN "1001" => LED7S <= "1101111" ;WHEN "1010" => LED7S <= "1110111" ;WHEN "1011" => LED7S <= "1111100" ;WHEN "1100" => LED7S <= "0111001" ;WHEN "1101" => LED7S <= "1011110" ;WHEN "1110" => LED7S <= "1111001" ;WHEN "1111" => LED7S <= "1110001" ;WHEN OTHERS => NULL ;END CASE ;END PROCESS ;END ;波形仿真2.计数、译码显示电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DEC ISPORT (CLK0,RST0,ENA0 : IN STD_LOGIC;LED : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);COUT0 : OUT STD_LOGIC );END DEC;ARCHITECTURE ONE OF DEC ISCOMPONENT CNT16 ISPORT (CLK,RST,ENA : IN STD_LOGIC;CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUTY : OUT STD_LOGIC );END COMPONENT ;COMPONENT DECL7S ISPORT (A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT ;SIGNAL TMP : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1:CNT16 PORTMAP(CLK=>CLK0,RST=>RST0,ENA=>ENA0,CQ=>TMP,COUTY=>COUT0);U2 : DECL7S PORT MAP(A =>TMP,LED7S => LED);END;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT16 ISPORT (CLK,RST,ENA : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUTY : OUT STD_LOGIC );END CNT16;ARCHITECTURE BEHAV OF CNT16 ISBEGINPROCESS ( CLK,RST,ENA )V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST = '1' THEN CQI := (OTHERS =>'0');ELSIF CLK'EVENT AND CLK='1' THENIF ENA = '1' THENIF CQI < 15 THEN CQI := CQI + 1;ELSE CQI := (OTHERS =>'0');END IF;END IF;END IF;IF CQI = 15 THEN COUTY <= '1';ELSE COUTY <= '0';END IF;CQ <= CQI;END PROCESS;END BEHAV;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DECL7S ISPORT (A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ;ARCHITECTURE BEHAV1 OF DECL7S ISBEGINPROCESS ( A )BEGINCASE A ISWHEN "0000" => LED7S <= "0111111";WHEN "0001" => LED7S <= "0000110";WHEN "0010" => LED7S <= "1011011";WHEN "0011" => LED7S <= "1001111";WHEN "0100" => LED7S <= "1100110";WHEN "0101" => LED7S <= "1101101";WHEN "0110" => LED7S <= "1111101";WHEN "0111" => LED7S <= "0000111";WHEN "1000" => LED7S <= "1111111";WHEN "1001" => LED7S <= "1101111";WHEN "1010" => LED7S <= "1110111";WHEN "1011" => LED7S <= "1111100";WHEN "1100" => LED7S <= "0111001";WHEN "1101" => LED7S <= "1011110";WHEN "1110" => LED7S <= "1111001";WHEN "1111" => LED7S <= "1110001";WHEN OTHERS => NULL ;END CASE;END PROCESS;END;波形仿真。
EDA技术与应用实践学习内容(数字钟之仿真分析练习)
技能点九(数字钟之仿真分析练习)
秒(分)计数器模块的仿真波形如图 6 - 1所示。
从图中可以看出:当计数值到达59之后,再来一个时钟上升沿,计数器从零重新开始计数,并且co输出一个上升沿,为分(小时)计数器提供时钟脉冲。
任何时刻,只要复位信号reset有效,计数器即归0。
图 6 - 1秒(分)计数脉冲输出仿真波形图
小时计数器模块的仿真波形如图 6 - 2所示。
从图可知,当计数值到达23之后,再来一个时钟的上升沿,重新从零开始计数。
图 6 - 2小时计数器模块
扫描显示模块的仿真波形如图 6 - 3所示。
由图可见,当时扫描冲信号频率为1KHz时,若将时间设定为19:47:32,那么位控端口bt按111110→111101→111011→110111→101111→011111变化,段控端口sg依次输出“2”、“3”、“7”、“4”、“9”、“1”的7段显示码,经过6个时钟信号后循环进行,实际看起来所有的数码管都在亮。
图 6 - 3扫描显示模块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
部件一:60进制程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK60 ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK60;ARCHITECTURE ARTCLOCK60 OF CLOCK60 ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0';----进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN -----异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN------同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9)THENQL<="0000";IF(QH=5)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK60;60进制波形图如下:部件二:24进制程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK24 ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK24;ARCHITECTURE ARTCLOCK24 OF CLOCK24 ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0';----进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN -----异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN------同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9 or (QH=2 AND QL=3))THENQL<="0000";IF(QH=2)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK24;24进制的波形图如下:数字钟的全部程序如下:LIBRARY IEEE; ---秒信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK60s ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK60s;ARCHITECTURE ARTCLOCK60s OF CLOCK60s ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0'; --进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN ---异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN --同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9)THENQL<="0000";IF(QH=5)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK60s;LIBRARY IEEE; ---分信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK60m ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK60m;ARCHITECTURE ARTCLOCK60m OF CLOCK60m ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0'; --进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN --异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN ---同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9)THENQL<="0000";IF(QH=5)THENQH<="0000";ELSEEND IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK60m;LIBRARY IEEE; ---时信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK24 ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; --进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK24;ARCHITECTURE ARTCLOCK24 OF CLOCK24 ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0'; ---进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN ---异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN ---同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9 or (QH=2 AND QL=3))THENQL<="0000";IF(QH=2)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEEND IF;END IF;END IF;END PROCESS;END ARTCLOCK24;LIBRARY IEEE; ---时信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESETS: IN STD_LOGIC; ---复位端LOADS: IN STD_LOGIC; ---置数端NRESETM: IN STD_LOGIC; ---复位端LOADM: IN STD_LOGIC; ---置数端NRESETH: IN STD_LOGIC; ---复位端LOADH: IN STD_LOGIC; ---置数端DS: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端DM: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端DH: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH1: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL1: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QH2: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL2: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QH3: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL3: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END hour;ARCHITECTURE ART OF hour ISCOMPONENT CLOCK60SPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT CLOCK60MPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT CLOCK24PORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; --始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNAL Z1,Z2:STD_LOGIC;BEGINU1: CLOCK60S PORT MAP(CLK,NRESETS,LOADS,DS,CI,Z1,QH1,QL1);U2: CLOCK60M PORT MAP(CLK,NRESETM,LOADM,DM,Z1,Z2,QH2,QL2);U3: CLOCK24 PORT MAP(CLK,NRESETH,LOADH,DH,Z2,CO,QH3,QL3);END ARCHITECTURE ART;电子钟全部引脚显示波形:00:00:59波形显示如下:00:59:59波形图如下,进位后为01:00:00 23:59:59波形图如下:调时间波形如下:用置位端进行调时,调到02:51:15波形如下:经验证,以上设计完全符合题目要求!。