fpga数字钟课程设计报告

合集下载

用fpga简易数字钟电路设计实验报告 概述及解释说明

用fpga简易数字钟电路设计实验报告 概述及解释说明

用fpga简易数字钟电路设计实验报告概述及解释说明1. 引言1.1 概述本实验报告旨在介绍使用FPGA(可编程门阵列)设计的简易数字钟电路。

数字钟是一种可以显示时间的时钟装置,广泛应用于日常生活和工业领域。

本文将详细讲解数字钟的设计原理、硬件要求、设计步骤以及实验的实现过程。

1.2 文章结构本文共分为五个部分,即引言、FPGA简易数字钟电路设计、实验实现过程、实验结果分析和结论与总结。

下面将对每个部分进行具体说明。

1.3 目的该实验旨在通过学习和操作FPGA,深入理解数字电路设计的基本原理和方法,并通过设计一个简易的数字钟电路来巩固所学知识。

通过本实验,我们还将探索数字钟电路的性能评估和可能的改进方向,并对未来发展方向进行展望。

同时,通过参与这个项目,我们也将获得一定的实践经验和技能提升。

2. FPGA简易数字钟电路设计:2.1 设计原理:在本次实验中,我们使用FPGA(现场可编程逻辑门阵列)来设计一个简易的数字钟电路。

FPGA是一种集成电路芯片,可依据用户需要重新配置其内部互连,从而实现不同的逻辑功能。

我们将利用FPGA的可编程性和强大的计算能力来实现数字钟的功能。

该数字钟电路主要由时钟模块、倒计时模块和显示模块组成。

时钟模块负责产生稳定而精确的脉冲信号作为系统的时基;倒计时模块通过对输入时间进行倒计时操作,并发出相应信号提示时间变化;显示模块用于将倒计时结果以数码管显示出来。

2.2 硬件要求:为了完成该设计,我们需要准备以下硬件设备:- FPGA开发板:提供了外部接口和资源,用于连接其他硬件设备并加载程序。

- 数码管:用于显示时间信息。

- 时钟源:提供稳定而精确的脉冲信号作为系统的时基。

2.3 设计步骤:以下是设计步骤的详细说明:1. 确定所需功能:首先明确数字钟需要具备哪些功能,例如12小时制还是24小时制、倒计时功能等。

2. 确定FPGA型号:根据设计需求和资源限制,选择适合的FPGA型号。

基于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的电子钟设计报告一、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数字时钟课程设计随着科技的不断发展,数字时钟已经成为现代人生活中必不可少的物品。

数字时钟的准确性和便捷性吸引了越来越多的人使用。

而现在,我们可以通过FPGA数字时钟课程设计来实现一个高精度的数字时钟。

FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,可以通过编程实现各种不同的功能。

数字时钟的实现也可以通过FPGA来完成。

在FPGA数字时钟课程设计中,我们需要先确定时钟的基础部分。

时钟的基础部分由时钟信号产生器、时钟分频器、时钟计数器和时钟显示器组成。

时钟信号产生器需要产生一个稳定的时钟信号,以供后续的计数器和分频器使用。

我们可以通过FPGA中的时钟模块来产生一个稳定的时钟信号。

接下来,时钟分频器需要将时钟信号分频,使得计数器可以进行精确的计数。

分频器的分频系数可以通过FPGA中的数码开关进行设置。

然后,时钟计数器需要根据分频器的设定进行精确的计数。

计数器的计数值可以通过FPGA中的计数器模块进行设置。

时钟显示器需要将计数器的计数值进行显示。

我们可以通过FPGA 中的数码管模块来实现时钟的显示功能。

除了基础部分,我们还可以通过添加更多的功能来完善数字时钟。

例如,我们可以添加闹钟功能、日期显示功能等,以增加数字时钟的实用性。

在FPGA数字时钟课程设计中,我们可以使用VHDL(VHSIC Hardware Description Language)语言进行编程。

VHDL是一种硬件描述语言,可以用于FPGA和ASIC的设计。

通过编写VHDL 程序,我们可以实现数字时钟的各种功能。

FPGA数字时钟课程设计是一个非常有趣和实用的课程项目。

通过这个项目,我们可以深入了解数字时钟的工作原理,熟悉FPGA的编程方法,同时也可以锻炼自己的编程能力。

基于FPGA的多功能数字钟设计报告

基于FPGA的多功能数字钟设计报告

***大学电工电子实验报告EDA技术基础设计报告多功能数字钟设计电子信息科学与技术年 月 日多功能数字钟设计一.任务解析用Verilog硬件描述语言设计数字钟,实现:1、具有时、分、秒计数显示功能,以二十四小时循环计时。

2、具有调节小时,分钟的功能。

3、具有整点报时同时LED灯花样显示的功能。

4、【发挥】三键(模式选择,加,减)调整,数码管闪烁指示功能。

5、【发挥】增加闹钟任意设定功能,时间精确到分。

二.方案论证第2页,共19页三.重难点解析1、模式选择键的设计//模式选择键。

有5个模式,m0为正常走钟;m1为调分;m2为调时;m3为闹钟调分;m4为闹钟调时。

module mode_key(key,clr,m);input key,clr;output [2:0]m;reg [2:0]m;always @(posedge key or negedge clr) beginif(!clr) m=0;else if(m==4) m=0;else m=m+1;endendmodule2、数字钟秒钟计数设计module cnt60_sec(clk,clr,q,c);input clk,clr;output [6:0]q;output c;reg [6:0]q;reg c;always @(posedge clk or negedge clr) beginif(!clr) begin q=0;c=0;endelse if(q[3:0]==9) begin q[3:0]=0;if(q[6:4]==5) begin q[6:4]=0; c=1;endelse q[6:4]=q[6:4]+1;end第3页,共19页else begin q[3:0]=q[3:0]+1;q[6:4]=q[6:4];c=0;endendendmodule、秒钟计数模块就是一个60的计数器,计数到59的时候清零,进位加1。

调时不需要控制秒钟,所以没有加模式选择按键。

数字钟课程设计fpga

数字钟课程设计fpga

