基于FPGA的数字钟设计
基于FPGA的数字时钟课程设计

西安郵電學院基于FPGA的数字时钟成员:技术规范一、功能定义1、分频:在电子钟的设计中,涉及到的频率有三个:(1):1Hz的秒计时频率,用来进行秒计时;(2):4Hz的按键防抖频率;(3):1000Hz的循环扫描频率;因此在分频模块应实现将芯片中的高频率时钟分频得到上面的三个所需频2、控制:进行正常计时,时间调整,时间复位模式的选择:(1)时间初始复位;(2)选择秒时间调整的模式;(3)选择分时间调整的模式;3、计时:进行调整时间,正常计时;(1)正常计时;(2)调整秒计时;(3)调整分计时;4、选择输出:进行时间高低位的变换及循环扫描输出:(1)进行时间高低位的变换;设计思路:一、总体设计思路图:二、功能引脚定义1、总体引脚(1)K[1]:输入,控制是否进入调整模式,调时模式或调分模式。
(2)K[2]:输入,根据K1的选择进行加1调时。
(3)CLK:输入,1赫兹,控制秒钟的频率。
(4)CLK1K:输入,1K赫兹,控制时间的连续扫描输出。
(5)[7:0]LED:输出,七段显示译码管的输入。
(6)[5:0]SEG:输出,控制六个数码管的是否接通。
(7) SC:输入,时间复位。
2、(1)控制模块:输出控制信号和时分秒计时。
控制信号控制时分秒是否正常计时。
K[1]:输入,控制是否进入调整模式,调时模式或调分模式。
K[2]:输入,根据K1的选择进行加1调时。
SC:输入,时间复位。
[5:0]SEC:复位秒计时。
[5:0]MIN:复位、调时分计时。
[5:0]HOUR:复位、调时时计时。
KEN:控制是否进行正常及时、进入调时复位状态。
(2)计时模块秒计时:输出正常的秒计时或复位计时。
分计时:输出正常的分计时或复位计时或调时计时。
时计时:输出正常的时计时或复位计时或调时计时。
(3)时间扫描模块:利用高频率的时钟不断地循环扫描是分秒计时,以便循环译码;输出控制信号,控制数码管是否有效;此模块同时进行时间的高地位的计算与输出。
基于FPGA的电子钟设计报告

基于FPGA的电子钟设计报告一、FPGA的基本知识1、可编程逻辑器件的概况可编程逻辑器件主要分为FPGA和CPLD 两种,两者的功能基本相同。
FPGA--现场可编程门阵列的简称CPLD--复杂可编程逻辑器件的简称2、FPGA芯片及其最小系统(1)FPGA芯片它的外形与普通嵌入式处理器芯片相同采用PGA(Organic pin grid Array,有机管脚阵列)的封装形式,但可以通过烧写特殊程序改变其内部结构,实现专门的电路功能。
基于FPGA的数字时钟2019-11-23 21:36·电力源动一、FPGA的基本知识1、可编程逻辑器件的概况可编程逻辑器件主要分为FPGA和CPLD 两种,两者的功能基本相同。
FPGA--现场可编程门阵列的简称CPLD--复杂可编程逻辑器件的简称它的外形与普通嵌入式处理器芯片相同采用PGA(Organic pin grid Array,有机管脚阵列)的封装形式,但可以通过烧写特殊程序改变其内部结构,实现专门的电路功能。
二、FPGA的设计方法1、编程语言FPGA的主流程序设计语言主要有VHDL语言与Verilog语言两种。
本课题采用VHDL语言进行编写。
VHDL--用简洁明确的源代码来描述复杂的逻辑控制。
它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。
Verilog--一种基本语法与C语言相近,相比较于C语言更容易理解,2、图形化程序设计(设计效率低)三、软件开发环境QuartusII是Altera提供的FPGA开发集成环境,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。
它完全支持VHDL设计流程,其内部嵌有VHDL逻辑综合器。
四、数字钟功能模块认识数字时钟的设计采用了自顶向下分模块的设计。
底层是实现各功能的模块,各模块由VHDL语言编程实现顶层采用原理图形式调用。
具体的设计框图:各模块原理剖析:(1)在七段数码管上具有时--分--秒的依次显示;(2)时、分、秒的个位记满十向高位进一,分、秒的十位记满五向高位进一,小时按24进制计数,分、秒按60进制计数;(3)整点报时,当计数到整点时扬声器发出响声;(4)时间设置:可以通过按键手动调节秒和分的数值。
基于fpga的数字钟电路设计

