电子技术课程设计-基于Verylog的智能洗衣机控制器设计.doc

上传人:西安人 文档编号:5026095 上传时间:2020-01-29 格式:DOC 页数:44 大小:1,008.50KB
返回 下载 相关 举报
电子技术课程设计-基于Verylog的智能洗衣机控制器设计.doc_第1页
第1页 / 共44页
电子技术课程设计-基于Verylog的智能洗衣机控制器设计.doc_第2页
第2页 / 共44页
电子技术课程设计-基于Verylog的智能洗衣机控制器设计.doc_第3页
第3页 / 共44页
电子技术课程设计-基于Verylog的智能洗衣机控制器设计.doc_第4页
第4页 / 共44页
电子技术课程设计-基于Verylog的智能洗衣机控制器设计.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《电子技术课程设计-基于Verylog的智能洗衣机控制器设计.doc》由会员分享,可在线阅读,更多相关《电子技术课程设计-基于Verylog的智能洗衣机控制器设计.doc(44页珍藏版)》请在三一文库上搜索。

1、实验报告项目名称 智能洗衣机控制器的设计 课程名称 电子技术课程设计 课程设计日期 2011/2/24 班 级 学 号 姓 名 成 绩 目录一、已知条件3二、性能指标要求3三、输入输出设计3四、模块对应器件的设计4五、ASM图设计4六、完整程序代码7七、管脚分配30八、时序仿真31九、实验总结43一、 已知条件用Verilog设计一个智能洗衣机控制器。 二、 性能指标要求 设计一个智能洗衣机(全自动洗衣机)控制器,能够实现洗衣,漂洗和脱水的功能。 要求能够使用按键模拟对洗衣机的控制,能够设置工作模式,为了便于观察,将洗衣机的工作模式和所剩的工作时间用数码管显示出来,能够将洗衣机当前所处的状态用

2、发光管或者数码管显示出来。【模式1】 :洗特别脏的衣服( 洗衣30秒钟)【模式2】 :洗脏的衣服 (洗衣20秒钟)【模式3】 :洗一般的衣服(洗衣10秒钟)【模式4】 :漂洗(每次漂洗5秒钟)【模式5】 :脱水(每次脱水3秒钟)【洗衣全过程】:洗衣脱水漂洗脱水漂洗脱水,注水完成使用外部传感器S=1表示。【漂洗模式】:漂洗脱水漂洗脱水,注水完成使用外部传感器S=1表示。【脱水模式】:脱水。【注】:操作完毕使用蜂鸣器鸣叫两秒提示。 画出洗衣机控制器的状态机,写出状态编码方案。 用Verilog语言对设计进行描述,设计一个测试方案,通过Muxplus对设计进行仿真验证。并能够下载到实验板上调试成功。

3、 写出设计性实验报告,并打印各层次的源文件和仿真波形,然后作简要说明。 并谈谈此次实验的收获、感想及建议三、 输入输出设计输入:1Hz时钟七个按键:复位启动模式选择注水完成洗衣全过程漂洗脱水输出:状态数码管,显示05模式选择数码管,显示05秒钟数码管,十位数码管、个位数码管,可显示030蜂鸣器四、 模块对应器件的设计 模式选择: 一个5进制加计数器,用数码管显示05。用一个按键做触发时钟模式1:30进制减计数器,用1Hz时钟模式2:20进制减计数器,用1Hz时钟模式3:10进制减计数器,用1Hz时钟模式4:5进制减计数器,用1Hz时钟模式5:3进制减计数器,用1Hz时钟三个组合选择:用三个按键

4、洗衣全过程:49进制减计数器,用1Hz时钟 (30+3+5+3+5+3=49)漂洗模式:39进制减计数器,用1Hz时钟(20+3+5+3+5+3=39)脱水模式:29进制减计数器,用1Hz时钟(10+3+5+3+5+3=29)注水完成:一个按键控制(S) 蜂鸣器:2进制减计数器。1Hz时钟启动:一个按键控制复位:一个按键控制五、 ASM图设计 a) 整机ASM图b) 控制器ASM图符号说明:CR:复位状态S1S5:模式1模式5 状态Mode:模式选择S:外部传感器,表示注水完成FullPro:全过程洗衣RinseMode:漂洗模式Beep:蜂鸣状态End:终止状态原理说明:用户可以选择单选模式

5、和组合模式:在单选模式下,用户选择5种模式中的一种,模式终止之后即进入蜂鸣报警(Beep)状态,不再进行其他模式。其中,模式14要保证注水完成(S=1)才能进行。在组合模式下:1、 用户如果选择的是模式1模式3(Mode=13),如果注水完成(S=1),则进行“洗衣(S1S3) 脱水(S5)漂洗(S4)脱水(S5)漂洗(S4)脱水(S5)”,洗衣过程的时间长短由用户选择的模式1模式3决定。2、 用户如果选择了模式4(Mode=4),如果注水完成(S=1),则进行“漂洗(S4)脱水(S5)漂洗(S4)脱水(S5)”3、 用户如果选择了模式5(Mode=4) ,则进行“脱水(S5)”组合模式结束后

