FPGA课程设计

更新时间:2024-05-01 00:20:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

郑州轻工业学院

课程设计说明书

题目:基于FPGA的电子钟设计

姓名:事实上

院(系):电子信息工程学院 专业班级:电子信息工程14-2 学号:1654165416565 指导教师:蔡超峰 成绩:

时间: 2017 年 6 月 19 日至 2017 年 6 月 25 日

基于FPGA的电子钟设计

郑州轻工业学院 课程设计任务书

题目基于FPGA的电子钟设计

专业、班级电子信息工程14-2 学号 541401056514姓名*** 主要内容、基本要求、主要参考资料等:

主要内容:

要求学生使用VHDL语言设计一个显示时(2位)、分(2位)、秒(2位)的6个数字的多功能电子钟。该电子钟既可以作为闹钟,也可以作为计时器。系统的时钟频率为1024Hz,要求给出复位键、报警键、调整时钟等按键设计。 基本要求:

1、掌握FPGA的程序设计方法。 2、掌握硬件描述语言语法。 3、给出设计思路与框图

4、程序设计完成后要求在软件中实现功能仿真。 主要参考资料:

1、周润景.基于QuartusⅡ的FPGA/CPLD数字系统设计实例[M].电子工业

出版社.2007,8

2、林明权马维旻VHDL数字控制系统设计范例.电子工业出版社2003,1 3、褚振勇. FPGA设计及应用(第三版)[M].西安电子科技大学出版社.2012,4

完成期限:2017.6.19—2017.6.25 指导教师签名: 课程负责人签名:

2017年6月18日

基于FPGA的电子钟设计

摘要

伴随着集成电路技术的发展, 电子设计自动化(EDA)技术逐渐成为数字电路设计的重要手段。基于FPGA的EDA技术的发展和应用领域的扩大与深入,使得EDA技术在电子信息,通信,自动控制,计算机等领域的重要性日益突出。

本设计给出了一种基于FPGA的多功能数字钟方法,采用EDA作为开发工具,VHDL语言和图形输入为硬件描述语言,QuartusII作为运行程序的平台,编写的程序经过调试运行,波形仿真验证,下载到EDA实验箱的FPGA芯片,实现了设计目标。

系统主芯片采用CycloneII系列EP2C35F672C8。采用自顶向下的设计思想,将系统分为五个模块:分频模块、计时模块、报时模块、显示模块、顶层模块。用VHDL语言实现各个功能模块, 图形输入法生成顶层模块. 最后用QuartusII软件进行功能仿真, 验证数字钟设计的正确性。

测试结果表明本设计实现了一个多功能的电子钟功能,具有时、分、秒计时显示功能,以24小时循环计时;具有校正小时和分钟的功能;以及清零,整点报时功能。

关键词:EDA技术;FPGA;数字钟;VHDL语言;自顶向下

基于FPGA的电子钟设计

目录

1 绪论 .................................................. 5 1.1 研究背景 ......................................... 5 1.2 研究目的 ......................................... 6 1.3 研究方法和内容 ................................... 6 2 本软件开发环境 ........................................ 7 2.1 FPGA简介 ........................................ 7

2.1.1 FPGA概述 ............................................ 7

2.1.2 FPGA基本结构 ........................................ 7 2.1.3 FPGA系统设计流程 .................................... 8 2.1.4 FPGA开发编程原理 .................................... 9

2.2 QuartusII设计平台 ................................ 9

2.2.1 软件开发环境及基本流程............................... 9 2.2.2 软件的具体设计流程.................................. 10

3 总体设计方案 ......................................... 11 4 软件设计与功能实现 ................................... 12 4.1 分频模块功能的软件设计与实现 .................... 12 4.2 计时校时模块功能的软件设计与实现 ................ 13 4.3 整点报时模块功能的软件设计与实现 ................ 13 4.4 扫描译码显示模块功能的软件设计与实现 ............ 13 4.5 顶层模块功能的软件设计与实现 .................... 14 5 系统功能调试及分析 ................................... 14 6 结论 ................................................. 15 参考文献 ................................................ 16

基于FPGA的电子钟设计

1 绪论

现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。前者以微细加工技术为代表,而后者的代表就是电子设计自动化(electronic design automatic,EDA)技术。

ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器。而FPGA是特殊的ASIC芯片,与其他的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。本设计采用的VHDL语言是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。

数字化的钟表给人们带来了极大的方便。近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。而基于FPGA的数字钟设计能极大的扩展其功能。

1.1 研究背景

当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。它与传统的电子产品在设计上的显著区别是大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低。同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期。EDA技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术。

EDA是电子设计自动化(Elcctronic Design Automation)的缩写,是90年代初从CAD(计算机辅助设备),CAM(计算机辅助制造),CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具,根据硬件描述语言VHDL完成设计文件,自动的完成逻辑编译,化简,分割,综合及优化,布局布线,仿真以及对特定目标芯片的适配编译和编程下

