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

下载本文档

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

文档简介

1、数字系统设计与硬件描述语言 期末考试作业题目:洗衣机控制器的设计学院:电子信息工程学院专业:物联网工程学号:3014204328姓名:刘涵凯资料Word2016-12-10一、选题设计描述1.功能介绍洗衣机控制器,能够实现开始与暂停、 注水,洗涤、排水、脱水和警报提醒的排水洗涤注水功能,并且可以随时更 改洗衣模式。洗衣机提供两种模式:模式1:脱水。洗衣模式决定洗衣时间。默认模式为模式2。2注水洗涤排水脱水;模式洗衣机界面如下图所示:剩余时间:数码管 显示幵 关状恋数殆管洗衣数数码管 显示蛍n暂停o工作舷0:停止1:注水2隔3;排水4:啊显示幵te/g'显示工作鹹资料Word运转方式如下

2、图所示:幵关与鹹选择樓块I+為码鵜gm、(开始/B停枝、_译码器与数码、(管矗眾块丿I 块 厂飞曾显示模块丿控制模块译聲 管显示模块管S示模块计数器与警报模块译码如 管显示模块算法简介2.总程序描述:种模块,在洗衣机控制器输入变化时,立刻转换模式总程序通过调用5;暂停时,除显示开关状态的输出外,并产生对应输出。当开关关闭时, 所有输出为0。所有输出为0开关开启后,设置洗衣模式,之后按下“开始”即可开始工作。在洗衣机控制器输入变化时,立刻转换模式并产生对应输出。电 子元器件模型如下图所示:资料Wordxyjswitchwaterstatemodelselectwashstateclkindrai

3、nstate&orpdrystale r ? alarm oul -swiUhstate6.O r, spstate6-.£i , state6_.O ,X * cunrentmoclel6- 0?time(tecade6-.O , timeunit60,:instS (+ +1 、 sorpcikin为开关选择信号,为系统时序脉冲信号,switch为开关信号,modelselect/暂停信号。为开始drainstate为洗涤程丿了:的工作状态,为注水程序的工作状态,waterstatewashrstate为脱水程序的工作状态。为排水程序的工作状态,drystate alar

4、mout为警报提醒的状态。暂停r /spstate为数码管显示的开始为数码管显示的开关的状态(switchstateO/1)为数码管显currentmodelstate的状态(0/1),为数码管显示的洗衣机工作状态(0-4),为数码管为数码管显示的剩余时间的十位,timedecadetimeunit,示的当前模式(02)显示的剩余时间的 个位。下面介绍各模块功能与算法:资料Wordi modelC :e3_.O timel3_.O I time23_.Oy【30 1)开关与模式选择模块:inst3. ,如,.* * “ / a接收开关信息,b接收模式选择信息。C输出总电路的开关信息(开启洗衣机

5、并且设置完毕电路后,即可准备工作,等 待“开始”信号)。e为开关信息,将输入到数码管中显示。time1time2分别代表洗衣时间的十位和个位,将输入到计数器与警报模块中。y为模式信息,将输入到码管中显示。:start pauseastartorpausebe3._0'elk:inst4. " “ + + / “ * .* *.,* * * * / * * / * 2)开始/暂停模块a接收开关信息,b接收开始/暂停信息,elk接收系统时序脉冲信号。startorpause输出受开始/暂停信息调控的系统时序脉冲信号。y为开始/暂停信息,将输入到码管中显示。资料Word:count

6、elkalarmaouttimei3.0tirne13.Oouttime23.0 time23_.O:inst23)计数器与警报模块;一elk接收受开始/暂停信息调控的系统时序脉冲信号,a接收开关信息,time1和 time2分别接收洗衣时间的十位和个位。alarm输出警报信息;outtimel和0uttime2分别为剩余时间的十位和个位,将输入到数码管中显示, 同时将输入到控制模块中“ 在脉冲信号的控制下,剩余时间逐渐减少,当剩余时间为0时,停止减小,并开4)控制模块a接收开关信息,启警报。controlawaterDwashtimei3.Odrain一time23.Odryact3.O;i

7、nstib接收开始/暂停信息,time1和tirne2分别接收剩余时间的十位和个位。water、wash、drain、dry分别输出注水、洗涤、排水、脱水的控制信息。资料Word act为模块内部使用的BUFFER量。控制模块根据剩余时间的多少决定工作状态。如:剩余时间为16-30分钟时洗涤, 31-35分钟时注水。则剩余时间33分钟时,water为仁 其他控制信息为6剩 余时间。01,其他控制信息为分钟时,21 wash为5)译码器与数码管显示:BCD7:bq【06a3.O1 inst模块q在数码管上显示字形。b接收开关信息,a接收4位二进制数据。凡 Fb 玖 F* £ F/ F,

