毕业设计论文基于FPGA的微波炉控制器设计

上传人:痛*** 文档编号:79577413 上传时间:2022-04-24 格式:DOC 页数:47 大小:1.74MB
收藏 版权申诉 举报 下载
毕业设计论文基于FPGA的微波炉控制器设计_第1页
第1页 / 共47页
毕业设计论文基于FPGA的微波炉控制器设计_第2页
第2页 / 共47页
毕业设计论文基于FPGA的微波炉控制器设计_第3页
第3页 / 共47页
资源描述:

《毕业设计论文基于FPGA的微波炉控制器设计》由会员分享,可在线阅读,更多相关《毕业设计论文基于FPGA的微波炉控制器设计(47页珍藏版)》请在装配图网上搜索。

1、摘 要本论文介绍了应用FPGA芯片和硬件描述语言(VHDL)设计微波炉控制器系统的方法。系统使用VHDL编程实现各底层模块的功能,顶层的设计采用图形输入完成。论文主要阐述模块化设计的思想和状态图的描述方法,以及他们在硬件描述语言中的应用,并展示了其在Quartus II 开发系统下的仿真结果。微波炉控制器系统是一个实用型的系统,系统不仅具有操作简单的功能,而且烹调效果好,你可以按照固定程序烹调一些家常菜,可以采取分时、分不同级别火力加热,既能节约时间又能节约能源。主要有以下几个模块:输入模块、控制模块和显示模块。输入模块实现按键扫描和键盘译码、控制模块包括状态转换控制、数据装载、烹饪计时、温度

2、控制、音效提示等等、显示模块涉及到显示译码和指示灯的闪烁。经过对系统做需求分析,详细功能设计、编码,模块连接,并利用FPGA实现相应的功能,经过波形仿真、下载调试,验证了设计方案的可行性及实现方法的有效性,基本实现了系统的要求。关键词:FPGA;VHDL;微波炉;状态图;定时器AbstractThis 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 fu

3、nction 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 contro

4、ller 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

5、. 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 mo

6、dule 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

7、 and the effectiveness of realization method and basically fulfill the requirement of the system. Keywords: FPGA, VHDL, Microwave oven, Status chart, timer目 录1.绪论11.1.任务的提出11.2.课题的内容和要求11.3.设计的目的和意义22.关键技术简介32.1.FPGA简介32.2.VHDL语言概述32.3.Quartus II 开发系统简介53.系统总体设计73.1.系统总体设计方案73.2.系统功能模块描述93.2.1.输入模块1

8、03.2.2.控制模块103.2.3.显示模块113.3.系统的工作流程114.系统详细设计134.1.输入模块设计134.1.1.键盘扫描134.1.2.键盘译码164.1.3.输入模块的实现174.2.控制模块设计184.2.1.状态转换控制194.2.2.数据装载224.2.3.烹饪计时234.2.4.温度控制264.2.5.控制模块的实现294.3.显示模块设计315.系统仿真355.1.输入模块仿真355.2.状态转换控制器仿真355.3.数据装载器仿真365.4.烹饪计时器仿真375.5.显示译码器仿真396.结论41致 谢42参考文献43附 录44基于FPGA 的微波炉控制器设计

9、1. 绪论随着人民生活水平的提高,微波炉开始进人越来越多的家庭,它给人们的生活带来了极大的方便。微波炉由2450MHz的超高频来加热食物。它省时、省电、方便和卫生。作为现代的烹饪工具,微波炉的控制器体现着它的重要性能指标。目前大部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。本文采用先进的EDA技术,利用Quartus II工作平台和VHDL设计语言,设计了一种新型的微波炉控制器系统。该系统具有系统复位、时间设定、烹饪计时、温度控制和音效提示等功能,在FPGA上实现。1.1. 任务的提出在现代人快节奏生活中,微波炉已成为便捷生活的一部分。随着控制技术和智能技术的发展,微波炉也向