5

基于FPGA的电子钟设计

载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。

综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的VHDL原理图或状态图形描述,针对给定的硬件系统组件,进行编译,优化,转换和综合,最终获得我们将实现的功能的描述文件。综合器在工作前,必须给定要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来,也就是说综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换成低级的,可与目标器件CPLD相映射的网表文件。适配器的功能是将由综合器产生的网表文件配置与指定的目标器件中,产生最终的下载文件。适配器所选的目标器件(CPLD芯片)必须包含于在综合器中已指定的目标器件系列。

本次数字钟设计利用VHDL硬件描述语言和图形输入相结合的编程方式,并通过可编程逻辑器件FPGA进行硬件设计,用LED数码管动态显示计时结果。数字钟可以由各种技术实现,如单片机等。利用可编程逻辑器件具有其他方式没有的特点,它具有成功率高,理论与实践结合紧密,体积小,容量大,I/O口丰富,易编程和加密等特点,并且它还具有开放的界面,丰富的设计库,模块化的工具等优良性能,应用非常方便。因此,本设计采用可编程逻辑器件FPGA来实现。

1.2 研究目的

现在是一个知识爆炸的新时代。新产品、新技术层出不穷,电子技术的发展更是日新月异。可以说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。

钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

1.3 研究方法和内容

本设计主要研究基于FPGA的数字钟,采用EDA作为开发工具,VHDL语言和图形输入为硬件描述语言,采用自顶向下的设计思想,QuartusII软件作为运行程序的平台。设计的数字钟时间以24小时为一个周期,用LED数码管动态

6

基于FPGA的电子钟设计

显示时、分、秒。具有清零和整点报时功能,可以对小时,分钟进行单独校对,使其校正到标准时间。校对时间由按键进行控制,为了保证计时的稳定及准确,须由晶体振荡器提供时间基准信号并经分频得到。

2 本软件开发环境

2.1 FPGA简介

2.1.1 FPGA概述

FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称,与之相应的CPLD是复杂可编程逻辑器件(Complex Programmable Logic Device)的简称,两者的功能基本相同,只是实现原理略有不同,有时可以忽略这两者的区别,统称为可编程逻辑器件CPLD/FPGA。CPLD/FPGA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路。它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个数字系统。通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。使用CPLD/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。这些优点使得CPLD/FPGA技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言VHDL的进步。

2.1.2 FPGA基本结构

FPGA具有掩膜可编程门阵列的通用结构,它由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。

FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。这3种可编程电路是:可编程逻辑模块(CLB--Configurable Logic Block)、输入/输出模块(IOB--I/O Block)和互连资源(IR—Interconnect Resource)。可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵

7

基于FPGA的电子钟设计

列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。

2.1.3 FPGA系统设计流程

一般说来,一个比较大的完整的项目应该采用层次化的描述方法:分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实现,这就是自顶向下的设计方法。目前这种高层次的设计方法已被广泛采用。高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换为针对某种工艺优化的网络表,使工艺转化变得轻而易举。 CPLD/FPGA系统设计的工作流程如图1所示。

系统划分 VHDL代码或图形方式输入 编译器 代码级功能仿真 仿真综合库 综合器 适配前时序仿真 适配器 适配后仿真模型 器件编程文件 适配报告 适配后时序仿真 CPLD/FPGA现 实ASIC实现 图1 CPLD/FPGA系统设计流程

8

基于FPGA的电子钟设计

2.1.4 FPGA开发编程原理

硬件设计需要根据各种性能指标、成本、开发周期等因素,确定最佳的实现方案,画出系统框图,选择芯片,设计PCB并最终形成样机。

CPLD/FPGA软件设计可分为两大块:编程语言和编程工具。编程语言主要是VHDL硬件描述语言;编程工具主要是两大厂家Altera和Xilinx的集成综合EDA软件QuartusII以及第三方工具。具体的设计输入方式有以下几种:

1.VHDL语言。VHDL既可以描述底层设计,也可以描述顶层的设计,但它不容易做到较高的工作速度和芯片利用率。用这种方式描述的项目最后所能达到的性能与设计人员的水平、经验以及综合软件有很大的关系。

2.图形方式。可以分为电路原理图描述,状态机描述和波形描述3种形式。电路原理图方式描述比较直观和高效,对综合软件的要求不高。一般大都使用成熟的IP核和中小规模集成电路所搭成的现成电路,整体放到一片可编程逻辑器件的内部去,其硬件工作速度和芯片利用率很高,但是当项目很大时,该方法就显得有些繁琐;状态机描述主要用来设计基于状态机思想的时序电路。在图形的方式下定义好各个工作状态,然后在各个状态上输入转换条件以及相应的输入输出,最后生成HDL语言描述,送去综合软件综合到可编程逻辑器件的内部。由于状态机到HDL语言有一种标准的对应描述方式,所以这种输入方式最后所能达到的工作速度和芯片利用率主要取决于综合软件;波形描述方式是基于真值表的一种图形输入方式,直接描述输入与输出的波形关系。