8、程序源代码及说明程序代码由主程序及5个模块代码组成1)主程序LIBRARY IEEE ;资料 worde,time1,time2,y: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 );USE IEEE.STD_LOGIC_UNSIGNED.ALL :ENTITY xyj ISP ORT(switch,modelselect£lkirbSorp:INSTD_L0GIC;暂停按键状态的输入电源开关.模式选择、时钟、开始/- waterstate,washstate,drainstate,drystate,alarmout: OUT STD_LOGIC;-注水程序、

9、洗涤程序、排水程序.脱水程序、警报状态的输出OUTswitchstate,S pstate,state,currentmodel,timedecade,timeunit:工作状态、工作模式、剩余时间的输STD_LOGIC_VECTOR(6 DOWNTO 0):dl END ENTITY xyj;ARCHITECTURE behave OF xyj IS调用开关与模式选择模块COMPONENT modeltimel4ime2: IN STD_LOGIC_VECTOR(3 DOWNTO 0):PORTa,b: IN STD_LOGIC;c: OUT STD_LOGIC;END COMPONENT

10、model;COMPONENT count-调用计数器与警报模块PORT(clk,a: IN STD丄OGIC;alarm: OUT STD_LOGIC;outtime1,outtime2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0):资料WordEND COMPONENT count;COMPONENT BCD7-调用译码器与数码管显示模块act: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);PORT(b: IN STD_LOGIC;a: IN STD_LOGIC_VECTOR(3 DOWNTO 0);q : OUT STD_LOGIC_VE

11、CTOR(0 TO 6);END COMPONENT BCD7;COMPONENT startpause调用开始/暂停模块PORT(a,b,cIk: IN STD_LOGIC;startorpause: OUT STD_LOGIC;e: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 ):END COMPONENT startpause;COMPONENT control-调用控制模块PORT(a,b: IN STD_LOGIC;timel4ime2: IN STD_LOGIC_VECTOR(3 DOWNTO 0):water,wash,drain,dry: OUT STD

12、_LOGIC;END COMPONENT control;SIGNAL sighsig2,sigBCD7_1,sigBCD7_2,sigBCD7_3,sigBCD7_4,sigBCD7_5,sigBCD7 _6:STD_LOGIC_VECTOR(3 DOWNTO 0):SIGNAL aout,bout:STD_LOGIC;BEGIN资料WordU1: model PORTMAP(a=>switch,b=>modelselect,c=>aout,y=>sigBCD7_14ime1=>sig14ime2= >sig2,e=>sigBCD7_5);U2: s

13、tartp ausePORTMAP(a=>aout,b=>sor p,clk=>clki n,startor pause=>bout,e=>sigBCD7_6);U3: controlPORTMAP(a=>aout,b=>sorp4ime1=>sigBCD7_24ime2=>sigBCD7_3,water=>water state,wash=>washstate,drai n=>drai nstate,dry=>drystate,act=>sigBCD7_4);U4: countPORTMAP(a=>ao

14、ut,cik=>bout4ime1=>sigl4ime2=>sig2,alarm=>alarmoutouttime1=>sigBCD7_2,outtime2=>sigBCD7_3);U5: BCD7PORT MAPb=>aout,a=>sigBCD7_1 ,q=>currentmodel);U6: BCD7PORT MAPb=>aout,a=>sigBCD7_2,q=>timedecade);U7: BCD7PORT MAPb=>aout,a=>sigBCD7_3,q=>timeunit);U8: BCD

15、7PORT MAPb=>aout,a=>sigBCD7_4,q=>state);U9: BCD7PORT MAPb=>aout,a=>sigBCD7_5,q=>switchstate);U10: BCD7PORT MAPb=>aout,a=>sigBCD7_6,q=>spstate);END ARCHITECTURE behave;2)开关与模式选择模块LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY model IS开关与模武选择模块资料 worde,time1,time2,y: OUT S