6、,进入蜂鸣报警状态(Beep),系统终止。 六、 完整程序代码/=washer.v=/module washer(State,Mode,Second,Beep,CP,nCR,En,ModeCh,FullPro,Rinse,Dehy,_500hz,S);input CP,nCR,En,ModeCh,FullPro,Rinse,Dehy,_500hz,S;output7:0Second;output3:0State,Mode;output Beep;reg7:0Second;reg3:0State,Mode;reg Beep;reg ModeEnd;wire Mode_En; wire veryE

7、n,dirtyEn,normEn,rinseEn,dehyEn,fModeEn,rModeEn,dModeEn;wire Stop; supply1 Vdd;reg3:0State1,State2,State3,State4,State5,State6,State7,State8;reg7:0Second1,Second2,Second3,Second4,Second5,Second6,Second7,Second8;reg countEnd,countEnd1,countEnd2,countEnd3,countEnd4,countEnd5,countEnd6,countEnd7,countE

8、nd8; /*模式选择*/assign Mode_En=Vdd&(En);count5asc U1(Mode,ModeEnd,nCR,Mode_En,ModeCh);/*单选模式*/assign veryEn=Vdd&En&(Stop)&(FullPro)&(Rinse)&(Dehy)&(Mode=4b0001)&S;assign dirtyEn=Vdd&En&(Stop)&(FullPro)&(Rinse)&(Dehy)&(Mode=4b0010)&S;assign normEn=Vdd&En&(Stop)&(FullPro)&(Rinse)&(Dehy)&(Mode=4b0011)&S;a

9、ssign rinseEn=Vdd&En&(Stop)&(FullPro)&(Rinse)&(Dehy)&(Mode=4b0100)&S;assign dehyEn=Vdd&En&(Stop)&(FullPro)&(Rinse)&(Dehy)&(Mode=4b0101);verydirty U2(State1,Second1,countEnd1,CP,nCR,veryEn);/模式1dirty U3(State2,Second2,countEnd2,CP,nCR,dirtyEn); /模式2normal U4(State3,Second3,countEnd3,CP,nCR,normEn); /

10、模式3rinse U5(State4,Second4,countEnd4,CP,nCR,rinseEn); /模式4dehydration U6(State5,Second5,countEnd5,CP,nCR,dehyEn); /模式5/*组合模式*/assign fModeEn=Vdd&En&(Stop)&(FullPro)&(Rinse)&(Dehy)&(Mode=4b0001&Mode=4b0101);full U7(State6,Second6,countEnd6,CP,nCR,fModeEn,Mode,S);/全过程RinseMode U8(State7,Second7,countE

11、nd7,CP,nCR,rModeEn,S);/漂洗模式dehydration U9(State8,Second8,countEnd8,CP,nCR,dModeEn);/脱水模式/*选择切换模块*/always(veryEn or dirtyEn or normEn or rinseEn or dehyEn or fModeEn or rModeEn or dModeEn or nCR or countEnd)beginif(veryEn)begin Second=Second1;State=State1;countEnd=countEnd1; endif(dirtyEn)begin Secon

12、d=Second2; State=State2; countEnd=countEnd2; endif(normEn)begin Second=Second3; State=State3; countEnd=countEnd3; endif(rinseEn)begin Second=Second4; State=State4; countEnd=countEnd4; endif(dehyEn)begin Second=Second5; State=State5; countEnd=countEnd5; endif(fModeEn)begin Second=Second6; State=State

13、6; countEnd=countEnd6; endif(rModeEn)begin Second=Second7; State=State7; countEnd=countEnd7; endif(dModeEn)begin Second=Second8; State=State8; countEnd=countEnd8; endif(nCR)begin Second=8h00; State=4b0000; countEnd=1b0; endif(countEnd=1b1)begin Second=8h00; State=4b0000; endend/*蜂鸣器模块*/BeeperU10(Bee

14、p,CP,nCR,countEnd,_500hz);/*终止模块*/assign Stop=countEnd;endmodule /= verydirty.v=/module verydirty(State,Second,countEnd,CP,nCR,En);input CP,nCR,En;output3:0State;output7:0Second;output countEnd;reg3:0State;reg7:0Second;reg countEnd;count30 U1(Second7:4,Second3:0,countEnd,nCR,En,CP);always(posedge CP

15、)if(En)beginState=4b0001;endendmodule/= dirty.v=/module dirty(State,Second,countEnd,CP,nCR,En);input CP,nCR,En;output3:0State;output7:0Second;output countEnd;reg3:0State;reg7:0Second;reg countEnd;count20 U1(Second7:4,Second3:0,countEnd,nCR,En,CP);always(posedge CP)if(En)beginState=4b0010;endendmodul