10、着智能化、信息化发展。而现有市售的微波炉其主要弊端为:不能按既有程序进行烹调,需要使用者根据食物的类型、数量、温度等因素去设定微波炉的工作时间,若设定的工作时间过长,含水分较多的食物可能会产生过热碳化的现象,若时间过短则达不到预期的烹调效果。不仅在节能方面未做过多考虑,使用者还需要经常翻看使用说明书才能完成操作过程。针对这些问题,笔者认为有必要研制一种操作简单且烹调效果好的微波炉,根据一些家常菜按固定程序烹调的现象,可采取分时、分档火力加热,节时又节能。1.2. 课题的内容和要求本课题是基于FPGA的微波炉控制器设计,即设计一个具备定时、温控、信息显示和音响效应提示功能的微波炉控制器,实现一些

11、功能:l 该微波炉控制器能够在任意时刻取消当前工作,复位为初始状态。l 可以根据需要设置烹调时间的长短,系统最长的烹调时间为59分59秒;开始烹调后,能够显示剩余时间的多少。l 可以根据需要设置烹调最高温度值,系统最高的烹调温度为999;开始烹调后,能够显示系统当前温度值。l 可以控制火力大小,供选择的火力档位有高、中、低三个火力档位。l 音响效应提示直接外接一个蜂鸣器,同时用一个指示灯提示。l 显示微波炉控制器的烹调状态。1.3. 设计的目的和意义目前大部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。本设计采用先进的EDA 技术,利用VHDL 设计语言,设计一种新型的微波炉控

12、制器。该控制器具有系统复位、状态控制、时间设定、火力档位选择、烹饪计时、温度控制、显示译码和音效提示等功能,基于FPGA 芯片实现。该微波炉控制系统,除实现常规的解冻、烹调、烘烤的基本功能外,还进行了创新设计,实现了微波炉的自定义设置。本系统控制部分以FPGA芯片为核心,通过功能按键设置和手动数据输入,完成不同功能时自动以预置方案或者自定义方案加热。其中,预制方案提供烹调、烘烤、解冻等系统烹调流程,仅供用户选择,无需设置;而自定义方案,用户根据食物含量、重量等手动设置时间、温度和选择火力等操作。在烹饪过程中,能通过数码管显示或者指示灯提示知道食物的成熟度,可以智能控制。该系统在功能执行时,能实

13、现门开关检测、键盘输入扫描、温度控制、LED显示、工作状态指示、蜂鸣等。2. 关键技术简介2.1. FPGA简介FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本

14、的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也

15、可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。2.2. VHDL语言概述VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。V

16、HDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点: (1) VHDL 语言功能强大,设计方式多样 VHDL 语言具有强大的语言结构, 只需采用简单明确的VHDL语言

17、程序就可以述十分复杂的硬件电路。同时, 它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。 (2) VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的

18、模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。 (3) VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在:对于同一个硬件电路的 VHDL 语言描述,它可以从一个模拟器移植到另一个模拟器上,从一个综合器移植到另一个综合器上,或者从一个工作平台移植到另一个工作平台上去执行。 (4) VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不

19、需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同的器件结构来实现。 (5) VHDL 语言程序易于共享和复用 VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。 由于 VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量

20、,缩短开发周期。2.3. Quartus II 开发系统简介Altera公司的Quartus II 开发系统以其独特的设计理念,为用户提供了一种全新的可编程逻辑器件开发系统。它集合了Altera的全部CPLD/FPGA器件的硬件开发功能,同时也可以实现系统级设计、综合、仿真、约束等功能,还具有在线测试功能。Quartus II 7.0软件具有以下特性:1、提供的集成物理综合技术Quartus II软件包括唯一的FPGA供应商提供的集成物理综合优化技术。Quartus II物理综合选项应用在编译的布局布线阶段,而与采用何种综合工具无关。2、更快的时序逼近Quartus II软件用户能够利用强大的

21、时序逼近流程特性来优化设计,使其超过按键式编译结果的性能。Quartus II软件的时序逼近流程由于其包含了内置物理综合工具以及丰富的图形分析和编辑工具,提供了强大的交互探测能力,具有极大的吸引力。3、最易使用的设计优化技术Quartus II软件采用按键式设计流程,满足了大部分设计的时序要求。当设计人员进一步需要更好的编译结果时,Quartus II软件提供了一些高级工具,可以轻松地实现优化设计。用户可以使用设计空间搜索器(DSE)采用自动技术,是寄存器到寄存器设计性能平均提高21%。时序优化顾问工具在Quartus II软件内给设计人员提供了一个虚拟的现场应用工程师。这个工具基于当前设计工