数字钟课程设计 fpga一、课程目标知识目标:1. 学生能理解数字钟的基本原理和组成,掌握数字钟的计时方法。

2. 学生能了解FPGA的基本概念,掌握FPGA在数字钟设计中的应用。

3. 学生能掌握数字钟设计中涉及的二进制、十进制转换方法。

技能目标:1. 学生能够运用所学知识,设计并实现一个简单的数字钟电路。

2. 学生能够使用FPGA编程,实现数字钟的功能。

3. 学生能够通过实验操作,培养动手能力和团队协作能力。

情感态度价值观目标:1. 学生对数字电路产生兴趣,树立学习信心,形成积极的学习态度。

2. 学生在学习过程中,培养创新精神和实践能力,增强对科技发展的关注。

3. 学生通过合作学习,培养团队意识,学会尊重他人,分享成果。

课程性质:本课程为电子技术实践课程,结合理论教学,注重培养学生的实际操作能力和创新思维。

学生特点:学生为高中生,具备一定的电子技术基础,对新鲜事物充满好奇,喜欢动手实践。

教学要求:教师需引导学生运用所学知识,通过实验操作,掌握数字钟设计方法,提高学生的实践能力和创新精神。

同时,关注学生的情感态度价值观培养,使学生在学习过程中形成良好的学习习惯和团队合作意识。

将课程目标分解为具体的学习成果,便于后续教学设计和评估。

二、教学内容1. 数字钟原理及组成- 数字钟工作原理- 数字钟各部分功能及相互关系2. FPGA基础知识- FPGA基本概念- FPGA在数字电路设计中的应用3. 数字钟设计与实现- 数字钟计时方法- 二进制与十进制转换方法- 数字钟电路设计流程4. FPGA编程与实验操作- FPGA编程基础- 数字钟功能模块编程- 实验操作步骤与注意事项5. 数字钟综合设计与调试- 设计要求与评价指标- 设计方案撰写与展示- 团队合作与交流教学内容安排与进度:第一周:数字钟原理及组成、FPGA基础知识学习第二周:数字钟设计与实现、FPGA编程基础学习第三周:数字钟功能模块编程、实验操作第四周:数字钟综合设计与调试、成果展示与评价教材章节:第一章:数字钟原理及组成第二章:FPGA基础知识第三章:数字钟设计与实现第四章:FPGA编程与实验操作第五章:数字钟综合设计与调试教学内容遵循科学性和系统性原则,结合课程目标,确保学生能够掌握数字钟设计与FPGA编程相关知识,培养实践能力和创新精神。

FPGA数字钟报告大作业

FPGA数字钟报告大作业

FPGA课程设计实验报告题目:基于FPGA 的数字钟设计学院:电子信息学院专业:电子与通讯工程学号:*********姓名:***基于FPGA的数字钟设计一、功能介绍1.在七段数码管上具有时--分--秒的依次显示。

2.时、分、秒的个位记满十向高位进一,分、秒的十位记满五向高位进一,小时按24进制计数,分、秒按60进制计数。

3.整点报时,当计数到整点时扬声器发出响声。

4.时间设置:可以通过按键手动调节秒和分的数值。

此功能中可通过按键实现整体清零和暂停的功能。

5.LED灯循环显示:在时钟正常计数下,LED灯被依次循环点亮。

待增加功能:1.实现手动调节闹铃时间,在制定时间使扬声器发声。

2.实现微妙的快速计数功能,可实现暂停、保存当前时间、继续计数的功能。

二、设计方案本文数字钟的设计采用了自顶向下分模块的设计。

底层是实现各功能的模块,各模块由vhdl语言编程实现:顶层采用原理图形式调用。

其中底层模块包括秒、分、时三个计数器模块、按键去抖动模块、按键控制模块、时钟分频模块、数码管显示模块共7个模块。

设计框图如下:图一数字钟系统设计框图由图1可以清晰的看到数字钟系统设计中各功能模块间连接关系。

系统时钟50MHZ经过分频后产生1秒的时钟信号,1秒的时钟信号作为秒计数模块的输入信号,秒计数模块产生的进位信号作为分计数模块的输入信号,分计数模块的进位信号作为时计数模块的输入信号。

秒计数模块、分计数模块、时计数模块的计数输出分别送到显示模块。

由于设计中要使用按键进行调节时间,而按键的动作过程中存在产生得脉冲的不稳定问题,所以就牵扯到按键去抖动的问题,对此系统中设置了按键去抖动模块,按键去抖动模块产生稳定的脉冲信号送入按键控制模块,按键控制模块根据按键的动作对秒、分、时进行调节。

图二数字钟的顶层设计原理图三、设计过程由数字钟的顶层设计原理图可知:系统的外部输入即为系统的时钟信号CLK =50MHZ,系统的外部输出有蜂鸣器信号buzzer,LED显示信号LED[3..1]和shan(与按键去抖动模块的o3相连),数码管显示信号xianshi[7..0],数码管位选信号xuanze[7..0]。

基于FPGA的多功能数字钟课程设计

基于FPGA的多功能数字钟课程设计

F PG A课程设计报告(实现多功能数字钟)一、标题:设计多功能数字钟控制电路二、任务书:用MAX+PLU SⅡ软件及Verilog HDL语言设计一个多功能的数字钟,包括有时、分、秒的计时,以及校时(对小时、分钟和秒能手动调整以校准时间)、正点报时(每逢整点,产生“嘀嘀嘀嘀-嘟”,4短一长的报时音)等附加功能。

三、关键词:24进制、60进制、正点报时、校时、数字钟四、总体方案:多功能数字钟控制电路框图是由三部分组成的,即秒分时控制电路、整点报时控制电路、时段控制电路。

用Verilog HDL硬件描述语言完成编译和仿真。

