洗衣机控制器实验报告_第1页
洗衣机控制器实验报告_第2页
洗衣机控制器实验报告_第3页
洗衣机控制器实验报告_第4页
洗衣机控制器实验报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、数字电路与逻辑设计综合实验实验报告学院信息与通信工程学院专业通信工程姓名111班级111学号111序号22任课教师:袁东明日期:2009年11月一、设计课题的任务要求:课题名称:洗衣机控制器的设计实验目的:1.熟练掌握vhdl语言和quartus ii软件的使用;2. 理解状态机的工作原理和设计方法;3. 掌握利用eda工具进行自顶向下的电子系统设计方法。设计任务:木实验意在模仿真正洗衣机的各种基木功能,包括开关控制,工 作暂停,分辨各种洗衣模式(洗涤,漂洗,脱水),工作状态的显 示,倒计时工作时间并显示,预约洗衣时间,工作停止时报警等 功能。基本任务:1洗衣机的工作步骤为洗衣、漂洗和脱水三个

2、过程,工作吋间分别为:洗衣20秒,漂洗25秒,脱水15秒;2用一个按键实现洗衣程序的手动选择:a、单洗涤;b、单漂 洗;c、单脱水;d、漂洗和脱水;e、洗涤、漂洗和脱水全 过程;3用显示器件显示洗衣机的工作状态(洗衣、漂洗和脱水),并 倒计时显示每个状态的工作时间,全部过程结束后,应提示 使用者;4. 用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗 衣应回到暂停z前保留的状态。提高要求:1.三个过程的时间有多个选项供使用者选择;2. 可以预约洗衣时间;3. 自拟其它功能。二、系统设计:设计思路:根据系统所要实现的功能,采用自顶向下的设计方法,将其划分为模式选择、状态计时、控制电路、译码显

3、示和分频五个大的模 块,每个模块再由各自所需完成的功能划分成更细的模块。1模式选择模块五种洗衣模式可供用户选择,模式选择模块将用户的选择信息 传递到控制模块。2. 状态计时模块洗衣以倒数计时模块的方式提示用户当前剩余的洗衣时间,该 计数器能读取不同的模值进行计数,计时单位为一秒钟。3. 控制电路模块控制模块接收其他各模块传递来的状态和计时等信号,通过内 部的选择、译码和转换电路,发出状态转移和控制信号,协调 整个系统按照设定好的工作模式正常运转。4. 译码显示模块译码和数码显示电路是将计时状态直观清晰地反映出来,被人 们的视觉器官所接受。显示器件选用led七段数码管。在译码 显示电路输岀的驱动

4、下,显示出清晰、直观的数字符号。5. 分频模块分频模块将实验板上晶振提供的50mhz时钟分别分频为计吋 电路所需的1hz时钟、消抖电路所需的100hz时钟以及控制电 路所需的lkhz时钟。总体框图:系统结构框图:时i、可显示”尸n, =严状态显示:胆模式显示蜂鸣报警暂停/开始时间设定模式设左模块划分图:信息传递关系图:clk2分块设计:1. 模式选择模块:模式选择模块主要由一个8-3编码器和一个3-8译 码器构成,但实际只使用了 5种状态。8-3编码器接收来自5个拨 码开关的模式选择信号,编码产生3位的模式信号输出,用来控制 计数器的初始计数状态,同时经过3-8译码器控制工作模式的显示。2.

5、状态计时模块:状态计时模块根据输入的模式信号,决定计时的初 始状态和工作流程,其所包含的五个状态:start、wash、clean、 dry、alarm构成一个状态机,状态之间的转换通过模式选择模块输 出的模式信号和计时输出信号来控制,每个状态分别计时,在计时 的同时输岀两位bcd码的倒计时时间和工作状态信号,前者驱动译 码显示模块显示当前剩余洗衣时间,后者则控制led显示不同的状 态。当状态转移到alarm时,输出报警信号,控制蜂鸣器报警。3. 控制电路模块:控制电路模块主要包括使能控制、暂停控制和洗衣 时间预约等。暂停控制采用按键输入,经过防抖模块后,触发控制 器产生电平的翻传,通过与时钟

