基于VHDL课程设计数字钟(30页).docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《基于VHDL课程设计数字钟(30页).docx》由会员分享,可在线阅读,更多相关《基于VHDL课程设计数字钟(30页).docx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-基于VHDL课程设计数字钟-第 26 页Shanghai Normal University课程设计名称 基于FPGA的数字钟设计姓名 专业班级 通信工程(1)班学院 信息与机电工程学院 完成日期 2017年6月目录摘 要1一、绪论21.1 前言21.2FPGA概述21.2.1FPGA简介21.2.2用FPGA设计数字钟的优点31.3硬件描述语言VHDL31.4 Quartus软件3二、数字钟总体设计方案42.1总体结构42.2 设计思路4三、数字钟各功能模块介绍53.1 分频模块63.1.1引脚说明及功能介绍63.1.2核心源代码及解释63.2 控制模块73.2.1引脚说明及功能介绍73.
2、2.2部分源代码及解释73.3 时、分、秒模块83.3.1 引脚说明及功能介绍83.3.2部分源代码及解释83.4 设置时间模块93.4.1 引脚说明及功能介绍93.4.2部分源代码及解释103.5 设置闹钟模块103.5.1 引脚说明及功能介绍103.5.2部分源代码及解释113.6 比较闹钟模块123.6.1 引脚说明及功能介绍123.6.2部分源代码及解释123.7 选择模块133.7.1 引脚说明及功能介绍133.7.2部分源代码及解释133.8 译码模块143.8.1 引脚说明及功能介绍143.8.2部分源代码及解释15四、设计结果图示19五、结论215.1遇到的问题和改进215.2
3、工作分配比例21六、附录22摘 要VHDL是一种用形式化方法来描述数字化电路和设计数字逻辑系统的语言,设计者可以利用这种语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真,再自动综合到门级电路,最后用PLD实现其功能。与传统设计方法相比,VHDL描述电路行为的算法设计层次较高、用于较复杂的计算时,能尽早发现存在的问题,缩短设计周期,可独立实现,修改方便,系统硬件描述能力强,语言标准、规范、移植性强,是多层次的硬件描述语言具有很好的实用。本文是基于VHDL语言的简易电子数字钟的设计。设计主要是由数码管结合按键来显示相应的时间,可以对时、分进行单独校时,使其显示标准时间,并且具有设置闹钟
4、以及整点半点报时的功能。总的程序由几个各具不同功能的单元模块组,其中包括分频模块、时分秒计数和设置模块、比较器模块、译码显示等模块。关键词:数字钟、VHDL、状态机一、绪论1.1 前言随着生产和科学技术发展的需要,现在电子技术的应用已经渗透到了人类生活和生产的各个方面,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。在这个生活节奏飞快的社会,时间概念对人们来说尤为重要。在我们现代的生活中,早已离不开钟表的身影。原始的机械钟只能实现走时报时的功能早已不能满足人们的需求。数字钟是一种数字电路实现时、分、秒计时的装置,通过计时精度
5、很高的石英晶振,采用相应进制的计数器,转化为二进制数,通过译码和显示电路准确的将时间“时”“分”“秒”用数字的方式显示出来。与传统的机械时钟相比具有更高的准确性与直观性,且无机械装置,具有更高的使用寿命。钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。1.2 FPGA概述1.2.1 FPGA简介FPGA是英文FieldProgrammable Ga
6、te Array的缩写,即现场可编程门阵列,是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。 FPGA有多种配置模式
7、:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。1.2.2用FPGA设计数字钟的优点FPGA的逻辑功能全部用硬件电路实现,内部有丰富的触发器和IO引脚,是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一,并且FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。因此,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。使用FPGA 可以实现你想实现的任何数字电路,可以定制各种电路,减少受制于专用芯片的束缚
8、,在设计过程中可以灵活的更改设计。因此,利用FPGA 设计数字钟更加灵活方便。1.3硬件描述语言VHDLVHDL,即超高速集成电路硬件描述语言,是最早被接纳为IEEE标准的硬件描述语言。它是一种多层次的硬件描述语言,覆盖面广,描述能力强,具有良好的可读性,既可以被计算机接受,也容易被理解。因为VHDL的硬件描述与工艺技术无关,因此其本身的生命期长,工艺改变时,只需修改相应程序中的属性参数即可,VHDL支持大规模设计的分解与已有设计的再利用,事实上已经成为通用硬件描述语言。1.4 Quartus软件Quartus是Altera公司推出的新一代FPGA/CPLD开发软件,适合于大规模复杂的逻辑电路
9、设计。它是Altera公司的第四代可编程逻辑器件集成开发环境,提供了从设计输入到器件编程的全部功能,同低三代设计工具MAXPLUS 相比,Quartus设计软件增加了网络编辑功能,提升了调试能力,解决了潜在的设计延迟,同时其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。二、数字钟总体设计方案2.1总体结构 图 1 系统结构图2.2 设计思路数字钟的设计模块包括:分频器、“时、分、秒”计数器、设置时间模块、设置闹钟、比较模块、选择模块、控制模块和译码显示电路。每一个功能模块作为一个实体单独进行设计,最后再将各个模块的原理图连接起来。(1)开关EN(SW0)控制数码管显示,SW0
10、关闭时显示学号,打开后24h计时制计时并显示。(2)校时以及设置闹钟:按下TIMESET键开始设置时间,按下SHIFT键表示移位,按下ADD键对应数字加一,再次按下TIMESET键回到走时状态。分钟和时钟校准时,下方LED发光表示提示。(3)闹钟:闹钟定时时间到,对应LED闪烁,持续60s。(4)整点、半点报时:当分钟时间为00或30 时,对应不同的LED发光。(5)显示: 6个LED数码管显示小时、分、秒。2.4 RTL图图2 系统RTL图三、数字钟各功能模块介绍3.1 分频模块3.1.1引脚说明及功能介绍图3 分频模块bdf图 表1 分频模块引脚说明引脚说明输入CLK系统50Mhz晶振频率
11、EN 开关SW0,打开时显示时间关闭显示学号QUICK开关SW1,打开后输出50hz频率,关闭时输出10hz频率输出CLK_OUT10OR50输出10hz或者50hz频率3.1.2核心源代码及解释PROCESS(CLK,EN)VARIABLE TEMP1 : INTEGER RANGE 24999999 DOWNTO 0;VARIABLE TEMP50 : INTEGER RANGE 499999 DOWNTO 0;BEGIN IF EN=1 THEN IF CLKEVENT AND CLK=1THEN IF TEMP1=24999999 THEN TEMP1:=0;Q1=NOT Q1;ELS
12、E TEMP1:=TEMP1+1;END IF;IF TEMP50=499999 THEN TEMP50:=0;Q50=NOT Q50;ELSE TEMP50:=TEMP50+1; -通过计数将较高频率的时钟分频,得到得到较低频率的时钟信号END IF;END IF;ELSE TEMP1:=0;Q1=0;TEMP50:=0;Q50=0;END IF;END PROCESS;PROCESS(QUICK)BEGINIF QUICK=0 THEN CLK_OUT1OR50=Q1;-通过按键选择输出的频率ELSE CLK_OUT1OR50=Q50;END IF;END PROCESS;3.2 控制模块
13、3.2.1引脚说明及功能介绍图4 控制模块bdf图表2 控制模块引脚说明引脚说明输入ALARMKEY0按下时,进入闹钟设置EN开关SW0,打开时显示时间关闭显示学号输出COUT1.0输出两个计时和闹钟设置状态3.2.2部分源代码及解释LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUTROL ISPORT ( ALARM,EN:IN STD_LOGIC;COUT:OUT STD_LOGIC_VECTOR(1 DOWNTO 0)END ENTITY;ARCHITECTURE ONE
14、 OF COUTROL ISSIGNAL TEMP1:STD_LOGIC:=0; 设置变量TEMP1表示KEY0的状态BEGIN PROCESS(ALARM)BEGIN IF ALARMEVENT AND ALARM=1 THEN TEMP1=NOT TEMP1; END IF;END PROCESS;PROCESS(TEMP1) TEMP1=0时,输出状态为计时(01);TEMP1=1 BEGIN时,输出状态为闹钟设置(10)IF TEMP1=0 THEN COUT=01; ELSE COUT=10;END IF;END PROCESS;END ARCHITECTURE ONE;3.3 时、
15、分、秒模块3.3.1 引脚说明及功能介绍图5 秒模块bdf图 图6 分模块bdf图 图7 时模块bdf图表3 时/分/秒模块引脚说明引脚说明输入CLK输入的时钟信号输出SEC0/MIN0/HOUR0秒/分/时的低位SEC1/MIN1/HOUR1秒/分/时的高位COUT进位信号 3.3.2部分源代码及解释以秒钟模块为例:ARCHITECTURE ONE OF SEC ISSIGNAL S0,S1:STD_LOGIC_VECTOR(3 DOWNTO 0);-定义两个变量表示秒钟高位和低位BEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THENS0=S0+1;
16、IF S0=9 THEN S00);S1=S1+1;END IF;IF S1=5 AND S0=9 THEN S1=0000;S0=0000;COUT=1;ELSE COUT=0; -60进制计数器,即满六十则赋0且进位信号加一END IF;END IF;END PROCESS;SEC0=S0;SEC1=S1;END;3.4 设置时间模块3.4.1 引脚说明及功能介绍图8 设置时间模块bdf图表4 设置时间模块引脚说明引脚说明输入EN模块使能信号TIMESET按键KEY3,按下进入设置时间状态,再次按下返回走时状态SHIFT按键KEY2,按下移位ADD按键KEY1,按下对应数字加一SEC秒钟模
17、块产生的进位MIN分钟模块产生的进位HOU时钟模块产生的进位输出CO1分钟模块的CLK信号CO2时钟模块的CLK信号LED13设置分钟时LED亮LED16设置时钟时LED亮 3.4.2部分源代码及解释ARCHITECTURE BEHAV OF ST ISSIGNAL TEMP1: STD_LOGIC_VECTOR (1 DOWNTO 0):=00;-表示SHIFT按键按下产生的三种不同状态SIGNAL TEMP2: STD_LOGIC:=0; -检测TIMESET是否按下的变量BEGINPROCESS(SHIFT,ADD)BEGINIF EN=1 THEN IF TIMESETEVENT AN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 课程设计 数字 30
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内