基于FPGA的洗衣机的设计.docVIP

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于FPGA的洗衣机 姓 名: 学 号: 专 业: 2010--11--15 洗衣机洗涤控制电路设计 一、洗衣机洗涤控制电路的性能要求 1.强洗、标准、轻柔三种洗涤模式 强洗周期水流控制:正向电机接通5秒后,停2秒;再反向电机接通5秒,停2秒;然后又正向电机接通5秒。如此循环控制电机,直到洗涤定时结束。 标准洗周期水流控制:其过程与强洗周期水流控制相同,不同的是正向接通时间为3.5秒,停止时间为1.5秒,反向接通时间为3.5秒。 轻柔洗周期水流控制:正向接通时间为2.5秒,停止时间为1.5秒,反向接通时间为2.5秒。 2.三种洗涤定时 洗衣机洗涤定时可有三种选择:5分钟、10分钟、15分钟。 3.上电复位后的初始设定 初始设定为标准模式,定时时间为15分钟。如需修改可按模式选择按键和定时选择按键。每按一次按键转换一次,可多次进行循环选择。当某一次洗涤过程结束后,自动返回初始状态,等待下一次洗涤过程开始。 4.启/停控制 洗涤过程由启/停键控制。每按一次启/停键,状态转换一次。 5.洗涤定时精度 洗涤定时误差要求不大于0.1秒。 为简化设计洗衣机洗涤控制电路,只要求输出正向和反向的电机控制信号。 二、洗衣机洗涤控制电路的结构 根据上述对洗衣机洗涤控制电路的性能要求,可以画出如下图所示的结构框图。 该控制器由四大部分组成:主分频器、主控制器、洗涤定时器和水流控制器。 洗衣机洗涤控制电路的结构框图 主分频器 主分频器用来产生0.1秒的时钟供主控制器使用。本方案DE2板自带时钟 ,其振荡频率为50MHz。这样,主分频器的分频系数为5M。现采用3个分频器构成主分频器的分频电路。3个分频器是1k分频器、1k分频器和5分频器。主分频器的结构如下图所示。 主分频器的结构 三、洗衣机洗涤控制电路的算法状态机图描述 1.主控制器算法状态机图描述 根据主控制器的工作要求,洗衣机洗涤时的工作状态共有以下9种: 标准——15分钟 标准——10分钟 标准——5分钟 轻柔——15分钟 轻柔——10分钟 轻柔——5分钟 强洗——15分钟 强洗——10分钟 强洗——5分钟 1)模式选择控制状态机图 2) 定时选择控制状态机图 3) 启/停控制算法状态机图描述 2.洗涤定时器算法状态机图描述 洗涤定时器有3种状态:停止状态(IDLE)、计时状态(INCCOUNT)和暂停状态(TMP_STOP)。 3.水流控制器算法状态机图描述 该状态机图有3种状态:停止状态(STOP)、电机接通定时计数状态(ON_TIME)和电机断开定时计数状态(OFF_TIME)。 四、洗衣机洗涤控制电路的VHDL语言描述1.主分频器timectr_clkdiv模块 主分频器的功能是将50M Hz的主频分频为10 Hz的时钟。该模块由3个进程组成,其VHDL语言描述的程序清单如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY timectr_clkdiv IS PORT(sysclk:IN STD_LOGIC; clk_01:OUT STD_LOGIC); END timectr_clkdiv; ARCHITECTURE rtl OF timectr_clkdiv IS SIGNAL div1:STD_LOGIC_VECTOR(9 DOWNTO 0):=0000000000; --divide by 1k counter SIGNAL div2:STD_LOGIC_VECTOR(9 DOWNTO 0):=0000000000; --divide by 1k counter SIGNAL div3:STD_LOGIC_VECTOR(2 DOWNTO 0):=000; --divide by 5 counter SIGNAL clk1,clk2:STD_LOGIC; BEGIN div_1k:PROCESS(sysclk) BEGIN IF(sysclkEVENT AND sysclk=1)THEN IF(div1=1111100111)THEN div1=0000000000; ELSE div1=div1+1; END IF; END IF; END PROCESS; clk1=div1(999); div_1k:PROCESS(clk1) BEGIN IF(clk1EVENT AND clk1=1)THEN IF(div2=1111100111)THEN div2=0000000000; ELSE div2=div2+1; END

文档评论(0)

精品天地 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档