基于VHDL的洗衣机控制器设计_第1页
基于VHDL的洗衣机控制器设计_第2页
基于VHDL的洗衣机控制器设计_第3页
基于VHDL的洗衣机控制器设计_第4页
基于VHDL的洗衣机控制器设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、数字系统设计与硬件描述语言期末考试作业题目: 洗衣机控制器的设计 学院: 电子信息工程学院 专业: 物联网工程 学号: 姓名: 刘涵凯 2016-12-10一、 选题设计描述1. 功能介绍洗衣机控制器,能够实现开始与暂停、注水,洗涤、排水、脱水和警报提醒的功能,并且可以随时更改洗衣模式。洗衣机提供两种模式:模式1:注水-洗涤-排水-注水-洗涤-排水-脱水;模式2:脱水。洗衣模式决定洗衣时间。默认模式为模式2。洗衣机界面如下图所示:运转方式如下图所示:2. 算法简介总程序描述:总程序通过调用5种模块,在洗衣机控制器输入变化时,立刻转换模式并产生对应输出。当开关关闭时,所有输出为0;暂停时,除显示

2、开关状态的输出外,所有输出为0。开关开启后,设置洗衣模式,之后按下“开始”即可开始工作。在洗衣机控制器输入变化时,立刻转换模式并产生对应输出。电子元器件模型如下图所示:switch为开关信号,modelselect为开关选择信号,clkin为系统时序脉冲信号,sorp为开始/暂停信号。waterstate为注水程序的工作状态,washrstate为洗涤程序的工作状态,drainstate为排水程序的工作状态,drystate为脱水程序的工作状态。alarmout为警报提醒的状态。switchstate为数码管显示的开关的状态(0/1),spstate为数码管显示的开始/暂停的状态(0/1),

3、state为数码管显示的洗衣机工作状态(04),currentmodel为数码管显示的当前模式(02),timedecade为数码管显示的剩余时间的十位,timeunit为数码管显示的剩余时间的个位。下面介绍各模块功能与算法:1)开关与模式选择模块a接收开关信息,b接收模式选择信息。c输出总电路的开关信息(开启洗衣机并且设置完毕电路后,即可准备工作,等待“开始”信号)。e为开关信息,将输入到数码管中显示。time1与time2分别代表洗衣时间的十位和个位,将输入到计数器与警报模块中。y为模式信息,将输入到码管中显示。2)开始/暂停模块a接收开关信息,b接收开始/暂停信息,clk接收系统时序脉冲

4、信号。startorpause输出受开始/暂停信息调控的系统时序脉冲信号。y为开始/暂停信息,将输入到码管中显示。3)计数器与警报模块clk接收受开始/暂停信息调控的系统时序脉冲信号,a接收开关信息,time1和time2分别接收洗衣时间的十位和个位。alarm输出警报信息;outtime1和outtime2分别为剩余时间的十位和个位,将输入到数码管中显示,同时将输入到控制模块中。在脉冲信号的控制下,剩余时间逐渐减少,当剩余时间为0时,停止减小,并开启警报。4)控制模块a接收开关信息,b接收开始/暂停信息,time1和time2分别接收剩余时间的十位和个位。water、wash、drain、d

5、ry分别输出注水、洗涤、排水、脱水的控制信息。act为模块内部使用的BUFFER量。控制模块根据剩余时间的多少决定工作状态。如:剩余时间为16-30分钟时洗涤,31-35分钟时注水。则剩余时间33分钟时,water为1,其他控制信息为0;剩余时间21分钟时,wash为1,其他控制信息为0。5)译码器与数码管显示模块b接收开关信息,a接收4位二进制数据。q在数码管上显示字形。二、 程序源代码及说明程序代码由主程序及5个模块代码组成1)主程序LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTI

6、TY xyj IS PORT(switch,modelselect,clkin,sorp: IN STD_LOGIC; -电源开关、模式选择、时钟、开始/暂停按键状态的输入 waterstate,washstate,drainstate,drystate,alarmout: OUT STD_LOGIC; -注水程序、洗涤程序、排水程序、脱水程序、警报状态的输出 switchstate,spstate,state,currentmodel,timedecade,timeunit: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -工作状态、工作模式、剩余时间的输出END EN

7、TITY xyj;ARCHITECTURE behave OF xyj ISCOMPONENT model -调用开关与模式选择模块 PORT(a,b: IN STD_LOGIC; c: OUT STD_LOGIC; e,time1,time2,y: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 ); END COMPONENT model; COMPONENT count -调用计数器与警报模块 PORT(clk,a: IN STD_LOGIC; time1,time2: IN STD_LOGIC_VECTOR(3 DOWNTO 0); alarm: OUT STD_L

8、OGIC; outtime1,outtime2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT count; COMPONENT BCD7 -调用译码器与数码管显示模块 PORT(b: IN STD_LOGIC; a: IN STD_LOGIC_VECTOR(3 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(0 TO 6) ); END COMPONENT BCD7; COMPONENT startpause -调用开始/暂停模块 PORT(a,b,clk: IN STD_LOGIC; startorpause: OU

9、T STD_LOGIC; e: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 ); END COMPONENT startpause; COMPONENT control -调用控制模块 PORT(a,b: IN STD_LOGIC; time1,time2: IN STD_LOGIC_VECTOR(3 DOWNTO 0); water,wash,drain,dry: OUT STD_LOGIC; act: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT control; SIGNAL sig1,sig2,sigBCD

10、7_1,sigBCD7_2,sigBCD7_3,sigBCD7_4,sigBCD7_5,sigBCD7_6:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL aout,bout:STD_LOGIC;BEGINU1: model PORT MAP(a=switch,b=modelselect,c=aout,y=sigBCD7_1,time1=sig1,time2=sig2,e=sigBCD7_5); U2: startpause PORT MAP(a=aout,b=sorp,clk=clkin,startorpause=bout,e=sigBCD7_6); U3: con

11、trol PORT MAP(a=aout,b=sorp,time1=sigBCD7_2,time2=sigBCD7_3,water=waterstate,wash=washstate,drain=drainstate,dry=drystate,act=sigBCD7_4); U4: count PORT MAP(a=aout,clk=bout,time1=sig1,time2=sig2,alarm=alarmout,outtime1=sigBCD7_2,outtime2=sigBCD7_3); U5: BCD7 PORT MAP(b=aout,a=sigBCD7_1,q=currentmode

12、l); U6: BCD7 PORT MAP(b=aout,a=sigBCD7_2,q=timedecade); U7: BCD7 PORT MAP(b=aout,a=sigBCD7_3,q=timeunit); U8: BCD7 PORT MAP(b=aout,a=sigBCD7_4,q=state); U9: BCD7 PORT MAP(b=aout,a=sigBCD7_5,q=switchstate); U10: BCD7 PORT MAP(b=aout,a=sigBCD7_6,q=spstate);END ARCHITECTURE behave;2)开关与模式选择模块LIBRARY IE

13、EE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY model IS -开关与模式选择模块 PORT(a,b: IN STD_LOGIC; -定义开关和模式选择按键的输入 c: OUT STD_LOGIC; -洗衣机工作开关的输出 e,time1,time2,y: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 ); -定义所需时间/min,time1为十位,time2为各位END ENTITY model;ARCHITECTURE behave OF model ISBEGIN PROCESS(a,b) BEGIN IF(a=1)THEN -开关

14、开启时执行 CASE b IS WHEN 1 = y=0001;time1=0110;time2 y=0010;time1=0001;time2=0000; -模式2:10分钟 END CASE; c=1;e=0001; -开关开启且模式选择完毕,开始工作 ELSE y=0000;time1=0000;time2=0000; c=0;e startorpause=clk;e startorpause=0;e=0000; END CASE; ELSIF(a=0)THEN startorpause=0;e=0000; END IF; END PROCESS;END ARCHITECTURE beh

15、ave;4)计数器与警报模块LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY count IS -计数器与警报模块 PORT(clk,a: IN STD_LOGIC; time1,time2: IN STD_LOGIC_VECTOR(3 DOWNTO 0); alarm: OUT STD_LOGIC; outtime1,outtime2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY count;ARCHITECTURE behave OF

16、 count ISSIGNAL intime11 : STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;SIGNAL intime22 : STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;SIGNAL intime3 : STD_LOGIC_VECTOR(1 DOWNTO 0):=01; -intime3与intime4联系,实现变量的合理赋值SIGNAL intime4 : STD_LOGIC_VECTOR(1 DOWNTO 0):=00;BEGINPROCESS(time1) -此段的作用为当模式更改时,令变量重新赋值 BEGIN IF(time1

17、/=0110)THEN intime3=10;ELSIF(time1/=0001)THENintime3=11;ELSE intime3=01;END IF; intime11=time1;intime22=time2;END PROCESS; PROCESS(clk,intime3,intime4)VARIABLE intime1,intime2 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINIF(clkEVENT AND clk=1)THENIF(a=1)THENIF(intime3/=intime4)THEN -第一个PROCESS运行时,变量被重新赋值 in

18、time4=intime3; intime1:=intime11; intime2:=intime22;END IF; IF(intime2/=0000)THEN intime2:=intime2-1; alarm=0; ELSIF(intime1/=0000)THEN intime2:=1001; intime1:=intime1-1; alarm=0; ELSE alarm=1; END IF;outtime1=intime1;outtime2)THEN act)THENact)THENact)THENact)THENact)THENact)THENact=0100; -脱水ELSE ac

19、t=0000; END IF; ELSE act=0000;END IF;ELSE act water=1;wash=0;drain=0;dry water=0;wash=1;drain=0;dry water=0;wash=0;drain=1;dry water=0;wash=0;drain=0;dry water=0;wash=0;drain=0;dry q q q q q q q q q q q=; END CASE; ELSE q=; END IF; END PROCESS; END behav;三、 仿真结果及分析首先对每个模块进行仿真:1)开关与模式选择模块1、 仿真结果表明,只有

20、a为1时,输出变化。但a为1的一瞬间便已有了模式,这不符合洗衣机的操作流程,所以在之后的模块中写入了控制其输出变化的程序。2、 仿真考虑多种情况,如:a变换时、a为0且b变化时等,输出皆符合所需。2)开始/暂停模块1、 仿真结果表明,只有a为1时,输出变化,产生受b控制的脉冲信号。2、 仿真考虑多种情况,如:a变换时、a为0且b变化时等,输出皆符合所需。3)计数器与警报模块模块运行完全符合所需,输出了正确的剩余时间与alarm。4)控制模块1、对模块在开关、开始/暂停及剩余时间变化下控制的仿真。2、仿真结果表明,暂停时(b为0),洗衣进程停止,开始时,进程继续; 3、仿真模拟了“暂停-切换模式-开始”的进程,输出符合所需。5)译码器与数码管显示模块1、对模块在开关及输入控制下的输出仿真。2、仿真模拟了中途开关关

温馨提示

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

评论

0/150

提交评论