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

下载本文档

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

文档简介

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

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

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

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

5、开启警报。4)控制模块a 接收开关信息, b 接收开始 /暂停信息, time1 和 time2 分别接收剩余时间的十位和个位。water、wash、 drain、 dry 分别输出注水、洗涤、排水、脱水的控制信息。act 为模块内部使用的BUFFER 量。控制模块根据剩余时间的多少决定工作状态。如:剩余时间为 16-30 分钟时洗涤, 31-35 分钟时注水。则剩余时间 33 分钟时, water 为 1,其他控制信息为 0;剩余时间 21 分钟时, wash 为 1,其他控制信息为 0。5)译码器与数码管显示模块b 接收开关信息, a 接收 4 位二进制数据。q 在数码管上显示字形。.二、

6、程序源代码及说明程序代码由主程序及5 个模块代码组成1)主程序LIBRARY IEEE ;ENTITY xyj ISPORT(switch,modelselect,clkin,sorp:INSTD_LOGIC;-电源开关、模式选择、时钟、开始/暂停按键状态的输入waterstate,washstate,drainstate,drystate,alarmout:OUTSTD_LOGIC;-注水程序、洗涤程序、排水程序、脱水程序、警报状态的输出switchstate,spstate,state,currentmodel,timedecade,timeunit:OUTSTD_LOGIC_VECTOR

7、(6 DOWNTO 0);-工作状态、工作模式、剩余时间的输出END ENTITY 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_VECTO

8、R(3 DOWNTO 0);alarm: OUT STD_LOGIC;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 ST

9、D_LOGIC;startorpause: OUT 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;SIGNA

10、Lsig1,sig2,sigBCD7_1,sigBCD7_2,sigBCD7_3,sigBCD7_4,sigBCD7_5,sigBCD7_6:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL aout,bout:STD_LOGIC;BEGINU1:modelPORTMAP(a=>switch,b=>modelselect,c=>aout,y=>sigBCD7_1,time1=>sig1,time2=>sig2,e=>sigBCD7_5);U2:startpausePORTMAP(a=>aout,b=>sorp,clk=

11、>clkin,startorpause=>bout,e=>sigBCD7_6);U3:controlPORTMAP(a=>aout,b=>sorp,time1=>sigBCD7_2,time2=>sigBCD7_3,water=>waterstate,wash=>washstate,drain=>drainstate,dry=>drystate,act=>sigBCD7_4);U4:countPORTMAP(a=>aout,clk=>bout,time1=>sig1,time2=>sig2,alar

12、m=>alarmout,outtime1=>sigBCD7_2,outtime2=>sigBCD7_3);U5: BCD7PORT MAP(b=>aout,a=>sigBCD7_1,q=>currentmodel);U6: BCD7PORT MAP(b=>aout,a=>sigBCD7_2,q=>timedecade);U7: BCD7PORT MAP(b=>aout,a=>sigBCD7_3,q=>timeunit);U8: BCD7PORT MAP(b=>aout,a=>sigBCD7_4,q=>st

13、ate);U9: BCD7PORT MAP(b=>aout,a=>sigBCD7_5,q=>switchstate);U10: BCD7PORT MAP(b=>aout,a=>sigBCD7_6,q=>spstate);END ARCHITECTURE behave;2)开关与模式选择模块LIBRARY IEEE ;ENTITY model IS-开关与模式选择模块.PORT(a,b: IN STD_LOGIC;-定义开关和模式选择按键的输入c: OUT STD_LOGIC;-洗衣机工作开关的输出e,time1,time2,y: OUT STD_LOGIC_

14、VECTOR ( 3 DOWNTO 0 ); - 定义所需时间 /min, time1 为十位, time2 为各位END ENTITY model;ARCHITECTURE behave OF model ISBEGINPROCESS(a,b)BEGINIF(a='1')THEN-开关开启时执行CASE b ISWHEN '1' => y<="0001"time1<="0110"time2<="0000" - 模式 1:60 分钟WHEN '0' => y

15、<="0010"time1<="0001"time2<="0000" - 模式 2:10 分钟END CASE;c<='1'e<="0001"-开关开启且模式选择完毕,开始工作ELSE y<="0000"time1<="0000"time2<="0000"c<='0'e<="0000"-开关关闭时不工作END IF;END PROCESS;END

16、 ARCHITECTURE behave;3)开始 /暂停模块LIBRARY IEEE ;ENTITY startpause IS-开始 /暂停模块PORT(a,b,clk: IN STD_LOGIC;startorpause: OUT STD_LOGIC;e: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 ); END ENTITY startpause;ARCHITECTURE behave OF startpause IS BEGINPROCESS(a,b)BEGINIF(a='1')THENCASE b ISWHEN '1' =&g