22、程设置和约束,提供详细的优化设计时序性能的建议。4、实现后期设计更改的同时保持性能可编程逻辑设计软件的一个传统困难是;当引入后期设计更改的时候,如何保持设计的性能。然而,Quartus II软件能够轻松地实现后期设计更改。最新的增量式设计编辑器和编译技术给设计人员提供了布局布线后设计更改的最佳支持。这些技术包括:Quartus II芯片编辑器;在LogicLock(tm)区域中实现布局布线锁定的能力;使用渐进式编译,仅实现对部分改动的设计进行修改。5、提供并行开发FPGA和结构化ASICQuartus II软件能够提供FPGA设计和结构化ASIC设计之间的无缝移植。Quartus II软件能够

23、编译HardCopy Stratix器件,从而提供了高性能低成本器件的解决方法。HardCopy Stratix结构化ASIC提供了比Stratix FPGA平均高50%的性能,进步一步加强了Stratix III器件系列65nm性能的领先性。Altera 公司的Quartus II设计软件提供完整的多平台设计环境,能够直接满足特定设计需要,为可编程芯片系统(SOPC)提供全面的设计环境。Quartus II软件含有FPGA核CPLD设计所有阶段的解决方案,其设计流程包含设计输入、综合、布局布线、时序分析、仿真、编程和配置等步骤,其中的布局布线还包括功耗分析、调试、工程更改管理几个部分。这些操

24、作都可以利用Quartus II软件实现。此外,Quartus II软件为设计流程的每个阶段提供了Quartus II图形用户界面、EDA工具界面以及命令行界面。可以在整个流程中只使用这些界面中的一个,也可以在设计流程的不同阶段使用不同的界面。3. 系统总体设计3.1. 系统总体设计方案根据题目要求,该系统控制部分以FPGA芯片为核心,实现时间设置、温度设定、火力选择、音效响应提示、LED数码管显示等,在硬件组成上,涉及到电源供电、按键输入、LED数码管显示、指示灯提示等。以下是该系统总体框图,如图3.1所示:图3.1 微波炉控制器系统总体框图该控制器系统在EDA实验箱上实现的外观布局如图3.

25、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:四个键用于设定加热时间、最高温度

26、或者选择火力档位。当按下时间设置按键时,四个按键分别表示设置定时时间的分、秒的十位和个位的数字;当按下温度设定 按键时,后面三个按键分别表示设定最高温度的百位、十位、个位;当按下火力设定按键时,后面三个按键分别表示火力档位的高、中、低三个档位。由于在时间设置和温度设定时,四个按键初始值均为0,因此需要借助/+1 /-1 两个按键共同实现时间、温度的设定操作。比如设定烹饪时间为12分59秒,只需要选择10Min 键,然后按/+1键“1”次;选择1Min/100/High键,然后按/+1键“2”次;选择10Sec/10/Middle键,然后按/+1键“5”次;选择1Sec/1/Low键,然后按/+

27、1键“9”次。同理,温度设定操作如上。3.2 系统外观布局暂停/取消:用于暂停食物烹饪过程或者取消食物烹饪前的参数设置过程。在食物烹饪过程中,若按下该键,则停止食物烹饪,进入待机状态;在参数设置时,若按下此键,可取消设置的参数。火力设定 :用于设定系统火力档位。按下该键,进入选择1Min/100/High 10Sec/10/Middle 1Sec/1/Low按键状态。温度设定 :设置加热的温度最高值。当按下该键时,进入调整1Min/100/High 10Sec/10/Middle 1Sec/1/Low按键状态。时间设置 :设置系统工作时间。按下该键,进入调整10Min 1Min/100/Hig

28、h 10Sec/10/Middle 1Sec/1/Low /+1 /-1 按键状态。烹调 :快速设定当前烹饪时间和火力到适合烹调的值。烘烤 :快速设定当前烹饪时间和火力到适合烘烤的值。解冻 :快速设定当前烹饪时间和火力到适合解冻的值。开始/确认 :在选择烹调、烘烤、解冻或者设置时间、设定温度、选择火力等烹饪参数后,按下此键,开始进行烹饪。指示灯功能如下:l 完成提示:提示微波炉工作完成。该灯亮时,表示烹饪完成;l 意外报警:提示意外情况发生。该灯亮时,表示出现意外,微波炉暂停工作;l 解冻:该灯亮时,表示工作在解冻模式下;l 烘烤:该灯亮时,表示工作在烘烤模式下;l 烹调:该灯亮时,表示工作在

