基于FPGA的键盘输入及显示电路.doc_第1页
基于FPGA的键盘输入及显示电路.doc_第2页
基于FPGA的键盘输入及显示电路.doc_第3页
基于FPGA的键盘输入及显示电路.doc_第4页
基于FPGA的键盘输入及显示电路.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目目 录录 摘 要.(2) 关键词.(2) 前言.(3) 一、基于 FPGA 的课题研究现状简介.(4) 1.1 研究现状与发展趋势.(4) 1.2 研究目的及意义.(4) 1.3 系统设计平台及开发工具的选择.(4) 二、可编程器件相关技术及 QUARTUS 开发工具概述 .(6) 2.1 可编程器件相关技术.(6) 2.2 QUARTUS开发工具概述 .(9) 三、PS/2 键盘协议与键盘接口电路设计.(11) 3.1 PS/2 键盘协议 .(11) 3.2 PS/2 键盘接口电路的设计 .(11) 四、LCD1602 的显示原理与实现 .(14) 4.1 LCD 显示原理 .(14) 4.2 液晶显示的硬件连接.(18) 五、键盘输入与液晶显示的设计.(19) 5.1 顶层原理图设计.(19) 5.2 分频模块设计.(19) 5.3 LCD1602 接口设计 .(21) 5.4 键盘接口驱动设计.(24) 六、全文总结.(27) 致谢.(27) 参考文献.(28) 附录 A:实物显示图.(29) 附录 B:PS/2 键盘接口驱动源程序.(30) 基于基于 FPGA 的键盘输入与显示电路的键盘输入与显示电路 学 生:罗莎莎 指导教师:吴正平 三峡大学理学院 摘 要:本论文介绍了利用 FPGA 来控制 128*64 液晶显示模块与 PS/2 键盘扫描电路,在这个 电路中实现对键盘的扫描输入,并通过 LCD1602 完成显示功能。 本文首先简单介绍了基于 FPGA 有关课题的研究现状,其次描述了可编程器件相关技术与所 用的 Quartus 开发工具。然后论述了本次毕业设计所应用的各硬件接口技术和各个接口模块的功 能及工作过程, 并具体描述了电路接口的软、硬件调试过程。最后阐述了程序的流程和实现过程 。本文编写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。在 Quartu s II 环境中设计点阵液晶显示控制器,所有功能全部用硬件描述语言 VHDL 编程实现并下载到明 伟公司生产的 FPGA EP1C6 开发板上的 EP1C6Q240C8N 目标芯片上调试通过。 Abstract:This article introduced a circuit using FPGA to control the 128 * 64 LCD display module and the PS / 2 keyboard scan circuit module .In this circuit we input a word through the kryboard and it will display on the LCD1602. This article first briefly introduced the FPGA-based research on relevant subjects, followed by description of the programmable devices and related technologies used in the Quartus development tools. And then discusses the design of the graduate application technology of the hardware interface and the interface module functions and work processes, and specific description of the circuit interface software and hardware debugging process. Finally, the procedures set out the process and the realization of the process.This article is the guiding philosophy of the preparation of software and hardware combined with hardware-based, to the preparation of various functional modules. In the Quartus II design environment matrix liquid crystal display controller, use all the features of all the hardware description language VHDL programming and download to Mingweis FPGA EP1C6 series EP1C6Q240C8N target chip debug is passed . 关键词: FPAG;LCD;VHDL;键盘 Keyword:FPGA;LCD;Keyboard 前言前言 随着集成电路制造技术的发展,在一块芯片上制造的元件越来越多,集成电路规模的扩大为 新的电路设计方法提供了物质基础。作为传统数字系统设计中使用的主要器件,标准逻辑器件已 经使用了 20 多年,标准逻辑器件对研究数字系统基本构成模块的工作原理具有重要的意义,它 在许多基础的理论和实验教学课程中仍然占据重要的位置,目前, “数字电路逻辑设计”课程仍 然以标准逻辑器件为主进行讲授,但在实际组装电路的过程最麻烦,既费时间又容易出错。 可编程逻辑器件(PLD)能使组装电路这个繁琐的步骤借助计算机和相关开发软件来完成, 因此,现在许多数字系统采用可编程逻辑器件实现途径来提高设计效率,同时,由于使用的器件 数量的减少也提高了系统的可行性。FPGA(Field Programmable Gate Array )是目前广泛采用 的一种可编程器件 , 它的应用不仅使得数字电路系统的设计非常方便, 并且还大大缩短了系 统研制的周期, 缩小了数字电路系统的体积和所用芯片的品种。而且它的时钟频率已可达到几 百兆赫兹和高可靠性, 非常适合用于实现波形发生器的数字电路部分。本设计以 FPGA 为控制核 心,实现对键盘输入与字符点阵液晶 1602 的控制。该方案硬件电路连接简单,软件程序简洁, 对液晶的控制简单、稳定,且可改动性灵活。 明伟电子公司是著名的可编程逻辑器件生产厂家,它的产品在我国,尤其高校教学中得到广 泛的应用。因为该公司的可编程逻辑器件不仅具有较高性能,高集成度和高性价比的优点,而且 还提供了多种功能全面的开发工具,例如获得广泛应用的 Quartus II 软件。本文介绍了利用能 Quartus II 设计信号源发生器的一般设计流程,论文中设计的程序代码都通过 Quartus II 7.2 行编译仿真并利用明伟电子公司生产的 FPGA EP1C6 开发板进行了硬件测试。 本课题的研究具有很大的实际意义。首先,对自己而言,通过本实验,不仅训练了复杂数字 电路的设计方法,而且还了解了键盘以及显示器的工作原理,极大提高了自身硬件系统设计能力 以及软件编程能力,为今后从事硬件电路设计打下基础。另外,通过完成本课题的设计可以进一 步掌握常用 EDA 工具的使用方法、FPGA 的开发技术以及 VHDL 语言的编程方法。能比较熟练的使 用 Quartus II 等常用 EDA 软件对 FPGA 和 CPLD 作一些简单的电路系统设计,同时能较好的使用 VHDL 语言设计简单的逻辑系统,学会功能仿真、时序仿真和硬件测试技术,为进一步学习现代 EDA 工程技术,ASIC 器件设计以及超大规模集成电路设计奠定基础。 一、基于一、基于 FPGAFPGA 的课题研究现状简介的课题研究现状简介 1.11.1 研究现状与发展趋势研究现状与发展趋势 键盘作为嵌入式系统的一种最常用人机接口设备,在嵌入式系统中有着相当广泛的应用。但开 发者一般均采用自行设计的简易矩阵键盘,这类键盘仅仅是按行、列排列起来的矩阵开关,往往需 要单独设计并制作,通用性不强。当需要较多的按键时,则会占用较多的 I/O 端口,在软件上则要 进行上电复位按键扫描及通信处理,而且还要加上按键的去抖动处理,增大了系统的软硬件开销。 而 PS/2 键盘,内嵌自动去除按键抖动的设计自动地识别键的按下与释放,软硬件可发简便,价格便 宜,稳定可靠,将 PS/2 键盘作为嵌入式系统的输入设备已经成为可行的方案。而目前关于 PS/2 键 盘控制的应用大部分采用单片机控制,与单片机相比,FPGA 具有比单片机更加灵活,集成度更高容 易移植等特点。现代 EDA(电子设计自动化)技术提供了一种很好的途径, 利用 VHDL 硬件描述语 言和 FPGA 器件可以很方便地构建键盘扫描模块。 液晶显示器由于具有低压、微功耗、显示信息量大、体积小等特点,在移动通信终端、便携 计算机、GPS 卫星定位系统等领域有广泛用途,成为使用量最大的显示器件。许多电子公司相继 推出各种型号各种系列的液晶显示模块,这些模块不仅可以显示字符和数字, 有的还可以显示各 种图形和汉字。液晶显示驱动有多种方法 ,通常采用的方法为基于专用集成电路和基于通用微处 理器的方法。 1.21.2 研究目的及意义研究目的及意义 本课题是出于学校实验项目的需要而提出的。因 FPGA 器件是八十年代中期出现的一种新概 念。由于它具有集成度高、编程仿真方便、速度快等优点 ,使得它在信号处理、通信以及电力系 统中得到了广泛地应用。本课题的提出就是想利用 FPGA 器件的优越性,来实现键盘输入接口以 及液晶显示电路的设计。 液晶器件以其具有工作电压低、功耗低、显示信息量大、寿命长、不产生电磁辐射污染、可 以显示复杂的文字及图形等优点,广泛应用在各种仪器仪表、电子设备和家用电器等方面。而且, 由于液晶器件的低工作电压和微功耗特性使它可以直接与大规模集成电路结合 ,开发出一系列便 携式产品。因此 ,将两者结合起来实现功能、工作方式可修改的液晶显示器有着积极的意义。 本课题以 FPGA 为控制核心,实现对字符点阵液晶 1602 的控制。该方案硬件电路连接简单, 软件程序简洁,对液晶的控制简单、稳定,且可改动性灵活。通过本实验,让学生不仅训练复杂 数字电路的设计方法,而且能让学生了解键盘以及显示器的工作原理,能极大提高学生的硬件系 统设计能力以及软件编程能力,为今后从事硬件电路设计打下基础。 1.31.3 系统设计平台及开发工具的选择系统设计平台及开发工具的选择 1硬件平台 根据现有的实验条件本毕业设计的硬件平台选择明伟电子公司生产的 FPGA EP1C6 开发板。 FPGA EP1C6 开发板是基于 FPGA 的硬件描述语言 EDA 和软内核嵌入式系统的 SOPC 开发平台。系统 采用多层 PCB 板设计,完善的电源和时钟设计,性能稳定可靠、结构紧凑美观。系统采用主流 FPGA 构建平台,片内资源丰富,板载器件多,周边接口多、可扩展性强。优化设计使系统调试方 便,配置容易。如图 1.1 是它的实物图。 图图 1.11.1 FPGAFPGA EP1C6EP1C6 开发板开发板 它有如下特点: 采用四层 PCB 板,高密度走线,支持更高时钟频率,预留用户晶振焊盘; 支持 FPGA 开发,提供引脚信息和预留 PLL 资源; 支持 SOPC 开发,基于 Nios II 软核处理器或多内核的开发; 支持扩展设计,数据和地址总线外接插针,预留通用 I/O 焊孔; 提供 USB2.0 数据接口,480Mbps 传输速度,可以作为算法验证和高速数据采集板; 其外部接口如下: 电源接口: 5V 内正极外负极 串口: 孔型,2:发送,3:接受,5:地 USB : USB2.0 接 EZUSB USB 1.1 接 FPGAD+:5.;D-:6 PS/2: 接 FPGAPS2_DATA:1; PS2_CLK 240 VGA: 接 FPGA LCD: 字符液晶,162 总线排针: 数据双排 40 针,地址双排 40 针 通用接口: GPIO 双排 40 针未焊接 JTAG 接口: 双排 10 针 FPGAJTAG 接口 Active Serial: 双排 10 针 FPGA 串行配置接口 2开发工具 选用 Quartus II 7.2,它是 ALTERA 公司提供的可编程逻辑器件的集成软件, 编程语言选用 VHDL 硬件描述语言。我们将在第二章中具体介绍 Quartus II 开发工具。 二、可编程器件相关技术及 QuartusQuartus 开发工具概述开发工具概述 2.12.1 可编程器件相关技术可编程器件相关技术 2.1.12.1.1 现场可编程门阵列现场可编程门阵列(FPGA)(FPGA)简介简介 FPGA 是英文 Field Programmable Gate Array 的缩写,即现场可编程门阵列,它是在 PAL、GAL、EPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域 中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有 限的缺点。 FPGA 采用了逻辑单元数组 LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑 模块 CLB(Configurable Logic Block) 、输出输入模块 IOB(Input Output Block)和内部联机 (Interconnect)三个部分。FPGA 的基本特点主要有:(1)采用 FPGA 设计 ASIC 电路,用户不需 要投片生产,就能得到合用的芯片。(2)FPGA 可做其它全定制或半定制 ASIC 电路的中试样片。 (3)FPGA 内部有丰富的触发器和 IO 引脚。(4)FPGA 是 ASIC 电路中设计周期最短开发费用最 低、风险最小的器件之一。(5)FPGA 采用高速 CHMOS 工艺,功耗低,可以与 CMOS、TTL 电平兼容。 因此,FPGA 芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA 具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编 程来修改。在 FPGA 实际应用中,设计的保密和设计的可升级是十分重要的、用单片机来配置 FPGA 可以很好地解决上述问题。用单片机配置 FPGA 器件时,关键在于产生合适的时序。单片机 可选用常用的如 MCS51 系列、MCS96 系列、AVR 系列等均可。 FPGA 是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工作时需要对片内的 RAM 进行编 程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA 芯片将 EPROM 中数据读 入片内编程 RAM 中,配置完成后,FPGA 进入工作状态。掉电后,FPGA 恢复成白片,内部逻辑关 系消失,因此,FPGA 能够反复使用。FPGA 的编程无须专用的 FPGA 编程器,只须用通用的 EPROM、PROM 编程器即可。当需要修改 FPGA 功能时,只需换一片 EPROM 即可。这样,同一片 FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA 的使用灵活。 2.1.22.1.2 VHDLVHDL 硬件描述语言介绍硬件描述语言介绍 VHDL 的全称是超高速集成电路硬件描述语言(Very High Speed Integrate Circuit Hardware Description Language),考虑在 HDL 前添加首字母的缩写太长,更重要的是当时考虑 军事保密的原因,因此该语言简称为 VHDL。该语言是美国国防部为了解决电子系统众多承包公司 的设计语言不统一而发起创建的,在 1986 年 12 月 IEEE 接受 VHDL 为一种标准的硬件描述语言, 这就是我们在许多资料中可以看到“IEEEStd1067-1987” 。 硬件描述语言 HDL 是 EDA 技术的重要组成部分,常见的 HDL 语言有 VHDL、Verilog HDL、AHDL 等,其中 VHDL、Verilog HDL 在现在的 EDA 设计中使用最多,也拥有几乎所有主流 EDA 工具的支持。1993 年,IEE 对 VHDL 进行了修订,从更高的抽象层次和系统描述能力上扩展了 VHDL 的内容,公布了新版本的 VHDL,即 IEEE 标准版本“IEEE Std 1076-1993” ,现行公布的最 新 VHDL 标准版本是“IEEE Std 1076-2002” 。现在 VHDL 和 verilog HDL 作为 IEEE 的工业标准硬 件描述语言,得到众多 EDA 公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。 VHDL 语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而 大大简化了硬件设计任务,提高了设计效率和可靠性。VHDL 允许以下三种描述方式:结构描述:描 述该设计单元的硬件结构,即该硬件是如何构成的。主要使用配置指定语句及元件例化语句描述 元件的类型及元件的互连关系。 行为描述:描述该设计单元的功能,即该硬件能做些什么。主要使用进程语句,以算法形式描述 数据的变换和传送。 数据流方式:以类似于寄存器传输级的方式描述数据的传输和变换。主要使用并行的信号赋 值语句,既显式表示了设计单元的行为,也隐式表示了设计单元的结构。 VHDL 具有与具体硬件电路无关和与设计平台无关的特性,并具有良好的电路行为描述和系统描述 能力,并在语言易读性和层次化结构化设计方面,表现了强大的生命力和应用潜力。因此,VHDL 在支持各种模式的设计方法、自项向下与自底向上或混合方法方面,在面对当今许多电子产品生 命周期的缩短,需要多次重新设计以融入最新技术,改变工艺等方面都表现了良好的适应性。用 VHDL 进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的实现,而不需要对不 影响功能的工艺有关的因素花费过多的时间和精力。此外,它支持大规模设计的分解和已有设计 的再利用,一个大规模设计不可能一个人独立完成,它将由多个人甚至多个项目组共同完成。 VHDL 中设计实体(design entity)的概念、程序包(Package)的概念、设计库(library)的概念为 设计的分解和设计的再利用提供了有力的支持。 2.1.32.1.3 VHDLVHDL 硬件语言设计应用硬件语言设计应用 1状态机的设计 数字电路可以用有限状态机来设计,VHDL 也支持这种设计方式。常见的应用有系列检测器以 及 A/D 采样控制器设计等。 (1)状态转移图 任何状态机都有两种或以上的状态,在不同的控制条件下发生转移,因此画状态转移图是应注 意标出转移条件. (2)状态 VHDL 表示 状态在 VHDL 中用枚举类型信号量来表示。 例如: type statetype(s0,s1,s2,s3,s4,s5,s6,s7); signal cur_state,next_state : statetype; (3)整体结构 包括状态信号量说明、时钟进程以及组合进程三部分组成。 (4)状态机的描述 VHDL 对不同的状态机有不同的描述方式,描述方式不同使得综合出来的门级网表也不同,因 此必须根据数字电路的特性和可综合性选择相应的状态机描述方式。下面介绍一种三段式写法的 描述方法. 使用 3 个进程模块,一个模块采用同步时序描述状态转移;第二个采用组合逻辑判断状态转移 条件,描述状态转移规律;第三个模块使用同步时序电路描述每个状态的输出,该写法称为三段 式写法。分析其结构概括为图 2.1 所示框图。 图图 2.12.1 三段式描述框图三段式描述框图 2. 分频计的设计 在数字逻辑电路设计中,分频器是一种基本电路。通常用来对某个给定频率进行分频,以得 到所需的频率。整数分频器的实现非常简单,可采用标准的计数器,也可以采用可编程逻辑器件 设计实现。 分频器的实现非常简单,通过计数器计数就完全可以实现。如进行 N 倍分频,就可以通过由 待分频的时钟触发计数器计数,当计数器从 0 计数到 N 时,输出时钟进行翻转,并给计数器一个 复位信号,以使下一个时钟从零开始计数。以此循环,就可以实现任意的分频。如进行三分频, 就可通过待分频时钟上升沿触发计数器来进行模三计数,当计数器计数到邻近值时进行两次翻转。 比如可以在计数器计数到 1 时,输出时钟进行翻转,计数到 2 时再次进行翻转。这样,就在计数 值邻近的 1 和 2 进行了两次翻转。如此便实现了三分频,其占空比为 13 或 23。 2.1.42.1.4 FPGAFPGA 的设计流程的设计流程 一般来说,完整的 FPGA 设计流程包括电路的设计与输入、功能仿真、综合、综合后仿真、 实现、布线后仿真与验证、板级仿真验证与调试等主要步骤。 1. 电路设计与输入 电路设计与输入是指通过某些规范的描述方式,将工程师电路的构思输入给 EDA 工具。常用 的设计输入方法有硬件描述语言(HDL)和原理图设计输入方法等。原理图设计输入方法在早期 应用得比较广泛,它根据设计要求,选用器件,绘制原理图、完成输入过程。这种方法的优点的 直观、便于理解、元器件库资源丰富。但是在大型设计中,这种方法的可维护性较差,不利于模 块构造与重用。更主要的缺点是当所选用芯片升级换代后,所有的原理图都要做相应的改动。 2. 功能仿真 电路设计完成后,要用专用的仿真工具对设计进行功能仿真,验证电路功能是否符合设计要 求。功能仿真有时也称为前仿真。常用的仿真工具在 Model Tech 公司的 ModelSim、Synopsys 公 司的 VCS、Cadnce 公司的 NC-Verilog 和 NC-VHDL、Aldec 公司的 Active HDL 等。通过仿真能及 时发现设计中的错误,加快设计进度,提高设设计的可靠性。 3. 综合优化 综合优化(Synthesize)是将 HDL 语言、原理图等设计输入翻译成由与、或、非门,RAM, 触发器等基本逻辑单元组成的逻辑连接(网表) ,并根据目标与要求(约束条件)优化生成的逻 辑连接,输出 edf 和 edn 等标准格式的网表文件,供 FPGA/CPLD 厂家的布局布线器进行实现。 4. 综合后仿真 综合完成后需要检查综合结果是否与原设计一致,作综合后仿真。在仿真时,把综合生成的 标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。综合后仿真虽然比功能仿 真精确一些,但是只能估计门延时,不能估计线延时仿真结果与布线后还有一定的差距,并不十 分准确。这种仿真的主要目的在于检查综合器的综合后结果是否与设计输入一致。目前主流综合 工具日益成熟,对于一般性设计,如果设计者确信自己表述明确,没有综合歧义发生,则可省略 综合后仿真步骤。但是如果在布局布线后仿真时发现有电路结构与设计意图不符的现象,则常回 溯到综合后仿真以确认是否是由于综合歧义造成的问题。 5. 实现与布局 综合结果本质是一些由与、或、非门,触发器,RAM 等基本逻辑单元组成的逻辑网表,它与 芯片实际的配置情况还有较大差距。此时应该是使 FPGA/CPLD 厂商提供的软件工具,根据所选芯 片的型号,将综合输出的逻辑网表适配到具体 GPGA/CPLD 器件上,这个过程就叫做实现过程。因 为只有器件开发商最了解器件的结构,所以实现步骤必须选用器件开发商提供的工具。实现过程 中最主要的过程是布局布线(PAR,Place And Route):所谓布局(Place)是指将逻辑网表中 的硬件原语或者底层单元合理地适配到 FPGA 内部的固有硬件结构上,布局的优劣对设计的最终 实现结果(在速度和面积两个方面)影响很大;所谓布(Route)是指根据布局拓扑结构,利用 FPGA 内部的各种边线资源,合理正确连接各个元件的过程。 6. 时序仿真与验证 将布局布线的时延信息反标注到设计网表中,所进行的仿真就叫时序仿真或布局布线后仿真, 简称后仿真。布局布线这后生成的仿真时延文件包含信息最全,不仅包含门延时,还包含实际布 线延时,所以布线后仿真最准确,能较好地反映芯片的实际工作情况。一般来说,布线持仿真步 骤必须进行,通过布线后仿真能检查设计时序与 FPGA 实际运行情况是否一致,确保设计的可靠 性和稳定性。 7. 板级仿真与验证 在有些高速设计情况下还需要使用第三方的板级验证工具进行仿真与验证,如 Mentor Tau、Mentor Htpermality、Mentor ICX 等工具通过 IBIS、HSPICE 等模型的仿真,能较好的分析 高速设计的信号完整性、电磁干扰(EMI)等电路特性等。 8. 调试与加载配置 设计开发的最后步骤就是在线调试或者将生成的配置文件写入芯片中进行测试。示波器和逻 辑分析仪(LA,Logic Analyzer)是逻辑设计的主要调试工具。传统的逻辑功能板级验证手段是 用逻辑分析仪信号,设计要求 FPGA 和 PCB 设计人员保留一定数量 FPGA 管脚作为测试管脚,编写 FPGA 代码时将需要观察的信号作为模块的输出信号,在综合实现时再把这些输出信号锁定到测试 管脚上,然后连接逻辑分析仪的探头到这些测试脚,设定触发条件进行观测。 2.22.2 QuartusQuartus 开发工具概述开发工具概述 本设计采用的开发工具是 Quartus II,它是 ALTERA 公司提供的可编程逻辑器件的集成软件, 是该公司前一代可编程逻辑器件的集成开发软件 MAX+Plus II 的更新换代产品。Quartus II 集 成开发软件支持可编程逻辑器件开发的整个过程,它提供一种与器件结构无关的设计环境,使设 计者能方便地进行设计输入、设计处理和器件编程。 Quartus II 集成开发软件适合多种平台的工作环境,支持更多种类的可编程逻辑器件的开发, 同时也提供在单芯片可编程系统(SOPC)设计的综合性环境和 SOPC 开发的基本设计工具。Quartus 设计工具完全支持 VHDL、Verilog 的设计流程,其内部嵌有 VHDL、Verilog 逻辑综合器。 Quartus II 也可以利用第三方的综合工具,如 Mentor LeonardoSpectrum、Synplify/Synplify Pro、FPGACompiler11,并能直接调用这些工具。同样,Quartus II 具备仿真功能,同时也支持 第三方的仿真工具,如 ModelSim。 Quartus II 包括模块化的编译器。编译器包括的功能模块有分析/综合器(Analysis USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY DIV_256 IS PORT(MCLK,CLR:IN STD_LOGIC; CLK:OUT STD_LOGIC); END DIV_256; ARCHITECTURE TEST OF DIV_256 IS SIGNAL COUNT:INTEGER RANGE 0 TO 255:=0; BEGIN PROCESS(MCLK,CLR) BEGIN IF CLR=0 THEN COUNT=0; ELSIF MCLKEVENT AND MCLK=1 THEN IF COUNT=255 THEN COUNT=0; ELSECOUNT=COUNT+1; END IF; END IF; CLK=CONV_STD_LOGIC_VECTOR(COUNT,7)(6); END PROCESS; END TEST; 216 分频源程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY DIV_16 IS PORT(MCLK,CLR:IN STD_LOGIC; CLK:OUT STD_LOGIC); END DIV_16; ARCHITECTURE TEST OF DIV_16 IS SIGNAL COUNT:INTEGER RANGE 0 TO 15:=0; BEGIN PROCESS(MCLK,CLR) BEGIN IF CLR=0 THEN COUNT=0; ELSIF MCLKEVENT AND MCLK=1 THEN IF COUNT=15 THEN COUNT=0; ELSECOUNT=COUNT+1; END IF; END IF; CLK=CONV_STD_LOGIC_VECTOR(COUNT,4)(3); END PROCESS; END TEST; 5.35.3 LCD1602LCD1602 接口设计接口设计 当键盘有字符输入时,CLR 变为低电平,该模块就把数据读取,若读到的数据不是退格键, 就把字符显示在 LCD 上,若读到的数据是退格键,就把 LCD1602 清屏。图 5.4 为 LCD1602 显示器 的元件符号。 图图 5.45.4 LCD1602LCD1602 元件符号元件符号 其中:CLK:时钟输入频率,接收从 16 分频计输出的频率,高电平时 LCD 模块读取键盘输入数据。 CLR:输入信号,当键盘有字符输入时,变为低电平,此时 LCD 模块读取键盘数据。 DATA_IN7.0:数据输入信号,从键盘输入的数据送至 LCD1602 模块,等待满足条件时显 示。 LCD_RW:LCD 模块的写控制信号。 LCD_RS:LCD 模块的读控制信号。 LCD_E:LCD 模块的使能信号。 DATA7.0:数据输出信号,满足条件时将该信号对应的字符显示在液晶屏幕上。 主要 VHDL 源程序如下: BEGIN PROCESS_TCCLKCNT:PROCESS(CLK,CLR) BEGIN IF CLR=0 THEN CLKCNT=0; ELSIF CLKEVENT AND CLK=1 THEN IF CLKCNT=40000 THEN CLKCNT=0; TC_CLKCNT=1; ELSE CLKCNT=CLKCNT+1; TC_CLKCNT=0; END IF; END IF; END PROCESS PROCESS_TCCLKCNT; PROCESS_CLKDIV:PROCESS(TC_CLKCNT) BEGIN IF CLR=0 THEN CLK_DIV=0; ELSIF TC_CLKCNTEVENT AND TC_CLKCNT=1 THEN CLK_DIV=NOT CLK_DIV; END IF; END PROCESS PROCESS_CLKDIV; PROCESS_CLKINT:PROCESS(CLK_DIV) BEGIN IF CLR=0 THEN CLK_INT=0; ELSIF CLK_DIVEVENT AND CLK_DIV=1 THEN CLK_INT=NOT CLK_INT; END IF; END PROCESS PROCESS_CLKINT; PROCESS_LCDE:PROCESS(CLK_DIV) BEGIN IF CLR=0 THEN LCD_E=0; ELSIF CLK_DIVEVENT AND CLK_DIV=1 THEN LCD_E=NOT LCD_E; END IF; END PROCESS PROCESS_LCDE; PROCESS_MAIN1:PROCESS(CLK_INT,CLR) BEGIN IF CLR=0 THEN FLAG=0; DATA_INBUF=DATA_IN; STATE IF FLAG=0 THEN STATE=SETFUNCTION; FLAG=1; ELSESTATELCD_RS=0;LCD_RW=0;DATA=00010000;STATELCD_RS=0;LCD_RW=0;DATA=00000001;STATELCD_RS=0;LCD_RW=0;DATA=00000110; STATE LCD_RS=0;LCD_RW=0;DATA=00000010;STATELCD_RS=0;LCD_RW=0;DATA=00001100;STATE LCD_RS=0;LCD_RW=0;DATA=00001000;STATE LCD_RS=0;LCD_RW=0;DATA=00111000; IF FLAG_CLEAR=0 THEN STATE=CLOSEDISPLAY; FLAG_CLEAR=1; ELSESTATE LCD_RW=0;LCD_RS=0;DATA=01000000; STATE IF DATA_INBUF/=00001000 AND COUNT16 THEN LCD_RS=0;LCD_RW=0; DATA(7)=1; COUNT=COUNT+1; DATA(6 DOWNTO 0)=CONV_STD_LOGIC_VECTOR(COUNT,7); STATE=WRITERAM; ELSIF DATA_INBUF/=00001000 AND COUNT=16 THEN LCD_RS=0;LCD_RW=0; DATA(7)=1;DATA(6 DOWNTO 0)=1000000;COUNT=65; STATE64 AND COUNT80 THEN LCD_RS=0;LCD_RW=0;DATA(7)=1; DATA(6 DOWNTO 0)=CONV_STD_LOGIC_VECTOR(COUNT,7); COUNT=COUNT+1; STATE=WRITERAM; ELSE STATE=CLEAR;COUNT LCD_RS=1;LCD_RW=0; DATA=DATA_INBUF; STATENULL; END CASE; END IF; END PROCESS PROCESS_MAIN1; END DRIVE; 程序中使用的初始化过程: 延时 15ms; 写指令 38H(不检测忙信号) ; 延时 5ms; 写指令 38H(不检测忙信号) ; 延时 5ms; 写指令 38H(不检测忙信号) ; 检测忙信号(以后每次写指令、读写数据操作之前均需检测忙信号) ; 写指令 38H;(显示模式设置) 写指令 08H;(显示关闭) 写指令 01H, (显示清屏) 写指令 06H;(显示光标移动设置) 写指令 0CH;(显示开及光标设置) 程序中状态机转化过程如图 5.5 所示: 图图 5.55.5 LCDLCD 显示模块状态转化图显示模块状态转化图 5.45.4 键盘接口驱动设计键盘接口驱动设计 当键盘有键按下时,就将所该字符的 ASCII 码从 RX_ASCII 传出,时同将 RXRELEASED 拉低通 知 LCD1602 接口驱动。图 5.6 为键盘接口模块电路元件符号。 图图 5.65.6 键盘接口电路元件符号键盘接口电路元件符号 图中主要引脚功能名称与功能如下: CLK:时钟输入信号,接收从 256 分频计输出的频率 RESET:复位信号,当其为低电平时,系统才把从键盘输入的数据送至 LCD 模块等待显示。 RE_READ:键盘读控制信号,从键盘接口电路接收到读控制信号 TX_DATA7.0:数据输入信号,从键盘输入的字符的相应 ASCII 码。 TX_WRITE:键盘写控制信号,从键盘将输入字符的 ASCII 码写入相应存储模块。 PS2_CLK:时钟输出信号。 RX_EXTENDED: RX_SHIFT_KEY_ON:键盘上、下挡功能控制信号,当其为低电平时,显示相应的下挡字符,而为高 电平时显示上挡字符。 RX_ASCII7.0:数据输出信号,键盘输入字符的相应 ASCII 码。 由于 VHDL 程序过长,详请见附录 B。程序中状态机转化过程如图 5.7 所示: 图图 5.75.7 键盘接口电路状态转化图键盘接口电路状态转化图 具体通信过程如下: (1)PS/2 设备到主机的通信过程 此时 PS/2 设备为数据发送方,而主机为数据接收方,主机在接收数据时应保持空闲工作状 态。从前面的介绍可以知道,PS/2 设备提供通信时钟,并且通信传输的帧长为 11 位。数据传输 的时序如图 5.8 所示: 图图 5.85.8 PS/2PS/2 设备到主机通信的数据传输时序图设备到主机通信的数据传输时序图 如果总线被禁止,那么 PS/2 设备在开始传送数据前会一直等到总线开放为止。在总线开放 后、开始发送起始位前 PS/2 设备将至少再等待 50ms。当 PS/2 设备等待发送数据时它首先检查时 钟以确认该数据是否为高电平,如果不是,那么主机抑制了能信,此时 PS/2 设备进入等待或缓 冲(将待发送的数据放入缓冲区) ,等待时钟变为高电平。如果时钟线是低电平,PS/2 设备就可 以开始传送数据。 PS/2 设备发送数据过程如下: 等待 Clock 线变为高电平; 延迟 50ms; Clock 是否为高电平(否,跳到第 1 步)? Data 线是否为高电平(否,放弃发送)? 延迟 20ms; 输出超始位(1 位) ; 输出 8 个数据位,并测试时钟确认它是否被主机拉低(是,说明主机要放弃本次传送) ; 输出校验位(1 位) ; 输出停止位(1 位) ; 延迟 30ms。 (2)主机到 PS/2 设备的通信过程 由于在发送过程中的时钟都是由 PS/2 设备产生的,故主机要发送数据,则必须首先把时钟 和数据线设置为请求发送状态,分以下两步来完成: 通过下拉时钟线至少 100ms 来抑制 PS/2 设备发送数据; 通过下拉数据线来请求发送,然后释放时钟线。 在第步完成后,PS/2 设备在不超过 10ms 的间隔内检查这个状态(时钟线是否已经释放) 。 如果时钟线已经释放,PS/2 设备再次产生时钟信号,然后在此时钟下,依次放入 8 个数据位和一 个停止位。主机仅能在时钟为低电平时改变传输的数据值,数据则在时钟脉冲的上升沿被锁存。 此过程与 PS/2 设备到主机通信的过程正好相反 在主机发送停止位后,PS/2 设备要应答收到的字节,此时 PS/2 设备把数据线拉低,并产生 最后一个时钟脉冲;如果主机在第 11 个时钟脉冲后并不释放数据线,那么 PS/2 设备将继续产生 时钟脉冲直到数据线被释放,然后 PS/2 设备将产生一个错。数据传输的时序图如图 5.9 所示: 图图 5.95.9 主机到主机到 PS/2PS/2 设备通信的数据传输时序图设备通信的数据传输时序图 主机到 PS/2 设备发送过程如下: 延迟 15ms; 把数据线拉低; 延迟 5ms; 把时钟线拉低; 延迟 40ms; 释放时钟线; 延迟 5ms; 释放数据线; 开始传道数据、检验位、停止位; 六、全文总结六、全文总结 本设计使用 ALTERA 公司的 Cyclone 系列 FPGA 芯片 EP1C6Q240C8N 完成了对 PS/2 键盘接 口电路和 1602 液晶显示器的控制。单独的 1602 液晶显示模块可以显示程序中既定的字符,系统 整体电路可以完成从键盘输入字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论