五、原理框图如下:↓↓↓六、Verilog HDL硬件描述语言编写的功能模块:/*秒计数器m60*/module m60(M,CP60M,CPM,RD); output [7:0]M;output CP60M;input CPM;input RD;reg [7:0]M;wire CP60M;always@(negedge RD or posedge CPM) beginif(!RD)begin M[7:0]<=0;endelsebeginif((M[7:4]==5)&&(M[3:0]==9))beginM[7:0]<=0;endelsebeginif(M[3:0]==9)beginM[3:0]<=0;if(M[7:4]==5)begin M[7:4]<=0;endelse M[7:4]<=M[7:4]+1;endelse M[3:0]<=M[3:0]+1;endendendassign CP60M=~(M[6]&M[4]&M[3]&M[0]); endmodule/*分计数器m60*/module m60(M,CP60M,CPM,RD);output [7:0]M;output CP60M;input CPM;input RD;reg [7:0]M;wire CP60M;always@(negedge RD or posedge CPM) beginif(!RD)begin M[7:0]<=0;endelsebeginif((M[7:4]==5)&&(M[3:0]==9))beginM[7:0]<=0;endelsebeginif(M[3:0]==9)beginM[3:0]<=0;if(M[7:4]==5)begin M[7:4]<=0;endelse M[7:4]<=M[7:4]+1;endelse M[3:0]<=M[3:0]+1;endendendassign CP60M=~(M[6]&M[4]&M[3]&M[0]); endmodule/*小时计数器m24*/module m24(H,CPH,RD);output [7:0]H;input CPH,RD;reg [7:0]H;always@(negedge RD or posedge CPH) beginif(!RD) H[7:0]<=0;elsebeginif((H[7:4]==2)&&(H[3:0]==3))beginH[7:0]<=0;endelsebeginif(H[3:0]==9)begin H[3:0]<=0;H[7:4]<=H[7:4]+1;endelse H[3:0]<=H[3:0]+1;endendendendmodule/*秒分时控制计数器xiaoshi2*/module xiaoshi2(CPM,CPH,CPS,CP60M,CP60S,SWM,SWH);output CPM,CPH;input SWM,SWH;input CPS,CP60S,CP60M;reg CPM,CPH;always@(SWM or SWH or CPS or CP60S or CP60M)begincase({SWM,SWH})2'b01: begin CPM<=CPS;CPH<=CP60M;end2'b10: begin CPM<=CP60S;CPH<=CPS;enddefault: begin CPM<=CP60S;CPH<=CP60M;end endcaseendendmodule/*时段控制器sdkz*/module sdkz(h,sk);input [7:0]h;output sk;reg sk;always@(h)beginif((h<=5)||(h>=19))sk<=1;elsesk<=0;endendmodule/*报时计数器baoshi*/module baoshi(m6,m4,m3,m0,s6,s4,s3,s0,dy,gy,bshi); input m6,m4,m3,m0,s6,s4,s3,s0,dy,gy;output bshi;wire bm;reg bshi;assign bm=m6&m4&m3&m3&m0&s6&s4&s0; always@(bm or s3 or dy or gy)beginif(bm&s3)bshi<=gy;else if(bm)bshi<=dy;elsebshi<=0;endendmodule七:各模块原理图及仿真波形:24进制原理图:60进制原理图:电路原理图:时段控制:报时:1、秒计数器仿真波形2、分计数器的仿真波形3、小时计数器的仿真波形4、秒分时控制电路的仿真波形5、时段控制的仿真波形6、报时器的仿真波形八、顶层文件及仿真波形顶层文件的仿真波形:管脚号的分配如下:十:课程设计结论:此次课程设计通过最终下载及编译可实现以上功能,在七段显示器上可实现秒、分计数器60进制,时计数器24进制显示,以及调节CLK1、CLK2的频率可使计数器上数字延时显示。

多功能数字钟的FPGA实现设计报告 正文

多功能数字钟的FPGA实现设计报告  正文

1.设计任务及指标1.1设计任务能进行正常的时、分、秒计时功能,分别由6只数码管显示24小时、60分、60秒。

按下试验箱上的某个按键时,计时器迅速递增,并按24小时循环,计到23小时后再回到00。

按下试验箱上的某个按键时,计分器迅速递增,并按60分循环,计到59分后再回到00。

利用试验箱上的扬声器可以实现整,当计时到达59分50秒时开始报时,在59分50秒、52秒、54秒、56秒、58秒时鸣叫,鸣叫声频率为500HZ,整点报时频率可定义为1KHZ.1.2设计要求运用顶层设计思路设计好各个底层文件(VHDL代码),对各个底层文件进行功能仿真;采用原理图或者文本方法来实现顶层文件的设计,对顶层文件进行功能真仿真。

在顶层文件功能仿真正确之后,把顶层文件下载到实验箱的FPGA里边去,验证电路功能是否正确。

具体时间用6位数码管来显示,具有整点报时功能1.3 功能拓展实现数字钟的闹铃功能。

2.方案比较与选择方案一:系统直接采用1HZ脉冲作为作为时钟输入信号。

数码管采用静态显示。

时间调整采用具有预置功能的计数器。

报时为频率512Hz脉冲,并引入1024Hz脉冲进行整点报时。

方案二:系统采用1024HZ脉冲作为作为时钟输入信号。

数码管采用动态扫描显示。

时间调整采用一个数据选择器,以一个按键作为控制端。

当调整按键按下时,选择比较高的频率作为计数器计数信号作为输入信号,加快计数的速度,以此达到时间调整的效果。

图一方案二时钟流程方案比较:对于方案一,因为系统需要1024Hz和512Hz的脉冲驱动蜂鸣器,并且在快速调整时间是也需要比1Hz快的脉冲,故需要采用另外的脉冲输入,增加管脚资源开支和外部资源。

实现具有预置功能的计数器比较复杂,并且预置输入端需要多个端口。

数码管采用静态显示也会增加管脚的开销。

对于方案二,因为采用1024Hz的脉冲,能够通过分频得到多种频率的脉冲,因而可以实现单一脉冲信号输入即可完成快速调整时间和采用数码管动态扫描显示,节省管脚资源和外部资源。

基于FPGA的数字钟设计

基于FPGA的数字钟设计