29、烹调模式下;l 测试:该灯亮时,表示微波炉处于测试状态;l 开门指示:指示微波炉的门的状态,门开时灯亮,门关时灯灭;l 工作状态:指示微波炉处于工作状态,工作时灯亮,不工作时灯灭;3.2. 系统功能模块描述本系统主要由输入、控制和显示部分组成。输入部分主要完成用户对控制功能的设置,采用按键作为输入设备。控制部分是本系统的核心,它接收用户的输入,完成相应的控制逻辑功能,并将当前的工作状态等信息送到显示部分。显示部分主要监视系统工作状态并提示用户进行控制操作。以下是该系统功能模块图,如图3.3所示图3.3 系统功能模块图3.2.1. 输入模块输入部分一般采用键盘或旋钮作为输入,由于实验室已有设备限

30、制,本系统采用键盘进行输入设置,即由一个4*4矩阵键盘实现数据输入控制。该矩阵键盘上16个按键分别是:10Min 1Min/100/High 10Sec/10/Middle 1Sec/1/Low /+1 复位 暂停/取消 测试 /-1 火力设定 温度设定 时间设置 烹调 烘烤 解冻 开始/确认。输入模块包括时钟脉冲电路、键盘扫描电路、消枓同步电路和键盘译码电路,通过该模块将扫描得到的按键值送到控制模块。3.2.2. 控制模块控制部分作为整个微波炉控制器系统的核心,它采用FPGA芯片作为主控核心,完成许多复杂的控制和数据处理任务。它通过输入模块提供的按键输入实现数据信息装载处理,并将处理结果通过

31、显示模块显示出来。其涉及到数据的装载、状态转换控制、烹饪计时、温度控制、火力控制、音响效应提示等。3.2.3. 显示模块显示部分采用七段数码管和发光二极管来实现。由于数码管显示信息较少,一些信息用数码管显示不够直观,因此本系统在采用数码管显示的同时,还用发光二极管作为辅助显示。其中,用七段数码管作为时间、温度、火力大小显示,用发光二极管作为状态提示显示。具体设计时,采用4位LED数码管显示加热倒计时,3位LED数码管显示当前温度值,1位LED数码管显示当前火力档位。8个状态提示指示灯分别表示:工作状态、开门指示、测试、烹调、烘烤、解冻、意外报警、完成提示。3.3. 系统的工作流程微波炉控制器系

32、统的工作流程为:上电后,系统首先处于一种复位状态,其各电路模块均处于初始状态。此时,8个数码管上会显示“88888888”的信息,所有指示灯亮。按TEST键,数码管和发光二极管全亮、全灭交替闪烁,可以测试数码管和指示灯工作是否正常。系统工作时,首先通过键盘输入数据,比如,按烹调、烘烤、解冻键选择系统预置方案,或者按时间设置键设置时间,按温度设定键设置温度,按火力选择键选择火力,结合10Min、1Min/100/High、10Sec/10/Middle、1Sec/1/Low按键进行自定义方案设置,设置结束以后,表示数据装载完成,按START键后系统进入烹调状态。在烹饪过程中,可以按暂停/取消键暂

33、停烹饪,或者重新设置时间、温度、火力。烹饪结束后,系统会发出音效提示,同时,系统自动进入复位状态。根据系统工作流程,绘制主程序流程图,如图3.4所示:图3.4 系统工作流程图4. 系统详细设计4.1. 输入模块设计输入模块采用4*4矩阵键盘作为输入设备,实现数据输入控制。矩阵键盘是一种常见的输入装置,在日常生活中,矩阵键盘在计算机、电话、手机、微波炉等格式电子产品上已经被广泛应用,计算机键盘通常采用行列扫描法来确定所按下键的行列位置。由于键盘按键是一种机械开关,所以设计其控制电路时,需要涉及到键盘扫描、键盘译码,光靠矩阵键盘是无法完成按键输入工作的。其中键盘扫描又涉及到时序产生、按键扫描和消除