16、e/= normal.v=/module normal(State,Second,countEnd,CP,nCR,En);input CP,nCR,En;output3:0State;output7:0Second;output countEnd;reg3:0State;reg7:0Second;reg countEnd;count10 U1(Second3:0,countEnd,nCR,En,CP);always(posedge CP)if(En)beginState=4b0011;Second7:4=4b0000;endendmodule/= rinse.v=/module rinse(S

17、tate,Second,countEnd,CP,nCR,En);input CP,nCR,En;output3:0State;output7:0Second;output countEnd;reg3:0State;reg7:0Second;reg countEnd;count5 U1(Second3:0,countEnd,nCR,En,CP);always(En)if(En)beginState=4b0100;Second7:4=4b0000;endendmodule/= dehydration.v=/module dehydration(State,Second,countEnd,CP,nC

18、R,En);input CP,nCR,En;output3:0State;output7:0Second;output countEnd;reg3:0State;reg7:0Second;reg countEnd;count3 U1(Second3:0,countEnd,nCR,En,CP);always(En)beginSecond7:4=4b0000;if(En)|(countEnd=1b1)beginState8b00000000)beginState=4b0101;endendendmodule/= full.v=/module full(State,Second,countEnd,C

19、P,nCR,En,Mode,S);input CP,nCR,En,S;input3:0Mode;output3:0State;output7:0Second;output countEnd;reg3:0State;reg7:0Second,Second1,Second2,Second3;reg countEnd,countEnd1,countEnd2,countEnd3;reg flag;wire comEn1;wire comEn2;wire comEn3;wire Vdirty_En,dirty_En,norm_En;supply1 Vdd;assign Vdirty_En=Vdd&(Mo

20、de=4b0001);assign dirty_En=Vdd&(Mode=4b0010);assign norm_En=Vdd&(Mode=4b0011);count49 U1(Second17:4,Second13:0,countEnd1,nCR,comEn1,CP);count39 U2(Second27:4,Second23:0,countEnd2,nCR,comEn2,CP);count29 U3(Second37:4,Second33:0,countEnd3,nCR,comEn3,CP);always(Vdirty_En or dirty_En or norm_En)beginif(

21、Vdirty_En)begin Second=Second1;countEnd=countEnd1; endif(dirty_En)begin Second=Second2;countEnd=countEnd2; endif(norm_En)begin Second=Second3;countEnd=countEnd3; endendalways(Second)beginif(countEnd=1b1)beginState8b00011000&comEn1)State8b00011000&comEn2)State8b00011000&comEn3)State=4b0011; else if(S

22、econd8b00010101)|(Second8b00000111)|(Second=8b00000000)State=4b0101;else State=4b0100;endalways(posedge CP or posedge S or negedge nCR)beginif(nCR)flag=1b0;else if(S)flag=1b1;else if(Second=8b00010110)|(Second=8b00001000)flag=1b0;elseflag=flag;endassign comEn1=Vdirty_En&flag&En;assign comEn2=dirty_E

23、n&flag&En;assign comEn3=norm_En&flag&En;endmodule/= RinseMode.v=/module RinseMode(State,Second,countEnd,CP,nCR,En,S);input CP,nCR,En,S;output3:0State;output7:0Second;output countEnd;reg3:0State;reg7:0Second;reg countEnd;reg flag;wire comEn;count16 U5(Second7:4,Second3:0,countEnd,nCR,comEn,CP);always

24、(Second)beginif(countEnd=1b1)beginState=4b0000;endelse if(Second=8b00010001)|(Second=8b00000011)beginState=4b0100;endelse beginState=4b0101;endendalways(posedge CP or posedge S or negedge nCR)beginif(nCR)flag=1b0;else if(S)flag=1b1;else if(Second=8b00010110)|(Second=8b00001000)flag=1b0;endassign com

25、En=En&flag;endmodule/= Beeper.v=/module Beeper(alarm,CP,nCR,BeepEn,_500hz);input _500hz,CP,nCR,BeepEn;output alarm;reg EndS;reg 3:0Q;supply1 Vdd;count2 U1(Q,EndS,nCR,BeepEn,CP); assign alarm=BeepEn&_500hz&(EndS);endmodule/= count49.v=/module count49(CntH,CntL,EndS,nCR,EN,CP);input CP,nCR,EN;output3:

