Verilog数字电子技术洗衣机控制器.docx
- 文档编号:15877740
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:15
- 大小:82.66KB
Verilog数字电子技术洗衣机控制器.docx
《Verilog数字电子技术洗衣机控制器.docx》由会员分享,可在线阅读,更多相关《Verilog数字电子技术洗衣机控制器.docx(15页珍藏版)》请在冰点文库上搜索。
Verilog数字电子技术洗衣机控制器
院系:
专业:
班级:
姓名:
学号:
指导教师:
2010学年度第一学期
电子技术基础课程设计
――智能洗衣机控制器
控制科学与工程系
自动化
1006班
*******
********
课程设计名称
智能洗衣机控制器的设计
设计内容及要求
1设计一个智能洗衣机控制器,能够实现洗衣,漂洗和脱水的功能。
2要求能够使用按键模拟对洗衣机的控制,能够设置工作模式,为了便于观察,将洗衣机设定的工作模式(1~5)和整个过程所剩的工作时间用数码管显示出来(时间分辨率为1分钟),能够将洗衣机当前所处的状态(注水,洗衣,排水,甩干)用发光管或者数码管显示出来。
模式1】
:
洗衣模式--强力洗(洗衣30分钟)
模式2】
:
洗衣模式--普通洗(洗衣20分钟)
模式3】
:
洗衣模式--轻柔洗(洗衣10分钟)
模式4】
:
漂洗模式
模式5】
:
甩干模式
注:
在以上5个模式中,每次注水1分钟,漂洗5分钟,排水1分钟,甩干1分钟,模式1〜3的洗衣时间如上所示,具体的洗衣步骤如下:
【模式1〜3】:
注水->洗衣->排水->甩干->注水->漂洗->排水->
甩干
->注水->漂洗->排水->甩干。
【模式4】:
注水->漂洗->排水->甩干->注水->漂洗->排水->甩干。
【模式5】:
甩干。
【要求】:
实现逻辑控制过程,可以选择性的加入注水口无水报警等人性化的状态提示,操作完毕使用蜂鸣器鸣叫两秒提示。
3画出洗衣机控制器的状态机,写出状态编码方案。
4用Verilog语言对设计进行描述,设计一个测试方案,并能够下载到实验板上调试成功。
5写出设计性实验报告,并打印各层次的源文件和仿真波形,然后作简要说明。
并谈谈此次实验的收获、感想及建议
系统设计
1系统框图与说明本次设计的重点在于智能控制器状态之间转换的条件和关系,
并且在此基础上输出相应的显示
图一系统结构框图
Pausewarn
Reset
Model
Mode2
Mode3
Mode4
Mode5
输入端口描述
Reset:
复位
Mode1-5:
模式选择
Pause:
暂停启动
Warn:
报警
2状态转换图
洗衣机共分为5个模式,4个状态。
模式分别为M0DE1强力洗,M0DE2普通洗,M0DE3轻柔洗,M0DE4漂洗,M0DE5甩干;状态分别为stateO注水,statel洗衣,state2排水,
state3甩干。
另外,为使洗衣机增添功能,添加了两个个状态,一个为初始状态stateOO,另一个为cloze,即为洗衣完成时的状态。
图二状态转换图
3输入输出设计(按键,数码管,发光管,蜂鸣器)
控制器设定有8个按键,其中5个为选择模式的按钮,另外一个则是控制器的复位键reset。
当按下reset的时候,控制器回复到初始状态。
还有一个是表示无水时的传感信号,最后一个则是增加的控制洗衣机暂停和再启动的按键。
输出数码管也有6个,其中两个分别显示控制器当前状态和模式,另外四个用来表示当前状态所剩余时间。
发光二极管设定了两个,其中一个表示洗衣机水箱无水时的报警显示,另一个是表示洗衣完成时的显示。
相应的,在这两个发光管亮起时,蜂鸣器发出声音。
系统仿真
1各工作模式仿真波形
图三model状态转换
图四mode2状态转换
图六mode4状态转换
X
S
h
4
X-
ifi11
L
10000
X
4
X
'■~
0
i!
ao
iooooococoocooooowooxxxxMoocoowxmoawaoc
图七mode5状态转换
mi_l_
1
-1~L
i~i
~1
—
J_1J_:
1_!
~
L_r
4
L
1
*
2
Q.r
□c
Lr1Xub
U.Jxu
tU.J
r」.l
r-ii_ JlJ -X- <八八一□u》 ■j.s 图八mode4中由注水向洗衣状态转换时细节显示 实验总结 1心得体会 本学期电子课程设计以老师多个命题,学生自由选择命题的形式进行。 趣味性强,同时也可以学到很多东西。 我们认为,在这学期的课设中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。 更重要的是,在课设过程中,我们学会了很多学习的方法。 而这是日后最实用的,真的是受益匪浅。 要面对社会的挑战,只有不断的学习、实践,再学习、再实践。 我们采用Verilog语言作为执行核心,通过了种从无到有,从不会到自由运用的过程。 在某种意义上说,这是一种锻炼,一种知识的积累,能力的提高。 完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。 很少有人会 步登天吧。 永不言弃才是最重要的 而且,这对于我们的将来也有很大的帮助。 以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。 就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。 本次课程设计虽然结束了,却留下了很多遗憾,因为由于时间的紧缺和课程的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲! 相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。 我们的激情永远不会结束,相反,我们会更加努力,努力的去弥补自己的缺点,发展自己的优点,去充实自己,只有在了解了自己的长短之后,我们会更加珍惜拥有的,更加努力的去完善它,增进它。 只有不断的测试自己,挑战自己,才能拥有更多的成功和快乐! Tous,happinessequalssuccess! 快乐至上,享受过程,而不是结果! 认真对待每一个实验,珍惜每一分一秒,学到最多的知识和方法,锻炼自己的能力,这个是我们在实时测量技术试验上学到的最重要的东西,也是以后都将受益匪浅的! 2功能扩展洗衣机设定了启动,暂停和在启动功能,在运用时显得更为人性化。 附录: 源程序 module auto_con(clk,clk2,clr,out,sel,mode,warn,speak,ts1,ts2,tm1,tm2,LEDW,LEDF); inputclk,clr,clk2,warn; input[4: 0]sel; output[3: 0]out; outputspeak,LEDW,LEDF; output[3: 0]mode; reg[3: 0]mode; regLEDW,LEDF; reg[3: 0]out; reg[3: 0]state; reg[1: 0]step; output[3: 0]ts1,ts2,tm1,tm2; reg[3: 0]ts1,ts2,tm1,tm2; wirefin; wirespeak; regflag; parameterstate0=4'b0001,state1=4'b0010,/*状态编码,采用二进制编码方式*/ state2=4'b0011,state3=4'b0100,state11=4'b0110,state12=4'b0111,state13=4'b1000,cloze=4'b0101,state00=4'b0000; assignfin=((ts2==0)&(ts1==0)&(tm2==0)&(tm1==0)); /*蜂鸣器信号*/ /*该进程定义起始方式*/ /*模式编码,采用二进制编码方式*/ assignspeak=(warn||(state==cloze))&clk2;always@(posedgeclk) begin case(sel) 5'b00001: mode<=4'b0001; 5'b00010: mode<=4'b0010; 5'b00100: mode<=4'b0011; 5'b01000: mode<=4'b0100; 5'b10000: mode<=4'b0101; default: mode<=4'b0000; endcase if(state==cloze)LEDF<=1'b1;/*洗衣完成时发光管发光*/ elseLEDF<=1'b0; LEDW<=warn; /*无水报警时发光管发光*/ begin /*该部分控制倒计时*/ if(ts2! =0) ts2<=ts2-4'd1; elseif(ts2==0&ts1! =0)begints2<=4'd9;ts1<=ts1-4'd1; end elseif(ts2==0&ts1==0&tm2! =0)begints2<=4'd9;ts1<=4'd5;tm2<=tm2-4'd1; end elseif(ts2==0&ts1==0&tm2==0&tm1! =0)begin ts2<=4'd9; ts1<=4'd5; tm2<=4'd9; tm1<=tm1-4'd1; end end if(clr)beginstate<=state00;flag<=1'b0;step<=2'b00;tm1<=0;tm2<=0;ts1<=0;ts2<=0; end if(fin) case(sel)/*该进程控制各模式状态之间的转换*/ 5'b00001: case(state)/*M0DE1的状态转换*/ state00: begintm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0001; end state0: begin if(flag==0) begin tm1<=2;tm2<=9;ts1<=5;ts2<=9; state<=4'b0110; flag<=1'b1; end else begin tm1<=0;tm2<=4;ts1<=5;ts2<=9; end 4'b0110: begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=4'b0011; end 4'b0010: begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=4'b0011; end 4'b0011: begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=4'b0100; end 4'b0100: begin if(step==2'b10)state<=cloze; else begintm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=state0;step<=step+2'b1; end end default: state<=cloze; endcase 5'b00010: case(state) /*M0DE2的状态转换*/ state00: begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=4'b0001; end state0: begin if(flag= =0) begintm1<=1;tm2<=9;ts1<=5;ts2<=9; state<=4'b0111; flag<=1'b1; end else begin tm1<=0;tm2<=4;ts1<=5;ts2<=9; state<=4'b0010; end end 4'b0111: begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=4'b0011; end 4'b0010: begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; end 4'b0011: begintm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=4'b0100; end 4'b0100: begin if(step==2'b10)state<=cloze; else begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=state0; step<=step+2'b1; end end default: state<=cloze; endcase 5'b00100: case(state) /*M0DE3的状态转换*/ state00: beginstate<=4'b0001; tm1<=0;tm2<=0;ts1<=5;ts2<=9; end state0: begin if(flag= =0) begin tm1<=0;tm2<=9;ts1<=5;ts2<=9; state<=4'b1000; flag<=1'b1; end else begin tm1<=0;tm2<=4;ts1<=5;ts2<=9; state<=4'b0010; end end 4'b1000: begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=4'b0011; end 4'b0010: begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=4'b0011; end 4'b0011: begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; 4'b0100: begin if(step==2'b10)state<=cloze; else begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=state0; step<=step+2'b1; end enddefault: endcase state<=cloze; 5'b01000: begincase(state)4'b0000: begin /*MODE4的状态转换*/ tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=state+4'b0001; end 4'b0001: begin tm1<=0;tm2<=4;ts1<=5;ts2<=9; state<=state+4'b0001; end 4'b0010: begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=state+4'b0001; end 4'b0011: begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=state+4'b0001; end 4'b0100: begin if(flag==0) begin tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=4'b0001; flag<=flag+1'b1; end elsestate<=cloze; end default: state<=cloze;endcase case(state)4'b0000: beginstate<=4'b0100; end4'b0100: beginenddefaultendcaseend tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=cloze; state<=cloze; default: state<=state00;/*default语句,避免锁存器的产生*/endcaseend
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Verilog 数字 电子技术 洗衣机 控制器