34、抖动。4.1.1. 键盘扫描键盘处理的重要环节是时序产生、键盘扫描和按键消抖,以下分别针对所涉及到的电路进行描述。1、时序产生电路本时序产生电路中使用了三种不同频率的工作脉冲波形:系统时钟脉冲、扫描键盘时钟、键盘消抖动时钟。分别定义如下:CLK: IN STD_LOGIC; -系统时钟脉冲CLK_SCAN : OUT STD_LOGIC; -扫描键盘时钟 CLK_DEB : OUT STD_LOGIC -键盘消抖动时钟一般消抖动信号时钟频率必须比其它的电路使用的脉冲信号频率更高,一般消抖动频率是键盘扫描或LED频率的4倍或更高。这里系统时钟频率取50MHZ,扫描时钟频率取100KHZ,消抖时钟

35、频率取200KHZ。生成的电路符号如下,图4.1所示:图4.1 时序产生电路符号2、按键扫描电路所谓行列式键盘扫描,即用带有I/O口的线组成行列式结构,按键设置在行列的交点上。行列式矩阵键盘原理:按键设置在行列线的交叉点,行列线分别连接到按键的两端。列线通过上拉电阻截止+5V电压,即列线的输出被定位到高电平状态;判断有无按键按下时通过行线送出扫描信号,然后列线读取状态得到。其方法是依次给行线送低电平,检查列线的输入。若列线全为高电平,则代表所在行无按键按下,若列线出现低电平,则低电平所在的行和出现低电平的列的交叉点处有按键 按下。行扫描信号为KEY_DRV3.0,列输入信号为KEY_IN3.0

36、,与按键的对应关系如表4.1所示。表4.1 nm行列矩阵对应关系表KEY_DRV3 KEY_DRV0KEY_IN3 KEY_IN0对应的按键111011101110121011301114110111105110161011701118101111109110101011A0111B01111110C1101D1011E0111F键盘扫描电路是用来产生扫描信号KEY_DRV3.0,其变化为周期性的有规律的变化(1110 1101 1011 0111),停留在每个状态的时间由按键的机械物理特性决定,按键在闭合和断开的瞬太短的按键扫描时间容易采集到按键抖动,太长的扫描时间容易丢失某些较快的按键信息

37、。完成程序设计,生成相应的电路符号,如图4.2所示:图4.2 键盘扫描电路符号3、按键消抖电路当一个按键按下和释放时,对应信号线电平的变化有一个不稳定期,即所谓“抖动”,这是因为多数开关的闭合和断开都有一个过程,并不是即刻实现的。在读取键盘状态时必须避开这个不稳定期,以免造成误判,这样一个做法叫做“去抖”。如果当在一段时间内都连续多次读到同一个非空(即有键按下)的扫描码,可以认为这时按键已处于稳定状态,这时得到的扫描码就代表了一个键盘动作,抖动的影响已经被剔除。按照这个想法,只需设置一个倒数计数器,当每次读到的非空扫描码与上一次的相同,就将计数器加1;而当一旦读到不同的扫描码或空码则立即将计数

38、器清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=Q+1; END IF; C_DEBOUNCING=Q(7); -去抖时钟信号 C_

39、KEYBOARD=Q(9 DOWN TO 8); -键扫信号 END PROCESS; KEY_SCAN=1110 WHEN C_KEYBOARD=0 ELSE 1101 WHEN C_KEYBOARD=1 ELSE 1011 WHEN C_KEYBOARD=2 ELSE 0111 WHEN C_KEYBOARD=3 ELSE 1111;END BLOCK COUNTER;生成相应的电路符号,如图4.3所示:图4.3 按键消抖电路符号4.1.2. 键盘译码通过一个译码程序,将键盘扫描后的值根据需要设定成相应的按键。程序设计如下: key_decode : PROCESS(SC_CLK) BEG

40、IN Z 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=K_VALUE; -默认情况为K_VALUE保持原来状态,相当于实现锁存器 END CASE;生成相应的电路符号,如图4.4所示:图4.4 键盘译码电路符号4.1.3. 输入模块的实现综合上述分析,对该键盘输入模块进行完整设计,以下是该输入模块实现的组成原理图,如图4.5所示:图4.5 输入模块内部原理图其中,CLK

