简易数字钟的EDA设计
- 格式:doc
- 大小:260.50 KB
- 文档页数:9
设计报告课程名称在系统编程技术任课教师设计题目数字钟班级08通信工程(2)班姓名学号日期2011-6-6目录一、题目分析 (3)数字钟的工作原理 (3)二、选择方案 (4)1.数字钟方案论证与选择 (4)2.自顶向下设计框图 (4)三.、单元模块设计 (4)1.控制模块模块的设计 (5)2. mux19s4模块的设计 (5)四、调试及系统仿真 (5)五、硬件测试及说明 (6)六、结论 (6)七、课程总结 (6)八、参考文献目录 (7)九、附录(源程序) (7)EDA 数字钟设计设计并实现具有计时功能、整点报时功能和重置时间功能的数字小系统(数字 钟),要求:1、对所有设计的小系统能够正确分析;2、基于VHDL 语言描述系统的功能;3、在quartus 2环境中编译通过;4、仿真通过并得到正确的波形;5、给出相应的设计报告。
一、题目分析数字钟的工作原理数字钟以其显示时间的直观性、走时准确性作为一种即时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。
数字钟的基本原理方框图如下:图 1.1时基T 产生电路:由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为1Hz 的、非常稳定的计数时钟脉冲。
控制逻辑电路:产生调时、调分信号及位选信号。
调时、调分信号的产生:有计数器的计数过程可知,正常计数时,当秒计数器(60进制)计数到59时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。
为了可以手调分钟的数值,把秒计数器的进位脉冲和一个频率为2Hz 的脉冲信号接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去的时候(即为0),则数据选择器将秒计数器的的进为脉冲送到分计数器。
此时,晶振 分频整形 门控双稳 脉冲计数 译码 显示时基T 产生电路计数器 电路 调时、调分控制电路位选信号发生器控制逻辑电路。
摘要数字时钟,就是以数字显示取代模拟表盘的钟表,在显示上它用数字反应此时的时间,它还能同时显示时,分,秒,且能够对时,分,秒准确进行校时。
数字时钟是一种用数字电路技术实现时、分、秒计时的装置。
与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。
数字钟从原理上讲是一种典型的数字电路,一般是由振荡器、分频器、计数器、显示器等几部分组成。
其中包括了组合逻辑电路和时序电路。
数字钟的设计方法有许多种,例如:可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等。
本设计采用EDA技术,以硬件描述语言Verilog HDL为系统逻辑描述手段设计文件,在QUARTUS II工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于FPGA的数字钟。
数字时钟以其体积小、重量轻、抗干扰能力强、对环境要求高、高精确性、容易开发等特性,在工业控制系统、智能化器仪表、办公自动化等诸多领域取得了极为广泛的应用,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等。
关键词:EDA、QuartusII、Verilog HDL、FPGA芯片、数字时钟等AbstractDigital clock is with digital display to replace analog dial watch, in the show it with digital reaction at this time, it can display at the same time, minutes and seconds, and can pair, minutes and seconds precise timing.Digital clock is a digital circuit technology to achieve time, minutes and seconds of the device. Compared with the mechanical clock has higher accuracy and intuitive, and no mechanical device, has a longer life, has been widely used. Digital clock from the principle of speaking is a typical digital circuit, generally by the oscillator, frequency divider, counter, display and other parts of the composition. The combination logic circuit and the sequential circuit are included in the circuit. Digital clock design, there are many methods. For example: available small scale integrated circuit composition electronic clock; can also use special chip electronic clock with to display circuit and its peripheral circuit composed of electronic clock; can also be used to achieve single-chip electronic clock and so on.This design using EDA technology, the Hardware Description Language Verilog HDL logic system description method of design documents, in the Quartus II software environment by top-down design method, by all the basic modules work together to build a based on FPGA digital clock.Digital clock with the volume small, light weight, strong anti-interference ability, on the environment requirements high, high precision, ease of development, and so on, in the fields of industrial control system, intelligent of instrumentation, office automation, made extremely widely used, such as timing automatic alarm, timely automatic bell, a time program automatic control, regular radio, automatic opening and closing lights, oven timer switch, on-off power equipment, and even a variety of timing electric automatically enabled.Keywords: EDA, QuartusII, Verilog HDL,FPGA chip, Digital clock, etc.摘要 (1)第一章绪论 (4)1.1选题意义与研究现状 (4)1.2国内外研究及趋势 (4)第二章EDA技术 (6)2.1 EDA技术简介 (6)2.2 EDA技术特点 (6)2.3 EDA技术的发展历程 (6)第三章 QuartusⅡ,FPGA的简介 (9)3.1 Quartus II简介 (9)3.2 FPGA简介 (9)3.3 FPGA系统设计流程 (11)3.4本设计所用黑金开发板AX301简介 (12)第四章数字时钟总体设计方案 (14)4.2 数字钟的工作原理 (14)第五章数字时钟的具体设计 (15)5.1 本设计的顶层图 (15)5.2 时钟控制模块 (15)5.2.1信号定义 (15)5.2.2分频模块 (16)5.2.3走时模块 (16)5.3显示模块 (20)第六章程序的验证与修改 (25)6.1程序导入 (25)6.2开发板演示 (25)第七章总结与展望 (27)7.1论文总结 (27)7.2后续展望 (27)致谢 ................................................................................................................... 错误!未定义书签。
课程设计报告课程名称:EDA技术与应用设计题目:数字钟设计数字钟设计摘要:系统使用EDA技术设计了数字钟,采用硬件描述语言VHDL按模块化方式进行设计,然后进行编程,时序仿真等。
利用VHDL语言完成了数字钟的设计。
该数字钟能实现时、分、秒计数的显示功能,且以24小时循环计时。
整个系统结构简单,使用方便,功能齐全,精度高,具有一定的开发价值。
关键字:数字钟;EDA;VHDL;一、设计要求1.1、时钟功能设计一个具有时、分、秒计时的数字钟电路,计时采用24小时制。
小时、分钟可调的数字钟。
1.2、准确性要求设计出的时钟电路要确保高精度的要求,每天的误差不得超过一秒。
二、数字钟的基本原理1、具有时、分、秒计数显示功能,以24小时循环计时。
其中SECOND模块为60进制BCD码计数电路,实现秒计时功能;MINUTE模块为60进制BCD码计数电路,实现分计时功能;HOUR模块为24进制BCD码计数电路,实现小时计时功能。
2、有驱动8位七段共阴极扫描数码管的片选驱动信号输出和七段码输出。
SELTIME模块产生8位数码管的扫描驱动信号SEL[2..0]和时钟显示数据(动态显示)DAOUT[3..0]。
DELED模块则为数码管显示时钟数据的7段译码电路。
三、方案论证3.1、数字钟的基本组成数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路,其基本组成电路如下图所示:图3.1 数字钟原理图图(1)中,秒冲发生器产生秒脉冲,作为图中各个计数器的脉冲信号。
分、秒计数器要求设计为六十进制计数器;时计数器则设计为二十四进制计数器。
时、分、秒的计时结果分别送入译码器中,经译码器翻译后,共由六个LED数码管显示出结果。
因此,使用计数器作为计时电路是可以实现的。
四、各功能模块4.1、小时计时功能实现程序如下:libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity hour isport(reset,clk : in std_logic;daout : out std_logic_vector(7 downto 0));end hour;architecturebehav of hour issignal count : std_logic_vector(3 downto 0); signal counter : std_logic_vector(3 downto 0); beginp1: process(reset,clk)beginif reset='0' thencount<="0000";counter<="0000";elsif(clk'event and clk='1') thenif (counter<2) thenif (count=9) thencount<="0000";counter<=counter + 1;elsecount<=count+1;end if;elseif (count=3) thencount<="0000";counter<="0000";elsecount<=count+1;end if;end if;end if;end process;daout(7 downto 4)<=counter;daout(3 downto 0)<=count;endbehav;图4.1 时计时功能模块4.2、分计时功能实现程序如下:libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity minute isport(reset,clk,sethour: in std_logic; daout : out std_logic_vector(7 downto 0); enhour : out std_logic);end minute;architecturebehav of minute issignal count : std_logic_vector(3 downto 0); signal counter : std_logic_vector(3 downto 0); signal carry_out1 : std_logic;signal carry_out2 : std_logic;beginp1: process(reset,clk)beginif reset='0' thencount<="0000";counter<="0000";elsif(clk'event and clk='1') thenif (counter<5) thenif (count=9) thencount<="0000";counter<=counter + 1;elsecount<=count+1;end if;carry_out1<='0';elseif (count=9) thencount<="0000";counter<="0000";carry_out1<='1';elsecount<=count+1;carry_out1<='0';end if;end if;end if;end process;p2: process(clk)beginif(clk'event and clk='0') thenif (counter=0) thenif (count=0) thencarry_out2<='0';end if;elsecarry_out2<='1';end if;end if;end process;daout(7 downto 4)<=counter;daout(3 downto 0)<=count;enhour<=(carry_out1 and carry_out2) or sethour; endbehav;图4.2 分计时模块4.3、秒计时功能实现程序如下;libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity second isport(reset,clk,setmin : in std_logic;daout : out std_logic_vector(7 downto 0); enmin : out std_logic);end second;architecturebehav of second issignal count : std_logic_vector(3 downto 0); signal counter : std_logic_vector(3 downto 0); signal carry_out1 : std_logic;signal carry_out2 : std_logic;beginp1: process(reset,clk)beginif reset='0' thencount<="0000";counter<="0000";elsif(clk'event and clk='1') thenif (counter<5) thenif (count=9) thencount<="0000";counter<=counter + 1;elsecount<=count+1;end if;carry_out1<='0';elseif (count=9) thencount<="0000";counter<="0000";carry_out1<='1';elsecount<=count+1;carry_out1<='0';end if;end if;end if;end process;daout(7 downto 4)<=counter; daout(3 downto 0)<=count; enmin<=carry_out1 or setmin; endbehav;图4.3 秒计时模块4.4、alert模块实现程序如下:Library IEEE;use IEEE.std_logic_1164.all;useieee.std_logic_unsigned.all;entity alert isPort(clkspk : in std_logic;second : in std_logic_vector(7 downto 0); minute : in std_logic_vector(7 downto 0); speak : out std_logic;lamp : out std_logic_vector(8 downto 0)); end alert;architecturebehav of alert issignal divclkspk2 : std_logic;beginp1: process(clkspk)beginif (clkspk'event and clkspk='1') thendivclkspk2<=not divclkspk2;end if;end process;p2: process(second,minute)beginif (minute="01011001") thencase second iswhen "01010001"=>lamp<="000000001";speak<=divclkspk2; when "01010010"=>lamp<="000000010";speak<='0';when "01010011"=>lamp<="000000100";speak<=divclkspk2; when "01010100"=>lamp<="000001000";speak<='0';when "01010101"=>lamp<="000010000";speak<=divclkspk2; when "01010110"=>lamp<="000100000";speak<='0';when "01010111"=>lamp<="001000000";speak<=divclkspk2; when "01011000"=>lamp<="010000000";speak<='0';when "01011001"=>lamp<="100000000";speak<=clkspk; when others=>lamp<="000000000";end case;end if;end process;endbehav;图4.4 alert模块4.5、DELED模块实现程序如下;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DELED ISPORT(S: IN STD_LOGIC_VECTOR(3 DOWNTO 0); A,B,C,D,E,F,G,H: OUT STD_LOGIC); END DELED;ARCHITECTURE BEHAV OF DELED ISSIGNAL DATA:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL DOUT:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINDATA<=S;PROCESS(DATA)BEGINCASE DATA ISWHEN "0000"=>DOUT<="00111111";WHEN "0001"=>DOUT<="00000110";WHEN "0010"=>DOUT<="01011011";WHEN "0011"=>DOUT<="01001111";WHEN "0100"=>DOUT<="01100110";WHEN "0101"=>DOUT<="01101101";WHEN "0110"=>DOUT<="01111101";WHEN "0111"=>DOUT<="00000111";WHEN "1000"=>DOUT<="01111111";WHEN "1001"=>DOUT<="01101111";WHEN "1010"=>DOUT<="01110111";WHEN "1011"=>DOUT<="01111100";WHEN "1100"=>DOUT<="00111001";WHEN "1101"=>DOUT<="01011110";WHEN "1110"=>DOUT<="01111001";WHEN "1111"=>DOUT<="01000000"; WHEN OTHERS=>DOUT<="00000000"; END CASE;END PROCESS;H<=DOUT(7);G<=DOUT(6);F<=DOUT(5);E<=DOUT(4);D<=DOUT(3);C<=DOUT(2);B<=DOUT(1);A<=DOUT(0);END BEHAV;图4.5 deled模块4.6、seltime模块实现程序如下:libraryieee;use ieee.std_logic_1164.all; useieee.std_logic_unsigned.all;entityseltime isport(ckdsp : in std_logic;reset : in std_logic;second : in std_logic_vector(7 downto 0); minute : in std_logic_vector(7 downto 0); hour : in std_logic_vector(7 downto 0); daout : out std_logic_vector(3 downto 0); sel : out std_logic_vector(2 downto 0)); endseltime;architecturebehav of seltime issignal sec : std_logic_vector(2 downto 0); beginprocess(reset,ckdsp)beginif(reset='0') thensec<="000";elsif(ckdsp'event and ckdsp='1') thenif(sec="111") thensec<="000";elsesec<=sec+1;end if;end if;end process;process(sec,second,minute,hour)begincase sec iswhen "000"=>daout<=second(3 downto 0); when "001"=>daout<=second(7 downto 4);when "011"=>daout<=minute(3 downto 0);when "100"=>daout<=minute(7 downto 4);when "110"=>daout<=hour(3 downto 0);when "111"=>daout<=hour(7 downto 4);when others=>daout<="1111";end case;end process;sel<=sec;endbehav;图4.6 seltime模块五、功能实现简述5.1、具有时、分、秒计数显示功能,以24小时循环计时。
摘要利用MAX+PLUSⅡ软件,设计一个能进行时、分、秒计时的24制多功能数字钟,使其具有定时与闹钟功能,且能在设定的时间发出闹铃音,能非常方便地对时、分、秒进行手动调节以校准时间,每逢整点,产生报时音效,并在实验板上成功下载,验证后满足要求。
关键词:EDA ; MAX+PLUS2 ;数字钟;0 引言随着科学技术的发展,现代电子设计技术已进入一个全新的阶段,传统的电子设计方法、工具和器件在更大的程度上被EDA所取代。
在EDA技术中,最为瞩目的是以现代电子技术为特征的逻辑设计仿真测试技术,该技术的出现,使电子系统设计发生了质的变化,设计速度快、体积小、重量轻、功耗小的集成电路已成为趋势。
本文利用EDA 技术,选用ALTERA公司的CPLD器件EPF10K10LC84-4和软件MAX+PLUS2,设计了一个多功能数字钟,提高了系统的整体性能和可靠性,并通过编译、仿真、下载,经验证后已满足要求。
1 多功能数字钟设计任务1.1 数字钟设计要求(1)、设计一个能显示1/10秒、秒、分、时的12小时数字钟。
(2)、熟练掌握各种计数器的使用。
(3)、能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。
(4)、能用低位的进位输出构成高位的计数脉冲。
1.2 设计思路此设计可分为主控电路、计数器模块和扫描显示三大模块。
1.2.1 主控电路模块主控电路状态用表格显示,如下表所列:模式选择秒、时、分、计数器脉冲输出状态备注Reset Reset1 A B Turn LD-h LD-m LD-alert0 X X X X X 0 0 0 系统复位1 X 0 0 X CLK 0 0 0 系统计时1 X 0 1 0 Change=分计数器加1 0 1 0手动1 X 0 1 1 Change=时计数器加1 1 0 0校时1 1 1 0 0 Change=分计数器加1 0 1 1 设置闹钟1 1 1 0 1 Change=时计数器加11 0 11 0 X X X X 0 0 0 关闭闹钟1.2.2 计数器模块计数器模块中,分钟和秒用带进位位的60进制功能模块,小时用不带进位位的24进制功能模块(如果考虑到日期的问题,在24进制模块加进位输出即可实现)。
基于e d a的数字钟程序设计文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)一、课题要求:(1)技术要求:1、掌握多功能数字钟的工作原理。
2、应用EDA技术,VHDL语言编写程序。
3、层次化设计,设计原理框图。
4,、硬件设计及排版。
(2)功能要求:1、基本功能:能进行正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟、60秒的计数器显示。
2、扩展功能:(1)能够利用按键实现“校时”“校分”“清零”功能。
(2)能利用扬声器做整点报时,整点前五秒短声,整点长声。
(3)本人工作:负责软件部分,,编写各部分模块的VHDL程序,并且锁定引脚,将程序下载到芯片中。
二、设计方案:原理框图:数字钟原理框图一共有11个小模块:分频,片选,按键,小时,分,秒,显示模块,七段显示译码器,报时,扬声,36译码器。
左边第一个是时钟信号输入端,50Mhz到分频模块。
第二个为清零按键,第三个为校分按键,第四个为校时按键。
右边第一个为七段显示译码器输出端,第二个为扬声器输出端,第三个为6个数码管输出端。
中间模块为数字钟的核心,有计时,报时,校时功能。
三、单元模块设计1、分频模块2、秒模块仿真图为秒的数值,在计时到59时进位1到co端。
当按下s3时,秒清零。
3.、分模块仿真图该模块也为60进制计数器,计时输出为分的数值。
在EN信号有效且时钟来时,计数器加1、在s2按下时,EN使能端有效,实现校分功能。
4、时模块仿真图该模块为24进制计数器,计时输出为小时的数值,在EN信号到来时,计数器加1,在S1按下时,EN信号有效,实现校时功能。
5、片选模块仿真图该模块提供数码管片选信号。
6、按键模块仿真图该模块是有几个门电路组成,把它编写成一个模块,到时写程序方便。
该模块连接几个按键,由按键控制。
7、报时模块仿真图该模块为整点报时提供控制信号,当59分时,秒为50,52,54,56,58时,Q500输出“1”;秒为00时,Q1000输出“1”。
DA实验报告验一、3/8 译码器的实现一、实验目的:1.学习QuartusⅡ的基本操作2.熟悉教学实验箱的使用3.设计一个3/8 译码器4.初步掌握VHDL语言和原理图的设计输入,编译,仿真和调试过程二、实验说明:、本实验要求使用VHDL语言描述3/8译码器,并在实验平台上面实现这个译码器。
描述的时候要注意VHDL语言的结构和语法,并熟悉QuartusⅡ的文本编辑器的使用方法。
尝试使用不同的VHDL语言描述语句实现3/8译码器,并查看其RTL结构区别,理解不同描述方法对综合结果的影响。
将程序下载到实验箱上,分别用按键和LED作为输入和输出对结果进行验证,进一步熟悉所用EDA实验箱系统。
、所用器件:EDA实验箱、EP1K10TC100-3器件三、实验步骤:照教学课件《QUARTUS II 使用方法》,学习QuartusⅡ软件的使用方法:、在WINDOWS 界面双击QuartusⅡ图标进入QuartusⅡ环境;、单击File 菜单下的New Project Wizard: Introduction 按照向导里面的介绍新建一个工程并把它保存到自己的路径下面。
(注意路径当中不要有中文和空格)、单击File 菜单下的New,选择VHDL File(原理图方式时选择BlockDiagram/Schematic File),后单击OK,就能创建一个后缀名为.vhd (*.bdf)的文本(原理图)文件。
此vhd文件名必须与设计实体名相同。
另外,如果已经有设计文件存在,可以按File 菜单里面的Open 来选择你的文件。
、输入完成后检查并保存,编译。
、改错并重新编译;、建立仿真波形文件并进行仿真。
单击File 菜单下的New,选择Vector Waveform File,单击OK,创建一个后缀名为*.vwf的仿真波形文件,按照课件上的方法编辑输入波形,保存,进行仿真,验证仿真结果是否正确;、选择器件及分配引脚,重新编译;、根据引脚分配在试验箱上进行连线,使用LED进行显示;、程序下载,观察实验结果并记录;Diagram/Schematic File),后单击OK,就能创建一个后缀名为.vhd (*.bdf)的文本(原理图)文件。
eda课程设计数字钟设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握数字钟的基本原理和设计流程。
2. 学生能描述数字钟的各个模块功能,如计时、显示、调整等,并理解它们之间的协同工作方式。
3. 学生掌握Verilog等硬件描述语言的基本语法,能够利用EDA工具进行基本的数字电路设计和仿真。
技能目标:1. 学生能够运用所学知识,使用EDA工具设计简单的数字时钟电路,并进行功能仿真。
2. 学生通过小组合作,培养团队协作能力和问题解决能力,提高工程实践和项目管理的初步技能。
3. 学生能够运用批判性思维分析设计过程中的问题,提出优化方案,并对设计方案进行改进。
情感态度价值观目标:1. 学生通过数字钟的设计实践,培养对电子工程领域的兴趣和探究精神,激发创新意识和创造潜能。
2. 学生在学习过程中,形成严谨的科学态度和良好的工程意识,认识到技术对日常生活的影响。
3. 学生在小组合作中,学会相互尊重和沟通,培养积极向上的团队精神,增强集体荣誉感。
课程性质分析:本课程为实践性较强的电子设计课程,要求学生将理论知识与实际操作相结合,通过动手实践,深化对电子设计自动化原理的理解。
学生特点分析:针对高中年级学生,已有一定的电子基础和逻辑思维能力,对新鲜事物充满好奇心,具备自主学习的能力。
教学要求:课程要求教师通过引导和启发,帮助学生将抽象的理论具体化,通过项目式的教学方法,使学生能够将所学知识应用于实际问题的解决中。
二、教学内容本课程教学内容围绕数字钟设计的全过程,分为以下三个部分:1. 理论知识学习:- 电子设计自动化(EDA)基本概念与原理;- 数字时钟的组成、工作原理及各模块功能;- Verilog硬件描述语言的基本语法及使用方法;- 相关电子元器件的特性和应用。
2. 实践操作部分:- 使用EDA工具(如ModelSim、Quartus等)进行基本操作;- 设计数字钟的各个模块,并进行功能仿真;- 对设计过程中出现的问题进行分析,提出优化方案;- 完成数字钟整体设计与调试。
摘要利用QuartusII与FPGA,制作数字钟。
数字钟由分频模块,计数模块、显示模块、报时模块等几部分构成,数字钟的时、分、秒由一个24进制计数器(00-23),两个60进制计数器(00-59)级联构成。
以10进制计数器74160来实现时间计数单元的计数功能。
利用一片7447,采用分时复用方式,连接LED 数码管显示。
关键词EDA、FPGA、VHDL、QuartusII、数字钟。
AbstactorIn this study, Multifunction digital clock on the design and simulation through Using Quartus2 software;downloaded to the FPGA after Successful simulation,clock display on the led; achieve the required functions through reusing switch main modules are: dynamic display circuit, Set the clock hours, the music circuit, keypad circuit; features include: clock display, alarm clock and hourly chime。
KeywordsEDA、FPGA、VHDL、QuartusII 、Digital Clock目录1 ···············设计要求说明2 ···············方案论证3 ···············各模块原理说明1)分频模块2)计时模块3)显示模块4)报时模块4··················引脚分配5··················结论6··················参考文献一、设计要求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时可以快速校时);7、使时钟具有整点报时功能(当时钟计到59’53”时开始报时,在59’53”, 59’55”,59’57”时报时频率为512Hz,59’59”时报时频率为1KHz, );8、自己添加其他功能;二、方案论证采用模块化的设计思路,分别设计分频模块,计数模块、显示模块、报时模块。
eda课程设计 数字钟。
一、课程目标知识目标:1. 让学生理解数字时钟的基本原理,掌握数字时钟电路的设计方法。
2. 使学生掌握EDA工具的使用,学会利用工具进行电路设计、仿真和调试。
3. 帮助学生了解数字时钟中各个模块的功能和相互关系。
技能目标:1. 培养学生运用EDA工具进行数字电路设计的能力。
2. 培养学生分析问题、解决问题的能力,能够根据实际需求设计简单的数字时钟电路。
3. 提高学生的动手实践能力,学会使用相关仪器设备进行电路调试。
情感态度价值观目标:1. 激发学生对电子设计的兴趣,培养创新意识和探索精神。
2. 培养学生良好的团队协作精神,学会与他人共同解决问题。
3. 培养学生严谨的科学态度和勤奋刻苦的学习精神。
课程性质:本课程为实践性课程,旨在通过数字时钟电路设计,提高学生的电子设计能力。
学生特点:学生具备一定的电子基础知识,对EDA工具感兴趣,但动手实践能力有待提高。
教学要求:注重理论与实践相结合,充分调动学生的积极性,引导学生主动参与教学活动,提高学生的实践能力。
教学过程中,注重培养学生的团队合作精神和创新能力,为学生的未来发展奠定基础。
通过本课程的学习,使学生能够具备独立设计、制作和调试数字时钟电路的能力。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 数字时钟原理:讲解数字时钟的基本原理,分析数字时钟的各个模块功能,如秒脉冲发生器、计数器、显示驱动等。
2. EDA工具使用:介绍EDA工具的基本操作,如原理图绘制、电路仿真、PCB设计等,使学生掌握使用EDA工具进行数字电路设计的方法。
3. 数字时钟电路设计:根据实际需求,制定数字时钟设计方案,包括选择合适的元器件、绘制原理图、编写程序等。
4. 电路仿真与调试:指导学生利用EDA工具进行电路仿真,分析电路性能,优化设计方案;并进行实际电路搭建与调试,培养学生的动手实践能力。
教学大纲安排如下:1. 第一周:数字时钟原理学习,熟悉各个模块功能。
五邑大学实验报告实验课程名称:EDA实验院系名称:信息工程学院专业名称:通信工程(物联网)(一)实验目的:设计并实现具有一定功能的数字钟。
掌握各类计数器及它们相连的设计方法,掌握多个数码管显示的原理与方法,掌握FPGA的层次化设计方法,掌握VHDL语言的设计思想以及整个数字系统的设计。
此数字钟具有时,分,秒计数显示功能,能实现清零,调节小时,分钟以及整点报时的功能。
(二)实验器材:计算机一台,EDA实验箱一台。
(三)实验原理:四)实验内容:1.正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟,60秒钟的计数器显示。
2.按键实现“校时”“校分”功能;3.用扬声器做整点报时。
当计时到达59’50”时鸣叫。
方案:利用试验箱上的七段码译码器(模式7),采用静态显示,系统时钟选择1Hz。
整个系统可以是若干文件组成,用PORT MAP 实现的方式;也可以是一个文件用多进程方式实现;亦或者是用文本和图形混合的方式实现;亦或者是用LPM参数化模块实现。
(五)实验步骤:1. 新建一个文件夹,命名为shuzizhong.2. 输入源程序。
打开QuartusⅡ,选择File→new命令。
在New窗口中的DesignFiles栏选择编译文件-的语言类型,这里选择VHDL File选项。
然后在VHDL文本编译窗口中输入秒模块程序。
秒模块源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity SECOND isport(clk,clr:in std_logic;----时钟/清零信号sec1,sec0:out std_logic_vector(3 downto 0);----秒高位/低位co:out std_logic);-------输出/进位信号end SECOND;architecture SEC of SECOND isbeginprocess(clk,clr)variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数beginif clr='1' then----当ckr为1时,高低位均为0cnt1:="0000";cnt0:="0000";elsif clk'event and clk='1' thenif cnt1="0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲)co<='1';----进位cnt0:="1001";----低位为9elsif cnt0<"1001" then----小于9时cnt0:=cnt0+1;----计数elsecnt0:="0000";if cnt1<"0101" then----高位小于5时cnt1:=cnt1+1;elsecnt1:="0000";co<='0';end if;end if;end if;sec1<=cnt1;sec0<=cnt0;end process;end SEC;3.文件存盘。
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 数字钟的层次化设计方案根据上述功能,可以把多功能数字式电子钟系统划分为三部分:时钟源(即标准秒钟的产生电路),时分秒计数器模块、数字钟模块、校时模块、数字秒表模块、闹钟和整点报模块。
1时钟源--晶体振荡器电路1)原理说明如精度要求不高可选用555构成的多谐振荡器,设其振荡频率为f0=1kHz,电路原理图如图6-5所示,而后通过分频器电路(1000分频)即可产生1Hz的方波信号供秒计数器进行计数,分频器电路可由3片十进制计数器级联而得,根据6.2.2节的描述,本设计案例选用图6-5的多谐振荡器电路的输出作为数字式电子钟的基准时钟输入,基准时钟输入一方面用于定时报时和整点报时所需的音频信号。
另一方面该信号惊10分频后作为数字秒表的输入时钟,经1000分频后作为数字钟输入时钟。
2)时钟电路子模块counter1k的设计时钟电路子模块可由3个十进制计数器74160级联而成,输出有10分频输出clk_10, 1000分频输出clk_1Hz,其原理图如图6-7所示,74LS160为同步可予置4bit十进制加法计数器,它具有同步载入,异步清零的功能。
图6-5 多谐振荡器电路图6-6时钟电路子模块原理图在QuartusII中,利用原理图输入法完成源程序的输入、编译和仿真。
时钟电路子模块的仿真输出波形文件如图6-7所示。
在仿真结果正确无误后,可将以上设计的时钟电路子模块counter1k设置成可调用的元件counter1k.sym如图6-8所示。
,以备高层设计中使用。
图6-7时钟电路仿真输出波形图6-8时钟电路模块元件符号图2时分秒计数器模块1)原理说明时分秒计数器模块由秒个位、十位计数器、分个位、十位计数及时个位、十位计数电路构成。
其中:秒个位和秒十位计数器、分个位和分十位计数为六十进制计数器,而根据设计要求时个位和时十位构成的为二十四进制计数器。
因此时分秒计数器模块可划分为时计数、分计数和秒计数3个子模块,根据设计要求时计数子模块为一个二十四进制可预置BCD码计数器模块;分计数和秒计数子模块均为六十进制可预置BCD码计数器模块。
2)秒计数器模块的EDA设计秒计数器模块的输入来自时钟电路的秒脉冲clk_1Hz。
为实现六十进制可预置BCD码的秒计数器的功能,可采用两级BCD码计数器同步级联而成。
第一级属于秒个位,用来计数和显示0~9秒,BCD码计数器每秒数值加1,当这一级达到9秒时,BCD码计数器使其进位输出信号Tc有效,在下一个时钟脉冲有效沿,秒个位计数器复位到0。
秒个位计数器进位输出信号Tc使秒十位计数器(模6计数)使能,在秒个位计数器复位同时,秒十位计数器计数值加1,该过程将持续59秒,此时秒十位计数器状态为1012(5),秒个位计数器状态为10012(9),此时将显示读数为59,同时秒十位计数器进位输出信号Tc为高电平,下一脉冲到来时秒个位计数器和秒十位计数器同时复位到0,并同步产生分脉冲进位输出信号Cout。
根据分析,可用2片74160同步级联设计成六十进制可预置BCD码计数器。
74160为同步可预置4bit十进制加法计数器,它具有同步载入,异步清零的功能。
构成该计数器的所有触发器都由时钟脉冲同步,在时钟脉冲输入波形上升沿同时触发。
这些计数器可以使用置数输入端(LDN)进行予置,即当LDN=0时,禁止计数,输入ABCD上的数据在时钟脉冲上升沿予置到计数器上;如果在时钟脉冲上升沿来到以前LDN=1,则计数工作不受影响。
2个高电平有效允许输入(ENP和ENT)和行波进位(RCO)输出使计数器容易级联,ENT、ENP都为高电平时,计数器才能计数。
图6-9为使用2个74160同步级联设计的六十进制进制计数器秒计数器模块的原理图,由前面的分析知分和秒计数器都是模M=60的计数器,其规律为00→01→…→58→59→00…,此底层计数器模块的设计中保留了一个计数使能端CEN、异步清零端Clrn和进位输出端Tc,这三个引脚是为了实现各计数器模块之间进行级联,以便实现校时控制而预留的。
根据计数器置数清零法的原理,第一级计数器置数输入端的逻辑表达式为:Tc1=not(D1•D3•CEN) (6-1)第二级计数器置数输入端的逻辑表达式为:Tc2=not(D1•D3•D4•D6•CEN) (6-2)如图6-9所示。
从图6-9中可以知道当秒计数到010110012(59)时将产生一个进位输出Tc,此输出同时反馈至其置数输入端(LDN)实现0置数。
图6-9 六十进制进制计数器原理图在QuartusII中,利用原理图输入法完成源程序的输入、编译和仿真。
六十进制可预置BCD码计数器子模块count60_160.bdf的仿真输出波形文件如图6-10(a)所示。
分析知仿真结果,当计数输出D[7..0]=59时,进位输出Tc=1,结果正确无误。
可将以上设计的六十进制可预置BCD码计数器子模块设置成可调用的元件count60_160.sym,以备高层设计中使用,其元件符号图如图6-10(b)所示。
(a) (b)图6-10六十进制可预置BCD码计数器子模块(a)仿真输出波形;(b)元件符号图3)分计数器模块的EDA设计分计数器模块和秒计数器模块的电路结构和工作原理完全相同。
分计数器模块的是使能输入CEN为秒计数器模块进位输出Tc,分计数器模块能计数和显示0~59分,分计数器模块的进位输出Tc,每小时一个脉冲。
4)时计数器模块的EDA设计时计数器模块由分和秒级使能,每小时只一个脉冲。
当该条件满足时,74160的ENT 变为高电平,即分和秒级为“59分59秒”。
时计数器模块能计数和显示0~23小时.同样可用2片74160同步级联设计成二十四进制可预置BCD码计数器。
由前面的分析时计数器是模M=24的计数器,其规律为00→01→…→22→23→00…,即当数字种运行到“23时59分59秒”时,在下一个秒脉冲作用下,数字种显示“00时00分00秒”。
为实现校时控制,时计数器模块的设计中仍保留了一个计数使能端CEN、异步清零端Clrn和进位输出端Tc,这三个引脚也是为了实现各计数器模块之间进行级联。
小时置数控制端LDN=D1•D0•D5•CEN,从图6-9中可以知道当秒计数到001000112(23)时将产生一个进位输出Tc,此输出同时反馈至其置数输入端(LDN)实现0置数。
图6-11 二十四进制时计数器模块原理图最后,在QuartusII中,利用原理图输入法完成源程序的输入、编译和仿真。
二十四进制可预置BCD码计数器子模块count24_160.bdf的仿真输出波形文件如图6-12(a)所示。
分析知仿真结果,当计数输出D[7..0]=23时,进位输出Tc=1,结果正确无误。
可将以上设计的六十进制可预置BCD码计数器子模块设置成可调用的元件count24_160.sym,以备高层设计中使用,其元件符号图如图6-12(b)所示。
(a) (b)图6-12二十四进制可预置BCD 码计数器子模块(a) 仿真输出波形;(b )元件符号图 3数字钟校时单元电路模块1)原理说明当刚接通电源或走时出现误差时都需要对时间进行校正,对时间的校正是通过截断正常的计数通路,而用频率较高的方波信号加到其需要校正的计数单元的输入端,这样可以很快使校正的时间调整到标准时间的数值,这时再将选择开关打向正常时就可以准确走时了。
下图所示为时、分、秒校时的校时电路。
在校时电路中,其实现方法是采用高速计数脉冲和计数使能来实现校时的,整个校时单元电路模块可分为两个子模块,一个是模式计数译码器子模块,一个是输出使能选择。
2)模式计数译码器子模块的设计模式计数译码器子模块的输入数字种的功能设置键Mode 按钮,第一次按Mode 按钮时为校秒状态, 按第二次为校分状态, 按第三次为校时状态,按第四次为计时状态,如此循环。
刚刚通电时MODE=0为计时状态。
为了选择不同的功能设置, 模式计数译码器子模块由宏模块74160组成的2位二进制计数器和一个2-4译码器,形成了计数译码器,该电路产生时分秒计数单元设置计数值的使能控制信号,其相应的功能如表6-1所示,另外在对分进行校时时应不能影响时计数,当校分时如果产生进位应该不影响时计数的计数。
根据表6-1可得输出信号的逻辑表达式如下:SEL=21Q Q +;S_EN=12Q Q ∙;M_EN=12Q Q ∙;H_EN==Q2•Q1 (6-3) 据此可在QuartusII 中设计出模式计数译码器子模块的原理图,如图6-13所示。
图6-13模式计数译码器子模块的原理图图6-13中SEL为功能选择信号,当SEL=1时,系统执行正常计时功能;当SEL=0时,系统执行校时功能。
H_EN、M_EN、S_EN分别时分秒计数单元设置计数值的使能选择信号,高电平有效。
图6-14为其编译仿真后的输出时序波形图和生成的元件符号图。