16、TD_LOGIC_VECTOR ( 3 DOWNTO 0 ); 定义开关和模式选择按键的输入PORT(a,b: IN STD丄OGIC;洗衣机工作开关的输出 C: OUT STD_LOGIC;定义 所需时间/min, time1为十位,time2为各位END ENTITY model;ARCHITECTURE behave OF model ISBEGINP ROCESS(引 b)BEGINIF(a=T)THEN-开关开启时执行CASE b ISWHEN 'V=> y<=模式 1: 60 分钟WHEN '0* => y<=0:time1<=模式 2

17、: 10 分钟END CASE;c<='r:e<=开关开启且模式选择完毕,开始工作ELSE y<=c<='0':e<= 开关关闭时不工作END IF;END PROCESS;END ARCHITECTURE behave;资料Word3) 开始/暂停模块LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY start pause IS-开始/暂停模块PORTa,b,cIk: IN STD_LOGIC;startorpause: OUT STD_LOGIC;e: OUT STD_LOGIC_VECT

18、OR ( 3 DOWNTO 0 ):END ENTITY startpause;ARCHITECTURE behave OF startpause ISBEGINPROCESS(a,b)BEGINIFa='r)THENCASE b ISWHEN 'V => startorpause<=clk;e<=WHEN 'O' => startorpause<='0'e<=END CASE;ELSIF(a='O')THENstartorp ause<-O'e<=END IF;END PR

19、OCESS;END ARCHITECTURE behave;资料Word4)计数器与警报模块LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL :ENTITY count IS汁数器与警报模块PORT(clk,a: IN STD_LOGIC;timel4ime2: IN STD_L0GIC_VECT0R(3 DOWNTO 0):alarm: OUT STD_LOGIC;outtime1,outtime2: OUT STD_L0GIC_VECT0R(3 DOWNTO 0);END ENTITY cou

20、nt:ARCHITECTURE behave OF count ISSIGNAL intime11 : STD_LOGIC_VECTOR3 DOWNTO 0):=SIGNAL tntime22 : STD_LOGIC_VECTOR(3 DOWNTO 0):=SIGNAL intimeS : STD_LOGIC_VECTOR1 DOWNTO 0):=; -intimeS tntime4联系,实现变量的合理赋值SIGNAL tntime4 : STD_L0GIC_VECT0R(1 DOWNTO 0):=BEGINPROCESS(timel)-此段的作用为当模式更改时,令变量巫新赋值BEGINint

