- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字电路综合实验报告
学院:信息与通信工程
专业:信息工程
班级:2013211125
基于CPDL的简易洗衣机控制器的设计与实现
一:设计课题的任务要求
基本要求:
1、 洗衣机的工作步骤为洗涤、漂洗和脱水三个过程,工作时间分别为:洗涤 30秒(进水5秒,洗衣15秒,排水 5秒,甩干 5秒),漂洗 25秒(进水 5秒,漂洗 10秒,排水5秒,甩干 5秒),脱水 15秒(排水5秒,甩干 10秒);
2、 用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;
3、 用发光二极管显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全部过程结束后,应有声音提示使用者,并保持在停止状态,直至再次开始;
4、 用点阵动画显示洗衣机工作过程中进水、波轮或滚筒转动、排水和甩干等的工作情
况,四种工作情况的动画显示要有区别且尽可能的形象。
5、 用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留的状态;
提高要求:
1、 三个过程的时间有多个选项供使用者选择。
2、 可以预约洗衣时间。
3、 自拟其它功能。
二:系统设计
(一)设计思路
本题目较复杂的地方是状态太多,而且状态中还嵌套着状态,于是我选择了分模块写代码然后顶层用原件图连接起来的设计方法。根据实验要求,首先要通过一个经过防抖按键来实现模式的选择,这里我通过记录输入时钟上升沿的个数来选择好不同的模式,同时设置好不同模式对应的总时间,状态转移时间,LED初始值等。然后在检测到确定按键产生的信号后,将这些选择好的信息传入到中心控制器中。在中心控制器中由开始/暂停键来控制程序的进行,在开始状态下,时间会递减,并可以判断是否进行状态转换而转换到下一个状态(洗涤,漂洗,脱水),同时将变化的时间传入到时间处理模块和动画转换模块,前者将输入的时间提取成个位和十位,然后输出到数码管控制模块进行显示。后者通过与选择模式的结合,可以决定当前模式与时间对应的动画,将决定动画的代码传入到动画模块,即可以通过点阵显示不同的动画。当时间减少到0时,中心控制器还会输出一个蜂鸣器报警的信号来控制报警。所有进程执行完毕后,各项数据会进行清零返回,等待下一次的使用。由上面的设计思路可以总结出一共有以下的模块:
分频模块、防抖模块、按键(模式选择,确定,开始/暂停)模块、中心控制模块、时间处理模块、数码管显示模块、数码管选通模块、动画控制模块、动画显示模块、报警模块。在下文中有对每个模块的功能介绍,代码分析以及仿真波形的分析。
(二)总体框图
上文所述的各种模块之间的连接如图所示:
说明:其中动画模块,数码管模块等还可以细分,在下文中也有着详细的介绍以及相关代码和仿真分析。
(三)状态转移图
由于洗衣的五种模式之间存在着相互的联系,我们可以用状态转移图来表示这五种状态在选择时的转换关系:
说明:001:单洗涤 010:单漂洗 100:单脱水 110:漂洗+脱水
111:洗涤+漂洗+脱水 000:结束
控制流程图
否
是
否
是
否
否
是 是
否
是
三:分块设计代码及仿真分析
(一)分频模块
1:模块功能
此模块对外部输入的25MHZ时钟进行三级分频。第一级分为600HZ,用于点阵和数码管的扫描,第二级为100HZ,用于防抖模块的输入信号,第三级为1HZ,用于时间控制和动画控制。
2:代码分析(以三级分频为例子)
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity div is
port( clk:in std_logic; --输100HZ时钟
clkout:out std_logic --分频后的1HZ时钟
文档评论(0)