41、为系统时钟脉冲,KEY_IN3.0为按键输入, DATA15.0为按键输入译码后的输出值,它为控制模块提供数据输入。生成相应的电路符号,如图4.6所示:图4.6 输入模块电路符号图4.2. 控制模块设计控制模块是整个微波炉控制器系统的核心,完成许多复杂的控制和数据处理任务,它通过输入模块提供的按键输入实现数据信息装载处理,控制显示模块显示相应的信息。控制模块采用FPGA芯片作为主控芯片,其涉及到数据的装载、状态控制转换、烹饪计时、温度控制、火力控制、音效提示等。其中,状态控制转换子模块,其功能是控制微波炉工作过程中的状态转换,并发出相关控制信号。数据装载子模块,其功能是根据按键信号设置定时时间

42、、最高温度、火力档位,烹调属性设置以及烹调数据信息装载。烹饪计时子模块,其功能是对时钟进行减法计数,提供烹调完成时的状态信号。温度控制子模块,其功能是在食物烹饪过程中进行温度测定和控制,它同时实现火力控制。音效控制子模块,其功能是控制微波炉工作时的音效提示,这里直接外接一个蜂鸣器实现该功能。其功能子模块图如下,图4.7所示:4.7 控制模块功能子模块图4.2.1. 状态转换控制根据微波炉工作流程的描述,分析状态转换条件及输出信号,可以得到控制模块的状态转换图。如图4.8所示:图4.8 控制模块状态转换图图中,当RESET信号有效时,系统复位清零;输入/输出对应时间温度设置、显示译码测试、完成信

43、号显示和减法计数定时四种状态进行相应的转换。由此生成的状态转换ASM图如图4.9所示:图4.9 状态转换ASM图下面,根据上述状态转换图和ASM图进行程序设计,在编写程序代码实现状态转换控制子模块过程时,首先,如果RESET=1,则系统清零,当前状态为初始状态,当同步时钟脉冲,当前状态为下一状态,用程序代码表示如下: IF RESET=1 THEN CURR_STATE=IDLE; ELSIF CLKEVENT AND CLK=1 THEN CURR_STATE=NEXT_STATE; END IF;当当前状态为初始状态时, LD_TEST=0; LD_DONE=0; LD_CLK=0; CO

44、OK LD_TEST=1; COOK LD_CLK=1; COOK LD_DONE=1; COOK IF(TEST=1) THEN NEXT_STATE=LAMP_TEST; LD_TEST=1; ELSIF SET_T=1 THEN NEXT_STATE=SET_CLOCK; LD_CLK=1; ELSIF (START=1) AND (DONE=0) THEN NEXT_STATE=TIMER; COOK IF DONE=1 THEN NEXT_STATE=DONE_MSG; LD_DONE=1; ELSE NEXT_STATE=TIMER; COOK=1; END IF;生成的控制模块相

45、应的电路符号,如图4.10所示:图4.10 KZQ电路符号4.2.2. 数据装载数据装载器ZZQ,它本质上就是一个三选一的数据选择器。根据其应完成的逻辑功能,本设计可采用一个进程来完成,但由于三个被选择的数据只有一个来自输入口,因此另两个被选择的数据则通过进程的说明部分定义两个常数来产生。由于ZZQ装入测试的数据可以用8个8作为显示驱动信息数据,因此,将该用于显示的常数ALLS分解成8个“8”,其中4个“8”作为时间显示驱动信息,3个“8”作为温度显示驱动信息,1个“8”作为火力档位显示驱动信息,分别经过八个译码器译码后显示驱动信息编码。因此,该常数应是8个分段的4位BCD码,即“1000 1

46、000 1000 1000”和“1000 1000 1000 1000” ,同理,DONE的BCD码分别为“1010 1011 1100 1101”以显示donE的常数DONE。通过上述分析,该模块的主要程序可实现如下: PROCESS(DATA1,LD_TEST,LD_CLK,LD_DONE) IS CONSTANT ALLS:STD_LOGIC_VECTOR(15 DOWNTO 0):=1000100010001000; CONSTANT DONE:STD_LOGIC_VECTOR(15 DOWNTO 0):=1010101111001101; VARIABLE TEMP:STD_LOGI