数字系统课程设计报告书课题名称基于FPGA的数字钟设计院系姓名学号专业班级指导教师设计时间目录摘要 (1)1设计目的 (2)2设计内容及要求 (2)3系统整体方案及设计原理 (3)4各模块电路设计与实现 (4)4.1 分频模块设计与实现 (4)4.1.1分频模块图4.1.2分频模块程序4.2 计数器模块设计与实现 (5)4.2.1计数模块图4.2.2秒计数器程序4.2.3分计数器程序4.2.4时计数器程序4.3 1602显示驱动模块设计与实现 (10)4.3.1 1602显示驱动模块图4.3.2 1602显示驱动模块程序5系统仿真及硬件下载 (17)5.1系统仿真(步骤,总原理图,仿真图) (17)5.1.1系统仿真步骤5.1.2总原理图5.1.3仿真图5.2硬件下载(引脚分配,下载步骤) (18)5.2.1引脚分配5.2.2下载步骤6设计总结 (21)参考文献 (21)摘要随着微电子技术、计算机技术、半导体技术的发展,很多传统的数字门电路设计已经被可编程逻辑器件代替。

而相对于传统的模拟控制技术,也被数字控制系统所代替。

作为可编程逻辑器件的硬件描述语言Verilog HDL,由于它具有类似于通用C语言的风格,被不少FPGA开发者所推崇。

在数字控制这个领域,FPGA的应用也越来越广泛,因此,作为硬件描述语言Verilog HDL就显示出了它的重要性。

它是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级这三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。

本设计为一个数字钟,一个具有“时”、“分”、“秒”显示的计时器,(23时59分59秒)。

它采用EDA技术,以硬件描述语言Verilog 为系统逻辑描述手段设计文件,在QUARTUSII工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于FPGA的数字钟。

电子综合设计多功能数字钟报告

电子综合设计多功能数字钟报告

电子综合设计多功能数字钟报告报告内容如下:一、设计目的和原理多功能数字钟是一种能够显示时间,并具有闹钟、计时、倒计时等功能的电子设备。

本设计的目的是通过FPGA实现一个多功能数字钟的功能,以实现时间的显示和闹钟的设置功能。

二、设计方案和实现1.硬件设计方案:本设计使用FPGA作为主控芯片,使用七段数码管作为显示器,通过与FPGA的IO口连接来实现时间的显示功能。

同时,使用按键作为输入进行功能的选择和设置。

2.硬件连接:将FPGA的IO口连接到七段数码管的控制端,通过IO口输出相应的数字信号来控制数码管的亮灭。

将按键连接到FPGA的IO口,通过IO口输入按键的信号。

此外,还需要连接一个晶振电路来提供时钟信号。

3.软件设计方案:本设计使用VHDL语言进行程序设计,通过状态机来实现多功能数字钟的功能。

具体实现包括时间的显示、闹钟的设置和启动、计时和倒计时功能的实现。

通过按键的输入来切换不同的状态,实现不同功能的切换和设置。

4.软件实现具体步骤:(1)定义状态机的状态,包括时间显示、闹钟设置、计时和倒计时等状态。

(2)在时间显示状态下,通过FPGA的IO口输出相应的数字信号来控制七段数码管的亮灭,实现时间的显示。

(3)在闹钟设置状态下,通过按键的输入来设置闹钟时间,并将设置好的时间保存在寄存器中。

(4)在计时和倒计时状态下,通过按键的输入来实现计时和倒计时功能,并通过七段数码管的显示来实时显示计时和倒计时的时间。

以下为本设计的完整程序代码:```vhdl--时钟频率--定义状态signal state : state_type;--定义时钟、按键和数码管信号signal clk : std_logic;signal key : std_logic_vector(1 downto 0);signal seg : std_logic_vector(6 downto 0);--闹钟时间寄存器signal alarm_hour_reg : std_logic_vector(5 downto 0);signal alarm_min_reg : std_logic_vector(5 downto 0);--计时和倒计时寄存器signal count_up_reg : std_logic_vector(23 downto 0); signal count_down_reg : std_logic_vector(23 downto 0); signal count_down_flag : std_logic := '0';beginclock : processbeginwhile true loopclk <= '0';wait for 10 ns;clk <= '1';wait for 10 ns;end loop;end process;key_scan : process(clk)beginif rising_edge(clk) thenkey <= key_scan_func; -- 按键扫描函数end if;end process;fsm : process(clk, key)beginif rising_edge(clk) thencase state isif key = "10" then -- 第一个按键按下state <= set_alarm;elsif key = "01" then -- 第二个按键按下state <= count_up;end if;when set_alarm =>seg <= set_alarm_func; -- 闹钟设置函数if key = "00" then -- 两个按键同时按下elsif key = "01" then -- 第一个按键按下state <= count_up;end if;when count_up =>seg <= count_up_func; -- 计时函数if key = "00" then -- 两个按键同时按下elsif key = "10" then -- 第二个按键按下state <= count_down;count_down_flag <= '1';end if;when count_down =>seg <= count_down_func; -- 倒计时函数if key = "00" then -- 两个按键同时按下count_down_flag <= '0';elsif key = "01" then -- 第一个按键按下state <= count_up;count_down_flag <= '0';end if;end case;end if;end process;--数码管信号和显示模块的连接display : entity work.seg_displayport mapclk => clk,seg => segend architecture;```四、总结与展望通过FPGA实现多功能数字钟的设计,在硬件和软件的配合下,实现了时间的显示和闹钟的设置功能。

FPGA课程设计报告

FPGA课程设计报告

F PG A课程设计报告(实现多功能数字钟)专业班级: 07通信2班******学号:************时间:2009.12.30一、标题:设计多功能数字钟控制电路二、任务书:用MAX+PLU SⅡ软件及Verilog HDL语言设计一个多功能的数字钟,包括有时、分、秒的计时,以及校时(对小时、分钟和秒能手动调整以校准时间)、正点报时(每逢整点,产生“嘀嘀嘀嘀-嘟”,4短一长的报时音)等附加功能。

三、关键词:24进制、60进制、正点报时、校时、数字钟四、总体方案:多功能数字钟控制电路框图是由三部分组成的,即秒分时控制电路、整点报时控制电路、时段控制电路。

用Verilog HDL硬件描述语言完成编译和仿真。

