数字电路与逻辑设计-洗衣机控制器实验报告.doc_第1页
数字电路与逻辑设计-洗衣机控制器实验报告.doc_第2页
数字电路与逻辑设计-洗衣机控制器实验报告.doc_第3页
数字电路与逻辑设计-洗衣机控制器实验报告.doc_第4页
数字电路与逻辑设计-洗衣机控制器实验报告.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

北京邮电大学数字电路与逻辑设计实验题目:洗衣机控制器 学院:信息与通信工程学院 班级:学号:姓名:班内序号日期:2015年11月5日一、设计课题的任务要求:(1)实验目的:1、熟练掌握 VHDL 语言和QuartusII 软件的使用;2、理解状态机的工作原理和设计方法;3、掌握利用 EDA 工具进行自顶向下的电子系统设计方法;(2)实验内容:基本要求:1、 洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗衣 30 秒(进水5秒,洗衣15秒,排水5秒,甩干5秒),漂洗25 秒(进水5秒,漂洗10秒,排水5秒,甩干5秒),脱水15 秒(排水5秒,甩干10秒);2、 用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱水;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;3、用发光二极管显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全部过程结束后,应有声音提示使用者;4、用点阵动画显示洗衣机工作过程中进水、波轮或滚筒转动、排水和甩干等的工作情况,四种工作情况的动画显示要有区别且尽可能的形象;5、用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留的状态。提高要求:1、 三个过程的时间有多个选项供使用者选择。2、可以预约洗衣时间。3、自拟其它功能。二、系统设计:(1)设计思路和分块设计:实验的目的是模仿洗衣机的功能,设计出洗衣机控制器。包括开关控制,工作暂停,工作模式的选择,工作状态的显示,倒计时工作时间并显示和工作结束报警等功能。将整个控制器分为7个小模块,分别是分频模块、按键模块、控制器、防抖模块、报警模块、点阵显示和数码管译码输出显示,再将各个模块连接起来,实现洗衣机控制器功能。分频模块:选取主时钟频率为1kHz,为了使倒计时输出为1s的时间周期,需要将主频率进行1kHz分频,使得到的频率为1Hz,输入给控制器的时钟。按键模块:有模式选择、暂停和开始3个按键,模式选择可以选择5种洗衣模式,当开始按键按下并且有模式输入时,洗衣机开始工作。当暂停按键按下时,洗衣机暂停工作并保持当前工作状态。防抖模块:按键经过防抖后,可以输出时钟,去除了毛刺即抖动时钟。报警模块:时钟输入为1kHz,当洗衣结束后,报警模块接收到控制器给它的输入信号,会以1000Hz的频率报警,(由于人耳能听到的频率为20-20000Hz)持续5秒后停止。点阵显示:以1kHz的频率进行扫描,点阵上可以显示稳定的图案,在洗衣过程中分别显示进水、洗衣、漂洗、脱水和甩干5个小状态。数码管译码输出显示:控制器将倒计时十位和个位输出到译码器,译码电路分别显示十位和个位,扫描频率为1kHz,数码管可以稳定显示。控制器:控制器是整个电路的核心模块,控制各个模块的连接。时钟频率为1Hz,输出为3个大状态(洗衣、漂洗、脱水),用发光二极管显示,5个小状态,十位个位输出和报警输出。用状态转移控制各个过程的转换,控制各个小状态的转换,完成各个功能显示的连接。(2)总体框图:系统框图分频模块 clk数码管译码输出显示点阵显示控制器防抖模块报警模块按键模块状态转移图开始 001|101011漂洗 010|100 101 101|101洗衣脱水001 010 011|101|100结束ASM图开始 输入状态 否状态是否为0 开始按键输入 是 否是否开始倒计时时间显示 否是点阵显示(5种小状态)是否暂停倒计时 二极管显示(3种大状态)暂停时间是否为0 是 是否是否继续 是报警 是否有新状态否结束是结束 否 三、仿真波形及波形分析分频模块:clk为1000Hz的时钟,输出clkout为分频后的时钟,频率为1Hz。防抖模块:输入reset信号有抖动,输出resetn为无抖动的时钟。按键模块:输入pauseclk、startclk、stateclk分别为暂停、开始、模式输入按键,当按下暂停按键时,暂停输出pauseout变为高电平,洗衣机工作状态保持不变;当按下开始按键时,输出startout变为高电平,洗衣机开始工作;当按下模式按键时,可以选择5种工作模式,输出对应5种模式。报警模块:时钟clk为1000Hz,为蜂鸣器工作频率,当输入信号alarmin为高电平时,输出alarmout变为高电平,维持5秒后变为低电平,结束报警。数码管译码输出显示:clk为1kHz的扫描频率,gewei、shiwei分别为个位、十位输入,showout为数码管译码输出,十位个位交替显示,cat控制数码管的点亮,分别显示十位和个位输出。控制器:时钟clk为1Hz,输入按键信号pause(暂停)、start(开始),洗衣工作模式state,输出mode为洗衣、漂洗、脱水三个大状态,输出mode_mini为进水、洗衣、漂洗、排水、甩干五个小状态,输出time_gewei、time_shiwei为个位、十位转换为二经制的输出,alarm为报警输出,当洗衣结束输出高电平。四、源程序(1)、分频模块entity div isport(clk:in std_logic; -1kHzclkout:out std_logic -1Hz);end div;architecture div_arch of div issignal t : std_logic;signal count : integer range 0 to 499; -计数500个周期beginprocess(clk)begin if (clk event and clk=1) thenif(count=499) -1000分频then count=0;t= not t;else count=count+1;end if;end if;end process;clkout5) then cout1 := cout1 mod 5;end if;end if;case cout1 is when 1 = stateout stateout stateout stateout stateout stateout =000;end case;end process p1 ;p2:process(pauseclk) -当有按键按下,暂停工作,再次按下继续工作variable cout2: integer range 0 to 1; begin if (pauseclkevent and pauseclk=1) then cout2:=cout2+1; end if; if(cout2=1) then pauseout=1; else pauseout=0; end if;end process p2;p3:process(startclk) -按键按下开始工作variable cout3: integer range 0 to 1; begin if (startclkevent and startclk=1) then cout3:=cout3+1; end if; if(cout3=1) then startout=1; else startout=0; end if;end process p3;end archi;(3)、防抖模块entity doudong isport (clk,reset: in std_logic; -clk为1kHz,reset为按键信号resetn: out std_logic -防抖后的按键信号);end doudong;architecture a of doudong issignal tmp1,tmp2: std_logic; beginprocess (clk)beginif (clkevent and clk=0) then tmp2=tmp1; tmp1=reset; end if; end process; resetn -进水case scan_row is when 000= row=10111111;col_R=01111110;col_Grow=11011111;col_R=01000010;col_Grow=11101111;col_R=01000010;col_Grow=11110111;col_R=01000010;col_Grow=11111011;col_R=01000010;col_Grow=11111101;col_R=01111110;col_Grow=11111111;col_R=00000000;col_G=00000000;end case;if scan_row=110 or scan_row=111 thenscan_row=000;else scan_row case scan_row is -洗衣when 000= row=10111111;col_R=01111110;col_Grow=11011111;col_R=01011010;col_Grow=11101111;col_R=01100110;col_Grow=11110111;col_R=01100110;col_Grow=11111011;col_R=01011010;col_Grow=11111101;col_R=01111110;col_Grow=11111111;col_R=00000000;col_G=00000000;end case;if scan_row=110 or scan_row=111 thenscan_row=000;else scan_row -漂洗case scan_row iswhen 000= row=10111111;col_R=01111110;col_Grow=11011111;col_R=01000010;col_Grow=11101111;col_R=01000010;col_Grow=11110111;col_R=01000010;col_Grow=11111011;col_R=01000010;col_Grow=11111101;col_R=01111110;col_Grow=11111111;col_R=00000000;col_G=00000000;end case;if scan_row=110 or scan_row=111 thenscan_row=000;else scan_row -排水 case scan_row iswhen 000= row=10111111;col_R=01111110;col_Grow=11011111;col_R=01000010;col_Grow=11101111;col_R=01000010;col_Grow=11110111;col_R=01000010;col_Grow=11111011;col_R=01000010;col_Grow=11111101;col_R=01111110;col_Grow=11111111;col_R=00000000;col_G=00000000;end case;if scan_row=111 thenscan_row=000;else scan_row -甩干case scan_row iswhen 000= row=10111111;col_R=10010000;col_Grow=11011111;col_R=01010000;col_Grow=11101111;col_R=00110000;col_Grow=11110111;col_R=00010000;col_Grow=11111011;col_R=00110000;col_Grow=11111101;col_R=01010000;col_Grow=11111110;col_R=10010000;col_Grow=01111111;col_R=00010000;col_G=00000000;end case;if scan_row=111 thenscan_row=000;else scan_row -没有状态,不显示 case scan_row iswhen 000= row=10111111;col_R=00000000;col_Grow=11011111;col_R=00000000;col_Grow=11101111;col_R=00000000;col_Grow=11110111;col_R=00000000;col_Grow=11111011;col_R=00000000;col_Grow=11111101;col_R=00000000;col_Grow=11111110;col_R=00000000;col_Grow=01111111;col_R=00000000;col_G=00000000;end case;if scan_row=111 thenscan_row=000;else scan_row=scan_row+1;end if; end case;end if;end process p1;end arc_dianzhen;(5)、报警模块entity alarm isport( clk,alarmin: in std_logic; -clk为1kHz时钟频率,alarmin为报警输入alarmout:out std_logic -报警输出,持续时间为5秒);end alarm;architecture a of alarm issignal cnt: integer range 0 to 4999;begin process(clk)beginif clkevent and clk=1 thenif alarmin=1 thenif( cnt/= 4999) then -5秒报警cnt=cnt+1;alarmout=1;else alarmout=0;end if;else cnt=0;alarmoutcat=111101;cntshowoutshowoutshowoutshowoutshowoutshowoutshowoutshowoutshowoutshowoutshowout cat=111110; cntshowoutshowoutshowoutshowoutshowoutshowoutshowoutshowoutshowoutshowoutshowout -当前处于开始状态 if state=001or state=101 then pre_state=1; tmp2=30; elsif state=011 then pre_state=3; tmp2=15; elsif state=010 or state=100 then pre_state=2; tmp2 -当前处于洗衣状态 if state=101 then pre_state=2; tmp2=25; elsif state=001 thenpre_state=4; tmp2=0; tmp5=1; alarm -当前处于漂洗状态 if state=101or state=100 then pre_state=3; tmp2=15; elsif state=010 then pre_state=4; tmp2=0; tmp5=1; alarm -当前处于脱水状态 if state=011 or state=100or state=101then pre_state=4; tmp2=0; tmp5=1; alarm -当前处于结束状态 tmp2=0; tmp5=1; alarm=tmp5; if (tmp5=1) then if (cnt8) then cnt=cnt+1; else tmp5=0; alarm=tmp5;cnt=0; end if; elseif state=001 or state=010 or state=011 or state=100 or state=101 then pre_state=0; -结束洗衣后,判断是否有新状态 end if; end if; end case;end if; end if; if (tmp2/=0) then -倒计时 tmp2=tmp2-1; end if;if(pause=1)then -暂停 pre_state=pre_state; tmp2tmp3tmp3tmp3tmp3=000; end case; mode=tmp3; time_shiwei = conv_std_logic_vector(tmp2/10,4); -将十进制转为二进制 time_gewei if (tmp2 25) then tmp110 and tmp2=25) then tmp15 and tmp2=10) then tmp10 and tmp2=5) then tmp1=100; -排水 else tmp1 if (tmp2 20) then tmp110 and tmp2=20) then tmp15 and tmp2=10) then tmp10 and tmp2=5) then tmp1=100; -甩干 else tmp1 if (tmp2 10) then tmp10 and tmp2=10) then tmp1=100; -甩干 else tmp1tmp1=111; end case; mode_miniclk_main,alarmin=cn6,alarmout=alarm_out);u2:ledshow port map (clk=clk_main,shiwei=ts,gewei=tg,showout=ledshow_out,cat=cat_out);u3:doudong port map (clk=clk_main,reset=start,resetn=cn3);u4:doudong port map (clk=clk_main,reset=pause,resetn=cn2);u5:doudong port map (clk=clk_main,reset=state,resetn=cn1);u6:div port map (clk=clk_main,clkout=clk11);u7:dianzhen port map (clk_scan=clk_main,condition=state1,row=row_out,col_R=col_R_out,col_G=col_G_out);u8:control port map (clk=clk11,state=state2,pause=cn5,start=cn4,mode=mode_out,mode_mini=state1, alarm=cn6,time_shiwei=ts,time_gewei=tg);u9:button port map(stateclk=cn1,pauseclk=cn2,startclk=cn3,stateout=state2,pauseout=cn5,startout=cn4); end arch_laundry;五、功能说明及资源利用情况各个模块连接后,电路原理图如下图所示:顶层文件编译后,界面如下:资源占用率为18%功能说明: 实现了洗衣机的基本功能,如下用按键选择(A、单洗涤;B、单漂洗;C、单脱水;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程)5个工作模式,用按键控

温馨提示

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

评论

0/150

提交评论