47、C_VECTOR(2 DOWNTO 0); BEGIN LOAD DATA2 DATA2 DATA2 NULL; END CASE; END PROCESS;完成VHDL源程序的输入,编译、运行,生成相应的电路符号,如下图4.11所示:图4.11 ZZQ电路符号4.2.3. 烹饪计时烹饪计时器JSQ为减计数计数器,其最大计时时间为59:59,因此可用两个减计数十进制计数器DCNT10和两个减计数六进制计数器DCNT6级联构成。其中,两个十进制的减法计数器用于分、秒的个位减法计数,两个六进制的减法计数器用于分、秒的十位减法计数。由所学知识可知,计数的功能是累计输入脉冲的个数,实现计数功能的数字电

48、路即计数器,被计数的脉冲可以是周期性脉冲,也可以是非周期性脉冲,通常加在计数器的时钟脉冲输入端,作为计数器的时钟脉冲。因此,根据减法计数器随计数脉冲的不断输入而递减计数,在具体设计该十进制减法计数器和六进制减法计数器过程中,可以当计数值减到0时,其计数器的数值自动转为定时设定时间,在十进制计数器的设计过程中,可表达为: IF CQI=0000 THEN CQI=1001; ELSE CQI=CQI-1;同理,六进制计数器的设计表达式为: IF CQI=0000 THEN CQI=0101; ELSE CQI=(cout-6) AND tout=(cout+5) THEN -设定值上下5度的范围

49、内开始计时 enout=1; ELSE enout=0; END IF;- 时钟定时部分 PROCESS (CLK ,clearing , enin ) VARIABLE s , m : INTEGER RANGE 0 TO 60; VARIABLE e : INTEGER RANGE 0 TO 24; VARIABLE d : BIT; BEGIN d:=clearing XOR enin; IF (d=0) THEN s:=0; m:=0 e:=0; ELSIF (CLKEVENT AND CLK=1) THEN s:=s+1; IF (s=10) THEN s:=0;m:=m+1; IF

50、 (m=10) THEN m:=0;e:=e+1; IF (e=24) THEN e:=0; hourout = e;-控制部分BEGIN IF (tin(cin+5) THEN -cin是参数设定值 temp=1; ELSE temp=0; END IF; IF (CLKEVENT AND CLK=1) THEN control_bcdhourin) THEN ALARM=1; ELSE ALARM=0; END IF;将各部分进行元件例化,生成相应的电路符号,连接成该温度控制器的内部原理图,如图4.17所示:图4.17 温度控制器内部组成原理图其中,输入信号CLK为系统时钟脉冲,DATA为

51、输入数据,输出信号control_bcd为输出控制信号,外接译码电路,ALARM为蜂鸣提示。4.2.5. 控制模块的实现综合上述分析,对该控制模块进行完整设计,以下是该模块顶层文件关键代码。 U1:KZQ PORT MAP(RESET,SET_T,START,TEST,CLK,DONE,COOK_TMP,TEST_TMP,CLK_TMP,DONE_TMP,ALARM); U2:ZZQ PORT MAP(DATA1,TEST_TMP,CLK_TMP,DONE_TMP,DATA_TMP,LOAD_TMP,ALARM); U3:KWQ PORT MAP(CLK,DATA_TMP,COOK_TMP,L

52、OAD_TMP,RESET_TMP,control,ALARM); U4:JSQ PORT MAP(COOK_TMP,LOAD_TMP,CLK,DATA_TMP,SEC_L,SEC_H,MIN_L,MIN_H,DONE,ALARM);生成相应的电路符号,如图4.18所示图4.18 控制模块电路符号其中,输入信号CLK为时钟输入信号,时钟上升沿敏感;TEST为数码显示管测试信号,高电平有效,用于测试显示管是否正常工作;SET_T为烹调时间设置时间,高电平有效时允许设置烹调时间;DATA为数据输入信号,用于设置烹调时间的长短和最高温度值;START为烹调开始的控制信号,高电平有效时开始烹调;RESET为复位信号,高电平有效时系统复位清零。输出信号control_bcd为温控信号,外接4个七段数码管,动态地显示

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!