基于FPGA的数码显示和键盘扫描的电路设计.docx

上传人:b****8 文档编号:23852842 上传时间:2023-05-21 格式:DOCX 页数:34 大小:111KB
下载 相关 举报
基于FPGA的数码显示和键盘扫描的电路设计.docx_第1页
第1页 / 共34页
基于FPGA的数码显示和键盘扫描的电路设计.docx_第2页
第2页 / 共34页
基于FPGA的数码显示和键盘扫描的电路设计.docx_第3页
第3页 / 共34页
基于FPGA的数码显示和键盘扫描的电路设计.docx_第4页
第4页 / 共34页
基于FPGA的数码显示和键盘扫描的电路设计.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

基于FPGA的数码显示和键盘扫描的电路设计.docx

《基于FPGA的数码显示和键盘扫描的电路设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的数码显示和键盘扫描的电路设计.docx(34页珍藏版)》请在冰豆网上搜索。

基于FPGA的数码显示和键盘扫描的电路设计.docx

基于FPGA的数码显示和键盘扫描的电路设计

前言

现在,电子技术的发展非常迅猛高新科技日新月异。

特别是专用集成电路(ASIC)设计技术的日趋进步和完善,推动着数字电路系统设计方法的发展,使他从单纯的ASIC设计走向了系统设计和单片系统的设计。

而经过几十年的发展越来越成熟的FPGA设计方式以他的短周期,低成本,灵活方便的独特优势走红于电子技术业内。

FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、PLD等可编程器件的基础上进一步发展的产物。

它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既能解决定制电路的不足,又能克服原有可编程器件门电路数有限的缺点。

本设计的的内容是基于FPGA的数码显示和键盘扫描电路的设计,通过键盘对数码显示调控来实现FPGA的思想。

键盘输入通过按键扫描检测和去抖动在通过编码输入到显示电路中,在显示过程中能通过键盘输入对显示内容进行校正和调节。

在通过编译仿真下载到FPGA电子板上后能显示预期的信号,当按下键盘时候能产生预期的结果。

在设计这个课题的过程中,遇到很多问题,比如开始的时候遇到的一个问题就是自己在在quartus中进行仿真,把模块单个的拿出来仿真仿真波形正常,但当把几个模块连在一起的时候仿真就出不来预期的波形。

最后在老师和同学的帮助下发现要对每个模块进行了解,对模块之间的连接要适当的处理。

经过这次设计,尽管结果不是那么完美,但为自己以后的生活,学习有了很大的帮助,特别是在设计过程中不断遇到问题不断解决问题的经验会让我受用终生。

摘要

设计一个基于FPGA的数码显示和键盘扫描电路,具体内容包括键盘接口,数码显示接口,实时时钟和键盘扫描电路等内容。

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

系统主芯片采用EP13T144C,由时钟模块、控制模块、计时模块、数据译码模块、显示模块组成。

经编译和仿真,在可编程逻辑器件上下载验证。

本设计以时分秒的形式显示,由按键输入进行对显示的校时、启动停止功能。

关键词硬件描述语言,VHDL,FPGA,键盘接口

Abstract

ThisdesignisanFPGA-baseddigitaldisplayandkeyboardscancircuitdesign,includingthekeyboardinterface,digitaldisplayinterface,real-timeclockandkeyboardscanningcircuit.

TheuseofEDAdesigntechnology,hardware-descriptionlanguageVHDLdescriptionlogicmeansforthesystemdesigndocuments,inMaxplusIItoolsenvironment,atop-downdesign,bythevariousmodulestogetherbuildaFPGA-baseddigitalclock.

ThemainsystemchipsusedEP1C3T144C,makeupoftheclockmodule,controlmodule,timemodule,datadecodingmodule,displayandbroadcastmodule.Aftercompilingthedesignandsimulationprocedures,theprogrammablelogicdevicetodownloadverification,thesystemcancompletetheyear,month,dayandthehours,minutesandsecondsrespectively,usingkeystomodify,startandstopthedigitalclock.