基于fpga的数字钟电路设计
随着电子技术和航空电子技术的发展,高精度的电子时钟发挥着越来越重要的作用。
面对众多的时间选择方式,FPGA技术为企业提供了新的解决方案。
本文旨在设计一种基于FPGA技术的数字时钟电路,以满足工业系统时间测量和管理的需求。
数字时钟电路的设计主要分为三个方面:晶振、时钟频率调整以及I/O管脚分配。
首先,选用封装形式为HC49-S的晶振器,其主要特征包括频率精度低至±50ppm、温度范围
宽至−10℃至+70℃、工作温度可升至105℃以及动态特性良好等。
其次,进行时钟频率
调节用FPGA。
FPGA的时钟频率调节模块采用MMC和VCO技术实现时钟频率抢断,可对晶
振的稳定频率进行调节,从而获得高精度的时钟信号。
最后,通过FPGA的I/O管脚分配
完成时钟信号输出,从而将数字信号变换为时间信号,实现时间数据的采集和处理。
基于FPGA技术的数字时钟电路可以有效地满足工业系统实时时间测量和管理的需求,实现工业系统时间计量技术的发展。
该电路具有稳定高效、体积小、功耗低以及现场可实
现调整参数等优缺点,在工业领域具有很高的应用前景。
基于FPGA的数字钟设计

基于FPGA的数字钟设计摘要:现实生活中经常会出现需要用时间测定参数数值的情况,服务日常生活和生产。
基于FPGA设计数字电路产品已经成为当前的重要设计方法。
本文设计选用了Quartus软件环境,运用描述逻辑Verilog HDL,由上至下的模式,基于FPGA完成了数字时钟的设计方案。
本次设计成果采用按键对闹钟的起止点进行控制,能够显示时,分,秒等并且能够实现整点报时。
其中的FPGA技术就是本次试验的亮点之一,其设计易于学习,各个模块分工清晰,在模拟软件上很容易运行,还能够适配于许多种环境,因此总体的系统性能指标还是相当有保证的。
关键词:数字钟;FPGA;Verilog HDL;Quartus1.1 课题研究背景在现代社会,数据集成电路已广泛运用于日常日常生活的各行各业。
数据集成电路也在不停拆换。
从起初的整流管、电子管、大中小型集成电路发展趋势为具备特大型集成电路和独特作用的各类专用型集成电路。
可是,因为微电子技术科技进步的迅猛发展,集成电路设计方案和生产制造工作中再也不会由半导体生产商独立担负。
系统软件室内设计师更喜欢立即设计方案专用型集成电路(ASIC)处理芯片,并马上资金投入具体运用,因而发生了当场可编程逻辑机器设备(FPLD),在其中应用最普遍的是当场可编门阵列(FPGA)。
数字钟是一种选用数字电路设计技术性完成时、分、秒计时的装置,在完成数据与此同时表明时、分、秒的准确时间和精确校正时,体积小、重量轻、抗干扰能力强、对自然环境需要高、高精密、易于开发设计等与在办公系统系统软件等众多行业运用非常普遍的传统式表壳式机械手表对比,数字表更精确、形象化,因为沒有机械设备装置,使用期限长。
1.2 国内外研究现状近些年来已经有许多技术人员针对电子器件以及时钟等技术进行了研究,但真正意义上的数字钟表起源于50年代或60年代。
伴随着在我国数字钟表电源电路销售市场的迅速发展趋势,尤其是十二五阶段经济发展方法这一领土主权主旋律早已明确,与之有关的关键生产制造技术运用和产品研发将变成领域公司关心的焦点。
基于FPGA数字时钟

