微波炉智能控制系统设置毕业论文.doc_第1页
微波炉智能控制系统设置毕业论文.doc_第2页
微波炉智能控制系统设置毕业论文.doc_第3页
微波炉智能控制系统设置毕业论文.doc_第4页
微波炉智能控制系统设置毕业论文.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

2 微波炉智能控制系统设置毕业论文微波炉智能控制系统设置毕业论文 目目 录录 绪论 第一章 课题的设计 1 1 任务的提出 1 2 课题的内容和要求 1 3 设计的目的和意义 第二章 关键技术简介 2 1 FPGA 简介 2 2 VHDL 语言概述 2 3 Quartus II 开发系统简介 第三章 系统总体设计 3 1 系统总体设计方案 3 2 系统功能模块描述 3 2 1 输入模块 3 2 2 控制模块 3 2 3 显示模块 3 3 系统的工作流程 第四章 硬件系统设计 4 1 输入模块设计 4 1 1 键盘扫描 4 1 2 键盘译码 4 1 3 输入模块的实现 4 2 控制模块的设计 4 2 1 状态转换控制 4 2 2 数据装载 4 2 3 烹饪计时 4 2 4 温度控制 4 2 5 控制模块的实现 4 3 显示模块的实现 第五章 软件系统设计 5 1 输入模块仿真 5 2 状态转换器仿真 5 3 数据装载器仿真 5 4 烹饪计时器仿真 5 5 显示译码器仿真 第六章 总结 致谢 参考文献 附录 2 绪论 随着人民生活水平的提高 微波炉开始进人越来越多的家庭 它给人们的 生活带来了极大的方便 微波炉由 2450MHz 的超高频来加热食物 它省时 省 电 方便和卫生 作为现代的烹饪工具 微波炉的控制器体现着它的重要性能 指标 目前大部分微波炉控制器采用单片机进行设计 电路比较复杂 性能不 够灵活 本文采用先进的 EDA 技术 利用 Quartus II 工作平台和 VHDL 设计语 言 设计了一种新型的微波炉控制器系统 该系统具有系统复位 时间设定 烹饪计时 温度控制和音效提示等功能 在 FPGA 上实现 第一章 课题的设计 1 1 任务的提出任务的提出 在现代人快节奏生活中 微波炉已成为便捷生活的一部分 随着控制技术 和智能技术的发展 微波炉也向着智能化 信息化发展 而现有市售的微波炉 其主要弊端为 不能按既有程序进行烹调 需要使用者根据食物的类型 数量 温度等因素去设定微波炉的工作时间 若设定的工作时间过长 含水分较多的 食物可能会产生过热碳化的现象 若时间过短则达不到预期的烹调效果 不仅 在节能方面未做过多考虑 使用者还需要经常翻看使用说明书才能完成操作过 程 针对这些问题 笔者认为有必要研制一种操作简单且烹调效果好的微波炉 根据一些家常菜按固定程序烹调的现象 可采取分时 分档火力加热 节时又 节能 1 2 课题的内容和要求课题的内容和要求 本课题是基于 FPGA 的微波炉控制器设计 即设计一个具备定时 温控 信息显示和音响效应提示功能的微波炉控制器 实现一些功能 该微波炉控制器能够在任意时刻取消当前工作 复位为初始状态 可以根据需要设置烹调时间的长短 系统最长的烹调时间为 59 分 59 秒 开始烹调后 能够显示剩余时间的多少 可以根据需要设置烹调最高温度值 系统最高的烹调温度为 999 开 始烹调后 能够显示系统当前温度值 2 可以控制火力大小 供选择的火力档位有高 中 低三个火力档位 音响效应提示直接外接一个蜂鸣器 同时用一个指示灯提示 显示微波炉控制器的烹调状态 1 3 设计的目的和意义设计的目的和意义 目前大部分微波炉控制器采用单片机进行设计 电路比较复杂 性能不够 灵活 本设计采用先进的 EDA 技术 利用 VHDL 设计语言 设计一种新型的 微波炉控制器 该控制器具有系统复位 状态控制 时间设定 火力档位选择 烹饪计时 温度控制 显示译码和音效提示等功能 基于 FPGA 芯片实现 该微波炉控制系统 除实现常规的解冻 烹调 烘烤的基本功能外 还进 行了创新设计 实现了微波炉的自定义设置 本系统控制部分以 FPGA 芯片为核心 通过功能按键设置和手动数据输入 完成不同功能时自动以预置方案或者自定义方案加热 其中 预制方案提供烹 调 烘烤 解冻等系统烹调流程 仅供用户选择 无需设置 而自定义方案 用户根据食物含量 重量等手动设置时间 温度和选择火力等操作 在烹饪过 程中 能通过数码管显示或者指示灯提示知道食物的成熟度 可以智能控制 该系统在功能执行时 能实现门开关检测 键盘输入扫描 温度控制 LED 显示 工作状态指示 蜂鸣等 2 第二章第二章 关键技术简介关键技术简介 2 1 FPGA 简介简介 FPGA Field Programmable Gate Array 即现场可编程门阵列 它是在 PAL GAL CPLD 等可编程器件的基础上进一步发展的产物 它是作为专用 集成电路 ASIC 领域中的一种半定制电路而出现的 既解决了定制电路的不 足 又克服了原有可编程器件门电路数有限的缺点 目前以硬件描述语言 Verilog 或 VHDL 所完成的电路设计 可以经过 简单的综合与布局 快速的烧录至 FPGA 上进行测试 是现代 IC 设计验证的 技术主流 这些可编辑元件可以被用来实现一些基本的逻辑门电路 比如 AND OR XOR NOT 或者更复杂一些的组合功能比如解码器或数学方程 式 在大多数的 FPGA 里面 这些可编辑的元件里也包含记忆元件例如触发器 Flip flop 或者其他更加完整的记忆块 系统设计师可以根据需要通过可编辑的连接把 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 的语言形式和描述风格与句法是十分类似于一 2 般的计算机高级语言 VHDL 的程序结构特点是将一项工程设计 或称设计实 体 可以是一个元件 一个电路模块或一个系统 分成外部 或称可视部分 及 端口 和内部 或称不可视部分 既涉及实体的内部功能和算法完成部分 在 对一个设计实体定义了外部界面后 一旦其内部开发完成后 其他的设计就可 以直接调用这个实体 这种将设计实体分成内外部分的概念是 VHDL 系统设计 的基本点 VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用 它自身必然 具有很多其他硬件描述语言所不具备的优点 归纳起来 VHDL 语言主要具有 以下优点 1 VHDL 语言功能强大 设计方式多样 VHDL 语言具有强大的语言结构 只需采用简单明确的 VHDL 语言程序就 可以述十分复杂的硬件电路 同时 它还具有多层次的电路设计描述功能 此 外 VHDL 语言能够同时支持同步电路 异步电路和随机电路的设计实现 这 是其他硬件描述语言所不能比拟的 VHDL 语言设计方法灵活多样 既支持自 顶向下的设计方式 也支持自底向上的设计方法 既支持模块化设计方法 也 支持层次化设计方法 2 VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能 既可描述系统级电路 也可 以描述门级电路 描述方式既可以采用行为描述 寄存器传输描述或者结构描 述 也可以采用三者的混合描述方式 同时 VHDL 语言也支持惯性延迟和传 输延迟 这样可以准确地建立硬件电路的模型 VHDL 语言的强大描述能力还 体现在它具有丰富的数据类型 VHDL 语言既支持标准定义的数据类型 也支 持用户定义的数据类型 这样便会给硬件描述带来较大的自由度 3 VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在 对于同一个硬件电路的 VHDL 语言描述 它可以从一个模拟器移植到另一个模拟器上 从一个综合器移植到 另一个综合器上 或者从一个工作平台移植到另一个工作平台上去执行 4 VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时 设计人员并不需要首先考虑选择进行 设计的器件 这样做的好处是可以使设计人员集中精力进行电路设计的优化 而不需要考虑其他的问题 当硬件电路的设计描述完成以后 VHDL 语言允许 2 采用多种不同的器件结构来实现 5 VHDL 语言程序易于共享和复用 VHDL 语言采用基于库 library 的设计方法 在设计过程中 设计人员 可以建立各种可再次利用的模块 一个大规模的硬件电路的设计不可能从门级 电路开始一步步地进行设计 而是一些模块的累加 这些模块可以预先设计或 者使用以前设计中的存档模块 将这些模块存放在库中 就可以在以后的设计 中进行复用 由于 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 软 2 件内给设计人员提供了一个虚拟的现场应用工程师 这个工具基于当前设计工 程设置和约束 提供详细的优化设计时序性能的建议 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 工具界面以及命令行界面 可以在整个流程中只使用这些界面中的一 个 也可以在设计流程的不同阶段使用不同的界面 2 第三章第三章 系统总体设计系统总体设计 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 四个键用 于设定加热时间 最高温度或者选择火力档位 当按下时间设置按键时 四个 2 按键分别表示设置定时时间的分 秒的十位和个位的数字 当按下温度设定 按 键时 后面三个按键分别表示设定最高温度的百位 十位 个位 当按下火力 设定按键时 后面三个按键分别表示火力档位的高 中 低三个档位 由于在 时间设置和温度设定时 四个按键初始值均为 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 2 High 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 所示 2 图图 3 3 系统功能模块图系统功能模块图 3 2 1 输入模块输入模块 输入部分一般采用键盘或旋钮作为输入 由于实验室已有设备限制 本系 统采用键盘进行输入设置 即由一个 4 4 矩阵键盘实现数据输入控制 该矩阵 键盘上 16 个按键分别是 10Min 1Min 100 High 10Sec 10 Middle 1Sec 1 Low 1 复位 暂停 取消 测试 1 火力设定 温度设定 时间设置 烹调 烘烤 解冻 开始 确认 输入模块包括时钟脉冲电路 键 盘扫描电路 消枓同步电路和键盘译码电路 通过该模块将扫描得到的按键值 送到控制模块 3 2 2 控制模块控制模块 控制部分作为整个微波炉控制器系统的核心 它采用 FPGA 芯片作为主控 核心 完成许多复杂的控制和数据处理任务 它通过输入模块提供的按键输入 实现数据信息装载处理 并将处理结果通过显示模块显示出来 其涉及到数据 的装载 状态转换控制 烹饪计时 温度控制 火力控制 音响效应提示等 2 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 所示 2 图图 3 4 系统工作流程图系统工作流程图 2 第四章第四章 硬件系统设计硬件系统设计 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 口的线组成行列式结构 按键设置在 2 行列的交点上 行列式矩阵键盘原理 按键设置在行列线的交叉点 行列线分 别连接到按键的两端 列线通过上拉电阻截止 5V 电压 即列线的输出被定位 到高电平状态 判断有无按键按下时通过行线送出扫描信号 然后列线读取状 态得到 其方法是依次给行线送低电平 检查列线的输入 若列线全为高电平 则代表所在行无按键按下 若列线出现低电平 则低电平所在的行和出现低电 平的列的交叉点处有按键 按下 行扫描信号为 KEY DRV 3 0 列输入信号为 KEY IN 3 0 与按键的对应关系如表 4 1 所示 表表 4 1 n m 行列矩阵对应关系表行列矩阵对应关系表 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 DRV 3 0 其变化为周期性的有 规律的变化 1110 1101 1011 0111 停留在每个状态的时间由按键的机械物理特 性决定 按键在闭合和断开的瞬太短的按键扫描时间容易采集到按键抖动 太 长的扫描时间容易丢失某些较快的按键信息 完成程序设计 生成相应的电路符号 如图 4 2 所示 2 SCAN CLKKEY DRV 3 0 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 CLK EVENT AND CLK 1 THEN Q Q 1 END IF C DEBOUNCING Q 7 去抖时钟信号 C KEYBOARD Q 9 DOWN TO 8 键扫信号 END PROCESS KEY SCAN 1110 WHEN C KEYBOARD 0 ELSE 2 1101 WHEN C KEYBOARD 1 ELSE 1011 WHEN C KEYBOARD 2 ELSE 0111 WHEN C KEYBOARD 3 ELSE 1111 END BLOCK COUNTER 生成相应的电路符号 如图 4 3 所示 DEB CLK KEY IN 3 0 KEY OUT 3 0 debouncing inst4 图图 4 3 按键消抖电路符号按键消抖电路符号 4 1 2 键盘译码键盘译码 通过一个译码程序 将键盘扫描后的值根据需要设定成相应的按键 程序设计如下 key decode PROCESS SC CLK BEGIN 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 所示 SC CLK KEY DRV 3 0 KEY IN 3 0 OUT CLK OUT DATA 15 0 key decode inst1 图图 4 4 键盘译码电路符号键盘译码电路符号 4 1 3 输入模块的实现输入模块的实现 综合上述分析 对该键盘输入模块进行完整设计 以下是该输入模块实现 的组成原理图 如图 4 5 所示 VCC CLK INPUT VCC KEY IN 3 0 INPUT DATA 15 0 OUTPUT CLK OUTPUT CLKCLK SCAN CLK DEB clk gen inst DEB CLK KEY IN 3 0 KEY OUT 3 0 debouncing inst4 SCAN CLKKEY DRV 3 0 key scan inst5 KEY DRV 3 0 SC CLK KEY IN 3 0 OUT CLK OUT DATA 15 0 key decode inst1 图图 4 5 输入模块内部原理图输入模块内部原理图 其中 CLK 为系统时钟脉冲 KEY IN 3 0 为按键输入 DATA 15 0 为 2 按键输入译码后的输出值 它为控制模块提供数据输入 生成相应的电路符号 如图 4 6 所示 CLK KEY IN 3 0 OUT CLK OUT DATA 15 0 keyboard inst 图图 4 6 输入模块电路符号图输入模块电路符号图 4 2 控制模块设计控制模块设计 控制模块是整个微波炉控制器系统的核心 完成许多复杂的控制和数据处 理任务 它通过输入模块提供的按键输入实现数据信息装载处理 控制显示模 块显示相应的信息 控制模块采用 FPGA 芯片作为主控芯片 其涉及到数据的装载 状态控制 转换 烹饪计时 温度控制 火力控制 音效提示等 其中 状态控制转换子 模块 其功能是控制微波炉工作过程中的状态转换 并发出相关控制信号 数 据装载子模块 其功能是根据按键信号设置定时时间 最高温度 火力档位 烹调属性设置以及烹调数据信息装载 烹饪计时子模块 其功能是对时钟进行 减法计数 提供烹调完成时的状态信号 温度控制子模块 其功能是在食物烹 饪过程中进行温度测定和控制 它同时实现火力控制 音效控制子模块 其功 能是控制微波炉工作时的音效提示 这里直接外接一个蜂鸣器实现该功能 其功能子模块图如下 图 4 7 所示 控控制制模模块块 Control 数数据据装装载载 子子模模块块 ZZQ 烹烹饪饪计计时时 子子模模块块 JSQ 温温度度控控制制 子子模模块块 KWQ 音音效效控控制制 子子模模块块 ALARM 状状态态转转换换控控制制 子子模模块块 KZQ 2 4 7 控制模块功能子模块图控制模块功能子模块图 4 2 1 状态转换控制状态转换控制 根据微波炉工作流程的描述 分析状态转换条件及输出信号 可以得到控 制模块的状态转换图 如图 4 8 所示 时时间间 温温度度 设设置置状状态态 SET CLOCK 显显示示译译码码 测测试试状状态态 LAMP TEST 完完成成信信息息 显显示示状状态态 DONE MSG 减减法法计计数数 定定时时状状态态 TIMER 初初始始状状态态 IDLE X LD TEST TEST LD TEST SET T ELSIF CLK EVENT AND CLK 1 THEN CURR STATE NEXT STATE END IF 当当前状态为初始状态时 LD TEST 0 LD DONE 0 LD CLK 0 COOK 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 生成的控制模块相应的电路符号 如图 4 10 所示 2 RESET SET T START TEST CLK DONE COOK LD TEST LD CLK LD DONE ALARM KZQ inst4 图图 4 10 KZQ 电路符号电路符号 4 2 2 数据装载数据装载 数据装载器 ZZQ 它本质上就是一个三选一的数据选择器 根据其应完成 的逻辑功能 本设计可采用一个进程来完成 但由于三个被选择的数据只有一 个来自输入口 因此另两个被选择的数据则通过进程的说明部分定义两个常数 来产生 由于 ZZQ 装入测试的数据可以用 8 个 8 作为显示驱动信息数据 因此 将该用于显示的常数 ALLS 分解成 8 个 8 其中 4 个 8 作为时间显示驱动信 息 3 个 8 作为温度显示驱动信息 1 个 8 作为火力档位显示驱动信息 分别 经过八个译码器译码后显示驱动信息编码 因此 该常数应是 8 个分段的 4 位 BCD 码 即 1000 1000 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 LOGIC VECTOR 2 DOWNTO 0 BEGIN LOAD DATA2 DATA2 DATA2 NULL END CASE END PROCESS 完成 VHDL 源程序的输入 编译 运行 生成相应的电路符号 如下图 4 11 所 示 DATA1 15 0 LD TEST LD CLK LD DONE DATA2 15 0 LOAD ALARM ZZQ inst5 图图 4 11 ZZQ 电路符号电路符号 4 2 3 烹饪计时烹饪计时 烹饪计时器 JSQ 为减计数计数器 其最大计时时间为 59 59 因此可用两 个减计数十进制计数器 DCNT10 和两个减计数六进制计数器 DCNT6 级联构成 其中 两个十进制的减法计数器用于分 秒的个位减法计数 两个六进制的减 法计数器用于分 秒的十位减法计数 由所学知识可知 计数的功能是累计输入脉冲的个数 实现计数功能的数 字电路即计数器 被计数的脉冲可以是周期性脉冲 也可以是非周期性脉冲 通常加在计数器的时钟脉冲输入端 作为计数器的时钟脉冲 因此 根据减法计数器随计数脉冲的不断输入而递减计数 在具体设计该 十进制减法计数器和六进制减法计数器过程中 可以当计数值减到 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 度 的范围内开始计时 enout 1 ELSE enout 0 END IF 2 时钟定时部分 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 CLK EVENT AND CLK 1 THEN s s 1 IF s 10 THEN s 0 m m 1 IF 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 CLK EVENT AND CLK 1 THEN control bcdhourin THEN ALARM 1 ELSE ALARMDOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7 0000000 END CASE END PROCESS 生成电路符号 如图 4 22 所示 AIN4 3 0 DOUT7 6 0 YMQ inst4 图图 4 22 YMQ 电路符号电路符号 2 第五章第五章 软件系统设计软件系统设计 5 1 输入模块仿真输入模块仿真 完成该键盘输入模块 VHDL 源程序文件输入后 保存文件 对文件进行编 译 生成该输入模块部分的原理框图 如图 5 1 所示 CLK KEY IN 3 0 OUT CLK OUT DATA 15 0 keyboard inst VCC CLK INPUT VCC KEY IN 3 0 INPUT DATA 15 0 OUTPUT CLK OUTPUT 图图 5 1 输入模块原理框图输入模块原理框图 其中 CLK 为系统时钟脉冲 KEY IN 3 0 为按键输入 KEY OUT 3 0 为按键输入译码后的输出值 添加引脚 对该原理图进行编译 仿真 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 2 装入烹调完毕的状态信息 donE 的显示驱动信息数据 LD TEST 指示 ZZQ 装 入用于测试的数据 8888 以显示驱动信息数据 COOK 指示烹调正在进行之中 并提示计时器进行减计数 ALARM 为外接音响效应扬声器 添加引脚 对该原理图进行编译 仿真 其仿真结果 如图 5 3 所示 图图 5 3 状态转换控制器状态转换控制器 KZQ 仿真图仿真图 分析该仿真文件 可以看到 当测试信号 TEST 为高电平有效时 测试输 出信号 LD TEST 为高电平 否则 当时间设置信号 SET T 为高电平时 对应 的指示信号 LD CLK 输出高电平 当烹饪开始信号 START 信号为高电平时 对应输出 COOK 为高电平 当复位信号 RESET 为高电平时 系统复位清零 恢复初始状态 仿真结果符合模块设计的要求 5 3 数据装载器仿真数据装载器仿真 完成数据装载器 ZZQ 子模块 VHDL 源程序文件输入后 保存文件 对文 件进行编译 生成该数据装载器子模块原理图 如图 5 4 所示 DATA1 15 0 LD TEST LD CLK LD DONE DATA2 15 0 LOAD ALARM ZZQ inst VCC LD TEST INPUT VCC LD CLK INPUT VCC LD DONE INPUT DATA2 15 0 OUTPUT VCC DATA1 15 0 INPUT LOAD OUTPUT ALARM OUTPUT 图图 5 4 数据装载器数据装载器 ZZQ 原理图原理图 其中 输入信号 LD DONE 为高电平时 输出烹调完毕的状态信息数据 2 LD CLK 为高电平时 输出设置的烹调时间数据 LD TEST 为高电平时 输出 测试数据 输出信号 LOAD 用于指示电路正处于上述三路信号模式中的哪一种 同时提示 JSQ 将处于数据装入状态 添加引脚 对该原理图进行编译 仿真 其仿真结果如图 5 5 所示 图图 5 5 数据装载器数据装载器 ZZQ 仿真图仿真图 分析该模块仿真结果 由于数据装载器本质上即多了选择译码电路 可知 当 LD CLK LD TEST LD DONE 三路信号中有且仅有一路信号电平有效时 选择器相应的值作为输出 5 4 烹饪计时器仿真烹饪计时器仿真 对烹饪计时器模块顶层文件进行编译 生成对应的元件 添加引脚 得到 该烹饪计时器子模块原理图 如图 5 6 所示 CLK LOAD COOK DATA5 15 0 SEC L 3 0 SEC H 3 0 MIN L 3 0 MIN H 3 0 DONE ALARM JSQ inst VCC CLK INPUT VCC LOAD INPUT VCC COOK INPUT VCC DATA 15 0 INPUT SEC L 3 0 OUTPUT SEC H 3 0 OUTPUT MIN L 3 0 OUTPUT MIN H 3 0 OUTPUT DONE OUTPUT ALARM OUTPUT 图图 5 6 烹饪计时器烹饪计时器 JSQ 原理图原理图 其中 输入信号 LOAD 为高电平时完成信号的载入 COOK 信号为高电 平时 在每个时钟周期的上升沿进行减法计数 输出信号 DONE 表示烹调时间 到 ALARM 表示音响效应 SEC L 3 0 SEC H 3 0 MIN L 3 0 MIN H 3 0 显示所剩时间 和测试状态信息 烹调完毕状态信息等 由于烹调计时器是由两个减计数十进制计数器 DCNT10 和两个减计数六进 2 制计数器 DCNT6 级联构成 因此 先完成两个减计数十进制和六进制计数器 的 VHDL 源程序文件输入 保存文件并对文件进行编译 仿真 以下分别是两 减计数器的功能仿真图 如图 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 秒 的仿真结果图 2 图图 5 9 烹调计时器烹调计时器 JSQ 仿真图 仿真图 4 分分 57 秒 秒 图 5 10 为定时时间 59 分 59 秒 的仿真结果图 图图 5 10 烹调计时器烹调计时器 JSQ 仿真图 仿真图 59 分分 59 秒 秒 由以上仿真结果可以看到 该 JSQ 模块实现了烹调计时的定时作用 5 5 显示译码器仿真显示译码器仿真 完成显示译码器 YMQ 模块 VHDL 源程序文件输入后 保存文件 对文件 进行编译 生成该译码器模块框图 如图 5 11 所示 AIN4 3 0 DOUT7 6 0 YMQ inst VCC AIN4 INPUT DOUT7 OUTPU

温馨提示

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

评论

0/150

提交评论