Keywordshardwaredescriptionlanguage,VHDL,FPGA,keyboardinterface

第一章绪论

现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。

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

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

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

ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器。

而FPGA是特殊的ASIC芯片,与其他的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。

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

因此,键信息输入是与软件结构密切相关的过程。

根据键盘的结构不同,采用不同的编码方法。

但无论有无编码以及采用什么样的编码,最后都要转换成为相应的键值,以实现按键功能程序的转移。

1.1选题背景

当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。

它与传统的电子产品在设计上的显著区别是大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低.同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期。

EDA技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技。

本节将从FPGA嵌入式应用开发技术与数码显示和键盘接口技术发展的客观实际出发,通过对该技术发展状况的了解,以及课题本身的需要,指出研究基于FPGA的芯片系统与设计,通过此设计了解当前电路设计的新趋向。

1.1.1课题相关技术的发展

科技的发展离不开技术的支持,现代化的日新月异也注定了只有更快更新才能跟上时代的步伐,而FPGA的自身快捷,方便,成本低的优势在电子产业中脱颖而出。

美国ALTERA公司的可编程逻辑器件采用全新的结构和先进的技术,加上MaxplusII(或最新的QUARTUS)开发环境,更具有高性能,开发周期短等特点,十分方便进行电子产品的开发和设计。

EDA技术,技术以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译,逻辑化简,逻辑分割,逻辑映射,编程下载等工作。

最终形成集成电子系统或专用集成芯片的一门新技术。

本设计利用VHDL硬件描述语言结合可编程逻辑器件进行的,并通过数码管动态显示计时结果。

数码显示和键盘扫描电路可以由各种技术实现,如单片机等.利用可编程逻辑器件具有其他方式没有的特点,它具有易学,方便,新颖,有趣,直观,设计与实验项目成功率高,理论与实践结合紧密,体积小,容量大,I/O口丰富,易编程和加密等特点,并且它还具有开放的界面,丰富的设计库,模块化的工具以及LPM定制等优良性能,应用非常方便。

因此,本设计采用可编程逻辑器件实现。

1.1.2课题研究的必要性

现在是一个知识爆炸的新时代。

新产品、新技术层出不穷,电子技术的发展更是日新月异。

围绕在我们身边的数码显示也顺着电子技术的提高的潮流不断的更新着自己的光彩,这也就给传统的显示带来不能及时的更新、更改或者校准显示内容的问题。

而本基于FPGA的数码显示和键盘扫描的电路设计很好的解决的了这个问题,电路能通过键盘输入的方式对显示内容及时的更改及校准,而且成本低廉,方便快捷。

1.2课题研究的内容

嵌入式系统是计算机软硬件技术相结合的一个重要应用领域,本题目以设计制作一个基于FPGA的数码显示和键盘扫描电路设计(含实时钟显示),通过电路设计了解嵌入式系统设计的基本流程和方法,锻炼并提高硬件电路设计理论水平和实际操作的能力及嵌入式软件的设计能力。

具体内容包括键盘接口、数码显示接口、实时钟显示和键盘扫描电路等,

要求能基于FPGA的环境下对数码管进行显示驱动,对键盘进行扫描控制输出,能通过键盘的输出对显示内容进行一定的调控。

第二章FPGA简介

2.1FPGA概述

FPGA是现场可编程门阵列(FieldProgrammableGateArray)的简称,与之相应的CPLD是复杂可编程逻辑器件(ComplexProgrammableLogicDevice)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别系统称为可编程逻辑器件或CPLD/PGFA。

CPLD/PGFA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路。

它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个数字系统。

通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。

使用CPLA/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。

这些优点使得CPLA/FPGA技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言HDL的进步。

2.2FPGA基本结构

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

FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。

这3种可编程电路是:

可编程逻辑模块(CLB--ConfigurableLogicBlock)、输入/输出模块(IOB--I/OBlock)和互连资源(IR—InterconnectResource)。

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

1.CLB是FPGA的主要组成部分。

图2.1是CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。

CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G’、F’和H’。

G有4个输入变量G1、G2、G3和G4;F也有4个输入变量F1、F2、F3和F4。

这两个函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数。

逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G’和F’,而另一个输入信号是来自信号变换电路的输出H1。

这个函数发生器能实现3输入变量的各种组合函数。

这3个函数发生器结合起来,可实现多达9变量的逻辑函数。

CLB中有许多不同规格的数据选择器(四选一、二选一等),通过对CLB内部数据选择器的编程,逻辑函数发生器G、F和H的输出可以连接到CLB输出端X或Y,并用来选择触发器的激励输入信号、时钟有效边沿、时钟使能信号以及输出信号。

这些数据选择器的地址控制信号均由编程信息提供,从而实现所需的电路结构。

CLB中的逻辑函数发生器F和G均为查找表结构,其工作原理类似于ROM。

F和G的输入等效于ROM的地址码,通过查找ROM中的地址表可以得到相应的组合逻辑函数输出。

另一方面,逻辑函数发生器F和G还可以作为器件内高速RAM或小的可读写存储器使用,它由信号变换电路控制。

图2.1CLB基本框架图

2.输入/输出模块IOB。

IOB提供了器件引脚和内部逻辑阵列之间的连接。

它主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成。

每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。

当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先送入输入缓冲器。

缓冲器的输出分成两路:

一路可以直接送到MUX,另一路经延时几纳秒(或者不延时)送到输入通路D触发器,再送到数据选择器。

通过编程给数据选择器不同的控制信息,确定送至CLB阵列的I1和I2是来自输入缓冲器,还是来自触发器。

当IOB控制的引脚被定义为输出时,CLB阵列的输出信号OUT也可以有两条传输途径:

一条是直接经MUX送至输出缓冲器,另一条是先存入输出通路D触发器,再送至输出缓冲器。

IOB输出端配有两只MOS管,它们的栅极均可编程,使MOS管导通或截止,分别经上拉电阻接通Vcc、地线或者不接通,用以改善输出波形和负载能力。

3.可编程互连资源IR。

可编程互连资源IR可以将FPGA内部的CLB和CLB之间、CLB和IOB之间连接起来,构成各种具有复杂功能的系统。

IR主要由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。

2.3FPGA系统设计流程

一般说来,一个比较大的完整的项目应该采用层次化的描述方法:

分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实现,这就是TOPDOWN(自顶向下)的设计方法。

目前这种高层次的设计方法已被广泛采用。

高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。

设计输入包括使用硬件描述语言HDL、状态图与原理图输入三种方式。

HDL设计方式是现今设计大规模数字集成电路的良好形式,除IEEE标准中VHDL与VerilogHDL两种形式外,尚有各自FPGA厂家推出的专用语言,如Quartus下的AHDL。

HDL语言描述在状态机、控制逻辑、总线功能方面较强,使其描述的电路能特定综合器(如Synopsys公司的FPGACompilerII或FPGAExpress)作用下以具体硬件单元较好地实现;而原理图输入在顶层设计、数据通路逻辑、手工最优化电路等方面具有图形化强、单元节俭、功能明确等特点,另外,在Altera公司Quartus软件环境下,可以使用MomoryEditor对内部memory进行直接编辑置入数据。

常用方式是以HDL语言为主,原理图为辅,进行混合设计以发挥二者各自特色。

CPLD/FPGA系统设计的工作流程如图2.2所示。

图2.2CPLD/FPGA系统设计流程

流程说明:

1.设计者按照“自顶向下”的设计方法进行系统划分。

2.输入VHDL代码,这是设计中最为普遍的输入方式。