五、原理框图如下:↓↓↓六、Verilog HDL硬件描述语言编写的功能模块:/*秒计数器m60*/module m60(M,CP60M,CPM,RD);output [7:0]M;output CP60M;input CPM;input RD;reg [7:0]M;wire CP60M;always@(negedge RD or posedge CPM)beginif(!RD)begin M[7:0]<=0;endelsebeginif((M[7:4]==5)&&(M[3:0]==9))beginM[7:0]<=0;endelsebeginif(M[3:0]==9)beginM[3:0]<=0;if(M[7:4]==5)begin M[7:4]<=0;endelse M[7:4]<=M[7:4]+1;endelse M[3:0]<=M[3:0]+1;endendendassign CP60M=~(M[6]&M[4]&M[3]&M[0]); endmodule/*分计数器m60*/module m60(M,CP60M,CPM,RD);output [7:0]M;output CP60M;input CPM;input RD;reg [7:0]M;wire CP60M;always@(negedge RD or posedge CPM) beginif(!RD)begin M[7:0]<=0;endelsebeginif((M[7:4]==5)&&(M[3:0]==9))beginM[7:0]<=0;endelsebeginif(M[3:0]==9)beginM[3:0]<=0;if(M[7:4]==5)begin M[7:4]<=0;endelse M[7:4]<=M[7:4]+1;endelse M[3:0]<=M[3:0]+1;endendendassign CP60M=~(M[6]&M[4]&M[3]&M[0]); endmodule/*小时计数器m24*/module m24(H,CPH,RD);output [7:0]H;input CPH,RD;reg [7:0]H;always@(negedge RD or posedge CPH) beginif(!RD) H[7:0]<=0;elsebeginif((H[7:4]==2)&&(H[3:0]==3))beginH[7:0]<=0;endelsebeginif(H[3:0]==9)begin H[3:0]<=0;H[7:4]<=H[7:4]+1;endelse H[3:0]<=H[3:0]+1;endendendendmodule/*秒分时控制计数器xiaoshi2*/module xiaoshi2(CPM,CPH,CPS,CP60M,CP60S,SWM,SWH);output CPM,CPH;input SWM,SWH;input CPS,CP60S,CP60M;reg CPM,CPH;always@(SWM or SWH or CPS or CP60S or CP60M)begincase({SWM,SWH})2'b01: begin CPM<=CPS;CPH<=CP60M;end2'b10: begin CPM<=CP60S;CPH<=CPS;enddefault: begin CPM<=CP60S;CPH<=CP60M;end endcaseendendmodule/*时段控制器sdkz*/module sdkz(h,sk);input [7:0]h;output sk;reg sk;always@(h)beginif((h<=5)||(h>=19))sk<=1;elsesk<=0;endendmodule/*报时计数器baoshi*/module baoshi(m6,m4,m3,m0,s6,s4,s3,s0,dy,gy,bshi); input m6,m4,m3,m0,s6,s4,s3,s0,dy,gy;output bshi;wire bm;reg bshi;assign bm=m6&m4&m3&m3&m0&s6&s4&s0; always@(bm or s3 or dy or gy)beginif(bm&s3)bshi<=gy;else if(bm)bshi<=dy;elsebshi<=0;endendmodule七:各模块原理图及仿真波形:24进制原理图:60进制原理图:电路原理图:时段控制:报时:1、秒计数器仿真波形2、分计数器的仿真波形3、小时计数器的仿真波形4、秒分时控制电路的仿真波形5、时段控制的仿真波形6、报时器的仿真波形八、顶层文件及仿真波形顶层文件的仿真波形:九:选用ACEX1K芯片中的EP1K30TC144-3型号,对芯片管脚号的分配如下:十:课程设计结论:此次课程设计通过最终下载及编译可实现以上功能,在七段显示器上可实现秒、分计数器60进制,时计数器24进制显示,以及调节CLK1、CLK2的频率可使计数器上数字延时显示。

FPGA设计的报告课程设计

FPGA设计的报告课程设计

FPGA课程设计实验报告实验一:设计一个可控的100进制可逆计数器一、实验要求用DE2-115开发板下载。

(1)计数器的时钟输入信号周期为200ns。

(2)以十进制形式显示。

