EDA课设洗衣机.docx

上传人:b****0 文档编号:17382607 上传时间:2023-07-24 格式:DOCX 页数:16 大小:105.80KB
下载 相关 举报
EDA课设洗衣机.docx_第1页
第1页 / 共16页
EDA课设洗衣机.docx_第2页
第2页 / 共16页
EDA课设洗衣机.docx_第3页
第3页 / 共16页
EDA课设洗衣机.docx_第4页
第4页 / 共16页
EDA课设洗衣机.docx_第5页
第5页 / 共16页
EDA课设洗衣机.docx_第6页
第6页 / 共16页
EDA课设洗衣机.docx_第7页
第7页 / 共16页
EDA课设洗衣机.docx_第8页
第8页 / 共16页
EDA课设洗衣机.docx_第9页
第9页 / 共16页
EDA课设洗衣机.docx_第10页
第10页 / 共16页
EDA课设洗衣机.docx_第11页
第11页 / 共16页
EDA课设洗衣机.docx_第12页
第12页 / 共16页
EDA课设洗衣机.docx_第13页
第13页 / 共16页
EDA课设洗衣机.docx_第14页
第14页 / 共16页
EDA课设洗衣机.docx_第15页
第15页 / 共16页
EDA课设洗衣机.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

EDA课设洗衣机.docx

《EDA课设洗衣机.docx》由会员分享,可在线阅读,更多相关《EDA课设洗衣机.docx(16页珍藏版)》请在冰点文库上搜索。

EDA课设洗衣机.docx

EDA课设洗衣机

目录

1绪论1

1.1知识背景1

1.2任务要求1

1.3分析理解2

2方案的论证及选择2

2.1设计原理及总体框图2

3单元电路的设计3

3.1预置时间和编码电路3

3.2数码管显示模块4

3.3时序控制电路6

3.4译码器模块7

3.5减法计数器模块8

4电路图的绘制10

5电路的仿真及调试12

6心得体会13

参考文献15

1绪论

1.1知识背景

EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

现在对EDA的概念或范畴用得很宽。

包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。

目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。

例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。

本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。

利用可编程逻辑器件丰富的内部资源,借助EDA(电子设计自动化)工具(如MAX+PLUSⅡ)把家电控制器电路集成在一片FPGA(现场可编程门阵列)芯片内,这样就无需专门的单片机和外部逻辑电路。

从而减小了电路的体积、提高了系统的稳定性。

一个简易的全自动洗衣机就可以利用这个方法来实现对洗涤过程的控制。

1.2任务要求

初始条件:

设计一个洗衣机洗涤程序控制器,具有根据衣量设定不同洗涤时间、洗涤完毕有声音提醒等功能,在洗涤过程中通过不同颜色的指示灯反映洗涤三种状态:

正转、反转和暂停。

要求完成的主要任务:

1)洗衣机工作时间可以在1~15分钟任意设定。

2)电机运行规律为正转20S,停10S,反转20S,停10S,再正转20S,......依此规律反复运行。

3)以分为单位显示洗衣机剩余工作时间,每当电机运行1分钟,显示器自动减1,直到显示器为“0”,电机停止运转,并发出3声蜂鸣声提醒洗涤完毕。

4)电机正转、反转和暂停通过LED灯区分。

5)广泛调研,提出几种可行的方案,多方论证,确定设计方案。

在EDA仿真软件上完成设计和仿真。

1.3分析理解

针对任务具体要求,可以设想这样一个具有定时、显示、提醒、控制等功能的洗衣机应当包含有多个模块,这些模块相互配合才能完成全部的要求。

定时需要减计数器,显示需要数码管,正转反转暂时的实际也需要计数器的控制,同时设定不同状态亮起不同颜色的LED灯,这需要译码器的使用,最后的报警则应设在时间到零时刻的时候对蜂鸣器进行触发。

2方案的论证及选择

2.1设计原理及总体框图

洗衣机控制器的设计主要是定时器的设计,由一片FPGA和外围电路构成了电器控制部分。

FPGA接收键盘的控制命令,控制洗衣机的进水、排水、水位和洗衣机的工作状态、并控制显示工作状态以及设定直流电机速度、正反转控制、制动控制、起停控制和运动状态控制。

对FPGA芯片的编程采用模块化的VHDL(硬件描述语言)进行设计,设计分为三层实现,顶层实现整个芯片的功能。

顶层和中间层多数是由VHDL的元件例化语句实现。

中间层由无刷直流电机控制、运行模式选择、洗涤模式选择、定时器、显示控制、键盘扫描、水位控制以及对直流电机控制板进行速度设定、正反转控制、启停控制等模块组成,它们分别调用底层模块。