2.2 QuartusII设计平台

2.2.1 软件开发环境及基本流程

本设计所用软件主要是QuartusII,在此对它做一些介绍。

QuartusII是Altera提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。QuartusII提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。

Altera公司的QuartusII 开发工具人机界面友好、易于使用、性能优良,并自带编译、仿真功能。QuartusII软件完全支持VHDL设计流程,其内部嵌有VH

9

基于FPGA的电子钟设计

DL逻辑综合器。QuartusII也可以利用第三方的综合工具,如FPGA Compiler II,并能直接调用这些工具。同样,QuartusII具备仿真功能,同时也支持第三方的仿真工具。此外,QuartusII与MATLAB和DSP Builder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA技术。

QuartusII包括模块化的编译器。编译器包括的功能模块有分析/综合器、适配器、装配器、时序分析器、设计辅助模块、EDA网表文件生成器、编辑数据接口等。可以通过选择Start Compilation来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。在Compiler Tool窗口中,可以打开该模块的设置文件或报告文件,或者打开其它相关窗口。在设计输入之后,QuartusII的编译器将给出设计输入的错误报告。QuartusII拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误。在进行编译后,可对设计进行时序仿真。在仿真前,需要利用波形编辑器编辑一个波形激励文件。编译和仿真检测无误后,便可将下载信息通过QuartusII提供的编程器下载入目标器件中了。

2.2.2 软件的具体设计流程

1.建立工作库文件夹和编辑设计文件

首先建立工作库目录,以便存储工程项目设计文件。

任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有设计文件的文件夹。此文件夹将被EDA软件默认为工作库。一般来说,不同的设计项目最好放在不同的文件夹中,而同一工程的所有文件都必须放在同一文件夹中。 2.创建工程

使用New Project Wizard可以为工程指定工作目录、分配工程名称以及指定最高层设计实体的名称,还可以指定要在工程中使用的设计文件、其它源文件、用户库和EDA工具,以及目标器件系列和具体器件等。 3.编译前设置

在对工程进行编译处理前,必须做好必要的设置。步骤如下: a.选择FPGA目标芯片 b.选择配置器件的工作方式

10

基于FPGA的电子钟设计

c.选择配置器件和编程方式 d.选择输出设置

e.选择目标器件闲置引脚的状态 4.全程编译

QuartusII编译器是由一系列处理模块构成的,这些模块负责对设计项目的检错、逻辑综合、结构综合、输出结果的编辑配置,以及时序分析。在这一过程中,将设计项目适配到FPGA目标器中,同时产生多种用途的输出文件。编译器首先检查出工程设计文件中可能的错误信息,供设计者排除。然后产生一个结构化的以网表文件表达的电路原理图文件。

如果编译成功,可以见到工程管理窗口左上角显示了工程(例如工程div)的层次结构和其中结构模块耗用的逻辑宏单元数;在此栏下是编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析等;最下栏是编译处理信息;中栏式编译报告项目选择菜单,单击其中各项可以详细了解编译与分析结果。 5.时序和功能仿真

工程编译通过后,必须建立VWF文件对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求。可以自己设置输入信号,再由功能仿真出输出信号。这能在软件上实现硬件的功能,大大提高了硬件电路调试成功率。 6.编程下载

编程下载指将编程数据放到具体的可编程器件中去。如果以上所有的过程都没有发现问题,即满足设计要求,就可以将适配器产生的配置/下载文件通过FPGA编程器或下载电缆载入目标芯片FPGA中。对FPGA来说就是将数据文件“配置”到FPGA中去。

3 总体设计方案

数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。

11

基于FPGA的电子钟设计

图2所示为数字钟的一般构成框图。主要包括晶振电路、复位电路、按键电路、译码扫描和显示电路、报时电路。

按键电路 复位电路 FPGA LED数码管译码电路 LED数码管显示电路 LED数码管扫描电路 晶振电路 整点报时电路 图2 数字钟硬件构成框图

晶振电路产生稳定的10MHZ的高频脉冲信号,作为数字钟的时间基准,然后经过软件分频10000次输出标准秒脉冲1HZ。秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计满后各计数器清零,重新计数。计数器的输出分别经译码器送数码管显示。计时出现误差时,可以用校时电路校时、校分。在控制信号中除了一般的校时信号外,还有时钟清零信号,可以使数字钟复位清零。控制信号由3个按键S1、S2、S3输入,分别实现校时、校分、复位清零功能。扫描译码显示电路由七段译码器完成,显示由8位数码管构成。

