基于FPGA的数字电子时钟设计与实现
基于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的数字钟设计

数字钟的设计一、 设计要求设计一个数字钟,要求用数码管分别显示时、分、秒的计数,同时可以进行时间设置,并且要求在整点的时候能够实现报时功能。
二、 设计原理计数器在正常工作下是对1Hz的频率计数,在调整时间状态下是对调整的时间模块进行计数;控制按键来选择是正常计数还是调整时间,并决定是调整时还是分;时间显示的LED数码管采用动态扫描实现;在整点到达时,还具有整点报时功能。
三、 电路符号数字钟电路符号如下图所示。
CLK2为分频之前的信号,CLR为清零端,CCK 为校时允许端。
MC为分信号调整端,HC为时信号调整端。
HH[3..0]为时高位,HL[3..0]为时低位,MH[3..0]为分高位,ML[3..0]为分低位,SH[3..0]为秒高位,SL[3..0]为秒低位。
DOUT[6..0]是数码管驱动,SEG[5..0]是位选择信号,RING是整点报时信号。
四、 设计方法本设计的电子时钟包括:分频模块、计时模块、校时模块、动态扫描译码显示模块和整点报时模块。
下面通过各个模块的设计来了解电子时钟的构成:一、 分频模块程序附录:module clk2clk1s(clk,clk1s); input clk;output clk1s;reg clk1s;reg [3:0] cnt;always@(posedge clk)if(cnt==4'b1111)beginclk1s<=~clk1s;cnt<=0;endelsecnt<=cnt+1; endmodule波形仿真:二、 计时模块六十进制计数器六十进制计数器程序附录:六十进制计数器模块:module m60(clk,clr,qh,ql,cao);input clk,clr;output cao;output[3:0] qh,ql;reg [3:0] qh,ql;reg cao;always @(posedge clk or negedge clr) beginif(clr==0)beginqh<=4'h0;ql<=4'h0;cao<=0;endelse if(ql==9)beginql<=0;if(qh==5)beginqh<=0;cao<=1;endelse qh=qh+1;endelsebeginql<=ql+1;cao<=0;endendendmodule二十四进制计数器模块:module m24(clk,clr,qh,ql);input clk,clr;output[3:0] qh,ql;reg [3:0] qh,ql;always @(posedge clk or negedge clr) beginif(clr==0)beginqh<=4'h0;ql<=4'h0;endelse if(qh==2)beginql<=ql+1;if(ql==3)beginqh<=0;ql<=0;endendelse if(ql==9)beginqh<=qh+1;ql<=0;endelseql<=ql+1; end endmodule波形仿真:清零清零正常计时三、 校时模块四、 动态译码显示模块CCK 为0不支持校时,有进位信号时产生分(时)脉冲程序附录:1、位扫描信号(HH,HL,MH,ML,SH,SL逐位扫描,并输出)module sel(clk,hh,hl,mh,ml,sh,sl,out);input clk;input [3:0] hh,hl,mh,ml,sh,sl;output [3:0] out;reg [3:0] out;reg [3:0] ss=0;always @(posedge clk)beginif(ss<4'b0101)ss<=ss+1;elsess<=0;endalways @(posedge clk)begincase(ss)4'd0:out<=sl;4'd1:out<=sh;4'd2:out<=ml;4'd3:out<=mh;4'd4:out<=hl;4'd5:out<=hh;endendmodule仿真图:2、段扫描信号(选择数码管点亮哪一位)module seg(clk,seg);input clk;output [5:0] seg;reg [5:0] seg;reg [3:0] ss=0;always @(posedge clk)beginif(ss<4'b0101)ss<=ss+1;elsess<=0;endalways @(posedge clk)begincase(ss)4'd0:seg<=6'b111110;4'd1:seg<=6'b111101;4'd2:seg<=6'b111011;4'd3:seg<=6'b110111;4'd4:seg<=6'b101111;4'd5:seg<=6'b011111;default:seg<=6'b111111;endcaseend3、4—7译码module decode4_7(decodeout,indec); output[6:0] decodeout;input[3:0] indec;reg[6:0] decodeout;always @(indec)begincase(indec)4'd0:decodeout=7'b1111110;4'd1:decodeout=7'b0110000;4'd2:decodeout=7'b1101101;4'd3:decodeout=7'b1111001;4'd4:decodeout=7'b0110011;4'd5:decodeout=7'b1011011;4'd6:decodeout=7'b1011111;4'd7:decodeout=7'b1110000;4'd8:decodeout=7'b1111111;4'd9:decodeout=7'b1111011;default: decodeout=7'b0000000;endcaseendendmodule五、 整点报时模块六、 数字钟仿真图数字钟的设计注:动态扫描的时钟频率尽量要快。
毕业设计论文:基于FPGA的数字时钟设计

第五章对全文的总结,对本系统功能实现以及制作过程中需要注意的方面,及整个系统软件编写中所吸取的经验教训进行论述,同时,也对整个研究应用进行展望。
第二章
2.1
运行环境设计采用quartus II软件实现,因此针对软件需要用到的一些功能在这里进行描述.
第三次革命就是单片机数码计时技术的应用使计时产品的走时日差从分级缩小到1600万秒从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式直观明了并增加了全自动日期星期的显示功能它更符合消费者的生活需求
基于FPGA的数字时钟设计
第一章
1.1.
在这个时间就是金钱的年代里,数字电子钟已成为人们生活中的必需品。目前应用的数字钟不仅可以实现对年、月、日、时、分、秒的数字显示,还能实现对电子钟所在地点的温度显示和智能闹钟功能,广泛应用于车站、医院、机场、码头、厕所等公共场所的时间显示。
在行为级描述中,Verilog HDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。
能够使用门和模块实例化语句在结构级进行结构描述。
如图显示了Verilog HDL的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。
Verilog HDL还具有内置逻辑函数,例如&(按位与)和|(按位或)。
设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。
能够使用内置开关级原语在开关级对设计完整建模。
同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。
Verilog HDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。
基于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 的数字电子时钟设计院 (系 :信息与通信学院专学生姓名:学号:0900240115指导教师:职2012 年 12 月 25 日一、所用设备与器材1.1仪器设备使用仪器设备有 FPGA DE2-70开发板、 PC 机、信号发生器。
图 1 FPGA DE2-70开发板图二.系统方案2.1 设计思想利用数字电子技术、 EDA 设计方法、 FPGA 等技术,设计、仿真并实现一个基于 FPGA 的数字电子时钟基本功能, 其基本组成框图如图 1所示,振荡器采用ALTERA 的 DE2-70实验板的 50MHz 输出,分频器将 50MHz 的方波进行分频进而得到 1Hz 的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。
扩展功能设计为倒计时功能,从 59分 55秒至 59分 59秒,每秒亮一盏灯报时。
2.1.1课题背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力的推动了社会生产力的发展和社会信息化程度的提高, 同时也使现代电子产品性能更进一步, 产品更新换代的节奏也越来越快。
20世纪 80年代末,出现了 FPGA(Field Progrommable Gate Array, CAE 和 CAD 技术的应用更为广泛,它们在 PCB 设计的原理图输入,自动布局布线及 PCB 分析, 以及逻辑设计,逻辑仿真布尔综合和化简等方面担任了重要的角色,为电子设计自动化必须解决的电路建模,标准文档及仿真测试奠定了基础。
硬件描述语言是 EDA 技术的重要组成部分, VHDL 是作为电子设计主流硬件的描述语言。
本论文就是应用 VHDL 语言来实现秒表的电路设计。
VHDL 语言是标准硬件描述语言,它的特点就是能形式化抽样表示电路结构及行为,支持逻辑设计中层次领域的描述,借用了高级语言的精巧结构简化电路描述,具有电路模拟与验证及保证设计的正确性,支持电路由高层向底层的综合变换,便于文档管理,易于理解和设计重用。
基于FPGA的数字电子钟的设计与实现

基于FPGA的数字电⼦钟的设计与实现背景:本实验所有结果基于Quartus II 13.1 (64-bit)实现,实验过程采⽤⾃下⽽上⽬录⼀、基本功能设计与思路基本功能:能实现秒、分钟、⼩时的计数,计数结果清晰稳定的显⽰在 6 位数码管上。
1、动态显⽰模块该模块主要功能是通过数码管的动态扫描实现 6 位数码管显⽰计数结果,本模块由扫描模块scan_cnt6,位选控制模块 dig_select,数据选择控制模块 seg_select 以及译码模块 decoder 构成扫描模块 scan_cnt6模块功能:产⽣ 位选控制端dig_select 和数据选择端 code_select 模块所需要的地址信息,扫描时钟决定位选信号和数据切换的速度。
设计思路:利⽤74390芯⽚(P160 TTL 双⼗进制异步计数器)构建⼀个模六计数器,就是6进制计数器,利⽤计数到6(110)时,“q2”和“q1”为⾼电平,产⽣ ⼀个复位信号,加到74390的⾼电平有效的异步清0端“1CLR”上,使计数器回0,从⽽实现模六计数。
设计结果:cnt6模块设计图波形仿真:(默认为时序仿真)cnt6模块波形仿真图位选模块 dig_select模块功能:在地址端的控制下,产⽣位选信号。
设计思路:利⽤74138芯⽚(3线-8线译码器),当选通端输⼊端G1为⾼电平,选通端输⼊端G2AN和G2BN为低电平时,将扫描信号cnt6的输出作为输⼊信号,dig[5..0]是译码输出,输出低电平有效。
设计结果:dig_select模块设计图波形仿真:dig_select模块波形仿真图数据选择模块 seg_select模块功能:输⼊ 6 组数据,每组数据 4bit,本模块完成在地址端的控制下从6 组数据当中选择 1 组输出。
设计思路:利⽤74151芯⽚(P91 8选1数据选择器),在控制输⼊端GN为低电平时,将扫描信号的选择下,分别选中D[5..0]对应的输⼊信号输出为Y。
基于FPGA的数字钟课程设计

集成电路设计课程设计报告专业班级学号姓名基于FPGA的数字钟课程设计1.任务和设计要求设计具有时、分、秒计数显示,以24小时循环计时的时钟电路,带有清零和校准功能;2.设计原理采用硬件描述语言Verilog 进行编程,实现20MHZ晶振到1HZ的分频;采用verilog 语言实现数字表功能实现的各个模块;通过各个模块的代码生成相应的模块原理图;再将各个模块生成的原理图进行叠加组成一个数字表系统;3.系统设计设计的数字表有6个输入,16个输出;6个输入中,有一个是时钟信号,开发板上的28号引脚输入的50MHZ的时钟信号;一个清零端,当数字表正常显示时,按下清零端可以实现数字钟整体电路图:4.各个模块设计基于EP1C6Q240C8的数字钟设计,有6个模块组成:Fdiv 分频模块Control 模式选择模块Tune 校正模块Zoushi 时间正常运行模块Saomiao 数码管动态扫描模块;Decoder BCD译码模块;Fdiv 模块:功能:实现20MHZ的时钟信号分成10KHZ的信号和1HZ的信号;输入:clk 为20MHZ的时钟信号;输出:f10000HZ 为10KH的时钟信号;F1HZ 为1HZ的时钟信号;Fdiv 模块代码:module fdiv(clk,f10000Hz,f1Hz);output f10000Hz,f1Hz;input clk;reg f10000Hz,f1Hz;integer CNT1=0,CNT2=0;always@(posedge clk)beginif(CNT1<1999)beginCNT1=CNT1+1;f10000Hz<=1'b0;endelsebeginCNT1=0;f10000Hz<=1'b1;endendalways@(posedge f10000Hz)beginif(CNT2<9999)beginCNT2=CNT2+1;f1Hz<=1'b0;endelsebeginCNT2=0;f1Hz<=1'b1;endendendmodulefdiv 模块波形仿真:由于实际的分频波形仿真中,由于要将20MHZ的分成1HZ的,需要将信号缩小20 000 000倍,因此,此处采用将20HZ的先分成10HZ,然后再将10HZ的分成1HZ的时钟信号;在仿真中这样整,在实际演示中再改下代码,实现真正的20MHZ到1HZ的分频;它们只是一个倍数关系而已;Control 模块:功能:实现电子表的正常显示及时间校正模式的转换;输入:key 模式修改键,每来一个高电平,mode加一次。
基于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时,进行时校准。
(完整版)基于FPGA的数字电子钟系统设计毕业论文

基于FPGA的数字电子钟系统设计摘要随着电子技术的飞速发展,现代电子产品渗透到了社会的各个领域,并有力地推动着社会生产力的发展和社会信息化程度的提高。
在现代电子技术中,可编程器无疑是扮演着重要角色。
现场可编程门阵列(FPGA)是近年来迅速发展起来的新型可编程器,其灵活的可编程逻辑可以方便的实现高速数字信号处理。
它突破了并行处理、流水级数的限制,具有反复的可编程能力,从而有效的地利用了片上资源,加上高效的硬件描述语言(VHDL),从而为数字系统设计提供了极大的方便。
本文较系统地介绍了FPGA的基本结构、基本原理、功能特点及其应用;阐述了数字系统设计的基本思想及设计流程,同时,也概述了FPGA在数字系统设计中的作用,基于FPGA的数字系统设计方法和流程;简要介绍了VHDL语言的发展历程,VHDL语言的功能特点等。
本文的主要内容是根据上述原理和方法设计一个电子钟系统,目的在于通过该系统的功能,体现出FPGA在数据处理中的应用。
该电子钟系统功能齐全,设计思路清晰。
系统程序基于VHDL语言,采用模块化设计方法。
系统设计包含8个子程序模块:分频组件、六十进制计数器组件、二十四进制计数器组件、闹钟设定组件、校时组件、i60BCD组件、i24BCD组件、以及二进制转换成七段码组件。
每个子程序均经过EDA 工具仿真,并附有仿真图,最后将各模块组装为一个整体——电子钟。
-关键词电子设计自动化;现场可编程门阵列;硬件描述语言;电子钟-Digital Electronic Clock DesignBased on Technology of FPGAAbstractWith the rapid development of electronic technology, modern electronic products , also increased. In modern electronic technology, the programmable logic devices play a key role.Field programmable gate arrays (FPGA), a new type of programmable device, is developing rapidly recent years.It introduced the concept of flexible programmable logic, which can realize -chip resources, coupled with efficient language VHDL, so as to design digital systems conveniently. This article introduces a system of the basic structure of the FPGA, the basic principle of features and applications; expounded on the basic design of digital systems thinking and design process, at the same time, also outlined the FPGA in the design of digital systems, FPGA-based digital system design methods and processes; gave a briefing on the development of VHDL language, VHDL language and other features.The main work is based on the principles and methods, design an electronic clock system to the adoption of the system, embodied in the FPGA data processing of applications. The electronic clock system is fully functional, designed clear ideas. Based on VHDL system procedures, The system is modular in design methods. It includes 8 sub-system design process modules:frequency division system, 60 M counter system,24 M-counter system,Alarm clock settings system, timing system, i60BCD system, i24BCD system, and convert binary into Seven-Segment code system. each subroutine simulated by EDA tools, with a simulation map. The modules will be the final assembly as a whole - the electronic clock.Key words EDA;FPGA; VHDL; Electronic clock-目录摘要 (I)Abstract (II)第1章绪论 (1)1.1课题背景和意义 (1)1.2可编程器件的发展历程 (1)1.2.1早期的可编程器件——PLD (2)1.2.2高级可编程器件FPGACPLD (3)1.3国内外研究现状 (4)1.4本文主要内容 (5)第2章FPGA基本结构及数字系统设计原理 (6)2.1 FPGA的基本结构及工作原理 (6)2.1.1基于查找表结构的FPGA (8)2.1.2查找表结构的FPGA逻辑实现原理 (8)2.1.3 FPGA的工作原理 (9)2.2数字系统设计概述 (9)2.2.1数字系统的组成 (10)2.2.2数字系统设计方法 (10)2.2.3数字系统设计的一般过程 (11)2.3本章小结 (12)-第3章数字电子钟功能模块设计 (13)3.1数字系统设计中的FPGA (13)3.1.1 FPGA在数字系统设计中的作用 (13)3.1.2基于FPGA的应用系统设计 (13)3.2数字系统设计的重要工具——VHDL (16)3.2.1 VHDL语言的特点 (16)3.2.2基于VHDL的系统设计流程 (17)3.3电子钟主要功能模块设计 (18)3.3.1分频模块 (18)3.3.2六十进制计数器模块 (19)3.3.3二十四进制计数器模块 (20)3.3.4校时模块 (22)3.3.5 BCD七段显示译码器 (23)3.4本章小结 (23)第4章电子钟模拟仿真及其分析 (24)4.1系统设计的总体思路 (24)4.2各功能模块仿真分析 (25)4.2.1 分频组件 (25)4.2.2 六十进制计数器组件 (25)4.2.3 二十四进制计数器组件 (26)4.2.4 闹钟设定组件 (26)4.2.5 校时组件 (27)4.2.6 i60BCD组件 (28)4.2.7 i24BCD组件 (29)4.2.8 二进制转换成七段码组件 (30)4.3数字电子钟功能仿真图 (30)4.4采用FPGA设计优势分析 (33)4.5本章小结 (34)结论 (35)致谢 (36)参考文献 (37)附录A (38)附录B (43)附录C (47)附录D (48)第1章绪论1.1课题背景和意义20世纪70年代,随着中小规模集成电路的开发应用,传统的手工制图设计印刷电路板和集成电路的方法已无法满足设计的精度和效率的要求。
数电课程设计-基于FPGA的数字时钟的设计-图文

数电课程设计-基于FPGA的数字时钟的设计-图文基于FPGA的数字时钟的设计课题:基于FPGA的数字时钟的设计学院:电气信息工程学院专业:测量控制与仪器班级:08测控(2)班姓名:潘志东学号:083142392022年12月12日数字电路课程设计综述近年来随着数字技术的迅速发展,各种中、大规模集成电路在数字系统、控制系统、信号处理等方面都得到了广泛的应用。
这就迫切要求理工科大学生熟悉和掌握常用中、大规模集成电路功能及其在实际中的应用方法,除通过实验教学培养数字电路的基本实验方法、分析问题和故障检查方法以及双踪示波器等常用仪器使用方法等基本电路的基本实验技能外,还必须培养大学生工程设计和组织实验能力。
本次课程设计的目的在于培养学生对基本电路的应用和掌握,使学生在实验原理的指导下,初步具备基本电路的分析和设计能力,并掌握其应用方法;自行拟定实验步骤,检查和排除故障、分析和处理实验结果及撰写实验报告的能力。
综合实验的设计目的是培养学生初步掌握小型数字系统的设计能力,包括选择设计方案,进行电路设计、安装、调试等环节,运用所学知识进行工程设计、提高实验技能的实践。
数字电子钟是一种计时装置,它具有时、分、秒计时功能和显示时间功能;具有整点报时功能。
-2-数字电路课程设计1、课题要求1.1课程设计的性质与任务1)根据课题要求,复习巩固数字电路有关专业基础知识;2)掌握数字电路的设计方法,特别是熟悉模块化的设计思想;3)掌握QUARTUS-2软件的使用方法;4)熟练掌握EDA工具的使用,特别是原理图输入,波形仿真,能对仿真波形进行分析;5)具备EDA技术基础,能够熟练使用VHDL语言进行编程,掌握层次化设计方法;6)掌握多功能数字钟的工作原理,学会不同进制计数器及时钟控制电路的设计方法;7)能根据设计要求对设计电路进行仿真和测试;基本功能:能进行正常的时、分、秒计时功能,分别由6个数码管显示24小时,60分钟,60秒钟的计数器显示。
基于FPGA:电子钟的设计报告

