资源描述
摘摘 要要 本论文介绍了应用 FPGA 芯片和硬件描述语言(VHDL)设计微波炉控制器系统 的方法。系统使用 VHDL 编程实现各底层模块的功能,顶层的设计采用图形输入完 成。论文主要阐述模块化设计的思想和状态图的描述方法,以及他们在硬件描述语 言中的应用,并展示了其在 Quartus II 开发系统下的仿真结果。 微波炉控制器系统是一个实用型的系统,系统不仅具有操作简单的功能,而且 烹调效果好,你可以按照固定程序烹调一些家常菜,可以采取分时、分不同级别火 力加热,既能节约时间又能节约能源。主要有以下几个模块:输入模块、控制模块 和显示模块。输入模块实现按键扫描和键盘译码、控制模块包括状态转换控制、数 据装载、烹饪计时、温度控制、音效提示等等、显示模块涉及到显示译码和指示灯 的闪烁。 经过对系统做需求分析,详细功能设计、编码,模块连接,并利用 FPGA 实现 相应的功能,经过波形仿真、下载调试,验证了设计方案的可行性及实现方法的有 效性,基本实现了系统的要求。 关键词:关键词:FPGA;VHDL;微波炉;状态图;定时器 Abstract This paper introduces the method that applying FPGA chip and VHDL to design the control system of microwave ovens. The system uses VHDL to fulfill the function of each bottom module and the design of the top layer is completed via graphic entering. This paper mainly illustrates the idea of module design and description method of state chart and that their application in VHDL and simulation results in the develop system of Quartus II. Microwave controller system is a utility-type system that includes not only the function of simple operation, but also good effect of cook. According to fixed routine, you can cook some homely dish via taking different time and different level firepower to heat, and this can not only save time, but also save energy. It mainly includes a couple of modules as follows: input module, control module and display module. Input module fulfills key-press scanning and keyboard decoding, control module includes status switching control, data loading, cook time, temperature control, sound effect tip and so on, display module comes down to display coding decipher and the flashing of indicator light. Through the analysis of requirement, detailed function design, coding, module connection, using FPGA to fulfill relevant function. Through waveform simulation, download debugging, it verifies the feasibility of the design and the effectiveness of realization method and basically fulfill the requirement of the system. Keywords: FPGA, VHDL, Microwave oven, Status chart, timer 目目 录录 1.绪论.1 1.1.任务的提出1 1.2.课题的内容和要求1 1.3.设计的目的和意义2 2.关键技术简介.3 2.1.FPGA 简介.3 2.2.VHDL 语言概述3 2.3.Quartus II 开发系统简介5 3.系统总体设计.7 3.1.系统总体设计方案7 3.2.系统功能模块描述9 3.2.1. 输入模块10 3.2.2. 控制模块10 3.2.3. 显示模块11 3.3.系统的工作流程11 4.系统详细设计.13 4.1.输入模块设计13 4.1.1. 键盘扫描13 4.1.2. 键盘译码16 4.1.3. 输入模块的实现17 4.2.控制模块设计18 4.2.1. 状态转换控制19 4.2.2. 数据装载22 4.2.3. 烹饪计时23 4.2.4. 温度控制26 4.2.5. 控制模块的实现29 4.3.显示模块设计31 5.系统仿真.35 5.1.输入模块仿真35 5.2.状态转换控制器仿真35 5.3.数据装载器仿真36 5.4.烹饪计时器仿真37 5.5.显示译码器仿真39 6.结论.41 致 谢42 参考文献43 附 录44 基于 FPGA 的微波炉控制器设计 1. 绪论绪论 随着人民生活水平的提高,微波炉开始进人越来越多的家庭,它给人们的生活 带来了极大的方便。微波炉由 2450MHz 的超高频来加热食物。它省时、省电、方便 和卫生。作为现代的烹饪工具,微波炉的控制器体现着它的重要性能指标。目前大 部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。本文采用 先进的 EDA 技术,利用 Quartus II 工作平台和 VHDL 设计语言,设计了一种新型的 微波炉控制器系统。该系统具有系统复位、时间设定、烹饪计时、温度控制和音效 提示等功能,在 FPGA 上实现。 1.1. 任务的提出任务的提出 在现代人快节奏生活中,微波炉已成为便捷生活的一部分。随着控制技术和智 能技术的发展,微波炉也向着智能化、信息化发展。而现有市售的微波炉其主要弊 端为:不能按既有程序进行烹调,需要使用者根据食物的类型、数量、温度等因素 去设定微波炉的工作时间,若设定的工作时间过长,含水分较多的食物可能会产生 过热碳化的现象,若时间过短则达不到预期的烹调效果。不仅在节能方面未做过多 考虑,使用者还需要经常翻看使用说明书才能完成操作过程。针对这些问题,笔者 认为有必要研制一种操作简单且烹调效果好的微波炉,根据一些家常菜按固定程序 烹调的现象,可采取分时、分档火力加热,节时又节能。 1.2. 课题的内容和要求课题的内容和要求 本课题是基于 FPGA 的微波炉控制器设计,即设计一个具备定时、温控、信息 显示和音响效应提示功能的微波炉控制器,实现一些功能: 该微波炉控制器能够在任意时刻取消当前工作,复位为初始状态。 可以根据需要设置烹调时间的长短,系统最长的烹调时间为 59 分 59 秒;开 始烹调后,能够显示剩余时间的多少。 可以根据需要设置烹调最高温度值,系统最高的烹调温度为 999;开始烹 调后,能够显示系统当前温度值。 可以控制火力大小,供选择的火力档位有高、中、低三个火力档位。 音响效应提示直接外接一个蜂鸣器,同时用一个指示灯提示。 显示微波炉控制器的烹调状态。 西南石油大学本科毕业设计(论文) 1.3. 设计的目的和意义设计的目的和意义 目前大部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。 本设计采用先进的 EDA 技术,利用 VHDL 设计语言,设计一种新型的微波炉控制 器。该控制器具有系统复位、状态控制、时间设定、火力档位选择、烹饪计时、温 度控制、显示译码和音效提示等功能,基于 FPGA 芯片实现。 该微波炉控制系统,除实现常规的解冻、烹调、烘烤的基本功能外,还进行了 创新设计,实现了微波炉的自定义设置。 本系统控制部分以 FPGA 芯片为核心,通过功能按键设置和手动数据输入,完 成不同功能时自动以预置方案或者自定义方案加热。其中,预制方案提供烹调、烘 烤、解冻等系统烹调流程,仅供用户选择,无需设置;而自定义方案,用户根据食 物含量、重量等手动设置时间、温度和选择火力等操作。在烹饪过程中,能通过数 码管显示或者指示灯提示知道食物的成熟度,可以智能控制。 该系统在功能执行时,能实现门开关检测、键盘输入扫描、温度控制、LED 显 示、工作状态指示、蜂鸣等。 基于 FPGA 的微波炉控制器设计 2. 关键技术简介关键技术简介 2.1. FPGA 简介简介 FPGA(FieldProgrammable Gate Array) ,即现场可编程门阵列,它是在 PAL、GAL、CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成 电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克 服了原有可编程器件门电路数有限的缺点。 目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单 的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。 这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如 AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。 在大多数的 FPGA 里面,这些可编辑的元件里也包含记忆元件例如触发器 (Flipflop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把 FPGA 内部的逻辑块连接起来, 就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品 FPGA 的逻辑块和 连接可以按照设计者而改变,所以 FPGA 可以完成所需要的逻辑功能。 FPGA 一般来说比 ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计, 而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来 改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的 FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的 FPGA 上完成的,然后将设计转移到一个类似于 ASIC 的芯片上。 2.2. VHDL 语言概述语言概述 VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987 年底,VHDL 被 IEEE 和美国国防部确认为标 准硬件描述语言。 VHDL 主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有 硬件特征的语句外,VHDL 的语言形式和描述风格与句法是十分类似于一般的计算 机高级语言。VHDL 的程序结构特点是将一项工程设计,或称设计实体(可以是一 个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称 西南石油大学本科毕业设计(论文) 不可视部分) ,既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外 部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将 设计实体分成内外部分的概念是 VHDL 系统设计的基本点。 VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有 很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点: (1) VHDL 语言功能强大,设计方式多样 VHDL 语言具有强大的语言结构, 只需采用简单明确的 VHDL 语言程序就可以 述十分复杂的硬件电路。同时, 它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述 语言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式, 也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。 (2) VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描 述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可 以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样 可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富 的数据类型。VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型, 这样便会给硬件描述带来较大的自由度。 (3) VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在:对于同一个硬件电路的 VHDL 语言 描述,它可以从一个模拟器移植到另一个模拟器上,从一个综合器移植到另一个综 合器上,或者从一个工作平台移植到另一个工作平台上去执行。 (4) VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计 的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要 考虑其他的问题。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同 的器件结构来实现。 (5) VHDL 语言程序易于共享和复用 VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以 建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始 基于 FPGA 的微波炉控制器设计 一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设 计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。 由于 VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言, 因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路 设计的工作量,缩短开发周期。 2.3. Quartus II 开发系统简介开发系统简介 Altera 公司的 Quartus II 开发系统以其独特的设计理念,为用户提供了一种全 新的可编程逻辑器件开发系统。它集合了 Altera 的全部 CPLD/FPGA 器件的硬件开 发功能,同时也可以实现系统级设计、综合、仿真、约束等功能,还具有在线测试 功能。 Quartus II 7.0 软件具有以下特性: 1、提供的集成物理综合技术 Quartus II 软件包括唯一的 FPGA 供应商提供的集成物理综合优化技术。 Quartus II 物理综合选项应用在编译的布局布线阶段,而与采用何种综合工具无关。 2、更快的时序逼近 Quartus II 软件用户能够利用强大的时序逼近流程特性来优化设计,使其超过按 键式编译结果的性能。Quartus II 软件的时序逼近流程由于其包含了内置物理综合工 具以及丰富的图形分析和编辑工具,提供了强大的交互探测能力,具有极大的吸引 力。 3、最易使用的设计优化技术 Quartus II 软件采用按键式设计流程,满足了大部分设计的时序要求。当设计人 员进一步需要更好的编译结果时,Quartus II 软件提供了一些高级工具,可以轻松地 实现优化设计。用户可以使用设计空间搜索器(DSE)采用自动技术,是寄存器到 寄存器设计性能平均提高 21%。时序优化顾问工具在 Quartus II 软件内给设计人员 提供了一个虚拟的现场应用工程师。这个工具基于当前设计工程设置和约束,提供 详细的优化设计时序性能的建议。 4、实现后期设计更改的同时保持性能 可编程逻辑设计软件的一个传统困难是;当引入后期设计更改的时候,如何保 持设计的性能。然而,Quartus II 软件能够轻松地实现后期设计更改。最新的增量式 设计编辑器和编译技术给设计人员提供了布局布线后设计更改的最佳支持。这些技 西南石油大学本科毕业设计(论文) 术包括: Quartus II 芯片编辑器; 在 LogicLock(tm)区域中实现布局布线锁定的能力; 使用渐进式编译,仅实现对部分改动的设计进行修改。 5、提供并行开发 FPGA 和结构化 ASIC Quartus II 软件能够提供 FPGA 设计和结构化 ASIC 设计之间的无缝移植。 Quartus II 软件能够编译 HardCopy Stratix 器件,从而提供了高性能低成本器件的解 决方法。HardCopy Stratix 结构化 ASIC 提供了比 Stratix FPGA 平均高 50%的性能, 进步一步加强了 Stratix III 器件系列 65nm 性能的领先性。 Altera 公司的 Quartus II 设计软件提供完整的多平台设计环境,能够直接满足 特定设计需要,为可编程芯片系统(SOPC)提供全面的设计环境。Quartus II 软件 含有 FPGA 核 CPLD 设计所有阶段的解决方案,其设计流程包含设计输入、综合、 布局布线、时序分析、仿真、编程和配置等步骤,其中的布局布线还包括功耗分析、 调试、工程更改管理几个部分。这些操作都可以利用 Quartus II 软件实现。 此外,Quartus II 软件为设计流程的每个阶段提供了 Quartus II 图形用户界面、 EDA 工具界面以及命令行界面。可以在整个流程中只使用这些界面中的一个,也可 以在设计流程的不同阶段使用不同的界面。 基于 FPGA 的微波炉控制器设计 3. 系统总体设计系统总体设计 3.1. 系统总体设计方案系统总体设计方案 根据题目要求,该系统控制部分以 FPGA 芯片为核心,实现时间设置、温度设 定、火力选择、音效响应提示、LED 数码管显示等,在硬件组成上,涉及到电源供 电、按键输入、LED 数码管显示、指示灯提示等。 以下是该系统总体框图,如图 3.1 所示: 图图 3.1 微波炉控制器系统总体框图微波炉控制器系统总体框图 该控制器系统在 EDA 实验箱上实现的外观布局如图 3.2 所示。采用 Cyclone II 芯片 EP2C35F672C8 作为控制芯片,16 个按键组成的 4*4 矩阵键盘,每个按键代表 的功能如图 3.2 所示,8 个 LED 作为 8 个状态提示指示灯, 4 位 LED 数码管显示 加热倒计时,3 位 LED 数码管显示当前温度值,1 位 LED 数码管显示当前火力档位。 在图 3.2 中,各按键功能如下: 复位:按下此键,系统进入初始状态,8 个数码管上会显示“88888888”的信息, 所有 LED 指示灯亮。 测试 :在待机状态下按下此键,则数码管和发光二极管全亮、全灭交替闪烁。 10Min 1Min/100/High 10Sec/10/Middle 1Sec/1/Low:四个键用于设 定加热时间、最高温度或者选择火力档位。当按下时间设置按键时,四个按键分别 西南石油大学本科毕业设计(论文) 表示设置定时时间的分、秒的十位和个位的数字;当按下温度设定 按键时,后面三 个按键分别表示设定最高温度的百位、十位、个位;当按下火力设定按键时,后面 三个按键分别表示火力档位的高、中、低三个档位。由于在时间设置和温度设定时, 四个按键初始值均为 0,因此需要借助/+1 /-1 两个按键共同实现时间、温度的 设定操作。比如设定烹饪时间为 12 分 59 秒,只需要选择 10Min 键,然后按/+1 键“1”次;选择 1Min/100/High 键,然后按/+1键“2”次;选择 10Sec/10/Middle 键,然后按/+1键“5”次;选择 1Sec/1/Low 键,然后按/+1键“9”次。同理,温度 设定操作如上。 10 Min 1 Min /100 /High 10 Sec /10 /Middle 1 Sec /1 /Low /+1 /-1 烹烹调调 复复位位 RESET 暂暂停停取取消消 Cancel 测测试试 TEST 火火力力设设定定 Power 温温度度设设定定 Tempera ture 时时间间设设置置 SET_T 烘烘烤烤解解冻冻 开开始始确确认认 S ST TA AR RT T FPGA 控制 芯片 工工 作作 状状 态态 暂暂 停停 测测 试试 烹烹 调调 烘烘 烤烤 解解 冻冻 意意 外外 报报 警警 完完 成成 提提 示示 显显 示示 时时 间间显显 示示 温温 度度 火火力力 指指示示 3.2 系统外观布局系统外观布局 暂停/取消:用于暂停食物烹饪过程或者取消食物烹饪前的参数设置过程。在 食物烹饪过程中,若按下该键,则停止食物烹饪,进入待机状态;在参数设置时, 若按下此键,可取消设置的参数。 火力设定 :用于设定系统火力档位。按下该键,进入选择 1Min/100/High 基于 FPGA 的微波炉控制器设计 10Sec/10/Middle 1Sec/1/Low 按键状态。 温度设定 :设置加热的温度最高值。当按下该键时,进入调整 1Min/100 /High 10Sec/10/Middle 1Sec/1/Low 按键状态。 时间设置 :设置系统工作时间。按下该键,进入调整 10Min 1Min/100 /High 10Sec/10/Middle 1Sec/1/Low /+1 /-1 按键状态。 烹调 :快速设定当前烹饪时间和火力到适合烹调的值。 烘烤 :快速设定当前烹饪时间和火力到适合烘烤的值。 解冻 :快速设定当前烹饪时间和火力到适合解冻的值。 开始/确认 :在选择烹调、烘烤、解冻或者设置时间、设定温度、选择火力等 烹饪参数后,按下此键,开始进行烹饪。 指示灯功能如下: 完成提示:提示微波炉工作完成。该灯亮时,表示烹饪完成; 意外报警:提示意外情况发生。该灯亮时,表示出现意外,微波炉暂停工作; 解冻:该灯亮时,表示工作在解冻模式下; 烘烤:该灯亮时,表示工作在烘烤模式下; 烹调:该灯亮时,表示工作在烹调模式下; 测试:该灯亮时,表示微波炉处于测试状态; 开门指示:指示微波炉的门的状态,门开时灯亮,门关时灯灭; 工作状态:指示微波炉处于工作状态,工作时灯亮,不工作时灯灭; 3.2. 系统功能模块描述系统功能模块描述 本系统主要由输入、控制和显示部分组成。输入部分主要完成用户对控制功能 的设置,采用按键作为输入设备。控制部分是本系统的核心,它接收用户的输入, 完成相应的控制逻辑功能,并将当前的工作状态等信息送到显示部分。显示部分主 要监视系统工作状态并提示用户进行控制操作。 以下是该系统功能模块图,如图 3.3 所示 西南石油大学本科毕业设计(论文) 图图 3.3 系统功能模块图系统功能模块图 3.2.1. 输入模块输入模块 输入部分一般采用键盘或旋钮作为输入,由于实验室已有设备限制,本系统采 用键盘进行输入设置,即由一个 4*4 矩阵键盘实现数据输入控制。该矩阵键盘上 16 个按键分别是:10Min 1Min/100/High 10Sec/10/Middle 1Sec/1/Low /+1 复位 暂停/取消 测试 /-1 火力设定 温度设定 时间设置 烹调 烘烤 解冻 开始/确认。输入模块包括时钟脉冲电路、键盘扫描电路、消枓同步 电路和键盘译码电路,通过该模块将扫描得到的按键值送到控制模块。 3.2.2. 控制模块控制模块 控制部分作为整个微波炉控制器系统的核心,它采用 FPGA 芯片作为主控核心, 完成许多复杂的控制和数据处理任务。它通过输入模块提供的按键输入实现数据信 息装载处理,并将处理结果通过显示模块显示出来。其涉及到数据的装载、状态转 换控制、烹饪计时、温度控制、火力控制、音响效应提示等。 基于 FPGA 的微波炉控制器设计 3.2.3. 显示模块显示模块 显示部分采用七段数码管和发光二极管来实现。由于数码管显示信息较少,一 些信息用数码管显示不够直观,因此本系统在采用数码管显示的同时,还用发光二 极管作为辅助显示。其中,用七段数码管作为时间、温度、火力大小显示,用发光 二极管作为状态提示显示。具体设计时,采用 4 位 LED 数码管显示加热倒计时,3 位 LED 数码管显示当前温度值,1 位 LED 数码管显示当前火力档位。8 个状态提示 指示灯分别表示:工作状态、开门指示、测试、烹调、烘烤、解冻、意外报警、完 成提示。 3.3. 系统的工作流程系统的工作流程 微波炉控制器系统的工作流程为:上电后,系统首先处于一种复位状态,其各 电路模块均处于初始状态。此时,8 个数码管上会显示“88888888”的信息,所有指 示灯亮。按 TEST 键,数码管和发光二极管全亮、全灭交替闪烁,可以测试数码管 和指示灯工作是否正常。系统工作时,首先通过键盘输入数据,比如,按烹调、烘 烤、解冻键选择系统预置方案,或者按时间设置键设置时间,按温度设定键设置温 度,按火力选择键选择火力,结合 10Min、1Min/100/High、10Sec/10 /Middle、1Sec/1/Low 按键进行自定义方案设置,设置结束以后,表示数据装载完 成,按 START 键后系统进入烹调状态。在烹饪过程中,可以按暂停/取消键暂停烹 饪,或者重新设置时间、温度、火力。烹饪结束后,系统会发出音效提示,同时, 系统自动进入复位状态。 根据系统工作流程,绘制主程序流程图,如图 3.4 所示: 西南石油大学本科毕业设计(论文) 图图 3.4 系统工作流程图系统工作流程图 基于 FPGA 的微波炉控制器设计 4. 系统详细设计系统详细设计 4.1. 输入模块设计输入模块设计 输入模块采用 4*4 矩阵键盘作为输入设备,实现数据输入控制。矩阵键盘是一 种常见的输入装置,在日常生活中,矩阵键盘在计算机、电话、手机、微波炉等格 式电子产品上已经被广泛应用,计算机键盘通常采用行列扫描法来确定所按下键的 行列位置。由于键盘按键是一种机械开关,所以设计其控制电路时,需要涉及到键 盘扫描、键盘译码,光靠矩阵键盘是无法完成按键输入工作的。其中键盘扫描又涉 及到时序产生、按键扫描和消除抖动。 4.1.1. 键盘扫描键盘扫描 键盘处理的重要环节是时序产生、键盘扫描和按键消抖,以下分别针对所涉及 到的电路进行描述。 1、时序产生电路 本时序产生电路中使用了三种不同频率的工作脉冲波形:系统时钟脉冲、扫描 键盘时钟、键盘消抖动时钟。分别定义如下: CLK: IN STD_LOGIC; -系统时钟脉冲 CLK_SCAN : OUT STD_LOGIC; -扫描键盘时钟 CLK_DEB : OUT STD_LOGIC -键盘消抖动时钟 一般消抖动信号时钟频率必须比其它的电路使用的脉冲信号频率更高,一般消抖 动频率是键盘扫描或 LED 频率的 4 倍或更高。这里系统时钟频率取 50MHZ,扫描 时钟频率取 100KHZ,消抖时钟频率取 200KHZ。 生成的电路符号如下,图 4.1 所示: CLKCLK_SCAN CLK_DEB clk_gen inst 图图 4.1 时序产生电路符号时序产生电路符号 2、按键扫描电路 所谓行列式键盘扫描,即用带有 I/O 口的线组成行列式结构,按键设置在行列 西南石油大学本科毕业设计(论文) 的交点上。行列式矩阵键盘原理:按键设置在行列线的交叉点,行列线分别连接到 按键的两端。列线通过上拉电阻截止+5V 电压,即列线的输出被定位到高电平状态; 判断有无按键按下时通过行线送出扫描信号,然后列线读取状态得到。其方法是依 次给行线送低电平,检查列线的输入。若列线全为高电平,则代表所在行无按键按 下,若列线出现低电平,则低电平所在的行和出现低电平的列的交叉点处有按键 按 下。行扫描信号为 KEY_DRV30,列输入信号为 KEY_IN30,与按键的对应关 系如表 4.1 所示。 表表 4.1 nm 行列矩阵对应关系表行列矩阵对应关系表 K KE EY Y_ _D DR RV V3 3 K KE EY Y_ _D DR RV V0 0K KE EY Y_ _I IN N3 3 K KE EY Y_ _I IN N0 0对对应应的的按按键键 11101 11012 10113 1110 01114 11105 11016 10117 1101 01118 11109 11010 1011A 1011 0111B 1110C 1101D 1011E 0111 0111F 键盘扫描电路是用来产生扫描信号 KEY_DRV30,其变化为周期性的有规律 的变化(1110 1101 1011 0111),停留在每个状态的时间由按键的机械物理特性决定, 按键在闭合和断开的瞬太短的按键扫描时间容易采集到按键抖动,太长的扫描时间 容易丢失某些较快的按键信息。 完成程序设计,生成相应的电路符号,如图 4.2 所示: 基于 FPGA 的微波炉控制器设计 SCAN_CLKKEY_DRV30 key_scan inst5 图图 4.2 键盘扫描电路符号键盘扫描电路符号 3、按键消抖电路 当一个按键按下和释放时,对应信号线电平的变化有一个不稳定期,即所谓 “抖动”,这是因为多数开关的闭合和断开都有一个过程,并不是即刻实现的。在读 取键盘状态时必须避开这个不稳定期,以免造成误判,这样一个做法叫做“去抖”。 如果当在一段时间内都连续多次读到同一个非空(即有键按下)的扫描码,可 以认为这时按键已处于稳定状态,这时得到的扫描码就代表了一个键盘动作,抖动 的影响已经被剔除。按照这个想法,只需设置一个倒数计数器,当每次读到的非空 扫描码与上一次的相同,就将计数器加 1;而当一旦读到不同的扫描码或空码则立 即将计数器清 0。如果计数器的值达到某预定值 N 时,则表示连续 N 次读到同一扫 描码,于是可认为已经读到了有效的按键。设键盘扫描的间隔是 T,则去抖的时间 就是 N * T。在实际中,因为一般人的按键速度至多是 10 次/秒,亦即一次按键时间 是 100ms,所以按下的时间可估算为 50ms。因此,键盘扫描的频率取 100KHz,消 抖时钟频率取 200KHz。 综合上述分析,该键盘扫描子模块关键代码如下: COUNTER:BLOCK IS BEGIN PROCESS(CLK)IS BEGIN IF(CLKEVENT AND CLK=1)THEN Q K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE LD_TEST LD_CLK LD_DONE IF(TEST=1) THEN NEXT_STATE IF DONE=1 THEN NEXT_STATE DATA2 DATA2 DATA2 NULL; END CASE; END PROCESS; 完成 VHDL 源程序的输入,编译、运行,生成相应的电路符号,如下图 4.11 所示: DATA1150 LD_TEST LD_CLK LD_DONE DATA2150 LOAD ALARM ZZQ inst5 图图 4.11 ZZQ 电路符号电路符号 4.2.3. 烹饪计时烹饪计时 烹饪计时器 JSQ 为减计数计数器,其最大计时时间为 59:59,因此可用两个减 计数十进制计数器 DCNT10 和两个减计数六进制计数器 DCNT6 级联构成。其中, 两个十进制的减法计数器用于分、秒的个位减法计数,两个六进制的减法计数器用 于分、秒的十位减法计数。 由所学知识可知,计数的功能是累计输入脉冲的个数,实现计数功能的数字电 基于 FPGA 的微波炉控制器设计 路即计数器,被计数的脉冲可以是周期性脉冲,也可以是非周期性脉冲,通常加在 计数器的时钟脉冲输入端,作为计数器的时钟脉冲。 因此,根据减法计数器随计数脉冲的不断输入而递减计数,在具体设计该十进 制减法计数器和六进制减法计数器过程中,可以当计数值减到 0 时,其计数器的数 值自动转为定时设定时间,在十进制计数器的设计过程中,可表达为: IF CQI=“0000“ THEN CQI=(cout-6) AND touthourin) THEN ALARMDOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=“0000000“; END CASE; END PROCESS; 生成电路符号,如图 4.22 所示: AIN430DOUT760 YMQ inst4 图图 4.22 YMQ 电路符号电路符号 西南石油大学本科毕业设计(论文) 5. 系统仿真系统仿真 5.1. 输入模块仿真输入模块仿真 完成该键盘输入模块 VHDL 源程序文件输入后,保存文件,对文件进行编译, 生成该输入模块部分的原理框图,如图 5.1 所示: CLK KEY_IN30 OUT_CLK OUT_DATA150 keyboard inst VCC CLK INPUT VCC KEY_IN30 INPUT DATA150 OUTPUT CLK OUTPUT 图图 5.1 输入模块原理框图输入模块原理框图 其中,CLK 为系统时钟脉冲,KEY_IN30为按键输入,KEY_OUT30为按 键输入译码后的输出值。 添加引脚,对该原理图进行编译、仿真。 5.2. 状态转换控制器仿真状态转换控制器仿真 完成状态转换控制器 KZQ 子模块 VHDL 源程序文件输入后,保存文件,对文 件进行编译,然后生成其模块原理图,如图 5.2 所示: RESET SET_T START TEST CLK DONE COOK LD_TEST LD_CLK LD_DONE ALARM KZQ inst VCC RESET INPUT VCC SET_T INPUT VCC START INPUT VCC TEST INPUT VCC CLK INPUT VCC DONE INPUT COOK OUTPUT LD_TEST OUTPUT LD_CLK OUTPUT LD_DONE OUTPUT ALARM OUTPUT 图图 5.2 状态转换控制器状态转换控制器 KZQ 原理图原理图 其中,输入信号为 RESET、SET_T、START、TEST、CLK、DONE,输出信 号为 COOK、LD_TEST、LD_CLK、LD_DONE、ALARM。 KZQ 根据输入信号和自身当时所处的状态完成状态的转换和输出相应的控制信 号。LD_CLK 指示 ZZQ 装入设置的烹调时间数据;LD_DONE 指示 ZZQ 装入烹调 完毕的状态信息“donE”的显示驱动信息数据;LD_TEST 指示 ZZQ 装入用于测试的 数据“8888”以显示驱动信息数据;COOK 指示烹调正在进行之中,并提示计时器进 基于 FPGA 的微波炉控制器设计 行减计数;ALARM 为外接音响效应扬声器。 添加引脚,对该原理图进行编译、仿真,其仿真结果,如图 5.3 所示: 图图 5.3 状态转换控制器状态转换控制器 KZQ 仿真图仿真图 分析该仿真文件,可以看到,当测试信号 TEST 为高电平有效时,测试输出信 号 LD_TEST 为高电平;否则,当时间设置信号 SET_T 为高电平时,对应的指示信 号 LD_CLK 输出高电平;当烹饪开始信号 START 信号为高电平时,对应输出 COOK 为高电平;当复位信号 RESET 为高电平时,系统复位清零,恢复初始状态。 仿真结果符合模块设计的要求。 5.3. 数据装载器仿真数据装载器仿真 完成数据装载器 ZZQ 子模块 VHDL 源程序文件输入后,保存文件,对文件进 行编译,生成该数据装载器子模块原理图,如图 5.4 所示: DATA1150 LD_TEST LD_CLK LD_DONE DATA2150 LOAD ALARM ZZQ inst VCC LD_TEST INPUT VCC LD_CLK INPUT VCC LD_DONE INPUT DATA2150 OUTPUT VCC DATA1150 INPUT LOAD OUTPUT ALARM OUTPUT 图图 5.4 数据装载器数据装载器 ZZQ 原理图原理图 其中,输入信号 LD_DONE 为高电平时,输出烹调完毕的状态信息数据; LD_CLK 为高电平时,输出设置的烹调时间数据;LD_TEST 为高电平时,输出测试 数据。输出信号 LOAD 用于指示电路正处于上述三路信号模式中的哪一种,同时提 西南石油大学本科毕业设计(论文) 示 JSQ 将处于数据装入状态。 添加引脚,对该原理图进行编译、仿真,其仿真结果如图 5.5 所示: 图图 5.5 数据装载器数据装载器 ZZQ 仿真图仿真图 分析该模块仿真结果,由于数据装载器本质上即多了选择译码电路。可知,当 LD_CLK、LD_TEST、LD_DONE 三路信号中有且仅有一路信号电平有效时,选择 器相应的值作为输出。 5.4. 烹饪计时器仿真烹饪计时器仿真 对烹饪计时器模块顶层文件进行编译,生成对应的元件,添加引脚,得到该烹 饪计时器子模块原理图。如图 5.6 所示: CLK LOAD COOK DATA5150 SEC_L30 SEC_H30 MIN_L30 MIN_H30 DONE ALARM JSQ inst VCC CLK INPUT VCC LOAD INPUT VCC COOK INPUT VCC DATA150 INPUT SEC_L30 OUTPUT SEC_H30 OUTPUT MIN_L30 OUTPUT MIN_H30 OUTPUT DONE OUTPUT ALARM OUTPUT 图图 5.6 烹饪计时器烹饪计时器 JSQ 原理图原理图 其中,输入信号 LOAD 为高电平时完成信号的载入;COOK 信号为高电平时, 在每个时钟周期的上升沿进行减法计数。输出信号 DONE 表示烹调时间到; ALARM 表示音响效应;SEC_L30、SEC_H30、MIN_L30、MIN_H30显 示所剩时间,和测试状态信息、烹调完毕状态信息等。 由于烹调计时器是由两个减计数十进制计数器 DCNT10 和两个减计数六进制计 数器 DCNT6 级联构成,因此,先完成两个减计数十进制和六进制计数器的 VHDL 源程序文件输入,保存文件并对文件进行编译、仿真。以下分别是两减计数器的功 基于 FPGA 的微波炉控制器设计 能仿真图。如图 5.7、5.8 所示: 图图 5.7 十进制计数器十进制计数器 DCNT10 仿真图仿真图 图图 5.8 六进制计数器六进制计数器 DCNT6 仿真图仿真图 分析以上计数器仿真结果,当 LOAD 高电平有效时,对应的输出数据 CQ 为输 入数据 DATAIN 的数值;否则,在时钟脉冲上升沿,当 ENA 高电平有效时,计数 器进行减计数,当计数值减到 0 时,其计数器的数值自动转为最大计时时间,在这 个过程中,当每次计数值减到 0 时,输出信号 CARRT_OUT 记一次数,即实现烹调 过程定时计数。 由以上分析可知,仿真结果正确,即实现了减法计数功能。 在前面仿真正确的基础上,生成相应的元件,对两计数器进行级联,构成烹调 计时器内部原理框图,对该原理图进行编译、仿真,得到其仿真结果图。为了直观 有效的观察该烹调计时器的实现结果,这里分别设置不同的定时时间进行仿真,其 对应的仿真结果如图 5.9、5.10 所示: 图 5.9 为定时时间(4 分 57 秒)的仿真结果图。 西南石油大学本科毕业设计(论文) 图图 5.9 烹调计时器烹调计时器 JSQ 仿真图(仿真图(4 分分 57 秒)秒) 图 5.10 为定时时间(59 分 59 秒)的仿真结果图。 图图 5.10 烹调计时器烹调计时器 JSQ 仿真图(仿真图(59 分分 59 秒)秒) 由以上仿真结果可以看到,该 JSQ 模块实现了烹调计时的定时作用。 5.5. 显示译码器仿真显示译码器仿真 完成显示译码器 YMQ 模块 VHDL 源程序文件输入后,保存文件,对文件进行 编译,生成该译码器模块框图,如图 5.11 所示: AIN430DOUT760 YMQ inst VCC AIN4 INPUT DOUT7 OUTPUT 图图 5.11 显示译码器显示译码器 YMQ 框图框图 其中,AIN4 为信号输入端,DOUT7 输出显示,外接 秒个位、秒十位、分个 基于 FPGA 的微波炉控制器设计 位、分十位的按键。 添加引脚,对该原理图进行编译、仿真,其仿真结果如图 5.12 所示: 图图 5.12 显示译码器显示译码器 YMQ 仿真图仿真图 分析仿真结果,可知,该译码器实现了显示译码功能。 西南石油大学本科毕业设计(论文) 6. 结论结论 该课题是利用 ALTERA 公司的 QUARTUS 开发环境和软件,进行 VHDL 程序 设计,然后进行仿真,调试,以 CYC-L2 V2.0 便携式 EDA/SOPC/DSP 实验系统为 硬件平台,实现了一个简单的微波炉控制器系统的设计。在整个毕业设计过程中, 进行了系统的总体设计,硬件设备的选用,软件和开发环境的安装,VHDL 程序设 计与仿真。 设计的重点主要在系统的规划以及程序的设计与调试上,要做到键盘与数码管, LED 灯的一体化,需要在键位设置时进行准确的设计,通过键盘的扫描,消抖和译 码,达到一键一码的目的,做到功能的完善。 设计的难点主要在功能控制上,数据和控制信号较多,状态之间的转化也较为 复杂,在设计中带来了一些困难。另外在仿真分析上,因为需要测试的结果很多, 有些结果无法预料,无法在仿真中看到。 本设计也存在一定的不足。由于本身能力和实验器材的限制,无法在系统中建 立完善的体制,只是实现了一个微波炉控制器的基本功能。比如像存储功能,就没 有在系统中考虑到,这些都有待以后的继续提高和完善。 基于 FPGA 的微波炉控制器设计 致致 谢谢 本文是在导师 XX 的认真要求和悉心指导下完成的。在这半年期间,无论是从 选题的确定,论文的写作、修改到最后的定稿,时刻都能得到 XX 老师的启发和引 导。特别是她多次询问我设计进程,在我感到进展困难的时候为我指点迷津,帮助 我开拓思路,精心点拨,热忱鼓励。正是在 XX 老师不遗余力的帮助下,我的设计 思路才得以能够从混乱到清晰,论文材料才能够从芜杂到精到,语言组织才可以从 琐碎到精炼,一步一步接近完善。XX 老师严肃的教学态度,严谨的治学精神,精 益求精的工作作风深深地感染和激励着我,在此,谨向 XX 老师致以我最诚挚的谢 意和崇高的敬意!谢谢 XX 老师! 在学习期间,也得到学院各位老师的无私帮助和热心教诲,在此向学院的各位 领导、老师表示衷心的感谢,谢谢你们给我提供了一个友好融洽的学习环境。同时, 对各位老师在专业知识与其他方面给予的帮助,在此一并表示诚挚的谢意!也感谢 在我学习和生活中给予帮助的各位同学,特别是同组成员 XX 同学,从最初的选题 理解以及模块搭建到最后的论文撰写,我们一起讨论学习,他给予了我很大帮助。 再一次向我的导师 XX 老师表示感谢,并向所有在论文完成过程中给予过我关 心、帮助和支持的老师、同学、朋友们致以最诚挚的谢意,谢谢你们! 同时也感谢学校图书馆给我们提供了良好的查询资料和下载资料的场所,感谢 学院为我们提供了良好的做毕业设计的环境。 感谢参加论文评审和答辩的各位教授、专家! 感谢你们能在百忙之中给予指导! 感谢所有关心我的人! 西南石油大学本科毕业设计(论文) 参考文献参考文献 1 李华MCS- 51 系列单片机使用接口技术北京:北京航空航天大学出版社, 1990 2 黄继昌传感器工作原理及应用实例北京:人民邮电出版社,1998 3 纪宗南单片机外围器件实用手册输入通道器件分册北京:北京航空航天 大学出版社,1998 4 阎石数字电子技术基础北京:高等教育出版社,2004 5 张志刚FPGA 与 SOPC 设计教程:DE2 实践西安:西安电子科技大学出 版社,2007 6 汪国强SOPC 技术与应用北京:机械工业出版社,2006 7 江思敏VHDL 数字电路及系统设计北京:机械工业出版社,2006 8 甘历VHDL 应用与开发实践北京:科学出版社,2003 9 陈荣,陈华VHDL 芯片设计北京:机械工业出版社,2006 10 王诚,吴继华,范丽珍Altera FPGA/CPLD 设计:基础篇北京:人民邮 电出版社,2005 11 徐光辉,程东旭,黄如基于 FPGA 的嵌入式开发与应用北京:电子工 业出版社,2006 12 李景华,杜玉远可编程逻辑器件与 EDA 技术沈阳:东北大学出版社, 2000 13 王国强EDA 技术与应用北京:电子工业出版社,2006 14 亿特科技CPLD/FPGA 应用系统设计与产品开发北京:人民邮电出版 社,2005 15 Bob Zeidman基于 FPGA&CPLD 的数字 IC 设计方法北京:北京航空航 天大学出版社,2004 16 Wayne WolfThe system based on FPGA design北京:机械工业出版社, 2005 基于 FPGA 的微波炉控制器设计 附附 录录 系统整体结构图系统整体结构图
展开阅读全文