基于FPGA的数字时钟设计一、课程设计目的1、进一步熟悉QuartusⅡ的软件使用方法;2、熟悉可编程逻辑器件的开发流程及硬件测试方法;3、熟悉基于FPGA的综合数字系统设计方法;二、设计任务设计一台可以显示时、分、秒的数字钟。
如图1所示为基于FPGA的数字钟设计的系统框图。
图1 数字钟系统三、设计要求1、能直接显示小时、分、秒,其中小时为以二十四为计数周期;2、能够显示日期(即年、月、日),且要求在显示时钟的数码管上显示日期,即时钟数码管与日期数码管复用;3、年、月、日要严格按照实际日期,例如1月31天,4月30天,2月闰年29天等;4、当数字钟发生走时错误时,要求电路有校时功能,可以对时、分单独校正,且校正时间时系统时钟不工作;5、当日期发生错误时,要求有校正日期功能,可以对年、月、日单独校正,且矫正日期时时钟系统仍然工作;6、具有闹钟功能,即输入想要定时的时间,当时钟到达该时间时报警,系统可由灯亮代表报警信号。
四、设计内容1、时间计数模块本次是将秒分时各个模块分开进行设计,用秒的进位作为分模块的脉冲,用分的进位作为是模块的脉冲。
秒进位的仿真波形程序:秒的程序module miao(clk,gdata,ddata,en,cl,clr);input clk;input en;input clr;output [3:0] ddata;output [3:0] gdata;output cl;reg [7:0] q;reg cl;assign ddata=q%10;assign gdata=q/10;always @(negedge clk or posedge clr)beginif(clr==1)q=0;elsebeginif(en==1)beginif(q<59)beginq=q+1;cl=0;endelsebeginq=0;cl=1;endendendendendmodule分模块和时模块的程序一秒程序类似,只是进位计数不一样。
基于FPGA的数字钟设计

摘要伴随着集成电路技术的发展, 电子设计自动化(EDA)技术逐渐成为数字电路设计的重要手段。
基于FPGA的EDA技术的发展和应用领域的扩大与深入,使得EDA技术在电子信息,通信,自动控制,计算机等领域的重要性日益突出。
本设计给出了一种基于FPGA的多功能数字钟方法,采用EDA作为开发工具,VHDL语言和图形输入为硬件描述语言,QuartusII作为运行程序的平台,编写的程序经过调试运行,波形仿真验证,下载到EDA实验箱的FPGA芯片,实现了设计目标。
系统主芯片采用CycloneII系列EP2C35F672C8。
采用自顶向下的设计思想,将系统分为五个模块:分频模块、计时模块、报时模块、显示模块、顶层模块。
用VHDL语言实现各个功能模块, 图形输入法生成顶层模块. 最后用Q uartusII软件进行功能仿真,验证数字钟设计的正确性。
测试结果表明本设计实现了一个多功能的数字钟功能,具有时、分、秒计时显示功能,以24小时循环计时;具有校正小时和分钟的功能;以及清零,整点报时功能。
关键词:EDA技术;FPGA;数字钟;VHDL语言;自顶向下AbstractAccompanied by the developmentof integrated circuit tec hnology, electronic designautomation (EDA) technology is becoming an important meansof digitalcircuitdesign. FPGA EDA technology development and expansion ofapplic ationfields and in-depth,the importance of EDA technologyin the fieldofelectronic information,communication, automatic control, computer, etc.havebecome increasingl yprominent.This design gives aFPGA-basedmultifunctional digi talclock using EDA as a development tool,VHDLlanguage andgraphicalinput hardwaredescriptionlanguage, the QuartusIIasaplatform for runningthe program, written procedures debugging andrunning, thewaveform simulation do wnloaded tothe FPGA chip to achievethe design goals.Themainsystemchip CycloneIIseries EP2C35F672C8. Ado pted a topdwn designideas,thesystem is divided into five modules: frequencymodule,timing module, timermodule, di splay module,the top-levelmodule. WithVHDL various fun ctionalmodules,graphical input method to generate the top-levelmodule. LastQuartusII undersimulation, tover ify the correctness ofthedigitalclockdesign.Thetest results show that thedesign of amultifunctional digitalclock,with seconds time display, 24-hour cyclet iming; has a school,cleared, and the whole pointtimekeeping functions.Key words: EDA technology; FPGA; VHDL language; top-down;di gital clock目录1 绪论............................................................................................. 错误!未定义书签。
基于XilinxFPGA的数字钟设计