电子钟的设计报告姓名:< >组别:< >专业班级:< >目录目录 (1)一、数字钟的设计要求 (2)二、顶层设计 (2)三、模块 (3)1.顶层模块 (3)2.分频器模块 (4)3.按键消抖模块 (4)4.计时模块 (5)5.显示模块 (6)6.报时和闹钟模块 (6)四、系统调试及运行结果分析 (7)1、硬件调试 (7)2、软件调试 (8)3、调试过程及结果 (8)(1)显示模块调试 (8)(2)时间系统模块调试 (9)五、总结 (9)一、数字钟的设计要求设计一个具有时、分、秒计时第二电子钟电路,按24小时制记时。
要求:1、准确计时,以数字形式显示时、分、秒的时间;2、具有分、时校正功能,校正输入脉冲频率为1Hz;3、具有仿广播电台整点报时的功能,即每逢59分51秒、53秒、55秒及57秒时,发出4声500Hz低音,在59分59秒时发出一声1kHz高音,它们的持续时间均为1秒。
最后一声高音结束的时刻恰好为正点时刻。
4、具有定时闹钟功能,且最长闹铃时间为一分钟。
要求可以任意设置闹钟的时、分;闹铃信号为500Hz和1kHz的方波信号,两种频率的信号交替输出,且均持续1S。
设置一个停止闹铃控制键,可以停止输出闹铃信号。
二、顶层设计采用自顶向下的设计方法,首先根据数字时钟的功能要求进行顶层设计和分析,用FPGA实现系统的计时、显示驱动、按键输入处理、仿广播电台整点报时的功能。
根据实训平台的硬件资源情况,输入信号包括时钟输入和按键输入,其中系统时钟由实训平台核心板50MHz晶振提供,拨码开关作为校时、闹钟时间设置和复位的信号输入,输出信号包括峰鸣器控制输出、8位动态数码管位选和段选控制输出。
数字电字时钟系统主要有分频器模块、按键消抖模块、计时模块、整点报时和闹铃模块和显示驱动模块构成。
三、模块1.顶层模块如下图所示。
2.分频器模块分频器模块的主要功能是为其他模块提供时钟信号。
基于FPGA的数字时钟设计