总体框图如图1所示:

图1总体框图

从框图看来,整个设计可以分为五个模块:

数码管显示模块、时序控制电路、预置时间和编码电路、译码器模块、减法计数器模块。

从预置时间开始,给开始信号让电机开始运转,由数码管显示模块控制时间的显示,同时减法计数器进行计时操作,时序控制电路控制洗衣机的运转情况,通过译码模块来决定电机运转状态,即正转反转还是暂停,各个运转状态的时间也需减法计数器来控制。

下面进行分模块讨论。

3单元电路的设计

3.1预置时间和编码电路

定义实体DINGSHI,具有LOAD、FEN两个输入端口,O一个输出端口。

LOAD是一个时钟信号,当其出现上升沿时,将输入的时间进行预置,而FEN的代表分钟数,由输入的信号来进行时间预置分钟的判断,分别列举1-15的BCD码,根据不同情况进行选择输出分钟数0。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDINGSHIISPORT(START:

INSTD_LOGIC;

FEN:

INSTD_LOGIC_VECTOR(3DOWNTO0);

O:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDDINGSHI;

ARCHITECTUREMK1OFDINGSHIIS

SIGNALP1:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

PROCESS(START)

BEGIN

IF(START'EVENTANDSTART='1')

THEN

CASEFENIS

WHEN"0000"=>P1<="00000000";

WHEN"0001"=>P1<="00000001";

WHEN"0010"=>P1<="00000010";

WHEN"0011"=>P1<="00000011";

WHEN"0100"=>P1<="00000100";

WHEN"0101"=>P1<="00000101";

WHEN"0110"=>P1<="00000110";

WHEN"0111"=>P1<="00000111";

WHEN"1000"=>P1<="00001000";

WHEN"1001"=>P1<="00001001";

WHEN"1010"=>P1<="00010000";

WHEN"1011"=>P1<="00010001";

WHEN"1100"=>P1<="00010010";

WHEN"1101"=>P1<="00010011";

WHEN"1110"=>P1<="00010100";

WHEN"1111"=>P1<="00010101";

WHENOTHERS=>P1<="00000000";

ENDCASE;

ENDIF;

ENDPROCESS;

O<=P1;

ENDMK1;

3.2数码管显示模块

采用共阴极的数码管,当有高电平时相应管脚亮,对应数字0-9,七段管脚会有相应的亮暗,将规则列出,可以将输入的数字NUM分成高四位和低四位,分别用两个数码管来显示。

lIBRARYIEEE;

USEIEEE.STD_lOGIC_1164.All;

USEIEEE.STD_lOGIC_UNSIGNED.All;

ENTITYSHOWTIMEIS

PORT(NUM:

INSTD_lOGIC_VECTOR(7DOWNTO0);

ClK:

INSTD_lOGIC;

Q1,Q2:

OUTSTD_lOGIC_VECTOR(6DOWNTO0)

);

ENDSHOWTIME;

ARCHITECTUREONEOFSHOWTIMEIS

SIGNAlTEMP1,TEMP2:

STD_lOGIC_VECTOR(6DOWNTO0);

SIGNAlBCD1,BCD2:

STD_lOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(ClK)

BEGIN

IF(ClK'EVENTANDClK='1')

THENBCD1<=NUM(7DOWNTO4);BCD2<=NUM(3DOWNTO0);

ENDIF;

ENDPROCESS;

PROCESS(BCD1,BCD2)

BEGIN

CASEBCD1IS

WHEN"0000"=>TEMP1<="1111110";

WHEN"0001"=>TEMP1<="0110000";

WHEN"0010"=>TEMP1<="1101101";

WHEN"0011"=>TEMP1<="1111001";

WHEN"0100"=>TEMP1<="0110011";

WHEN"0101"=>TEMP1<="1011011";

WHEN"0110"=>TEMP1<="1011111";

WHEN"0111"=>TEMP1<="1110000";

WHEN"1000"=>TEMP1<="1111111";

WHEN"1001"=>TEMP1<="1111011";

WHENOTHERS=>TEMP1<="0000000";

ENDCASE;

CASEBCD2IS

WHEN"0000"=>TEMP2<="1111110";

WHEN"0001"=>TEMP2<="0110000";

WHEN"0010"=>TEMP2<="1101101";

WHEN"0011"=>TEMP2<="1111001";

WHEN"0100"=>TEMP2<="0110011";

WHEN"0101"=>TEMP2<="1011011";

WHEN"0110"=>TEMP2<="1011111";

WHEN"0111"=>TEMP2<="1110000";

WHEN"1000"=>TEMP2<="1111111";

WHEN"1001"=>TEMP2<="1111011";

WHENOTHERS=>TEMP2<="0000000";

ENDCASE;

ENDPROCESS;

Q1<=TEMP1;Q2<=TEMP2;

ENDONE;

3.3时序控制电路

该模块中,输入端口有时钟信号CLK,清零信号RD,高电平有效,开始信号START,高电平触发,当使能有效且START为高电平时,每到来一个时钟上升沿,中间信号Q就减1,Q从59减至40,输出洗涤状态信号XIDI为100,代表正转20S,Q从39减至30,对应XIDI为001,代表暂停10S,Q从29减至10,对应XIDI为010,代表反转20S,Q从10减至0,对应XIDI为001,代表暂停10S,当Q=0时,又重新装载数值59,进行新一轮计数,如此循环。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYSHIXUIS

PORT(CLK:

INSTD_LOGIC;

RD:

INSTD_LOGIC;

START:

INSTD_LOGIC;

XIDI:

BUFFERSTD_LOGIC_VECTOR(2DOWNTO0)

);

ENDSHIXU;

ARCHITECTUREMK3OFSHIXUIS

SIGNALQ:

STD_LOGIC_VECTOR(5DOWNTO0);

BEGIN

PROCESS(CLK,EN,Q)

BEGIN

IF(RD='1')OR(START='0')THENXIDI<="001";Q<="111011";

ELSEIF(CLK'EVENTANDCLK='1')THEN

IFQ="000000"THENQ<="111011";SHUCHU<="100";

ELSIFQ="111010"THENXIDI<="100";

ELSIFQ="100111"THENXIDI<="001";

ELSIFQ="011101"THENXIDI<="010";

ELSIFQ="001001"THENXIDI<="001";

ENDIF;

Q<=Q-1;

ENDIF;

ENDIF;

ENDPROCESS;

ENDMK3;

3.4译码器模块

输入信号SHURU代表电机运行状态,100正转,001暂停,010反转,当SHURU=100,输出信号RUN输出高电平,其它为低电平,当SHURU=001,输出信号PAUSE输出高电平,其它为低电平,当SHURU=010,输出信号REV输出高电平,其它为低电平。

通过此程序段,将代码变成控制信号,对电机运转真正实现控制。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYYIMAIS

PORT(SHURU:

INSTD_LOGIC_VECTOR(2DOWNTO0);

RUN:

OUTSTD_LOGIC;

REV:

OUTSTD_LOGIC;

PAUSE:

OUTSTD_LOGIC;

);

ENDYIMA;

ARCHITECTUREMK4OFYIMAIS

BEGIN

PROCESS(SHURU)

BEGIN

CASESHURUIS

WHEN"001"=>REV<='0';RUN<='0';PAUSE<='1';

WHEN"010"=>REV<='1';RUN<='0';PAUSE<='0';

WHEN"100"=>REV<='0';RUN<='1';PAUSE<='0';

WHENOTHERS=>REV<='0';RUN<='0';PAUSE<='1';

ENDCASE;

ENDPROCESS;

ENDMK4;

3.5减法计数器模块

由于数码管显示的是分钟数递减,而时钟信号的周期为1S,所以要设计一个60进制的减计数器。

CHUSHITIME是设定的预置时间,XIANSHI是数码管应显示的剩余分钟数,通过变量TIME_SECOND来实现。

TIME_SECOND初值为59,当时钟上升沿到来,TIME_SECOND减1,直到为0时,又进行新一轮数据的装载为59。

当CHUSHITIME高四位不为0而低四位为0时,让高四位为0,低四位变成9;若高四位低四位均不为0,则高四位不变,低四位做减计数直到0;若高四位为0低四位不为0则低四位做减计数直到0。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCOUNTERIS

PORT(CLK,START:

INSTD_LOGIC;

CHUSHITIME:

INSTD_LOGIC_VECTOR(7DOWNTO0);

XIANSHI:

BUFFERSTD_LOGIC_VECTOR(7DOWNTO0);

CF:

BUFFERSTD_LOGIC);

ENDCOUNTER;

ARCHITECTUREMK5OFCOUNTERIS

BEGIN

PROCESS(CLK)

VARIABLETIME_SECOND:

INTEGERRANGE0TO59:

=59;

BEGIN

IF(CLK'EVENTANDCLK='1')

THEN

IF(START='0')

THEN

XIANSHI<=CHUSHITIME;

CF<='1';

ELSE

IF(CF='1')

THEN

IF(TIME_SECOND=0ANDXIANSHI(7DOWNTO0)=0)

THENCF<='0';

ELSE

IF(TIME_SECOND=0)

THENIF(XIANSHI(3DOWNTO0)=0)

THEN

XIANSHI(7DOWNTO4)<=XIANSHI(7DOWNTO4)-1;

XIANSHI(3DOWNTO0)<="1001";

TIME_SECOND:

=59;

ELSE

XIANSHI(7DOWNTO4)<=XIANSHI(7DOWNTO4);

XIANSHI(3DOWNTO0)<=XIANSHI(3DOWNTO0)-1;

TIME_SECOND:

=59;

ENDIF;

ELSE

TIME_SECOND:

=TIME_SECOND-1;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

ENDMK5;

4电路图的绘制

将上述五个模块分别生成相应芯片,在图纸上绘制总电路图,总体的输入有四个:

时钟信号CLK和LOAD,预置时间信号FEN,开始信号START。

定时模块的输出作为减计数器的输入,由此进行计数,减计数器的输出接数码管的输入,将当前数字通过数码管进行显示,进位信号作为时序电路的清零端,时钟信号和开始信号触发时序电路进行对电机状态的控制描述,时序电路的输出则接入译码器,将电机状态描述进行具体执行,即为正转或反转或暂停。

当CF由高变低时,可以利用这个一个下降沿触发蜂鸣器的报警。

连接总电路图如图2:

图2总电路图

5电路的仿真及调试

各个单元电路仿真结果图:

1)预置时间和编译电路仿真。

对fen信号进行“1110”的设定,表示14分钟的预置时间,即十位数为1,个位数为4,对应BCD码及为0001,0100,当start高电平到来,则把组成八位二进制数00010100赋给o输出。

仿真结果如图3:

图3预置时间和编码电路仿真结果

2)数码管显示模块仿真。

当有时钟到来,便把num所表示的BCD码高四位即十位让q1数码管显示,低四位即个位让q2数码管显示。

仿真结果如图4:

图4数码管显示模块仿真结果

3)时序控制电路仿真。

在清零信号EN低电平无效和START高电平有效时,实现XIDI信号描述电机每分钟:

正转20s→暂停10s→反转20s→暂停10s的循环。

仿真结果如图5:

图5时序控制电路仿真结果

4)译码器模块仿真。

可以看到,SHURU=100,输出信号RUN输出高电平,其他为低电平,SHURU=001,输出信号PAUSE输出高电平,其它为低电平,当SHURU=010,输出信号REV输出高电平,其它为低电平。

仿真结果如图6:

图6译码器模块仿真结果

5)减计数器仿真。