6、信号相或来控制计时的暂停/继续。 洗衣时间预约也采用按键输入,经过防抖电路后,触发控制器产生 不同的时间bcd码输出,然后计数器根据该初始值进行时间计数, 达到预置时间的功能。4. 译码显示模块:译码显示模块主要由扫描信号产生模块、数码管扫 描控制模块和数码管译码显示模块组成。扫播信号产生模块根据显 示的需求对输入的时钟进行分频,控制数码管的扫描频率,而扫描 模块则负责分时输出时间的十位和个位bcd码,以驱动7段数码管 译码显示模块显示当前的倒计时时间。5. 分频模块:分频模块由一个不同模值的分频器构成,将实验板提供 的50mhz系统时钟分频成不同频率时钟输岀,以供计时电路、防抖 电路和控制电

7、路的不同需要。三、仿真波形及波形分析:工作状态仿真图:1 洗衣状态衣状态的led被点亮,计时输出从“0010” “0000”变化到“0000” “0000”,共计20秒,计时终止后,报警信号warnning持续输出5秒的高电平,驱动蜂鸣器报警,洗衣结束。2.漂洗状态当en二"1,mode二“010”时,为单漂洗模式,lclean输出高电平,代表漂 洗状态的led被点亮,计时输出从“0010” “0101”变化到“0000” “0000”, 共计25秒,计时终止后,报警信号warnning持续输出5秒的高电平,驱动 蜂鸣器报警,漂洗结束。3.脱水状态当en二'1', m

8、ode二“001”时,为单脱水模式,ldry输出高电平,代表脫水 状态的led被点亮,计时输出从“0001” “0101”变化到“0000” “0000”, 共计15秒,计时终止后,报警信号warnning持续输出5秒的高电平,驱动蜂鸣器报警,脱水结束。4.漂洗+脱水状态代表漂洗状态的led被点亮,计时输出从“0010” “0101”变化到“0000”“0000”,共计25秒,计时到,lclean传而输出低电平,ldry输岀高电平, 代表脱水状态的led被点亮,计时输出从“0001” “0101”变化到“0000”“0000”,共计15秒,计时终止后,报警信号warnning持续输出5秒的高

9、电平,驱动蜂鸣器报警,漂洗+脱水结束。5. 洗衣+漂洗+脱水状态当en二t, mode二“111”时,为洗衣+漂洗+脱水模式,lwash先输出高电 平,代表洗衣状态的led被点亮,计时输岀从“0010” “0000”变化到“0000”“0000”,共计20秒,计时到,lweish转而输出低电平,lclean输出高电平, 代表漂洗状态的led被点亮,计时输出从“0010” “0101”变化到“0000”“0000”,共计25秒,计时到,lclean转而输出低电平,ldry输出高电平,代表脱水状态的led被点亮,计时输出从“0001” “0101”变化到“0000” “0000”,共计15秒,计时