基于FPGA的多功能数字钟一、设计题目基于Xilinx FPGA的多功能数字钟设计二、设计目的1.掌握可编程逻辑器件的应用开发技术——设计输入、编译、仿真和器件编程;2.熟悉一种EDA软件使用;3.掌握Verilog设计方法;4.掌握分模块分层次的设计方法;5.用Verilog完成一个多功能数字钟设计;6.学会FPGA的仿真。
三、设计内容设计实验项目九多功能电子钟✧功能要求:利用实验板设计实现一个能显示时分秒的多功能电子钟,具体要求为:基本功能:1)准确计时,以数字形式显示时、分、秒,可通过按键选择指示当前显示时间范围模式;2)计时时间范围 00:00:00-23:59:593)可实现校正时间功能;4)可通过实现时钟复位功能:00:00:00扩展功能:1)定时报:时间自定(不要求改变),闹1分钟(1kHz)---利用实验板LED或外接电路实现。
2)仿广播电台正点报时:XX:59:[51,53,55,57(500Hz);59(1kHz)] ---利用实验板LED或外接电路实现。
3)报整点时数:XX:00:[00.5-XX.5](1kHz),自动、手动---利用实验板LED或外接电路实现。
4)手动输入校时;5)手动输入定时闹钟;6)万年历;7)其他扩展功能;✧设计步骤与要求:1)计算并说明采用Basys2实验板时钟50MHz实现系统功能的基本原理。
2)在Xilinx ISE13.1 软件中,利用层次化方法,设计实现模一百计数及显示的电路系统,设计模块间的连接调用关系,编写并输入所设计的源程序文件。
3)对源程序进行编译及仿真分析(注意合理设置,以便能够在验证逻辑的基础上尽快得出仿真结果)。
4)输入管脚约束文件,对设计项目进行编译与逻辑综合,生成下载所需.bit类型文件。
5)在Basys2实验板上下载所生成的.bit文件,观察验证所设计的电路功能。
四、总体设计思路主体分为分频模块,正常时间模块(包含两个模60计数器和一个模24计数器子模块),闹钟模块(分为一个模60计数器模块,一个模24计数器模块,四个比较器模块),电台报时模块,数码管显示模块(分为模式选择模块,片选信号及扫描程序模块,和译码模块)。
基于FPGA的数字时钟设计