此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。

3.将以上的设计输入编译成标准的VHDL文件。

4.进行代码级的功能仿真,主要是检验系统功能设计的正确性。

这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。

一般情况下,这一仿真步骤可略去。

5.利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。

综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。

6.利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。

一般的设计,也可略去这一步骤。

7.利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。

8.在适配完成后,产生多项设计结果:

(a)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(b)适配后的仿真模型;(c)器件编程文件。

根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。

如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求。

最后将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片CPLD/FPGA中。

2.4FPGA开发编程原理

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

CPLD/FPGA软件设计可分为两大块:

编程语言和编程工具。

编程语言主要有VHDL和Verilog两种硬件描述语言;编程工具主要是两大厂家Altera和Xilinx的集成综合EDA软件(如MAX+plusII、QuartusII、Foundation、ISE)以及第三方工具(如FPGAExpress、Modelsim、SynposysSVS等)。

具体的设计输入方式有以下几种:

1.HDL语言方式。

HDL既可以描述底层设计,也可以描述顶层的设计,但它不容易做到较高的工作速度和芯片利用率。

用这种方式描述的项目最后所能达到的性能与设计人员的水平、经验以及综合软件有很大的关系。

2.图形方式。

可以分为电路原理图描述,状态机描述和波形描述3种形式。

有的软件3种输入方法都支持,如Active-HDL。

MAX+plusII图形输入方式只支持电路原理图描述和波形描述两种。

电路原理图方式描述比较直观和高效,对综合软件的要求不高。

一般大都使用成熟的IP核和中小规模集成电路所搭成的现成电路,整体放到一片可编程逻辑器件的内部去,所以硬件工作速度和芯片利用率很高,但是但项目很大的时候,该方法就显得有些繁琐;状态机描述主要用来设计基于状态机思想的时序电路。

在图形的方式下定义好各个工作状态,然后在各个状态上输入转换条件以及相应的输入输出,最后生成HDL语言描述,送去综合软件综合到可编程逻辑器件的内部。

由于状态机到HDL语言有一种标准的对应描述方式,所以这种输入方式最后所能达到的工作速度和芯片利用率主要取决于综合软件;波形描述方式是基于真值表的一种图形输入方式,直接描述输入与输出的波形关系。

这种输入方式最后所能达到的工作速度和芯片利用率也是主要取决于综合软件。

第三章电路总体设计方案

3.1总体电路的构成

本电路总体包括两个模块:

数码显示模块和键盘扫描模块。

数码显示模块设计成一个时钟显示,键盘扫描模块为一个对显示模块的的时钟显示进行调节校准的输入。

显示模块主要包括时间基准电路、计数器电路、控制电路、译码和显示电路。

图3.1为数字显示模块的构成框图。

3.1数码显示的构成框图

显示模块具体包括:

显示器扫描电路;计数器译码电路;BCD多路选择器;BCD对应七段显示器编码电路。

键盘扫描模块由4个模块来实现,分别是即时扫描模块,扫描控制模块,扫描脉冲模块及键值传送模块。

图3.2为的组成框图。

图3.2键盘扫描的组成框图

图3.3为键盘扫描电路的程序流程图:

图3.3键盘扫描的程序流程图

3.2电路工作原理

由振荡器产生稳定的高频脉冲信号,经过分频处理作为数码显示模块和键盘扫描模块的总信号源。

显示模块接经过分频器输出标准秒脉冲,秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。

计满后各计数器清零,重新计数。

计数器的输出分别经译码器送数码管显示。

译码显示电路由七段译码器完成,显示由数码管构成。

当计时出现误差时,可以用校时电路校时、校分、校秒。

在控制信号中除了一般的校时信号外,还有时钟使能信号、时钟清零信号。

而这些控制信号由4×4矩形键盘输入。

时基电路可以由石英晶体振荡电路构成,如果晶振频率为1MHz,经过6次十分频就可以得到秒脉冲信号。