10、终止后,报警信号warnning持续输出5秒的高 电平,驱动蜂鸣器报警,洗衣+漂洗+脱水结束。elktnldeaa ldry brash q node2-.10】(3 tmth32 1l0q tinel3 2 il0 .ninetnnjtrlrlrlrnnj"ln_njtrlrlnj"ln_njtnjtnjtnj"ln_nj"m_n_rudkldt<nurylvuh 日 node.2.10 tiiuh32.10 日 tifttl3210.nio<(0x【1】x(0il£nrixbwxnornlfri? mjrntset由按键输入,每

11、检测到一个脉冲,预置时间值加5秒,转换成两位bcd码后输出,reset和clear为复位信号输入,前者为按键输入,当欲重新预置时按下即可使时间置0,后者为当预约状态结束时,负责将预置值清零,由预置时间计数器控制产生。2 .预置时间计数器当en= 时,根据定时模块输入的预置时间进行减计数,输岀剩余时间的bcd码,如图,从“0011”“0000”变化到“ 0000”“0000”,计时终止后, works输出高电平,控制定吋器清零并选通状态计吋模块。3.整个预置时间模块如图,tsct按键被按下5次,预置时间为25秒,当cn二t'时,计时输岀 从“0010” “0101”变化到“0000” “

12、0000”,计时终止后,works输出高电 平,将预置时间清零,同时选通状态计时模块,转向工作状态。四、部分主要源程序:1. 状态计时模块counteruse ieee.std_logic_1164.ail;use ieee std logic unsigned .all.;esentixy counter issport (mode : in std_logic_vector (2 downs 0);模式选择信号输".clk/cn : in scdlogic;warnning : out stdlogic; 一报警输出lvash,lclean/ldry : out scd logi

13、c; 一状态铳出timeh, timel : out std logic vector (3 dovnto 0);计 时输出一声明五种状态end counter;type all_state is (scare,vash,clean,dry#alarm);beginprocess(elk)variable a : std_loglc;variable th# tl : std_logic_vectoir (3 dovnto 0);variable vorkstate : allstate;beginif en-*1' thenif elk*event and elk-'i1 t

14、hencase workst&te iswhen stare > if (mode«rlllw or mode-loo) then -报振不同模式输入,决定转到何种工作状态 workst&te :- vash;a :'01;elslf (roode-oll* or roode-olo*) then vorkstate :s clean;a :elslf (mode-*0011*) thenworkstdte : dry;a :-0;elsevorkscace :® start;end i£when wash s> if a=,o

15、' then 洗衣状态ch :- 0010*;tl := 0000*;a :s 111;lwash <« 111;洗衣灯亮lclean < 'o'ldry <= 'o' uarnning < 1 o'elseif not(th-oooo and cl-oool) thenif tl-h0000rr then 20秒洗表时间倒计时 tl :- 1001;th :- th-1;elsetl :- tl-1;end if;elseth :- ”0000”;tl :« ”0000”;a : o;if roode

16、=fflllrf then 计时终止,根据模式信号转向下一状态 workstate :- clean;elsevorkstate : alarm;end if;end if; end if;when clean => if a=,0* then -漂洗状态th :- soicr;tl :- 0101;a 1l1;lwash <- 10*;lclean <= 1 1*;漂洗灯亮ldry < '0*;uarnning <= 10*;elseif not(th”0000” and cl-oool) thenif tl-rr0000h then 一25秒漂施时间倒

17、计时 tl :- "001”;th :- th-1;elsetl := tl-1;78end if;elseth := pooct;tl := w0000w;a := 'o'if (roode=mlll,t or mo血“oil) thenvorkstate := dry;计时终止,根据模式信号转向下一状态 elseworkstate :- alarm;end if;end if; 皀nd it;when dry > if a-'o* then -脫水状态th :- "qq01":tl :- piol;a :i';lvash

18、<- *0'lclean < 'o'ldry <- 11'"脱水灯亮uarnnmg < *0*;elseit not (th-oooo1* and tl-oool1") thenif tl-oooo then 15杪脫术时间倒计时tl :- 1001;th : th-1;elsetl : tl-1;end it;elseth :« w0000w;tl := w0000w;a := o'workstate alarm;脫水结束,转入报警状态 end if;end if;when alarm > i

19、f a-'o' thenth := pool: 5秒报警计时tl := siol;a := '1'lvash <= 'o':lclean <= 1 o'ldry <- 'o'uarnning <= 1 i1; 蛭鸣器响 elseif not (th=ffoooorf and tl=froooor,) thentl : tl-1;elseth :- "qqqq"tl := ”0000”; rnning <= 1 o'end if;end if;end case;end

20、 if;elseth := ”0000”; 一时间垃军tl :- ”0000”;a := 1 o'luash <- o ;lclean <= 10*;ldry < 10*;uarnning <= 1 o'workstate : start; -转入开始状态end if;timeh <- th; 一计时输岀timel <= t丄;end process;145end bhv;5678910 entity preset ish port(clkzen : in thin/tlin : works : out thout/tlout end pre

21、set;stdlogic;in std_logic_vector(3 dounto 0);-stdlogic;:out std logic vector(3 downto 0)预总时间输入;一剩余时间输出12131415161819202122232425harchitecture bhv of preset issignal th/tl : std_logic_vector(3 dovnto 0); signal start : std_logic; beginh process (en/ clk/ thinz t lm)begins if en-'o' thenth <

22、;tl v=startselses if elk1 * * event &nd clk=, 1* thenhix notfth-oooo and tl-oooo) thendif tl-rr0000w then 一预置时间计数器倒计时thin; 並示预査时间 tlin;<-'o';2. 消抖模块set pause1 library ieee;2 use ieee.std_logic_1164.all;3 use ieee.std_logic_unsigned.all;44 hentity setpause is5 h port(elk,pause : m stdl

23、ogic;6 b : out stdlogic);-消抖后波形输出7 end setpause;9harchitecture bhv of setpause is signal tempi : stdlogic;hbeginb process(elk,pause)variable temp2 : stdloglc; beginh if elk'event and clkw then 下降沿壬样 tempi <« pause;temp2 :s not tempi;end if;b <= tempi and temp2 and elk;生成消抖后波形 end proc

24、ess;end bhv;3. 预置时间模块preset26tl<=w1001f,;27th<-th-1;28 helse29tl<=tl-1;3031323334353637383940414243end if; start elseth <s cl <- start end if;end if; end if; thout <= tlout <- vorks <«<-'o*;r,0000r;fr0000w;<=一计时终止,进入工作状态th; cl; start;end process;end bhv;五、功能说明:

25、q fil* wit v>v froj*rt 飢机尸*?“ prftrwinj ts«h vir*u« h*l;呂x2 a s| ;l p, * ,|ies12二)xq z2 bdft1oxrfcrrr,:fv4 e9redep c|u«tfu*an1皿卩£470 0n予q 口一必:;3皿cz>icfci-imjp 1:二pnj27pnj29p31eklochi dxlkh:i91n«2ipn-31ckbp3um”邓9| rromr.qnrt73>计.心si二7而'-_su”d (g 声<3> o ea&q

26、uot; fluifi (ry,id celri:* occ.bn枷 p :| |on«ip (:oncftjp :|»n<up.(::ml povt&”y0j闸78hl77m78pf4 79pf4 3二::|ft< 50 eata unuaakvcamup v,如p 0峽p v.r<*sn5 mp 纠:ahd二::二77二:=:二77二:二stcmfthp 1<j 心01系统整体电路图如上,现对其功能作一说明:1 拨码开关 sw7、sw6、sw'5、sw4、sw3 和 led ld4、ld3、ld2、ld1、ld0 分别对应单洗衣、

27、单漂洗、单脱水、漂洗+脱水、洗衣+漂洗+脱水五种工 作模式,拨t'为选择该模式,jzl对应led被点亮,一次只能拨一个, 若同时有多个开关被拨'1',则模式灯全灭,需重新选择,默认工作模式 为洗衣+漂洗+脱水。2. 通过按键btn2预约洗衣时间,按一次时间加5秒,可以设定的范围为0 60秒,预置时间由数码管disp5、disp4显示,当欲重新预置时,按下 btn1,时间清零,即可重新设定。3拨码开关sw0为系统启动开关,当sw0被拨'v时,系统开始工作,首 先进入预置时间状态,预置倒计时终止后,根据选择的工作模式,转入相 应工作状态,数码管disp5、disp4

28、显示当前剩余洗衣时间,且对应的状 态指示灯亮,其中led ld7、ld6、ld5分别代表洗衣、漂洗和脱水状态, 当最后一个状态计时结束后,状态灯灭,蜂鸣器报警,数码管显示5秒倒 计时,报警结束,数码管显示“00”。4在预置倒计时或洗衣倒计时状态下,按下btno键可以暂停工作,保持当 前计数状态不变,再次按下btno键,则接着暂停前的状态继续工作。5.洗衣结束后,将拨码开关swo拨则可以重新设定工作模式,重新预 置洗衣时间,开始下一次的工作。六、元器件清单及资源利用情况:元器件清单:1. 台式计算机一台2. max ii epm1270t144c5数字逻辑实验开发板一块3. usb数据下载线一根

29、资源利用情况:fitterresource usage snaaaryresourceusage1 t otal logic elements227/1,270(18)2 combinational with no register1363register only144 combinational with a register7756 logic element usage by n umber of lut in puts74 input functions10383 input functions2292 input functions8010 1 input functions131

30、10 input functions91213 logic elements by mode14normal mode17415arithmetic mode5316qfbk mode1817register cascade mode018紗nchonous clear/load mode2219 asynchronous clear/load mode312021t otal registers91 71,270(7)22total ukbs37/127(29)23logic elements in carry chai ns5624user inserted logic element$0

31、25virtual pins026 i/o pins32/116(28)27clock pins428global signals429ufm blocks0/1 (0)30global clocks4/4(100引31average interconnect usage6%32peak interconnect usage7%33maximum fan-out nodeelk34maximum fan-out5435highest non-global fan-out signalcount© 匚 instb36highest non-global fan-out2037t ota

32、l fan-out84838average bn-out3.27七、故障及问题分析:故障一:洗衣结束,拨码开关swo拨v,重新设定洗衣模式后,当其再次 拨1时,蜂鸣器仍然报警。原因是在swo拨'0,时,未将状态 从alarm (报警状态)转到start (开始状态),致使状态机无法按照 指定的模式开始下一个工作循环。修改状态计时模块counter中 en= '0'情况下的代码,将显示时间置零,工作状态转为start, 报警输出为'(t,重新编译、下载、运行,故障即排除。故障二:暂停按键有时按下后,时间没能停止,而是继续倒计时。原因是防 抖电路使用的采样时钟频率过

33、低,只有1hz,没有起到去除按键抖 动的作用。根据人一般按键时间大约在50ms左右的经验,重新确 定防抖电路的釆样时钟频率,将其设为looilz,去抖动效果显著提 高,暂停按键按下能够有效暂停,故障排除。故障三:在最后的各模块连接总原理图设计中,模块间多位矢量输出、输入 应该用总线进行连接,但连接好后进行编译,仍然会报错。经过仔 细检查和查阅相关参考资料,发现原因是未在多位输入输出端口中 指定数据宽度,例如输入端口 mode_set是5位的,则应指定为 "mode_set4.0按照上面的方法,经过修改、编译后,故障 解决。八、总结和结论:本次数字电路与逻辑设计综合实验的顺利完成,让我初步地体会到了数字系 统的设计流程和基木方法。对于数字系统的设计与实现,我体会最深的一点就是, 必须采用和纯软件编程不同的思维去思考问题,分层次分模块地设计,注重功能 的划分和模块之间的联系,而不是一味关注模块具体的实现,因为一旦状态转移 关系确定下来以后,模块的实现就可以有多种方法,且每个模块的内部实现相对 于整个系统都是独立的,修改模块的逻辑不会影响总系统,而对于设计者来说, 系统的总体功能架构和对外接口才是需要着重关注的,所以必须抓主要矛盾,将 系统的整体框架先行设计出来,而后再根据划分好的各个功能模块进行具体的程 序设计。在实验进行之初,我的设计思维很混

温馨提示

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

评论

0/150

提交评论