基于FPGA的数字时钟设计数字时钟是现代生活中必不可少的时间展示设备,广泛应用于各种场所,如家庭、办公室、学校等。
随着科技的不断发展,数字时钟的功能也得到不断升级,为人们日常生活提供了更多的便利和体验。
本文将介绍基于FPGA的数字时钟设计方案。
FPGA(Field Programmable Gate Array)是可编程门阵列的缩写,是一种现场可编程逻辑器件。
FPGA具有可编程性强、功能强大、极低的延迟等特点,被广泛应用于数字系统设计中。
本文中使用FPGA来实现数字时钟设计方案。
数字时钟的核心是计时电路,计时电路可以通过FPGA实现,使用FPGA来实现数字时钟的主要优点是可编程性强,能够满足不同需求的设计。
一、数字时钟的设计思路1、时钟信号的产生数字时钟的起点是时钟信号的产生,时钟信号的产生一般需要使用晶振。
晶振可以在一定频率范围内提供稳定的时钟信号。
FPGA可以通过将晶振与逻辑电路相连接,从而得到稳定的时钟信号。
2、计时电路的设计在数字时钟中,需要实现时、分、秒的计时功能。
这可以采用三个计时器来实现。
计时器可以使用FPGA内置的计数器实现,也可以通过逻辑电路实现。
计时器根据时钟信号的变化而变化,通过累计时钟信号的脉冲数计算出时、分、秒。
3、数码管的控制数字时钟的时间要通过数码管进行显示,数码管需要接受来自FPGA的控制信号才能正常显示数字。
通常采用多路复用器的方式来控制数码管的显示。
这里可以使用FPGA内置的多路复用器实现,FPGA输出控制信号,控制多路复用器选择哪个数码管进行显示。
数字时钟的硬件设计主要包括以下部分:时钟信号发生电路包含晶振以及晶振产生的时钟信号经过变压器传送到电路板上。
在电路板上,时钟信号经过电路处理,产生一定的电平和频率,供后续计时模块使用。
2、计时模块计时模块包括三个计时器,分别用于计算时、分、秒。
计时器通过累加时钟信号的脉冲数计算时间。
计时模块的输出需要送到数码管的控制模块进行显示。
基于FPGA电子钟设计