(3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用clr plus minus 功能0 ××复位为01 1 0 递增计数1 0 1 递减计数1 1 1 暂停计数二、关键词可控制、可逆、100进制、复位、暂停、递增、递减三、内容摘要module updown_count(qout,reset,clk,plus,minus);output[7:0] qout;/*定义一个8位的输出,其目的是低四位和高四位分别表示计数器的个位和十位。

*/input clk,plus,minus,reset;//定义四个输入,时钟,加计数,减计数和清零reg[7:0] qout;//qout的数据类型为寄存器型always @(posedge clk)//当clk上升沿到来时执行一遍下列程序beginif(!reset) qout<=0;//当reset为低电平时,计数器执行清零功能,否则跳过elsebegincase({minus,plus})//case语句模块,包含加,减和暂停四个模块2'b10:if (qout[3:0]==0)//判断个位是否为零,若不为零,跳到个位减一beginqout[3:0]<=9;//给个位赋值if(qout[7:4]==0) qout[7:4]<=9;//判断十位是否为零,并且给十位赋值elseqout[7:4]<=qout[7:4]-1;//由于个位赋9,相当于向十位借一,因而十位减一endelseqout[3:0]<=qout[3:0]-1;//个位减一/*这一部分是减计数模块,其思路是:首先判断个位是否为零,若为零,则执行后面的程序,个位直接赋9,并且十位减一;否则个位减一*/ 2'b01:if (qout[3:0]==9)//判断个位是否为9,否则跳到个位加一beginqout[3:0]<=0;//若上面个位为9判断成立,则给个位赋值if(qout[7:4]==9) qout[7:4]<=0;//判断十位是否为9,若为9,则赋0elseqout[7:4]<=qout[7:4]+1;//若十位不为9,十位加一endelseqout[3:0]<=qout[3:0]+1;//个位加一/*这一部分是加计数模块,首先判断个位是否为9,若不为9,个位加1;否侧,再判断十位是否为9,若为9,十位赋0,否侧十位加1。

fpga数字钟实训报告(具有8点报时,按键调时功能).

fpga数字钟实训报告(具有8点报时,按键调时功能).

桂林电子科技大学职业技术学院FPGA应用实训报告数字钟学院(系):电子信息工程系专业:电子信息工程技术学号: 1212220217学生姓名:李建军指导教师:叶俊明目录摘要 (2)1 绪论 (3)2 课题背景 (4)2.1设计任务与要求 (4)2.2 设计目的 (4)2.3总体设计方案 (4)3 程序方案论证 (5)3.1分频方案论证 (5)3.1.1分频模块方案I (5)3.1.2分频模块方案II (5)3.2计时模块方案论证 (6)3.2.1计时模块方案I (6)3.2.2计时模块方案 II (6)3.3方案总结 (7)4 系统软件设计 (7)4.1程序流程图 (7)4.2计时模块 (8)4.3闹钟模块 (8)4.4显示模块 (8)5系统硬件设计 (9)5.1 FPGA的介绍 (9)5.1.1 FPGA概述 (9)5.1.2 FPGA基本结构 (9)5.2原理框图 (11)6调试 (12)6.1调时程序调试 (12)6.2闹钟程序调试 (12)总结 (13)致谢 (14)参考文献 (15)附录 (16)摘要数字钟是由振荡器、分频器、计数器、译码器、数码显示器等几部分组成。

振荡电路:主要用来产生时间标准信号,因为时钟的精度主要取决于时间标准信号的频率及稳定度,所以采用石英晶体振荡器。

分频器:因为振荡器产生的标准信号频率很高,要是要得到“秒”信号,需一定级数的分频器进行分频。

计数器:有了“秒”信号,则可以根据60秒为1分,24小时为1天的制,分别设定“时”、“分”、“秒”的计数器,分别为 60进制,60进制,24进制计数器,并输出一分,一小时,一天的进位信号。

译码显示:将“时”“分”“秒”显示出来。

将计数器输入状态,输入到译码器,产生驱动数码显示器信号,呈现出对应的进位数字字型。

由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路可以对分和时进行校时。

另外,计时过程要具有报时功能,当时间到达整点时开始响,蜂鸣器不停地响1分钟后不响。

fpga数字钟课程设计报告

fpga数字钟课程设计报告

课程设计报告设计题目:基于FPGA的数字钟设计班级:电子信息工程1301姓名:王一丁指导教师:李世平设计时间:2016年1月摘要EDA(ElectronicDesignAutomation)电子设计自动化,是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成软件方式设计得电子系统到硬件系统,最终形成集成电子系统或专用集成芯片。

本次课程设计利用QuartusII为设计软件,VHDL为硬件描述语言,结合所学知识设计一个多功能时钟,具有显示年、月、日、时、分、秒显示,计时,整点报时,设定时间等功能。

利用硬件描述语言VHDL对设计系统的各个子模块进行逻辑描述,采用模块化的思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑综合优化、逻辑仿真、最终完成本次课程设计的任务。

关键词:EDAVHDL语言数字钟目录摘要1课程设计目的2课程设计内容及要求设计任务设计要求3VHDL程序设计方案论证系统结构框图设计思路与方法状态控制模块时分秒模块年月日模块显示模块扬声器与闹钟模块整体电路4系统仿真与分析5课程设计总结,包括.收获、体会和建议6参考文献1课程设计目的(1)通过设计数字钟熟练掌握EDA软件(QUARTUSII)的使用方法,熟练进行设计、编译,为以后实际工程问题打下设计基础。

(2)熟悉VHDL硬件描述语言,提升分析、寻找和排除电子设计中常见故障的能力。

(3)通过课程设计,锻炼书写有理论根据的、实事求是的、文理通顺的课程设计报告。

2课程设计内容及要求设计任务(1)6个数字显示器显示时分秒,setpin按键产生一个脉冲,显示切换为年月日。

(2)第二个脉冲可预置年份,第三个脉冲可以预置月份,依次第四、五、六、七个脉冲到来时分别可以预置时期、时、分、秒,第八个脉冲到来后预置结束正常从左显示时分秒。

(3)up为高时,upclk有脉冲到达时,预置位加一,否则减一。

设计要求(1)在基本功能的基础上,闹钟在整点进行报时,产生一定时长的高电平。

基于fpga定时闹钟课程设计

基于fpga定时闹钟课程设计

课程设计任务书学生姓名:专业班级:通信1002指导教师:工作单位:信息学院题目: 基于FPGA定时闹钟实验报告初始条件:quartus II 软件要求完成的主要任务:设计一个具有系统时间设置和带闹钟功能的24小时计时器中的应用。

电子钟要求如下:(1)计时功能:4位LED数字时钟对当前时间的小时和分钟进行显示,显示的最长时间为23小时59分。

(2)设置并显示新的闹钟时间:用户先按“set”键,再用数字键“0”~“9”输入时间,然后按“alarm”键确认。

在正常计时显示状态下,用户直接按下“alarm”键,则已设置的闹钟时间显示在显示屏上。

(3)设置新的计时器时间:用户先按“set”键,再用数字键“0”-“9”输入新的时间,然后按“time”键确认。

(4)闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。

时间安排指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 .............................................................................................................................................. I II Abstract.......................................................................................................................................... I V1 FPGA概述 (1)1.1 FPGA基本结构 (1)1.2 FPGA编程原理 (1)1.3 FPGA设计流程 (2)2总体方案 (4)2.1顶层设计 (4)3各模块设计与实现 (5)3.1计时模块 (5)3.2分频器模块 (8)3.3显示模块 (10)3.4校对模块 (12)3.5闹铃设置模块 (14)3.6闹铃发声模块 (17)4 心得体会 (21)5参考文献 (22)摘要FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称,与之相应的CPLD是复杂可编程逻辑器件(Complex Programmable Logic Device)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。

基于FPGA:电子钟的设计报告

基于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的数字钟设计

电子课程设计实验报告本报告共有两个项目——数字钟和音乐计算器,每个项目由三部分组成,第一部分为工程顶层图,第二部分为模块划分及功能,第三部分为实验中遇到的问题及解决方法,最后是对课程的一点建议。

项目一:数字钟一.顶层图二.模块划分及功能数字钟主要有分频,输入,计时,闹钟,数据选择,音乐,显示七大模块,其中各模块的功能介绍如下:1.分频模块(fenpin):功能是产生用于计时,扫描输入,扫描显示,以及播放音乐所需的各个频率的信号。

2.输入模块(input):功能是识别键盘的输入,具体来说,主要是判断是否有键按下,并且确定按下的是哪个键,并给出相应的操作信号。

3.计时模块(minute,hour):分为分计时(minute)和小时计时(hour)两个小模块,分别完成分位与小时为的计时与时间设置功能,正常计时是每次清零后从00:00开始计时,若预置时间,则从预置数开始计。

4.闹钟模块(alart):功能是设置闹钟和整点报时,当切换至闹钟设置时,可以输入时间,并将其记录下来,当时钟时间与闹钟预设时间相同时,给出一个脉冲信号,另一功能是当时钟为整点时给出一个脉冲信号。

5.数据选择(sel):功能是设置时间时将键盘输入的数据传给计时和显示模块,当设置闹钟时将键盘输入的数据传给闹钟和显示模块。

6.音乐(music):功能是当闹钟部分给出给出响铃信号(闹钟和整点)时响起两端不同的音乐。

7.扫描显示(display):功能是在数码管上分别显示时间的四位数值,并且当时间设置至某一位时点亮相应的小数点。

三.问题及解决方法1.语法错误因为第一个项目是数字钟,刚接触时对VHDL语言还不是非常熟悉,因此常常会犯忘掉分号或是END IF 之类的错误,这类问题根据编译时的提示都能解决。

2.键盘的稳定性问题最初设计的键盘扫描方式是一直扫描,当有按键按下时也不断给出该键的位置并执行相应的操作,但是在上板后发现键盘不稳定,具体表现是当按下某个键时两次扫描给出的位置可能有偏差,例如按着2键,可能在中间某一次会显示成3,最后解决的方法是当检测到如果有按键按下时边将扫描列的高电平锁定在该列,例如检测到有按键1时,便将列输出锁定为“1000”,直到按键松开时再从下一列重新开始扫描,这样键盘就稳定了很多。

基于FPGA的数字钟设计-华中科技大学电子线路实验报告

基于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的多功能时钟的设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:第一章绪论现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。

支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。

前者以微细加工技术为代表,而后者的代表就是电子设计自动化(electronic design automatic, EDA)技术。

本设计采用的VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级这三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。

ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器;而FPGA是特殊的ASIC芯片,与其它的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。

在控制系统中,键盘是常用的人机交换接口,当所设置的功能键或数字键按下的时候,系统应该完成该键所对应的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告设计题目:基于FPGA的数字钟设计班级:电子信息工程1301学号:********姓名:***指导教师:***设计时间:2016年1月摘要EDA(Electronic Design Automation)电子设计自动化,是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成软件方式设计得电子系统到硬件系统,最终形成集成电子系统或专用集成芯片。

本次课程设计利用Quartus II 为设计软件,VHDL为硬件描述语言,结合所学知识设计一个多功能时钟,具有显示年、月、日、时、分、秒显示,计时,整点报时,设定时间等功能。

利用硬件描述语言VHDL 对设计系统的各个子模块进行逻辑描述,采用模块化的思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑综合优化、逻辑仿真、最终完成本次课程设计的任务。

关键词:EDA VHDL语言数字钟目录摘要1 课程设计目的2 课程设计内容及要求2.1 设计任务2.2 设计要求3 VHDL程序设计3.1方案论证3.2 系统结构框图3.3设计思路与方法3.3.1 状态控制模块3.3.2 时分秒模块3.3.3 年月日模块3.3.4 显示模块3.3.5脉冲产生模块3.3.6 扬声器与闹钟模块3.4 RTL整体电路4 系统仿真与分析5 课程设计总结,包括.收获、体会和建议6 参考文献1 课程设计目的(1)通过设计数字钟熟练掌握EDA软件(QUARTUS II)的使用方法,熟练进行设计、编译,为以后实际工程问题打下设计基础。

(2)熟悉VHDL 硬件描述语言,提升分析、寻找和排除电子设计中常见故障的能力。

(3)通过课程设计,锻炼书写有理论根据的、实事求是的、文理通顺的课程设计报告。

2 课程设计内容及要求2.1 设计任务(1)6个数字显示器显示时分秒,setpin按键产生一个脉冲,显示切换为年月日。

(2)第二个脉冲可预置年份,第三个脉冲可以预置月份,依次第四、五、六、七个脉冲到来时分别可以预置时期、时、分、秒,第八个脉冲到来后预置结束正常从左显示时分秒。

(3)up为高时,upclk有脉冲到达时,预置位加一,否则减一。

2.2 设计要求(1)在基本功能的基础上,闹钟在整点进行报时,产生一定时长的高电平。

(2)实现闹钟功能,可对闹钟时间进行预置,当达到预置时间时进行报时。

3 VHDL程序设计3.1方案论证该数字钟可以实现:计时功能、整点报时、闹钟和预置时间功能,因此时钟系统可分为5个模块:功能选择模块、时分秒计数模块、年月日计数模块、显示模块、扬声器模块、脉冲产生模块。

(1)功能选择模块是有状态机构成的,功能为依次进行、设置时间、设置闹钟时间。

调整工作状态:数字钟的初始状态显示时分秒,在setpin按键产生一个脉冲,显示切换为年月日。

设置时间:第二个脉冲可预置年份,第三个脉冲可以预置月份,依次第四、五、六、七个脉冲到来时分别可以预置时期、时、分、秒。

第八个脉冲到来后,预置结束恢复初始状态,正常显示时分秒。

设置闹钟时间:闹钟在setpin1按键产生第一个脉冲时设定闹钟的时,第二个脉冲设定分,第三个脉冲设定秒,第四个脉冲恢复显示时分秒。

(2)时分秒计数模块包括正常计时、闹钟、整点报时三个功能。

正常计时功能通过软件编写,60进制的秒计数器,60进制的分计数器,24进制的时计数器。

时分秒的计数器具有清0、置数、进位和计数功能。

其中reset为清0信号,当reset为0时,时分秒的计数器清0。

当set产生第四个脉冲后,连续产生的set信号使分秒计数器依次进行置数。

以upclk为时钟,通过up对预置位进行控制,当up为高时且upclk有脉冲到来时,预置位加一,否则减一。

当set产生第八个脉冲时,数字钟恢复时分秒的显示。

闹钟功能是在正常计数功能上拓展,分为闹钟时间预置和闹钟响应两个部分。

闹钟时间预置功能:当set1连续产生脉冲时,依次对闹钟的时分秒位进行预置。

以upclk为时钟,通过up对预置位进行控制,当up为高时且upclk有脉冲到来时,预置位加一,否则减一。

当set1产生第四个脉冲时,数字钟恢复时分秒的显示。

与此同时在程序中增添变量时计时功能可以持续运行。

闹钟响应功能:通过预置后,储存的变量与计时器模块的时、分、秒进行比对,当时、分、秒相同时,模块产生一个一段时间的高电平,传输给闹钟响应模块。

整点报时功能:当计数器中的分位等于59,秒位等于59时,模块产生一段高电平,输出给扬声器模块进行报时。

(3)年月日计数模块分为年月日计数功能,年月日预置数功能。

年月日计数功能:以时位的进位脉冲为计时脉冲,闰年二月份为29天,普通年二月份为28天。

一月、三月、五月、七月、八月、十月、十二月为31天,四月、六月、九月、十一月为30天。

年月日预置数功能:当set产生第一个脉冲后,依次进行年月日数器置数。

以upclk为时钟,通过up对预置位进行控制,当up为高时且upclk有脉冲到来时,预置位加一,否则减一。

(4) 显示模块:以时分秒,年月日模块的输出、状态标志为输入信号,通过状态控制模块产生的状态标志对显示模块进行控制,显示计时、预置时的不同状态。

(5)扬声器模块:输入信号为分位、秒位和状态信号,当计时时钟到达整点是输出高电平,其他时刻输出低电平。

(6)脉冲产生模块:对输入的信号进行1000分频,产生周期为一秒的时钟信号,用于数字钟的时钟输入。

3.2系统结构框图3.3设计思路与方法3.3.1 状态控制模块状态控制模块实现对各个功能模块的整体设计,包括对时间与日期的显示与调整,闹钟的显示与调整等控制操作。

状态机的输入为setpin,setpin1,upclk。

状态机的状态有11种状态。

g:闹钟设置时位;g:闹钟设置分位;2g:闹钟设置秒位;1s:时钟显示时分秒;1s:时钟显示年月日;2s:钟设置年;s:时钟设置月;4s:时钟设置日;5s:时钟设置时;3s:时钟设置分;7s:设置秒6在产生如上状态的同时产生Tlock,flag状态标志,此标志用来进行时钟设置、闹钟设置与显示控制。

RTL 电路图实现代码如下:process(upclk)beginif (upclk='1' and upclk'LAST_VALUE='0')thenstate<=next_state; -- 实现状态变换end if;end process;process(state,setpin,setpin1)beginnext_state<=state;case(state) iswhen s0 =>Tlock<="0000";flag<='1';if(setpin1='1' and setpin1'LAST_VALUE='0')thennext_state<=g0; end if;if(setpin='1' and setpin'LAST_VALUE='0') then next_state<=s1; end if;when s1=>Tlock<="0001";flag<='1';if(setpin1='1' and setpin1'LAST_VALUE='0')then next_state<=g0;end if;if(setpin='1' and setpin'LAST_VALUE='0') then next_state<=s2;end if;when s2=>Tlock<="0010";flag<='1';if(setpin1='1' and setpin1'LAST_VALUE='0')then next_state<=g0;end if;if(setpin='1' and setpin'LAST_VALUE='0') then next_state<=s3;end if;when s3=>Tlock<="0011";flag<='1';if(setpin1='1' and setpin1'LAST_VALUE='0')then next_state<=g0;end if;if(setpin='1' and setpin'LAST_VALUE='0') then next_state<=s4;end if;when s4=>Tlock<="0100";flag<='1';if(setpin1='1' and setpin1'LAST_VALUE='0')then next_state<=g0;end if;if(setpin='1' and setpin'LAST_VALUE='0') then next_state<=s5;end if;when s5=>Tlock<="0101";flag<='1';if(setpin1='1' and setpin1'LAST_VALUE='0')then next_state<=g0;end if;if(setpin='1' and setpin'LAST_VALUE='0') then next_state<=s6; end if;when s6=>Tlock<="0110";flag<='1';if(setpin1='1' and setpin1'LAST_VALUE='0')then next_state<=g0;end if;if(setpin='1' and setpin'LAST_VALUE='0') thennext_state<=s7;end if;when s7=>Tlock<="0111";flag<='1';if(setpin1='1' and setpin1'LAST_VALUE='0')then next_state<=g0;end if;if(setpin='1' and setpin'LAST_VALUE='0') then next_state<=s0; end if;when g0=>Tlock<="1000";flag<='0';if(setpin1='1' and setpin1'LAST_VALUE='0')then next_state<=g1;end if;if(setpin='1' and setpin'LAST_VALUE='0') then next_state<=s0;end if;when g1=>Tlock<="1001";flag<='0';if(setpin1='1' and setpin1'LAST_VALUE='0')then next_state<=g2;end if;if(setpin='1' and setpin'LAST_VALUE='0') then next_state<=s0; end if;when g2=>Tlock<="1010";flag<='0';if(setpin1='1' and setpin1'LAST_VALUE='0')then next_state<=s0;end if;if(setpin='1' and setpin'LAST_VALUE='0') then next_state<=s0;end if;when others=>next_state<=s0;end case;end process;3.3.2 时分秒模块时分秒模块的输入为ce(使能端),clk0(系统输入时钟),clk1(upclk时钟),flag(标志位),lock(状态位),up(预置位增减控制),ov(进位位),op(闹钟与扬声器响应)。

相关文档
最新文档