start信号有效,设定CHUSHITIME为00010010,可以看到,输出信号XIANSHI每过60s便减1,直至为0。

仿真结果如图7:

图7减计数器仿真结果

总电路图仿真。

当start信号高电平有效时,预置分钟数fen为1011,电机加入时钟信号,电机每分钟进行正转暂停反转暂停的循环,q1显示剩余分钟数的十位,2分钟后,由1减为0,q2显示剩余分钟数的个位,前2分钟,由1减为0,后9分钟则由9每分钟减1直至为0。

仿真结果如图8:

图8总电路图仿真结果

6心得体会

这次课设时间紧迫,中间遇到很多困难,但最终的总电路图的仿真结果终于出来了,并且正确。

在每个分模块中,所要表达的意思想要达到的目的都还是做到了,仿真结果也都正确。

通过本次课设,我加强了对VHDL语言的认识,对其的运用也变得更为熟练,另一方面,通过实际的软件操作,使我更熟悉了QUARTUS软件的操作和使用,应用起来也更为得心应手。

本次课题是设计全自动化的洗衣机控制装置,通过分析要求而对所要做的事情进行模块分类,这样的思想很妙,很具有逻辑性,进行分模块后目标性也变强了,做起来不会茫然不知所措,最终将模块组合调整便能得到想要的结果。

最后,谢谢老师的指导和给予的意见。

 

参考文献

[1]潘松著.EDA技术实用教程(第三版).北京:

科学出版社,2009

[2]康华光主编.电子技术基础(数字部分).北京:

高教出版社,2010

[3]阎石主.数字电子技术基础.北京:

高教出版社,2008

[4]赵岩岭刘春等.在MAX+PLUSⅡ平台下用VHDL进行数字电路设计.西安:

西电出版社,2008

[5]徐志军.EDA计数与VHDL设计.北京:

电子工业出版社,2009.1

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

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2