重庆邮电大学电子设计自动化技术与应用设计报告设计题目:基于FPGA语言的数字钟设计学院:通信学院*名:***学号: S*********一、需求分析本设计是基于利用FPGA设计具有时、分、秒显示功能的简易时钟电路,数字电路的基本结构由两个60进制计数器和一个24进制计数器组成,分别显示小时,分钟,秒的基本功能。
计数器有可以随意调整时间的功能,当显示器显示为23时59分59秒时,秒再进一位则时计数器清零。
二、总体设计1 、设计思路:利用FPGA实现电子时钟的功能,显示电路利用七段数码管进行显示。
它的计时周期是24小时,满刻度为23时59分59秒。
对于FPGA来说可以使用任何的I/O口来实现数据的传输,其I/O口的数量远多于单片机。
整个电路以FPGA芯片作为总体控制核心,对整个电路的正常运行进行控制,对于1秒时间产生可以利用开发板上可调频率来实现每1秒。
系统完成时间的实时计算以后,将计算数据通过I/O口传给数码管进行显示,通过段选和位选判断以后,将时间实时显示出来。
对于调整时间来可以利用简单的独立按键来实现调整复位及小时/分钟/秒的加一操作,并用数码管实时的显示调整后的时间。
当数字钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器信号,时、分、秒的计时结果通过6个数码管来动态显示,加上分隔符一共需要8个数码管显示。
2 、器件选型8位7段数码管、FPGA芯片。
三、硬件设计硬件电路总体的设计:硬件电路设计,要结合开发板上的硬件连接,从而对应连接才可以设计电路。
首先确定使用FPGA的哪个I/O口,对于按键使用哪个I/O口资源,按键SW0-SW3作为独立按键使用。
系统框图如下:Clk 0Clk1八个数码管组成的显示电路位选电路时计数器分计数器秒计数器译码显示电路按键调整电路秒、分、时计数器管脚分配表如下:四 、软件设计1、 总体软件流程图由于在Verilog语言中各个模块电路同时工作采用并行执行的,时序逻辑由时钟驱动,因此在程序中一定要注意时序的设计及时钟的设计,在各个不同的时钟驱动下电路响应的方式。
基于FPGA的数字钟设计-华中科技大学电子线路实验报告