17、t; startorpause<=clk;e<="0001"WHEN '0' => startorpause<='0'e<="0000"END CASE;ELSIF(a='0')THENstartorpause<='0'e<="0000"END IF;END PROCESS;.END ARCHITECTURE behave;4)计数器与警报模块LIBRARY IEEE ;ENTITY count IS -计数器与警报模块 PORT

18、(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 count ISSIGNAL intime11 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL intime22 : STD_LOGIC_VECTOR(3 DOWNTO 0):=&

19、quot;0000"SIGNAL intime3 : STD_LOGIC_VECTOR(1 DOWNTO 0):="01" -intime3 与 intime4 联系,实现变量的合理赋值SIGNAL intime4 : STD_LOGIC_VECTOR(1 DOWNTO 0):="00"BEGINPROCESS(time1)-此段的作用为当模式更改时,令变量重新赋值BEGINIF(time1/="0110")THENintime3<="10"ELSIF(time1/="0001"

20、)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(clk'EVENT AND clk='1')THENIF(a='1')THENIF(intime3/=intime4)THEN -第一个

21、PROCESS运行时,变量被重新赋值 intime4<=intime3;intime1:=intime11;intime2:=intime22;END IF;IF(intime2/="0000")THENintime2:=intime2-'1'alarm<='0'ELSIF(intime1/="0000")THEN.intime2:="1001"intime1:=intime1-'1'alarm<='0'ELSE alarm<='1'

22、;END IF;outtime1<=intime1;outtime2<=intime2;END IF;END IF;END PROCESS;END ARCHITECTURE behave;5)控制模块LIBRARY IEEE ;ENTITY control IS-控制模块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 ENTITY co

23、ntrol;ARCHITECTURE behave OF control ISBEGINPROCESS(time1,time2)BEGINIF(a='1')THENIF(b='1')THENIF(time1&time2>"01010101")THENact<="0001"-注水ELSIF(time1&time2>"01000000")THENact<="0010"-洗涤ELSIF(time1&time2>"0011010

24、1")THENact<="0011"-排水ELSIF(time1&time2>"00110000")THENact<="0001"-注水ELSIF(time1&time2>"00010101")THENact<="0010"-洗涤ELSIF(time1&time2>"00010000")THENact<="0011"-排水ELSIF(time1&time2>"

25、;00000000")THENact<="0100"-脱水ELSE act<="0000"END IF;.ELSE act<="0000"END IF;ELSE act<="0000"END IF;CASE act ISWHEN "0001" => water<='1'wash<='0'drain<='0'dry<='0' WHEN "0010" =

26、> water<='0'wash<='1'drain<='0'dry<='0'WHEN "0011" => water<='0'wash<='0'drain<='1'dry<='0' WHEN "0100" => water<='0'wash<='0'drain<='0'dry<='1

27、'WHEN OTHERS => water<='0'wash<='0'drain<='0'dry<='0'END CASE;END PROCESS;END ARCHITECTURE behave;6)译码器与数码管显示模块LIBRARY IEEE;ENTITY BCD7 IS-译码器与数码管显示模块PORT(b: IN STD_LOGIC;a: IN STD_LOGIC_VECTOR(3 DOWNTO 0);-数据输入q : OUT STD_LOGIC_VECTOR(0 TO 6) );-7

28、段输出END BCD7;ARCHITECTURE behav OF BCD7 ISBEGINPROCESS (a)BEGINIF(b='1')THENCASE a(3 DOWNTO 0) IS- BCD 7 段译码表WHEN "0000" => q<="1111110"WHEN "0001" => q<="0110000"WHEN "0010" => q<="1101101"WHEN "0011" =&g

29、t; q<="1111001"WHEN "0100" => q<="0110011"WHEN "0101" => q<="1011011"WHEN "0110" => q<="1011111"WHEN "0111" => q<="1110000"WHEN "1000" => q<="1111111"WHEN "1001" => q<="1111011"WHEN OTHERS => q<="0000000"END CASE;ELSE q<="1111110"END IF;END PROCESS;END behav;三、仿真结果及分析首先对每个模块进行仿真:.1)开关与模式选择模块1、 仿真结果表明,只有a 为 1 时,输出变化。但a 为 1 的一瞬间便已有了模式,这不符合洗衣机的操作流程,所以在之后的模块中写入了控制其输出变化的程序。2、 仿真考虑多种情况,如

温馨提示

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

评论

0/150

提交评论