基于FPGA的数字时钟设计一、实验设计目的:1、进一步熟悉QuartusⅡ的软件使用方法;2、熟悉可编程逻辑器件的开发流程及硬件测试方法;3、熟悉基于FPGA的综合数字系统设计方法;二、设计任务及要求:设计一台可以显示时、分、秒的数字钟。
如图:图1 数字钟系统要求:1、能直接显示小时、分、秒,其中小时为以二十四为计数周期;2、当电路发生走时错误时,要求电路有校时功能,可以对时、分单独校正;3、具有闹钟功能,即输入想要定时的时间,当时钟到达该时间时报警,系统可由灯亮代表报警信号。
4、能显示年月日,使其具有日历功能,并能完成对三种日期状态的校正。
三、设计思路:在24进制程序的基础上设计时钟功能,并加入校正模块以实现对时钟的校正。
在实现时钟功能后添加闹钟模块,并用高位信号表示报时信号。
根据时钟设计方法设计日历功能,同样也加入校正模块。
并且根据日期的进位特点(3月31日,4月30日)完善对日历功能的设计。
四、设计原理:1、根据24进制与60进制的进位信号,完成分钟位,小时位的显示,使其构成基本时钟功能。
2、根据24小时的进位信号count,进行年月日功能的实现。
设置K2与K1为日历与时钟的切换键。
3、在时钟电平作用下,设计两个高低电位JZ1与JZ2电平与K2与K1信号同时控制小时位、分钟的校正。
4、用时钟电平clk2作为闹钟的进位信号,设置K2与K1为闹钟和时钟的切换键。
设置MZ1与MZ2控制闹钟的分钟位与小时位,进行闹钟的设定。
5、在K2、K1与使能信号控制下,设置JZ1与JZ2进行对日历的日与月的校正;JZ1与JZ2进行对年份的个位与十位的校正。
6、最终用K1、K2的四种模式控制显示闹钟、时钟与日历的切换显示模块。
五、设计过程:当时间为23:59:59则进位端count为1,此时判别月份与日期,进行相应的日进位与月进位。
模块2:校准与闹钟设置该程序段为分与时校正,当K1=K2=0时,JZ1为1时,进行分校准;JZ2为1时,进行时校准。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌大学实验报告学生姓名:邓儒超学号:6100210045 专业班级:卓越通信101 实验类型:□验证□综合□√设计□创新实验日期:2012.10.28 实验成绩:实验三数字钟设计一、实验目的(1)掌握数字钟的设计二、实验内容与要求(1)设计一个数字钟,要求具有调时功能和24/12进制转换功能(2)进行波形仿真,并分析仿真波形图;(3)下载测试是否正确;三、设计思路/原理图本次数字钟的设计采用了自顶向下分模块的设计。
底层是实现各功能的模块,各模块由vhdl语言编程实现:顶层采用原理图形式调用。
其中底层模块包括秒、分、时三个计数器模块、按键去抖动模块、按键控制模块、时钟分频模块、数码管显示模块,其中,时计数器模块又包括24进制计数模块、12进制计数模块、24/12进制转换模块。
设计框图如下:由图可以清晰的看到数字钟系统设计中各功能模块间连接关系。
系统时钟1KHZ经过分频后产生1秒的时钟信号,1秒的时钟信号作为秒计数模块的输入信号,秒计数模块产生的进位信号作为分计数模块的输入信号,分计数模块的进位信号作为时计数模块的输入信号。
秒计数模块、分计数模块、时计数模块的计数输出分别送到显示模块。
由于设计中要使用按键进行调节时间,而按键的动作过程中存在产生得脉冲的不稳定问题,所以就牵扯到按键去抖动的问题,对此系统中设置了按键去抖动模块,按键去抖动模块产生稳定的脉冲信号送入按键控制模块,按键控制模块根据按键的动作对秒、分、时进行调节。
原理图如下:四、实验程序(程序来源:参考实验室里的和百度文库的稍加改动,还有自己写的)1、分频模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpin ISPORT(CLK:IN STD_LOGIC;CLK1:OUT STD_LOGIC);END fenpin;ARCHITECTURE behav OF fenpin ISSIGNAL X,CNT:STD_LOGIC_VECTOR(11 DOWNTO 0);BEGINP1:PROCESS(CLK)BEGINX<="001111101000";--1000分频IF CLK'EVENT AND CLK = '1' THEN CNT<=CNT+1;IF CNT=X-1 THEN CLK1<='1';CNT<="000000000000";ELSE CLK1<='0';END IF;END IF;END PROCESS;END behav;2、60进制计数器(秒、分计数器)模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count60 ISPORT(EN,RST,CLK1: IN STD_LOGIC;Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COUT: OUT STD_LOGIC);END count60;ARCHITECTURE behav OF count60 ISSIGNAL J : STD_LOGIC_VECTOR(7 DOWNTO 0); --8位BCD计数值SIGNAL GW,SW : STD_LOGIC_VECTOR(3 DOWNTO 0);--计数器的个,十BEGINP2:PROCESS(EN,RST,CLK1)BEGINGW<=J(3 downto 0);SW<=J(7 downto 4);IF RST='1' THEN J<=(others=>'0');ELSIF CLK1'EVENT AND CLK1='1' THENIF EN='1' THENIF J<"01011001" THENIF GW=9 THEN --个位为9时加7调整J<=J+7;ELSE J<=J+1;END IF;ELSE J<=(others=>'0');END IF;END IF;IF J ="01011001" THENCOUT <='1'; ELSE COUT<='0';END IF;END IF;Q<=J;END PROCESS;END behav;3、24进制计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count24 ISPORT(EN,RST,CLK1: IN STD_LOGIC;Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COUT: OUT STD_LOGIC);END count24;ARCHITECTURE behav OF count24 ISSIGNAL J : STD_LOGIC_VECTOR(7 DOWNTO 0); --8位BCD计数值SIGNAL GW,SW : STD_LOGIC_VECTOR(3 DOWNTO 0);--计数器的个,十BEGINP2:PROCESS(EN,RST,CLK1)--计数BEGINGW<=J(3 downto 0);SW<=J(7 downto 4);IF RST='1' THEN J<=(others=>'0');ELSIF CLK1'EVENT AND CLK1='1' THENIF EN='1' THENIF J<"00100011" THENIF GW=9 THEN --个位为9时加7调整J<=J+7;ELSE J<=J+1;END IF;ELSE J<=(others=>'0');END IF;END IF;IF J ="00100011" THENCOUT <='1'; ELSE COUT<='0';END IF;END IF;Q<=J;END PROCESS;END behav;4、12进制计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count12 ISPORT(EN,RST,CLK1: IN STD_LOGIC;Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COUT: OUT STD_LOGIC);END count12;ARCHITECTURE behav OF count12 ISSIGNAL J : STD_LOGIC_VECTOR(7 DOWNTO 0); --8位BCD计数值SIGNAL GW,SW : STD_LOGIC_VECTOR(3 DOWNTO 0);--计数器的个,十BEGINP2:PROCESS(EN,RST,CLK1)--计数BEGINGW<=J(3 downto 0);SW<=J(7 downto 4);IF RST='1' THEN J<=(others=>'0');ELSIF CLK1'EVENT AND CLK1='1' THENIF EN='1' THENIF J<"00010010" THENIF GW=9 THEN --个位为9时加7调整J<=J+7;ELSE J<=J+1;END IF;ELSE J<="00000001";END IF;END IF;IF J ="00010010" THENCOUT <='1'; ELSE COUT<='0';END IF;END IF;Q<=J;END PROCESS;END behav;5、24/12进制转换模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY control ISPORT(TMODE: IN STD_LOGIC;C24: IN STD_LOGIC_VECTOR(7 DOWNTO 0);C12: IN STD_LOGIC_VECTOR(7 DOWNTO 0);Q: BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);COUT: BUFFER STD_LOGIC);END control;ARCHITECTURE behav OF control ISBEGINP1:PROCESS(TMODE,C24,C12,Q,COUT)BEGINIF TMODE='0' THENQ<=C24;ELSE Q<=C12;END IF;COUT<='0';IF TMODE='1' THENIF C24>"00010010" THENCOUT<='1';END IF;END IF;END PROCESS;END behav;6、按键去抖模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qudou isport(clk,k1,k2,k3,k4:in std_logic;o1,o2,o3,o4:out std_logic);--设置按键输入信号输出端口end;architecture beh of qudou isbeginprocess(clk,k1,k2,k3,k4)variable cant1:integer;variable cant2:integer;variable cant3:integer;variable cant4:integer;beginif clk'event and clk='1' thenif k1='1' then cant1:=0;end if;--设置计数初值if k2='1' then cant2:=0;end if; --设置计数初值if k3='1' then cant3:=0;--设置计数初值end if;if k4='1' then cant4:=0;end if; --设置计数初值if cant1>2499999 then o1<='0';else o1<='1';--延时0.5send if;if cant2>2499999 then o2<='0';else o2<='1'; --延时0.5send if;if cant3>2499999 then o3<='0';else o3<='1'; --延时0.5send if;if cant4>2499999 then o4<='0';else o4<='1'; --延时0.5send if;cant1:=cant1+1; --加一计数cant2:=cant2+1; --加一计数cant3:=cant3+1; --加一计数cant4:=cant4+1; --加一计数end if;end process;end beh;7、按键控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY control2 ISPORT(CLK,CHANGE,CCLK: IN STD_LOGIC;CLK1: OUT STD_LOGIC);END control2;ARCHITECTURE behav OF control2 ISSIGNAL M:STD_LOGIC;BEGINPROCESS(CLK,CHANGE,CCLK)BEGINIF CHANGE'EVENT AND CHANGE='1' THENM<=NOT(M);END IF;IF M='1' THENCLK1<=CCLK;ELSECLK1<=CLK;END IF;END PROCESS;END behav;8、数码管显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DISPLAY ISPORT(CLK:IN STD_LOGIC;SEC:IN STD_LOGIC_VECTOR(7 DOWNTO 0);MIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);HOUR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);sel0,sel1,sel2:buffer STD_LOGIC;SG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END DISPLAY;ARCHITECTURE behav OF DISPLAY ISSIGNAL A: STD_LOGIC_VECTOR(3 DOWNTO 0);--计数器的个,十SIGNAL CNT8: STD_LOGIC_VECTOR(2 DOWNTO 0);--数码管选择BEGINP3:PROCESS(CLK) --数码管控制BEGINIF CLK'EVENT AND CLK='1' THENIF CNT8<"111" THEN CNT8 <=CNT8+1;ELSE CNT8<=(OTHERS=>'0');END IF;END IF;CASE CNT8 IS --时、分、秒分别送数码管动态显示WHEN "111" => sel2<='0';sel1<='0';sel0<='0';A<=HOUR(7 downto 4);WHEN "110" => sel2<='0';sel1<='0';sel0<='1';A<=HOUR(3 downto 0);WHEN "101" => sel2<='0';sel1<='1';sel0<='0';A<="1111";WHEN "100" => sel2<='0';sel1<='1';sel0<='1';A<=MIN(7 downto 4);WHEN "011" => sel2<='1';sel1<='0';sel0<='0';A<=MIN(3 downto 0);WHEN "010" => sel2<='1';sel1<='0';sel0<='1';A<="1111";WHEN "001" => sel2<='1';sel1<='1';sel0<='0';A<=SEC(7 downto 4);WHEN "000" => sel2<='1';sel1<='1';sel0<='1';A<=SEC(3 downto 0);WHEN OTHERS =>NULL;END CASE;END PROCESS ;P4:PROCESS(A)--七段译码BEGINCASE A ISWHEN "0000" =>SG<="00111111"; WHEN "0001" =>SG<="00000110";WHEN "0010" =>SG<="01011011"; WHEN "0011" =>SG<="01001111";WHEN "0100" =>SG<="01100110"; WHEN "0101" =>SG<="01101101";WHEN "0110" =>SG<="01111101"; WHEN "0111" =>SG<="00000111";WHEN "1000" =>SG<="01111111"; WHEN "1001" =>SG<="01101111";WHEN "1111" =>SG<="01000000";WHEN OTHERS=>NULL;END CASE;END PROCESS;END behav;五、实验步骤1.打开Quartus II,新建一个工程,然后在工程里建立VHDL文件,把各个模块程序输入进去,保存,编译。