基于FPGA的数字钟设计Your Name一、实验目的1.了解数字钟的功能要求及设计方法;2.了解CPLD/FPGA的一般结构及开发步骤;3.熟悉用FPGA器件取代传统的中规模集成器件实现数字电路与系统的方法。
二、实验要求1.以数字形式显示时、分、秒的时间;2.小时计数器为同步24进制;3.要求手动校时、校分;4.任意闹钟;5.小时为12/24进制可切换;6.报正点数(几点响几声)。
三、实验内容1.系统模块框图2.时间校准模块时间校准模块可由两位控制信号控制当前校准状态。
3.时分秒计数模块时分秒计数模块由60进制秒计数器、60进制分计数器和24进制时计数器组成。
时分秒的计数器具有复位和计数功能。
其中CR为复位信号,当CR为0时,时分秒的计数器清0,EN为使能信号,EN为1时开始计时,EN为0则暂停计时。
分秒时的进位通过外部组合逻辑实现。
4.显示模块计时模块产生的BCD码通过编写的CD4511功能模块转换为数码管的显示信号。
5.分频模块开发板的系统时钟为50MHz,产生1Hz的CP信号需要一个模为25M的计数器分频得到1Hz的CP信号。
四、具体代码1.顶层模块(clock.v)module SHOW_CTRL(MODE,SHOW_MODE,CP,Hour,Minute,Second,SHOW1,SHOW2);input CP,MODE,SHOW_MODE;input[7:0]Hour,Minute,Second;output[7:0]SHOW1,SHOW2;reg[7:0]SHOW1,SHOW2;always@(MODE,SHOW_MODE) beginif((MODE==0)&&(SHOW_MODE==0))begin SHOW2<=Minute[7:0];SHOW1<=Hour[7:0]; endelse if((MODE==0)&&(SHOW_MODE==1))begin SHOW2<=Second[7:0];SHOW1<=Minute[7:0]; endelse if((MODE==1)&&(SHOW_MODE==0))begin SHOW2<=Minute[7:0];SHOW1<=Hour[7:0]; endelse if((MODE==1)&&(SHOW_MODE==1))begin SHOW2<=Second[7:0];SHOW1<=Minute[7:0]; endendendmodule2.分频模块(clk_div.v)module clk_div(clk_50M,clk_1);input clk_50M;output reg clk_1;reg [8:0]count;always @(posedge clk_50M)beginif(count>8'd25)beginclk_1=~clk_1;count=0;endelsecount<=count+1;endendmodule3.模60计数器模块(counter60.v)module counter60(EN,CP,nCR,QoH,QoL);input EN,CP,nCR;output [3:0]QoH,QoL;reg [3:0]QoH,QoL;always@(posedge CP) beginif(~nCR) beginQoH<=4'b0000;QoL<=4'b0000; endelse if(~EN) beginQoH<=QoH;QoL<=QoL; endelseif(QoH==4'b0101&&QoL==4'b1001)beginQoH<=4'b0000;QoL<=4'b0000;endendelse if(QoH<4'b0110&&QoL<4'b1001){QoH,QoL}<={QoH,QoL+4'b0001};else if(QoH<4'b0110&&QoL==4'b1001){QoH,QoL}<={QoH+4'b0001,4'b0000};endendmodule4.模24计数器模块(counter24.v)module counter24(nCR,EN,CP,CntH,CntL);input CP,nCR,EN;output[3:0] CntH,CntL;reg [3:0]CntH,CntL;reg CO;always@(posedge CP or negedge nCR) beginif(~nCR) {CntH,CntL}<=8'h00;else if(~EN) {CntH,CntL}<={CntH,CntL};else if((CntH>2)||(CntL>9)||((CntH==2)&&(CntL>=3))){CntH,CntL}<=8'h00;else if((CntH==2)&&(CntL<3))begin CntH<=CntH; CntL<=CntL+1'b1; end else if(CntL==9) begin CntH<=CntH+1'b1; CntL<=4'b0000; endelse begin CntH<=CntH; CntL<=CntL+1'b1; endendendmodule5.显示模块(HEX2LED.v)module HEX2LED(HEX,SEG);input[3:0] HEX;output[7:0] SEG;wire[3:0] HEX;reg[6:0] SEG;always@(HEX)begincase(HEX)4'h0: SEG = 7'b0000001;4'h1: SEG = 7'b1001111;4'h2: SEG = 7'b0010010;4'h3: SEG = 7'b0000110;4'h4: SEG = 7'b1001100;4'h5: SEG = 7'b0100100;4'h6: SEG = 7'b0100000;4'h7: SEG = 7'b0001111;4'h8: SEG = 7'b0000000;4'h9: SEG = 7'b0000100;default: SEG = 7'b0000001;endcaseendendmodule五、仿真截图(仿真秒时分计时及其数码管显示,仿真环境为vivado 2018.3)秒计时仿真分计时仿真时计时仿真如下图所示为分校准仿真,当Amin分校准位为1时分开始随着CP信号的频率以1秒加1的步进变动。
基于FPGA的电子钟设计