26、0CntH,CntL;output EndS;reg EndS;reg 3:0CntH,CntL;always(posedge CP or negedge nCR)begin if(nCR) CntH,CntL=8h48;else if(EN) CntH,CntL=CntH,CntL;else if(CntH0)|(CntL0)|(CntH=0)&(CntL=0) )begin EndS0)begin CntH=CntH; CntL0)begin CntH=CntH; CntL0)begin CntH=CntH; CntL0)begin CntH=CntH; CntL=CntL-1b1; en

27、delse if (CntL=0)begin CntH=CntH-1b1; CntL=4b1001; endelse begin CntH=CntH; CntL=CntL-1b1; end endendmodule/= count39.v=/module count39(CntH,CntL,EndS,nCR,EN,CP);input CP,nCR,EN;output3:0CntH,CntL;output EndS;reg EndS;reg 3:0CntH,CntL;always(posedge CP or negedge nCR)begin if(nCR) CntH,CntL=8h38;els

28、e if(EN) CntH,CntL=CntH,CntL;else if(CntH0)|(CntL0)|(CntH=0)&(CntL=0) )begin EndS0)begin CntH=CntH; CntL0)begin CntH=CntH; CntL0)begin CntH=CntH; CntL=CntL-1b1; endelse if (CntL=0)begin CntH=CntH-1b1; CntL=4b1001; endelse begin CntH=CntH; CntL=CntL-1b1; end endendmodule/= count30.v=/module count30(C

29、ntH,CntL,EndS,nCR,EN,CP);input CP,nCR,EN;output3:0CntH,CntL;output EndS;reg EndS;reg 3:0CntH,CntL;always(posedge CP or negedge nCR)begin if(nCR) CntH,CntL=8h29;else if(EN) CntH,CntL=CntH,CntL;else if(CntH0)|(CntL0)|(CntH=0)&(CntL=0) )begin EndS0)begin CntH=CntH; CntL0)begin CntH=CntH; CntL0)begin Cn

30、tH=CntH; CntL0)begin CntH=CntH; CntL=CntL-1b1; endelse if (CntL=0)begin CntH=CntH-1b1; CntL=4b1001; endelse begin CntH=CntH; CntL=CntL-1b1; end endendmodule/= count29.v=/module count29(CntH,CntL,EndS,nCR,EN,CP);input CP,nCR,EN;output3:0CntH,CntL;output EndS;reg EndS;reg 3:0CntH,CntL;always(posedge C

31、P or negedge nCR)begin if(nCR) CntH,CntL=8h28;else if(EN) CntH,CntL=CntH,CntL;else if(CntH0)|(CntL0)|(CntH=0)&(CntL=0) )begin EndS0)begin CntH=CntH; CntL0)begin CntH=CntH; CntL=CntL-1b1; endelse if (CntL=0)begin CntH=CntH-1b1; CntL=4b1001; endelse begin CntH=CntH; CntL=CntL-1b1; end endendmodule/= c

32、ount20.v=/module count20(CntH,CntL,EndS,nCR,EN,CP);input CP,nCR,EN;output3:0CntH,CntL;output EndS;reg EndS;reg 3:0CntH,CntL;always(posedge CP or negedge nCR)begin if(nCR) CntH,CntL=8h19;else if(EN) CntH,CntL=CntH,CntL;else if(CntH0)|(CntL0)|(CntH=0)&(CntL=0) )begin EndS0)begin CntH=CntH; CntL0)begin

33、 CntH=CntH; CntL0)begin CntH=CntH; CntL0)begin CntH=CntH; CntL=CntL-1b1; endelse if (CntL=0)begin CntH=CntH-1b1; CntL=4b1001; endelse begin CntH=CntH; CntL=CntL-1b1; end endendmodule/= count16.v=/module count16(CntH,CntL,EndS,nCR,EN,CP);input CP,nCR,EN;output3:0CntH,CntL;output EndS;reg EndS;reg 3:0

34、CntH,CntL;always(posedge CP or negedge nCR)begin if(nCR) CntH,CntL=8h15;else if(EN) CntH,CntL=CntH,CntL;else if(CntH0)|(CntL0)|(CntH=0)&(CntL=0) )begin EndS0)begin CntH=CntH; CntL=CntL-1b1; endelse if (CntL=0)begin CntH=CntH-1b1; CntL=4b1001; endelse begin CntH=CntH; CntL=CntL-1b1; end endendmodule/= count10.v=/module count10(Q,EndS,nCR,EN,CP);input CP,nCR,EN;output 3:0Q;output EndS;reg 3:0 Q;reg EndS;always(posedge CP or negedge nCR)beginif(nCR)beginEndS=1b0;Q=4b1010;endelse if(EN) Q=Q;else if(Q=4b0000) beginEndS=1b1;endelse Q=Q-1b1;endendmodule/= count5asc.v=/mo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1