第四章单元电路设计

4.1分频模块电路设计与实现

晶体振荡器是构成数字式时钟的核心,振荡器的稳定度及频率的精度决定了数字钟计时的准确程度,它保证了时钟显示的走时准确及稳定。

石英晶体的选频特性非常好,只有某一频率点的信号可以通过它,其它频率段的信号均会被它所衰减,而且,振荡信号的频率与振荡电路中的R、C元件的数值无关。

因此,这种振荡电路输出的是准确度极高的信号。

然后再利用分频电路,将其输出信号转变为秒信号,其组成框图如图4-1。

图4-1秒信号产生电路框图

本系统使用的晶体振荡器电路给数字钟提供一个频率稳定准确的40MHz的方波信号,其输出至分频电路。

分频电路的逻辑框图如图4.2所示。

图4.2分频电路模块

图4.3分频模块电路设计

其内部结构图见图4.3,通过quartus的硬件库7490对输入的信号进行分频处理。

经分频后输出1HZ的标准秒信号CLK1、4MHZ的按键扫描信号、1KHZ的按键去抖信号和500HZ用于动态扫描模块的输入信号。

该模块的时序仿真图如图4.4所示,由波形可示当接入晶体振荡器发出的40Mhz的方波信号后能分频出电路需要的标准秒信号,4MHZ的按键扫描信号,1KHZ的按键去抖信号和500MHZ的动态扫描模块需要的信号。

所以此模块满足设计要求。

图4.4分频模块时序仿真图

4.2键盘扫描模块电路设计与实现

4.2.1键盘接口电路原理

通过扫描方式确定按下键的行和列位,即位置码或扫描码,再查表将位置码转换为按键码值或者直接运用扫描码,有些参考书称此为“非编码键盘”。

但这种名称容易让人误解为没有对应的键值,因此又称为扫描式键盘。

键盘接口电路的工作原理,如图4.6。

本设计采用的就是这种行列式键盘接口,相对每个按键的键盘接口来说节省了I/O接口。

如图所示,行线通过一个电阻被上拉到+5V电压。

行线与按键的一个引脚相连,列线与按键的另一个引脚相连。

平时列线被置成低电平,没有按键被按下的时候,行线保持高电平,而有按键被按下的时候,行线被拉成低电平,这时候控制器就知道有按键被按下,但只能判断出在哪一行,不能判断出在哪一列,因此接下来就要进行键盘扫描,以确定具体是哪个按键被按下。

键盘扫描的过程事将列线逐列置成低电平,然后读取行线状态,直到行线中出现低电平,可知这时哪一列是低电平,然后将行线与列线的状态装入键码寄存器,进行按键译码,得到按下的按键的相应编码,这样就完成了按键扫描的过程。

当然,一个完整的按键扫描过程还需要配合相应的键盘去抖手段才能正确的识别按键,不会发生重键和错误判断等情况。

图4.6键盘接口电路

4.2.2键盘接口的VHDL描述

完整的键盘程序应加上刚开始介绍的分频模块,键盘接口电路总的逻辑连接框图如图4.7所示。

图4.7键盘接口连接框图

其中由分频模块,按键消抖,按键编码,键码转换模块构成。

1.按键消抖

该模块的逻辑框图如图4.8所示。

图4.8去抖逻辑框图

本模块用于当有按键按下时,采用软件消抖的办法去除按键抖动。

模块的实现方法是先判断是否有按键按下,如有按键按下则延时一段时间,待抖动过去之后再读行线状态,如果仍有低电平行线,则确定有按键按下,然后产生一个有按键按下的信号。

该模块有一个时钟输入端口,输入时钟信号是分频出来的1KHZ的时钟;有一个输入端口与行线相连,用于输入行线状态;一个输出端口,用于输出有按键按下的信号。

该电路的VHDL程序如下:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.a

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1