基于FPGA的电子钟设计基于FPGA的电子钟设计随着物联网技术的发展,我们对于时间的要求也越来越精细。
电子钟作为一个基本的时间计量工具,其精度和稳定性至关重要。
而FPGA作为一种强大的可编程逻辑器件,具有高速、高效、灵活等优势,成为电子钟设计的重要基础。
一、电子钟的基本原理电子钟是指采用电路元器件、微处理器等电子器件构成的时钟。
其基本原理可以概括为:利用更精确的时间计量器件替代机械时钟中的发条和摆轮,同时采用数字处理器等电子元器件代替机械表盘展示时间。
电子钟的核心是时基电路,其作用是产生高精度的时间信号,为其它电路提供时间标准。
通常采用晶振、TCXO、OCXO等时基器件。
为了保证时间精度,还要从外部时钟或天线接收校正信号。
二、FPGA的优势FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,可以灵活地对电路进行编程和调整,从而实现不同的功能。
FPGA相对于ASIC(Application Specific Integrated Circuit),具有以下优点:1. 灵活性:FPGA可以通过重新编程来实现不同的逻辑功能,而ASIC则需要重新设计电路,成本和时间都比较高。
2. 高速:FPGA以可编程方式实现电路逻辑,减少了多级缓存的开销,因此运行速度更快。
3. 低功耗:FPGA可以在逻辑上进行优化,以达到低功耗效果,同时利用现代的制造技术,还可以采用低功耗工艺。
4. 可重用性:FPGA的电路设计可以在不同的项目中重复使用,从而提高了效率和经济性。
三、基于FPGA的电子钟设计基于FPGA的电子钟设计方案主要包括两部分,分别是时基电路和数码显示电路。
1. 时基电路设计时基电路是电子钟的核心部分,可以采用晶振、TCXO、OCXO等器件来产生高精度的时间信号。
在电子钟的设计中,一般还需要接收外部同步校时信号,用于校正时钟误差。
基于FPGA的时基电路设计主要包括以下几个部分:(1)时钟输入电路:接收来自外部同步信号的时钟脉冲,用于校准电子钟的误差。
基于FPGA的数字电子时钟

