基于FPGA的VerilogHDL数字钟设计-
基于FPGA的数字钟设计(VerilogHDL语言实现)

基于FPGA的数字钟设计摘要:本设计为一个多功能的数字钟,具有时、分、秒计数显示功能,以12小时循环计数。
本设计采用EDA技术,以硬件描述语言VerilogHDL为系统逻辑描述手段设计文件,在QUARTUS II工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于FPGA的数字钟。
系统主芯片采用EP1K100QC208-3,由时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。
经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,由按键输入进行数字钟的清零功能。
关键词:数字钟;硬件描述语言;VerilogHDL;FPGA;引言:现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。
支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。
前者以微细加工技术为代表,而后者的代表就是电子设计自动化(electronic design automatic,EDA)技术。
本设计采用的VerilogHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。
ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器。
而FPGA是特殊的ASIC芯片,与其他的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。
在控制系统中,键盘是常用的人机交换接口,当所设置的功能键或数字键按下的时候,系统应该完成该键所设置的功能。
因此,键信息输入是与软件结构密切相关的过程。
根据键盘的结构不同,采用不同的编码方法。
但无论有无编码以及采用什么样的编码,最后都要转换成为相应的键值,以实现按键功能程序的转移。
数字闹钟的FPGA实现(Verilog)

闹钟的FPGA实现一.设计目的及总述:本次实验选择用FPGA实现一个闹钟。
它的功能有:1.时钟2.可以用按键快慢调整时钟时间3.可以设定闹钟并在时间到达设定闹钟时间时响起卡农音乐一分钟4.整点报时,响一声来报时系统一共有五个按键,分别命名为switch_mode,switch_enter,switch_pick,switch_down,switch_up。
时钟,调时,设定闹钟通过LCD1602进行显示,整点报时声和闹钟声通过蜂鸣器发出。
其中:本次实验的闹钟用Verilog语言进行设计,由于实验在Xilinx开发板上LCD1602显示模块几经调试显示都有问题,而实验的截止日期又极其接近了故最后选择在我购买的Altera 开发板上进行实现。
由于Altera公司FPGA使用Quartus II软件进行编译下载,所以把原来在ISE软件上以schematic方式实现的顶层原理图对应自动生成的verilog代码更改后添加进Quartus工程中使用。
所需要的修改仅为将顶层原理图中的OR2例化语句改为or(输出,输入1,输入2),并把系统时钟设为50MHZ,其他各模块代码不需进行更改。
二.仿真过程在几经更改之下,更由于在两种系统下的调试,使得仿真变得难以进行,此次试验针对各模块(不包括分频模块:fre_divider)的仿真结果难以找到了而且ISE9.1i十分难用,经常报各种错,因此在这里只选择其中比较重要的控制模块(controller)和时钟模块(timer),调时(快慢)模块(time_adjust)的仿真结果以说明本实验的仿真过程。
Controller:Timer:Time_adjust:三.系统总图即各模块Verilog代码和说明(参考对代码的详细注释):1.各模块之间连线图和对应的Verilog代码:Clock.v:module clock(clk_50m, //在本次实验所用的Altera开发版上,系统时钟为50MHZ rst, //复位键switch_down, //向下调整,设定switch_enter, //确认完成调整,设定switch_mode, //选择系统出于何种模式:时钟,调时,设定闹钟switch_pick, //选择调整,设定的对象:时,分,秒// switch_up, //向上调整,设定beep, //蜂鸣器lcd_d, //lcd1602 d7-d0管脚lcd_e, //lcd1602 en管脚lcd_rs, //lcd1602 rs管脚lcd_rw); //lcd1602 rw管脚input clk_50m;input rst;input switch_down;input switch_enter;input switch_mode;input switch_pick;//input switch_up;output beep;output [7:0] lcd_d;output lcd_e;output lcd_rs;output lcd_rw;//以下声明的线型量用于连接系统各模块 wire [7:0] XLXN_4;wire [7:0] XLXN_5;wire [7:0] XLXN_6;wire [7:0] XLXN_7;wire [7:0] XLXN_8;wire [7:0] XLXN_9;wire [7:0] XLXN_10;wire [7:0] XLXN_11;wire [2:0] XLXN_14;wire XLXN_15;wire XLXN_16;wire XLXN_17;wire XLXN_19;wire [5:0] XLXN_20;wire [5:0] XLXN_21;wire [5:0] XLXN_22;wire XLXN_24;wire [5:0] XLXN_33;wire [5:0] XLXN_34;wire XLXN_36;wire [5:0] XLXN_37;wire [5:0] XLXN_39;wire [5:0] XLXN_40;wire XLXN_50;wire XLXN_51;reg clk_25m;wire switch_up;assign switch_up=1;//由于系统本身是设计在实验室的板子上(25MHZ)上,所以现在把50MHZ系统时钟//二分频得到25MHZ时钟,这样就不用更改各子模块always@(posedge clk_50m)beginif(!rst)clk_25m<=0;elseclk_25m<=~clk_25m;end//控制模块,控制系统出于三种状态之一:时钟,调时,设定闹钟。
FPGA Verilog时钟设计

基于FPGA的电子时钟设计1、设计目的:(1)掌握Verilog HDL模块的基本结构(2)掌握计数器的设计方法(3)掌握分频器的设计方法(4)掌握模块的调用方法(5)掌握基于Quartus II的CPLD/FPGA开发流程2、设计内容:(1)设计有两个数码管能够实现秒钟显示,数字一秒钟变化一次。
(2)按下复位键时,计时器所有能够复位清零。
(3)利用Quartus II软件进行综合、适配3、设计方案(1)编写题目要求的程序;(2)按照要求将相关程序进行检测和调试,运行正确的程序;(3)程序完成后,将其与开发板连接;(4)下载程序到芯片内;(5)观察程序功能是否成功实现。
4、总体结构设计总体结构设计如上图所示,从开发板提供的6MHz时钟信号分频得到周期为1s的控制信号,控制计数器改变状态,秒钟利用模60的BCD码计数器实现,BCD码通过4-7译码器译码后驱动两个数码管显示。
5、系统模块化设计5.1 分频器根据需求分析的要求,从6MHz系统时钟分频得到1Hz(周期1s)的控制信号,利用计数器实现分频然后能够异步复位。
程序入下:module clock(clk,rest,clk_1s);input clk;input rest;output clk_1s;reg clk_1s;integer count=0;always@(posedge clk or negedge rest)beginif(rest==0)begincount=0;clk_1s=0;endelsebeginif(count==2999999)begincount<=0;clk_1s<=~clk_1s;endelse count=count+1;endendendmodule5.2 模60的BCD加法计数器模60BCD码加法计数器,计数器分为高4位与低4位分别控制,低4位每秒钟加1,变化状态为0~9,低4位状态变化到9时,高4位加1,变化状态为0~2。
VHDL语言数字时钟论文-基于FPGA的具有闹钟和校时功能的数字钟设计

VHDL语言数字时钟论文-基于FPGA的具有闹钟和校时功能的数字钟设计实验名称:基于FPGA的具有闹钟和校时功能的数字钟设计一、设计内容和要求实验要求使用 VHDL进行多功能时钟的设计具体要求如下:1.能将基本的小时、分钟、及秒钟显示在数码管上。
2(能利用拨码开关进行时间的校正。
3.具有整点报时和闹钟的功能。
二、 FPGA简介以硬件描述语言,Verilog或VHDL,所完成的电路设计~可以经过简单的综合与布局~快速的烧录至 FPGA 上进行测试~是现代 IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路,比如AND、OR、XOR、NOT,或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面~这些可编辑的元件里也包含记忆元件例如触发器,Flip,flop,或者其他更加完整的记忆块。
FPGA采用了逻辑单元阵列LCA,Logic Cell Array,这样一个概念~内部包括可配臵逻辑模块CLB,Configurable Logic Block,、输入输出模块IOB,Input Output Block,和内部连线,Interconnect,三个部分。
现场可编程门阵列,FPGA,是可编程器件~与传统逻辑电路和门阵列,如PAL~GAL及CPLD器件,相比~FPGA具有不同的结构。
FPGA利用小型查找表,16×1RAM,来实现组合逻辑~每个查找表连接到一个D触发器的输入端~触发器再来驱动其他逻辑电路或驱动I/O~由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块~这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的~存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式~并最终决定了FPGA所能实现的功能~FPGA允许无限次的编程。
FPGA基本特点采用FPGA设计ASIC电路(专用集成电路,~用户不需要投片生产~就能得到合用的芯片。
基于Verilog HDL语言的数字钟(DE2)设计

《EDA技术与Verilog HDL》课程实验报告实验项目名称:基于Verilog HDL语言的数字钟(DE2)设计一、实验项目名称基于Verilog HDL语言的数字钟(DE2)开发板设计。
二、实验目的和要求(1)实验目的1.掌握Verilog HDL语言的基本运用;2.熟悉QuartusⅡ的简单操作;3.掌握一个基本EDA工程设计流程;4.掌握数字钟(DE2开发板)的设计基本原理。
(2)实验要求1.具有普通时钟的计时、调时功能。
2.能够下载到DE2开发板进行运行三、实验内容和原理数字钟共使用一类主要模块来实现其功能。
其总体结构如下图所示。
(1)时分秒计数器。
时计时器是一个24进制计数器,分秒则均为60进制计数器。
当秒计时器接受一个计时脉冲时,秒计数器从一计到六十,秒显像管依次显示00、01、02、03……,每当秒计时到00,就会有一个输出脉冲至分计时器,分计时器在原有基础上加一,显示器同样依次显示,每当分计时器计到00,相应的有一个脉冲使得时计数器在原有基础上加一,显示器一次显示00、01、……当计时器计数到23时59分59秒时,时分秒计数器自动归零。
(2)数码显像管译码模块。
该模块的功能就是将四位的8421码翻译成8位输出,用于显示各个数字,分为两组,高电平点亮,不同的数字对应不同的8位码。
因此程序设计需要考虑时分秒的每个数所对应的8位码。
例如:if(sec1[3:0]==4'b0000)//sec1 0-9beginHEX0[6:0]<=7'b1000000;endif(sec1[3:0]==4'b0001)beginHEX0[6:0]<=7'b1111001;endif(sec1[3:0]==4'b0010)beginHEX0[6:0]<=7'b0100100;(3)分频器模块开发板可用时钟为50MHZ,不可以用来做时钟输入,用作时钟信号前必须分频,该分频是用计数取反来分该总体模块实现功能:key2表示状态,key1表示转换改变分或时,key0表示在相应的状态下调整分或时。
基于FPGA的数字钟设计

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

多功能数字钟NJUST多功能数字钟设计基于VerilogHDL语言学院:电子工程与光电技术学院学号:************姓名:指导教师:2014年11月21日星期五摘要:基于FPGA平台,运用Verilog语言编写设计一多功能数字钟,包括基本的时钟,校时校分,整点报时功能。
扩展闹钟,秒表,万年历,键盘输入功能。
Abstract:FPGA-based platform, using Verilog language to design amulti-functional digital clock, including basic function of clock, school hours, school minutes,the whole point timekeeping. And extended function of alarm clock, stopwatch, calendar, keyboard input.关键词:多功能数字钟,可编程逻辑器件,EDA设计,VerilogKeywords:multi-functional digital clock, FPGA, EDA disign, Verilog目录1 设计要求 (2)2 设计方案选择及思路分析 (2)3 各子模块设计原理和分析 (3)3.1 分频模块 (3)3.2 时分秒模块 (5)3.3 时分调整模块 (6)3.4 报时模块 (7)3.5 扫描显示模块 (8)3.6 秒表模块 (9)3.7 闹钟模块 (10)3.8 万年历模块 (12)3.9 键盘扫描模块 (13)4 调试仿真 (15)5 编程下载 (16)6 结论 (17)7 参考文献 (17)8 实验感想 (17)9 源代码 (18)11 设计要求基于FPGA可编程逻辑器件,用quatusII软件设计一个多功能数字钟,其基本要求如下:1.有基础的计时显示功能,即时、分、秒显示在6个七段管上2.K0,K1,K2,K3分别为系统使能(暂停),时钟清零,校时,校分开关。
毕业设计论文:基于FPGA的数字时钟设计

第五章对全文的总结,对本系统功能实现以及制作过程中需要注意的方面,及整个系统软件编写中所吸取的经验教训进行论述,同时,也对整个研究应用进行展望。
第二章
2.1
运行环境设计采用quartus II软件实现,因此针对软件需要用到的一些功能在这里进行描述.
第三次革命就是单片机数码计时技术的应用使计时产品的走时日差从分级缩小到1600万秒从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式直观明了并增加了全自动日期星期的显示功能它更符合消费者的生活需求
基于FPGA的数字时钟设计
第一章
1.1.
在这个时间就是金钱的年代里,数字电子钟已成为人们生活中的必需品。目前应用的数字钟不仅可以实现对年、月、日、时、分、秒的数字显示,还能实现对电子钟所在地点的温度显示和智能闹钟功能,广泛应用于车站、医院、机场、码头、厕所等公共场所的时间显示。
在行为级描述中,Verilog HDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。
能够使用门和模块实例化语句在结构级进行结构描述。
如图显示了Verilog HDL的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。
Verilog HDL还具有内置逻辑函数,例如&(按位与)和|(按位或)。
设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。
能够使用内置开关级原语在开关级对设计完整建模。
同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。
Verilog HDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA的Verilog HDL数字钟设计
专业班级姓名学号
一、实验目的
1.掌握可编程逻辑器件的应用开发技术——设计输入、编译、仿真和器件编程;
2.熟悉一种EDA软件使用;
3.掌握Verilog设计方法;
4.掌握分模块分层次的设计方法;
5.用Verilog完成一个多功能数字钟设计;
6.学会FPGA的仿真。
二、实验要求
✧功能要求:
利用实验板设计实现一个能显示时分秒的多功能电子钟,基本功能:
1)准确计时,以数字形式显示时、分、秒,可通过按键选择当前显示时间围模式;
2)计时时间围 00:00:00-23:59:59
3)可实现校正时间功能;
4)可通过实现时钟复位功能:00:00:00
扩展功能:
5)定时报:时间自定(不要求改变),闹1分钟(1kHz)---利用板上LED或外接电路实
现。
6)仿广播电台正点报时:XX:59:[51,53,55,57(500Hz);59(1kHz)] ---用板上LED或
外接
7)报整点时数:XX:00:[00.5-XX.5](1kHz),自动、手动---用板上LED或外接
8)手动输入校时;
9)手动输入定时闹钟;
10)万年历;
11)其他扩展功能;
✧设计步骤与要求:
1)计算并说明采用Basys2实验板时钟50MHz实现系统功能的基本原理。
2)在Xilinx ISE13.1 软件中,利用层次化方法,设计实现模一百计数及显示的电
路系统,设计模块间的连接调用关系,编写并输入所设计的源程序文件。
3)对源程序进行编译及仿真分析(注意合理设置,以便能够在验证逻辑的基础上尽快
得出仿真结果)。
4)输入管脚约束文件,对设计项目进行编译与逻辑综合,生成下载所需.bit文件。
5)在Basys2实验板上下载所生成的.bit文件,观察验证所设计的电路功能。
三、实验设计
功能说明:实现时钟,时间校时,闹铃定时,秒表计时等功能
1.时钟功能:完成分钟/小时的正确计数并显示;秒的显示用LED灯的闪烁做指示;
时钟利用4位数码管显示时分;
2.闹钟定时:实现定时提醒及定时报时,利用LED灯代替扬声器发出报时声音;
3.时钟校时:当认为时钟不准确时,可以分别对分钟和小时位的值进行调整;
4.秒表功能:利用4个数码管完成秒表显示:可以实现清零、暂停并记录时间等功能。
秒表利用4位数码管计数;
方案说明:本次设计由时钟模块和译码模块组成。
时钟模块中50MHz的系统时钟clk分频产生一个1Hz的使能控制信号enable,并以此产生1s的脉冲second_en以实现每秒计时,控制各个模式下的计数显示。
由模式控制信号选择当前数码管显示哪个状态:
mode=00,时钟常规显示状态,
mode=01,闹铃定时状态,
mode=10,时钟校时状态,
mode=11,秒表计时状态;
时钟:利用count,smin0,smin1,shour0,shour1的计数来实现,具体情况见程序;
校时:当turn=1时,调整分位smin1、smin0;当turn=0时,调整小时位shour1、shour0;闹铃:当turn=1时,调整分位amin1、amin0;当turn=0时,调整小时位ahour1、ahour0;秒表:当pause=0时,开始计时;当pause=1时,暂停。
四、实验代码
时钟模块
UCF文件
testbench
五、仿真
进入ISim仿真波形界面
(1)仿真,运行1ms,将波形结果调整为适合的大小。
(2)这时我们可以分别点开clock模块和display模块查看具体的信号变化是否正确。
我们先看clock模块。
(3)当mode = 00时,实现正常时钟显示功能。
在脉冲second_en到来时,count做计数加1,此时小时位是shour1,shour0,分钟位是smin1,smin0,将这几个相关信号在波形窗口中位置做个调整放到一起来查看。
当count计数到59时,分钟位smin0实现加1变化,由0变为1;此时结果是正确的。
(4)当mode =2’b01时,实现闹铃模块。
当turn=1时,调整分位amin1、amin0;当turn=0时,调整小时位ahour1、ahour0。
将相关信号放在一起查看,由图可知,当turn为低时,调整小时位,ahour0计数加1,计数到9后清零且ahour1加1;当turn为高时,调整分钟位,amin0计数加1,计数到9后清零且ahouu1加1。
结果显然是正确的。
(5)当mode = 2’b10时,实现校时功能。
当turn=1时,调整分位smin1、smin0;当turn=0时,调整小时位shour1、shour0。
将相关信号放在一起查看,由图可知,当turn为低时,调整小时位,shour0计数加1,计数到9后清零且shour1加1;当turn为高时,调整分钟位,smin0计数加1,计数到9后清零且shouu1加1。
结果显然是正确的。
(6)当mode = 2’b11时,实现秒表计时功能。
当pause=0时,开始计时;当pause=1时,暂停。
由图可知,当pause=0时,mmin0计数加1,计数到9后清零且mmin1加1;当pause=1时,此时暂停秒表,mmin0的值保持为2。
结果也是正确的。
(7)查看display模块。
此时是对之前得到的4位数码管的值进行译码并显示。
我们可以随机抓取发生变化的几个结果来看,比如看到625265000ns处的时间点。
如下图所示:当扫描选择信号ctr为“1011”时,此时是显示数码管的第二位即h0,它的值为5,temp为“0101”,所对应的译码值为q=“0100100”,结果是正确的。