21、ime3<=:ELSIF(time1/=资料Wordintime3<=ELSE(ntime3<=;END IF;intime22<=time2;END PROCESS;PROCESS(cIkjntime3,intime4)VARIABLE intime1Jntime2 : STD_LOGIC_VECTOR(3 DOWNTO 0):BEGINIF(cik'EVENT AND clkM)THENIF(a='r)THENIF(intime3/=intime4)THEN“第一个pROCESS运行时,变量被重新赋 值 intime4<=intime3;tnt

22、ime2:=intime22;END IF;IFintime2/=intime2:=intime2-1'alarm<-0':ELSIF(intime1/=资料Wordalarm<-0':ELSE alarm<='r:END IF;outtime1<=intime1;outtime2<=intime2;END IF;END IF;END PROCESS;END ARCHITECTURE behave;5)控制模块LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_U

23、NSIGNED.ALL :ENTITY control IS-控制模块PORT(a,b: IN STD_LOGIC;timel4ime2: IN STD_LOGIC_VECTOR(3 DOWNTO 0):water,wash,drain,dry: OUT STD_LOGIC;act: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY control;ARCHITECTURE behave OF control ISBEGIN资料WordPROCESS(timel4ime2)BEGINIF(a='r)THENIFb='r)THENact

24、<=IFtime1&time2>10101)THEN-注水ELSIF(time1&time2>00000)THEN-洗涤act<=0;ELSIF(time1 &time2>10101)THENact<=1;一排水ELSIF(time1&time2>10000)THENact<=-注水ELSIF(time1&time2>act<=0;-洗涤ELSIF(time1&time2>act<=1;-排水ELSIF(time1&time2>act<=0;一脱水ELSE

25、 act<=END IF;ELSE act<=END IF;资料WordELSE act<=END IF;CASE act ISWHENWHEN 0 => water<-0wash<='1*;drain<-0dry<='0'WHEN 1 => water<-O'wash<-O':drain<-r;dry<='O'WHENWHENWHEN 0 => water<-0wash<='0'drain<-0dry<=*1

26、9;WHEN OTHERS => water<='0wash<=-0':drain<='0':dry<='0-;END CASE;END PROCESS;END ARCHITECTURE behave;6)译码器与数码管显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BCD7 IS译码器与数码管显示模块PORTb: IN STD_LOGIC;a: IN STD_L0GIC_VECT0R(3 DOWNTO 0):数据输入END BCD7;q : OUT STD_LOGIC

27、_VECTOR(0 TO 6);7段输出ARCHITECTURE behav OF BCD7 ISBEGINPROCESS (a)资料WordBEGINIFb='r)THENCASE a3 DOWNTO 0) IS BCD 7段译码表WHEN 0 => q<=H1101;WHEN 1 => q<=l1001:WHEN 0 => q<= 0011;WHEN 1 => q<=A1011;WHEN 1 => q<=IOOOO;WHEN 0=> q<=A1111;WHEN 1 => q<=l1011; WHEN

28、 0 => q<=l1111:WHEN OTHERS => q<=END CASE;ELSE q<=l1110;END IF;END PROCESS;END behav;仿真结果及分析 首先对每个模块进行仿真:1)开关与模式选择模块资料WordsaBObBOcBO冷>eBOOOO>timel5 0000>tirriQ?BOOOO>yB 0000640.0 ns800-0 ns960.0 ns NamoV 晋Z0 psps 160-0 ns 320.0 ns 48G.0 ns 0 ps:0000 X0001r 0000:0000OilO ,

29、OOOL X OHO0000; 0000 g - :0000 乂 0001 哭 0010*0001 X 0000的一瞬间便已有了模式,这不为1为1时,输出变化。但a、1仿真结果表明, 只有a符合洗衣机的操作流程,所以在之后的模块中写入了控制其输出变化的 程序。变化时等,输出皆符合所需。0且b仿真考虑多种悄况,如:、a变换时、a为2暂停模块)开始/20 psJ PS160.0 nsI320.0 ns 480.0 nsVV640.0 nsI800.0 ns1960-0 nsI$:aBO0bBO1占elkBO> eDOOOO洱startoTBONome绅 20 psJ1 IL_n(wm(wm(

30、wm(wvuwvuuinjuwLfuumnjuumnjm(w 3"关ODOl X OQOO XOQMX 0000 :jinjiJinnnnnnfL nRnnnnjinmnnjinjinnjinjmn00010000OOOL控制的脉冲信号。1为时,输出变化,产生受b1、仿真结果表明,只有a变 化时等,输出皆符合所需。0且b为变换时、仿真考虑多种情况,如2aa )计数器与警报模块3资和NomeV 紺 ue ai08eoeoeonoeoooo01:)OOQlOlioMW 飞而0:cwx0140oat.Mt.Mt.outLb 7 outbrr«2% % 纠23OOUOOUOOU o

31、ou tfarmSOSOSO eo eoooo eo6060eoeor_lL_JL_J1f1顾縱«血粼怫渤朋删做驰縱厂威驰紳厂布一:紳裁-wf n n n 一 仃 n nnn.anBUUlnAJVWUTJULTLerL jUMTOWBWJiniwmwin j.JUU juwar°模块运行完全符合所需,输出了正确的剩余时间与alarm )控制J模块4Vdbew 0 pc'asoAD80,nmei8 0000 B<ne28 0000wawr90Rd弘dOdrain90diy909 act8 0000吓 叫M 询 网卩血初叩M 血",糾皿64叩W加eoo&

32、quot;,财9叫0 2 tipsJ!_1II:航15於031Xoioo: oon X" ow X" oooo X oiw YF555 I I801)耐 忧 lo "X MM X 伽艾 °°G° Yi_r501 炳矽 0010殛X" 801 迓TH 030 X 叭 乂000101011001/暂停及剩余时间变化下控制的仿真。1、对模块在开关.开始0),洗衣进程停止,开始时,进程继续;、仿真结果表明,暂停时(2b为开始"的进程,输出符合所需。卫、仿真模拟了 “暂停切换模式)译码器与数码管显示模块V9Me«i

33、 pR 林9彤leognsyzotm4M0«5*0” "5-jJtoJ4a cmSjq*IUIH0网0«加屮 Wfim iw.ow MO.OWHl:H001)1 _ ToiTiTT辺鬧厳:dijje''::“*莎uTuTo资料WordK对模块在开关及输入控制下的输出仿真。、仿真模拟了中途开关关闭与开启状态下数码管输出变化Q 26)主程序r 促Mk*«M«wattJQU««aUA*Mb«4* 'Ifninwiwvrwnvnmvrnwntnwnrmmmvnv.imwTovnimwnwnwnviwMwamwiwnwnvntwnvmw

温馨提示

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

评论

0/150

提交评论