4 软件设计与功能实现

4.1 分频模块功能的软件设计与实现

晶体振荡器是构成数字式时钟的核心,晶振的稳定度及频率的精度决定了

12

基于FPGA的电子钟设计

数字钟计时的准确程度,它保证了时钟的走时准确及稳定。

石英晶体的选频特性非常好,只有某一频率点的信号可以通过它,其它频率段的信号均会被它所衰减,而且,振荡信号的频率与振荡电路中的R、C元件的数值无关。因此,这种振荡电路输出的是准确度极高的信号。然后再利用分频电路,将其输出信号转变为秒信号,其组成框图如图3。

图3秒信号产生电路框图

本系统使用的晶振电路给数字钟提供一个频率稳定准确的10MHz的方波信号,其输出至分频电路。经分频后输出1HZ的标准秒信号CLK1HZ,用于秒信号,校时电路和报时电路。

石英晶体 振荡电路 分频电路 秒信号秒信号 4.2 计时校时模块功能的软件设计与实现

时间计数模块由60进制的秒计数,60进制的分计数和24进制的小时计数分别实现。当数字钟处于正常计数状态时,秒计数器对1Hz 的标准信号进行计数,在其进位输出信号作为分计数器的使能端,而分计数器的进位输出信号又作为时计数器的使能端。

数字钟除了正常计时外,通过两个按键S1,S2分别实现对小时、分钟的调整。这两个按键的作用,就是用来产生时计数器、分计数器的另一路使能信号按键使能信号.由于它们的基准信号都是1Hz ,故有按键使能信号时,它们会迅速增加,达到调整时间的目的。

4.3 整点报时模块功能的软件设计与实现

整点报时模块是根据秒、分的输出数值,与程序设定的时间作比较,当时间为59分55 秒、56 秒、57 秒、58 秒、59秒时,整点报时模块的LED灯控制信号有输出,LED灯闪烁。

4.4 扫描译码显示模块功能的软件设计与实现

动态扫描电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且输出数码管的片选信号和位选信号。所谓动态扫描显示方式是在显示某一

13

基于FPGA的电子钟设计

位LED显示块的数据的时候,让其它位不显示,然后在显示下一位的数据,同时关闭其他显示块。这样做可以使每一个显示块显示与自己相对应的数据。只要保证每一位显示的时间间隔不要太大,利用人眼的视觉暂留的现象,就可以造成各位数据同时显示的假象。

显示译码电路,选择八位七段数码管作为显示单元电路。计数器实现了对时间的累计并以8421BCD码的形式输送到动态扫描模块,由译码电路将8421BCD码转换为七段码,再由数码管显示出来。

4.5 顶层模块功能的软件设计与实现

将分频模块,计时校时模块,报时模块和显示模块创建的符号文件在新建的顶层模块图形编辑文件中调用,进行模块符号间的连线,设置输入,输出引脚。编写好顶层模块后,进行编译仿真,验证程序的正确性。

5 系统功能调试及分析

本系统只含有FPGA自编程硬件设计电路,整个系统比较简单。因此在系统调试中采用自低向上的调试方法,也就是先进行各个单元模块的软件编译,在各个单元模块调试好后再把各个单元模块综合起来进行系统的整体的编译和功能仿真。数字钟系统的整体功能仿真波形图如下图4。功能仿真无误后,通过下载电缆将设计文件加载到目标器件——FPGA,通过控制按键观察LED显示是否达到数字钟的设计要求。

14

基于FPGA的电子钟设计

图4数字钟系统的整体功能仿真波形图

6 结论

本文提出了一种基于FPGA的数字钟设计方案,从硬件和软件两个方面详细地介绍了设计思想和过程,最终设计出了数字钟,将设计程序加载到实验箱上运行调试后,时、分、秒能够正常计数,并能由控制键分别校正时、分的显示,整点报时功能正常。最终结果与预期效果一致,完成了预期的设计任务。

论文取得了如下结果:

1.采用了FPGA芯片CycloneII系列EP2C35F672C8作为核心器件。设计的数字钟系统的硬件电路,能够完成数字钟的校时,计时,报时,显示等实时任务。

2.运用自顶向下的思想。将整个系统分成几个模块分别设计,再用顶层模块块将它们联系起来,实现数字钟整体的功能,降低了系统设计的难度。

3.采用了VHDL语言为主,图形输入为辅的编程方法。优点是编程方法灵活,而且编写的程序具有很好的移植性,同样适用于其他FPGA芯片的数字钟设计。

15

本文来源:https://www.bwwdw.com/article/k8lg.html

微信扫码分享

《FPGA课程设计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top