第1章绪论数字化是电子设计发展的必由之路已成为共识。
在数字化的道路上,我国电子设计技术的发展经历了,并将继续经历许多重大的变革与飞跃、从应用SSI通用数字电路芯片构成电路系统,到广泛地应用MCU(微控制器或单片机),它使得电子系统的智能化水平在广度和深度上产生了质的飞跃。
MCU的广便应用并没有抛弃SSI的应用,而是为它们在电于系统中找到了更合理的地位。
随着社会经济发展的延伸、各类新型电子产品的开发为我们提出了许多全新的课题和更高的要求。
FPGA在EDA基础上的广泛应用.从某种意义上说,新的电子系统运转的物理机制又将回到原来的纯数字电路结构,但这是—种更高层次的循环,应是一次否定之否定的运动,它在更高层次上容纳了过去数字技术的优秀部分,对MCU系统将是—种扬弃,但在电子设计的技术操作和系统构成的整体上却发生质的飞跃。
如果说MCU在逻辑的实现上是无限的话,那么高速发展的FPGA 不但包括了MCU这一特点,并兼有串、并工作方式和高速、高可靠性以及宽口径适用等诸多方面的特点、不仅如此,随着EDA技术的发展和FPGA在深亚微米领域的进军、它们与MCU、MPU、DSP、A/D、D/A、RAM和ROM等独立器件问的物理与功能界限正日趋模糊。
以大规模集成电路为物质基础的EDA技术终于打破了软硬件之间最后的屏障,使软硬件工程师们有了共同的语言[1]。
1.1 课题背景电子产品随着技术的进步,更新换代速度可谓日新月异。
不同行业层出不穷的技术需求,使得对配套电子系统或部件的功能、可靠性、集成度、成本、设计周期的要求日益提高。
随着时间的推移,科学研究与技术开发行为日益市场化,而远非纯粹的学术行为,这要求设计工作必须在较短的时间内出色完成,技术人员感到工作压力越来越大。
显然,采用传统的电子设计手段完成复杂电子系统设计显得越来越力不从心了,传统的电子设计与现实手段受到极大的挑战。
如果在激烈的技术产品竞争中仍沿用老办法,很可能在激烈的竞争中处于被动落后的境地,例如,当设计比较复杂的电子系统时,要等到做完全部硬件试验才开始设计印制电路板,这样,设计周期必然会相应拉长,即使设计出印制电路板来,也很难保证它的电气连接全部正确、各个元器件参数合理以及完善的电磁兼容性能,如果需要设计实现的数字电路部份规模较大,仍习惯地利用中、小规模数字集成芯片实现,电路的集成度和可靠性在许多应用场合会受到很大限制,甚至根本无法满足需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计(论文)说明书题目:基于FPGA的数字电子时钟设计院(系):信息与通信学院专业:微电子学学生姓名:学号:**********指导教师:职称:实验师2012 年12 月25 日一、所用设备与器材1.1仪器设备使用仪器设备有FPGA DE2-70开发板、PC机、信号发生器。
图1 FPGA DE2-70开发板图二.系统方案2.1 设计思想利用数字电子技术、EDA设计方法、FPGA等技术,设计、仿真并实现一个基于FPGA的数字电子时钟基本功能,其基本组成框图如图1所示,振荡器采用ALTERA的DE2-70实验板的50MHz输出,分频器将50MHz的方波进行分频进而得到1Hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。
扩展功能设计为倒计时功能,从59分55秒至59分59秒,每秒亮一盏灯报时。
2.1.1课题背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力的推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能更进一步,产品更新换代的节奏也越来越快。
20世纪80年代末,出现了FPGA(Field Progrommable Gate Array),CAE 和CAD技术的应用更为广泛,它们在PCB设计的原理图输入,自动布局布线及PCB分析,以及逻辑设计,逻辑仿真布尔综合和化简等方面担任了重要的角色,为电子设计自动化必须解决的电路建模,标准文档及仿真测试奠定了基础。
硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件的描述语言。
本论文就是应用VHDL语言来实现秒表的电路设计。
VHDL语言是标准硬件描述语言,它的特点就是能形式化抽样表示电路结构及行为,支持逻辑设计中层次领域的描述,借用了高级语言的精巧结构简化电路描述,具有电路模拟与验证及保证设计的正确性,支持电路由高层向底层的综合变换,便于文档管理,易于理解和设计重用。
EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。
EDA 设计可分为系统级、电路级和物理实现级。
用VHDL语言开发的流程:(1)文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。
通常VHDL文件保存为.vhd文件。
(2)功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)。
(3)逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。
逻辑综合软件会生成.edf(edif)的EDA工业标准文件。
(4)布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内。
(5)编程下载:确认仿真无误后,将文件下载到芯片中。
本设计为一个多功能的数字钟,具有时、分、秒计数显示功能,以24小时的循环计数:具有校对功能。
本设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计文件,在Quartus 工具软件下,采用自顶向下的设计方式,由各个基本模块共同构建了一个基本FPGA的数字钟。
系统主芯片采用EP2C70F896C6,有时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。
经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,由按键输入进行数字钟的校时、清零、启停功能。
随着电子技术的发展,数字电路朝着速度快、容量大、体积小、重量轻的方向发展。
人们对时间计量的精度要求越来越高,钟表的数字化给人们生产生活带来了极大的方便。
数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
本次设计以数字电子为主,实现对时、分、秒数字显示的计时装置,周期为24小时,显示满刻度为23时59分59秒,并具有校时功能和报时功能的数字电子钟。
课程设计所采用的开发平台:Quartus II是可编程片上系统的综合性设计环境,它支持CPLD和FPGA器件的开发。
FPGA (Field Programmable Gate Array)现场可编程门阵列,内部主要由许多可编程逻辑模块组成,靠纵横交错的分布式可编程互连线连接起来,可构成极其复杂的逻辑电路。
本次课程设计所采用的FPGA芯片 Cyclone II系列的EP2C70F896C6。
2.2工作原理及系统框图利用数字电子技术、EDA设计方法、FPGA等技术,设计、仿真并实现一个基于FPGA的数字电子时钟基本功能,其基本组成框图如图1所示,振荡器采用ALTERA的DE2-70实验板的50MHz输出,分频器将50MHz的方波进行分频进而得到1Hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。
电子时钟扩展功能为倒计时流水灯。
数字电子钟的电路组成框图片如下图:图15 系统框图1.数字钟电路系统由主体电路和扩展电路两大部分所组成。
2. 数字电子时钟电路具有时、分、秒计时,秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照“24进制”规律计数。
3. 准确计时,以数字形式显示时、分、秒的时间,计数器的输出经译码器送显示器。
4. 具有分、时校正功能,校正输入脉冲频率为1Hz5. 复位功能,时、分、秒计时清零。
6.扩展功能为:具有仿广播电台整点报时的功能,即每逢59分51秒、52秒、53秒、54秒、55秒及57秒,LED绿灯依此点亮,59分59秒时,LED红灯亮,形成倒计时流水灯报时。
三.软件方案3.1 程序流程图3.1.1 24进制小时采用24进制计时,当CP↑,EN和nCR为高电平时计数,计数范围为[0,23],使能信号EN等于0时,计时器保持。
当高位大于2或高位等于2且低位大于3时,计时器清零,否则继续计时。
流程图见下图。
图16 24进制程序流程图3.1.2 10进制流程图当CP↑,EN和nCR为高电平时计数,计数范围为[0,9],使能信号EN等于0时,计时器保持。
当计时到9的时候,计时器清零,否则继续计时。
流程图见下图。
图17 10进制流程图3.1.3 6进制当CP↑,EN和nCR为高电平时计数,计数范围为[0,5],使能信号EN等于0时,计时器保持。
当计时到5的时候,计时器清零,否则继续计时。
流程图见下图。
图18 6进制流程图3.1.4 60进制分、秒采用60进制计时,当CP↑,EN和nCR为高电平时计数,计数范围为[0,59],使能信号EN等于0时,计时器保持。
当个位等于9时向十位进位;当个位等于9十位等于5,计时器清零,否则继续计时。
流程图见下图。
图19 60进制流程图3.1.5 from0to9数码管有7段组成,分共阳极和共阴极,本次设计采用共阳极数码管。
当输入为低电平时,数码管显示;当输入为高电平时,数码管不显示。
用这样的方法输入不同的高低信号控制数码管的显示。
图20 from0to9流程图3.1.6 分频模块图21 分频模块流程图3.1.7 总流程图图22 总流程图3.2 程序清单3.2.1头文件complete_clock程序module complete_clock(HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,_50MHzIn,_1Hz,_50Hz,_5KHz,_500KHz,AdjMinkey,AdjHrkey,nCR,Alarm,LED0,LED10,LED3,LED4,LED5,LED6,LED 7,LED8,LED9);output [7:0] HEX0,HEX1,HEX2,HEX3,HEX4,HEX5;output Alarm,_1Hz,_50Hz,_5KHz,_500KHz;output LED0;output LED10;output LED3;output LED4;output LED5;output LED6;output LED7;output LED8;output LED9;wire [7:0] HEX0,HEX1,HEX2,HEX3,HEX4,HEX5;input nCR,_50MHzIn;wire _1Hz,_50Hz,_5KHz,_500KHz;wire LED0;wire LED10;wire LED3;wire LED4;wire LED5;wire LED6;wire LED7;wire LED8;wire LED9;input AdjMinkey,AdjHrkey;wire [7:0] Second,Minute,Hour;Divided_Frequency C1(_5KHz,_500KHz,nCR,_50MHzIn);//调用分频模块,输入50MHz的频率,经两次分频后变为5KHz Divided_Frequency U0(_1Hz,_50Hz,nCR,_5KHz);//调用分频模块,输入5KHz的频率,经两次分频后变为1Hztop_clock U1(Hour,Minute,Second,_1Hz,nCR,AdjMinkey,AdjHrkey);//调用校时模块,对时、分模块进行校时baoshi U2(Alarm_Ring,Minute,Second,_50Hz,_5KHz);assign Alarm=Alarm_Ring;assign LED0=({Minute,Second}==16'h5951);//定义LED0为59分51秒时灯亮assign LED10=({Minute,Second}==16'h5952);//定义LED10为59分52秒时灯亮assign LED3=({Minute,Second}==16'h5953);//定义LED3为59分53秒时灯亮assign LED4=({Minute,Second}==16'h5954);//定义LED4为59分54秒时灯亮assign LED5=({Minute,Second}==16'h5955);//定义LED5为59分55秒时灯亮assign LED6=({Minute,Second}==16'h5956);//定义LED6为59分56秒时灯亮assign LED7=({Minute,Second}==16'h5957);//定义LED7为59分57秒时灯亮assign LED8=({Minute,Second}==16'h5958);//定义LED8为59分58秒时灯亮assign LED9=({Minute,Second}==16'h5959);//定义LED9为59分59秒时灯亮from0to9 U10(HEX0,Second[3:0]); //个位秒调用译码from0to9 U9(HEX1,Second[7:4]); //十位秒调用译码from0to9 U3(HEX2,Minute[3:0]); //个位分调用译码from0to9 U4(HEX3,Minute[7:4]); //个位分调用译码from0to9 U5(HEX4,Hour[3:0]); //个位时调用译码from0to9 U6(HEX5,Hour[7:4]); //十位时调用译码endmodule3.2.2 counter24程序module counter24(CntH,CntL,nCR,EN,CP);input CP,nCR,EN;output [3:0] CntH,CntL;reg [3:0] CntH,CntL;always @(posedge CP or negedge nCR)beginif(~nCR) {CntH,CntL}<=8'h00;//当nCR=0时,计时器清零else if(~EN) {CntH,CntL}<={CntH,CntL};//当EN=0时,停止计时,保持else if((CntH>2)||(CntH>9)||((CntH==2)&&(CntL>=3))){CntH,CntL}<=8'h00;else if((CntH==2)&&(CntL<3))begin CntH<=CntH;CntL<=CntL+1'b1;endelse if(CntL==9)begin CntH<=CntH+1'b1;CntL<=4'b0000;endelsebegin CntH<=CntH;CntL<=CntL+1'b1;endendEndmodule3.2.3 counter60程序module counter60(Q1,Q2,Q3,Q4,Q5,Q6,Cnt,Cnt1,Cnt24,nCR,EN,CP,LED,LED1,LED2); input CP,nCR,EN;output [7:0] Cnt;output [7:0] Cnt1;output [7:0] Cnt24;output [6:0] Q1;output [6:0] Q2;output [6:0] Q3;output [6:0] Q4;output [6:0] Q5;output [6:0] Q6;output LED;output LED1;output LED2;wire [7:0] Cnt;wire [7:0] Cnt1;wire [7:0] Cnt24;wire [6:0] Q1;wire [6:0] Q2;wire [6:0] Q3;wire [6:0] Q4;wire [6:0] Q5;wire [6:0] Q6;wire LED;wire LED1;wire LED2;wire ENP;wire ENP1;wire ENP2;wire ENP3;counter10 UC0(Cnt[3:0],nCR,EN,CP);counter6 UC1(Cnt[7:4],nCR,ENP,CP);counter10 UC2(Cnt1[3:0],nCR,ENP1,CP);counter6 UC3(Cnt1[7:4],nCR,ENP2,CP);counter24 UC4(Cnt24[7:4],Cnt24[3:0],nCR,ENP3,CP);assign ENP=(Cnt[3:0]==4'h9);assign ENP1=(Cnt==8'h59);assign ENP2=((Cnt1[3:0]==4'h9)&&(Cnt==8'h59));assign ENP3=((Cnt1==8'h59)&&(Cnt==8'h59));assign LED=~CP;assign LED1=~CP;assign LED2=~CP;from0to9 UC5(Q1,Cnt[3:0]);from0to9 UC6(Q2,Cnt[7:4]);from0to9 UC7(Q3,Cnt1[3:0]);from0to9 UC8(Q4,Cnt1[7:4]);from0to9 UC9(Q5,Cnt24[3:0]);from0to9 UC10(Q6,Cnt24[7:4]);Endmodule3.2.4 from0to9程序module from0to9(HEX,D);output [6:0] HEX;input [3:0] D;reg [6:0] HEX;always @(D)begincase(D)4'd0:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000001; 4'd1:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b1001111; 4'd2:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0010010;4'd3:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000110;4'd4:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b1001100;4'd5:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0100100;4'd6:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0100000;4'd7:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0001111;4'd8:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000000;4'd9:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000100; default:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b1111111; endcaseendendmodule3.2.5 counter6程序module counter6(Q,nCR,EN,CP);input CP,nCR,EN;output [3:0] Q;reg [3:0] Q;always @(posedge CP or negedge nCR)beginif(~nCR) Q<=4'b0000;//当nCR=0时,计时器清零else if(~EN) Q<=Q;//当EN=0时,停止计时,保持else if(Q==4'b0101) Q<=4'b0000;else Q<=Q+1'b1;//计时器正常计时endEndmodule3.2.6 counter10程序module counter10(Q,nCR,EN,CP);input CP,nCR,EN;output [3:0] Q;reg [3:0] Q;always @(posedge CP or negedge nCR)beginif(~nCR) Q<=4'b0000;//当nCR=0时,计时器清零else if(~EN) Q<=Q;//当EN=0时,停止计时,保持else if(Q==4'b1001) Q<=4'b0000;else Q<=Q+1'b1;//计时器正常计时endEndmodule3.2.7 分频程序module Divided_Frequency(_1HzOut,nCR,_5kHzIN);input _5kHzIN,nCR;output _1HzOut;supply1 Vdd;//定义 Vdd 是高电平wire [15:0] Q;//计时器的输出信号(中间变量 )wire EN1,EN2,EN3;// 计时器的使能信号(中间变量 )counter10 DU0(Q[3:0],nCR,Vdd,_5kHzIN);//调用十进制counter10 DU1(Q[7:4],nCR,EN1,_5kHzIN);counter10 DU2(Q[11:8],nCR,EN2,_5kHzIN);counter10 DU3(Q[15:12],nCR,EN3,_5kHzIN);assign EN1=(Q[3:0]==4'h9);assign EN2=(Q[7:4]==4'h9)&(Q[3:0]==4'h9);assign EN3=(Q[11:8]==4'h9)&(Q[7:4]==4'h9)&(Q[3:0]==4'h9);assign _1HzOut=Q[15];//assign _500HzOut=Q[0];endmodule3.2.8 校时模块程序module top_clock(Second,Minute,Hour,_1Hz,nCR,AdjMinKey,AdjHrkey);input _1Hz,nCR,AdjMinKey,AdjHrkey;output [7:0] Second,Minute,Hour;wire [7:0] Hour,Minute,Second;supply1 Vdd;wire MinCP,HrCP;counter60 UT1(Second,nCR,Vdd,_1Hz);//调用counter60,对秒计时counter60 UT2(Minute,nCR,Vdd,~MinCP);// 调用counter60,对分校时counter24 UT3(Hour[7:4],Hour[3:0],nCR,Vdd,~HrCP);//调用counter24,对时校时assign MinCP=AdjMinKey ? _1Hz:(Second==8'h59);//当MinCP=AdjMinKey时,执行校时,当MinCP≠AdjMinKey时,秒计时至59 时向分进位assign HrCP=AdjHrkey?_1Hz:({Minute,Second}==16'h5959);//当HrCP=AdjHrkey时,执行校时,当HrCP≠AdjHrkey时,分秒计时至59分59秒时向时进位Endmodule四.调试及结果4.1 模块仿真4.1.1 counter10模块仿真CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,9]图23 counter10仿真波形图4.1.2 counter24模块仿真CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,23]图24 counter24仿真波形图4.1.3 counter60模块仿真CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,59]图25 counter60仿真波形图4.1.4 分频模块仿真分频器是将输入的基本时钟信号分频为其他模块需要的5kHZ 和1HZ 的信号. 其中CLK 输入为5kHZ , CLK2 输出1HZ 信号,分频实际也是用了计数器的原理。