EDA设计基于VHDL的简易全自动控制洗衣机.docx

上传人:b****2 文档编号:11509363 上传时间:2023-06-01 格式:DOCX 页数:19 大小:400.42KB
下载 相关 举报
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第1页
第1页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第2页
第2页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第3页
第3页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第4页
第4页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第5页
第5页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第6页
第6页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第7页
第7页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第8页
第8页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第9页
第9页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第10页
第10页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第11页
第11页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第12页
第12页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第13页
第13页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第14页
第14页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第15页
第15页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第16页
第16页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第17页
第17页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第18页
第18页 / 共19页
EDA设计基于VHDL的简易全自动控制洗衣机.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

EDA设计基于VHDL的简易全自动控制洗衣机.docx

《EDA设计基于VHDL的简易全自动控制洗衣机.docx》由会员分享,可在线阅读,更多相关《EDA设计基于VHDL的简易全自动控制洗衣机.docx(19页珍藏版)》请在冰点文库上搜索。

EDA设计基于VHDL的简易全自动控制洗衣机.docx

EDA设计基于VHDL的简易全自动控制洗衣机

湖北民族学院

《电子综合设计EDA》课程设计作业

班级:

0308404学号:

030840424姓名:

李永杰

开课学院:

信息工程学院任课老师:

袁海林成绩:

题目:

1、基于EDA的简易全自动洗衣机控制器设计

2、通信系统信道编码器设计

作业要求:

《电子系统设计EDA》课程是电子信息工程、自动控制、计算机科学和工程等专业的技术课之一,具有很强的工程实践性。

课程学习要求学生:

掌握现代硬件数字电路的软件化设计的基本方法、掌握使用VHDL及EDA工具开发设计数字系统的基本方法以及对现代电子系统设计技术有一定的了解

设计报告要求:

1、按照设计题目要求构建设计框图2、用EDA设计软件按照设计题目要求进行原型设计并给出仿真结果3、对仿真结果进行一定的讨论4、原程序和仿真波形等附录。

教师评语:

教师签名:

年月日

电子综合设计EDA综合设计题

设计一简易全自动洗衣机控制器。

该控制器由两大状态A和B组成,每个状态分三个子状态,每个状态分别由选择A和选择B控制。

其中A为步进选择按纽,每步跳转一个子状态、B也为步进选择按纽,但每步选择B中的所有组合中的一种。

当启动时,时间序列控制器按已选的B类子状态顺序执行。

过程启动由启动/暂停键控制(暂停键在过程启动后任意时间可暂停/恢复过程)

过程启动后机盖开启应均能暂停过程,复盖间停30秒后重新继续原过程。

A:

强洗标准弱洗

B:

洗涤漂洗甩干

(洗涤,漂洗时电机分别正转、反转)

强洗:

(共36分钟)

洗涤18分

漂洗14分

甩干4分

(洗涤时电机分别正转4分、反转4分,正反转间停30秒;漂洗时电机分别正转3分、反转3分,正反转间停30秒;甩干时电机分别正转1.5分,间停30秒)

标准:

(共26分钟)

洗涤14分

漂洗8分

甩干4分

(洗涤时电机分别正转3分、反转3分,正反转间停30秒;漂洗时电机分别正转1.5分、反转1.5分,正反转间停30秒;甩干时电机分别正转1.5分,间停30秒)

弱洗(共20分钟)

洗涤10分

漂洗6分

甩干4分

(洗涤时电机分别正转2分、反转2分,正反转间停30秒;漂洗时电机分别正转1分、反转1分,正反转间停30秒;甩干时电机分别正转1.5分,间停30秒)

设定秒脉冲已给定,指示为LED,整过程完成后,蜂鸣器响30秒。

整个设计为正逻辑。

一、程序如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYstudentIS

PORT(COUNT_N,COUNT_M,START,COOK,CLK:

INSTD_LOGIC;

LOOK:

OUTSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(1DOWNTO0));

ENDSTUDENT;

ARCHITECTUREBEHAVOFstudentIS

SIGNALDT1,DT2:

STD_LOGIC_VECTOR(1DOWNTO0);

SIGNALDICSOUNT,TEM:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALDCP:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALCT:

STD_LOGIC_VECTOR(5DOWNTO0);

SIGNALCT1,CT2:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALSG,CMKS:

STD_LOGIC;

BEGIN

PROCESS(COUNT_N,SG)

BEGIN

IFSG='1'THEN

DT1<="00";

ELSIFCOUNT_N'EVENTANDCOUNT_N='1'THEN

IFDT1=3THEN

DT1<="01";

ELSE

DT1<=DT1+1;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(COUNT_M,SG)

BEGIN

IFSG='1'THEN

DT2<="00";

ELSIFCOUNT_M'EVENTANDCOUNT_M='1'THEN

IFDT2=3THEN

DT2<="01";

ELSE

DT2<=DT2+1;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(START)

BEGIN

IFSG='1'THEN

CMKS<='0';

ELSIFSTART'EVENTANDSTART='1'THEN

DICSOUNT<=DT1&DT2;CMKS<=CMKSXOR'1';

ENDIF;

ENDPROCESS;

PROCESS(CLK,START,COOK)

BEGIN

IFSTART='1'ANDDCP="0000"THEN

DCP<=DICSOUNT;

ELSIFCLK'EVENTANDCLK='1'THEN

IFCOOK='1'THEN

DOUT<="00";

ELSIFSTART='1'ANDDCP>"0000"THEN

DOUT<="00";

ELSIFSG='1'THEN

IFCT1<"0001"THEN

CT1<="0000";SG<='0';

ENDIF;

ELSIFCMKS='1'THEN

CASEDCPIS

WHEN"0101"=>

IFCT<35THEN

CT<=CT+1;

IFCT1<8THEN

DOUT<="01";CT1<=CT1+1;

ELSIFCT1=8THEN

DOUT<="00";CT1<=CT1+1;

ELSIFCT2<8THEN

DOUT<="10";CT2<=CT2+1;

ELSIFCT2=8THEN

DOUT<="00";CT1<="0000";CT2<="0000";

ENDIF;

ELSE

DCP<="0110";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00";

ENDIF;

WHEN"0110"=>

IFCT<27THEN

CT<=CT+1;

IFCT1<6THEN

DOUT<="01";CT1<=CT1+1;

ELSIFCT1=6THEN

DOUT<="00";CT1<=CT1+1;

ELSIFCT2<6THEN

DOUT<="10";CT2<=CT2+1;

ELSIFCT2=6THEN

DOUT<="00";CT1<="0000";CT2<="0000";

ENDIF;

ELSE

DCP<="0111";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00";

ENDIF;

WHEN"0111"=>

IFCT<8THEN

CT<=CT+1;

IFCT1<3THEN

DOUT<="01";CT1<=CT1+1;

ELSIFCT1=3THEN

DOUT<="00";CT1<=CT1+1;

ELSIFCT2<3THEN

DOUT<="10";CT2<=CT2+1;

ELSIFCT2=3THEN

DOUT<="00";CT1<="0000";CT2<="0000";

ENDIF;

ELSE

DCP<="0000";CT<="000000";CT1<="0000";CT2<="0000";SG<='1';

ENDIF;

WHEN"1001"=>

IFCT<27THEN

CT<=CT+1;

IFCT1<6THEN

DOUT<="01";CT1<=CT1+1;

ELSIFCT1=6THEN

DOUT<="00";CT1<=CT1+1;

ELSIFCT2<6THEN

DOUT<="10";CT2<=CT2+1;

ELSIFCT2=6THEN

DOUT<="00";CT1<="0000";CT2<="0000";

ENDIF;

ELSE

DCP<="1010";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00";

ENDIF;

WHEN"1010"=>

IFCT<15THEN

CT<=CT+1;

IFCT1<3THEN

DOUT<="01";CT1<=CT1+1;

ELSIFCT1=3THEN

DOUT<="00";CT1<=CT1+1;

ELSIFCT2<3THEN

DOUT<="10";CT2<=CT2+1;

ELSIFCT2=3THEN

DOUT<="00";CT1<="0000";CT2<="0000";

ENDIF;

ELSE

DCP<="1011";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00";

ENDIF;

WHEN"1011"=>

IFCT<8THEN

CT<=CT+1;

IFCT1<3THEN

DOUT<="01";CT1<=CT1+1;

ELSIFCT1=3THEN

DOUT<="00";CT1<=CT1+1;

ELSIFCT2<3THEN

DOUT<="10";CT2<=CT2+1;

ELSIFCT2=3THEN

DOUT<="00";CT1<="0000";CT2<="0000";

ENDIF;

ELSE

DCP<="0000";CT<="000000";CT1<="0000";CT2<="0000";SG<='1';

ENDIF;

WHEN"1101"=>

IFCT<19THEN

CT<=CT+1;

IFCT1<4THEN

DOUT<="01";CT1<=CT1+1;

ELSIFCT1=4THEN

DOUT<="00";CT1<=CT1+1;

ELSIFCT2<4THEN

DOUT<="10";CT2<=CT2+1;

ELSIFCT2=4THEN

DOUT<="00";CT1<="0000";CT2<="0000";

ENDIF;

ELSE

DCP<="1110";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00";

ENDIF;

WHEN"1110"=>

IFCT<11THEN

CT<=CT+1;

IFCT1<2THEN

DOUT<="01";CT1<=CT1+1;

ELSIFCT1=2THEN

DOUT<="00";CT1<=CT1+1;

ELSIFCT2<2THEN

DOUT<="10";CT2<=CT2+1;

ELSIFCT2=2THEN

DOUT<="00";CT1<="0000";CT2<="0000";

ENDIF;

ELSE

DCP<="1111";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00";

ENDIF;

WHEN"1111"=>

IFCT<8THEN

CT<=CT+1;

IFCT1<3THEN

DOUT<="01";CT1<=CT1+1;

ELSIFCT1=3THEN

DOUT<="00";CT1<=CT1+1;

ELSIFCT2<3THEN

DOUT<="10";CT2<=CT2+1;

ELSIFCT2=3THEN

DOUT<="00";CT1<="0000";CT2<="0000";

ENDIF;

ELSE

DCP<="0000";CT<="000000";CT1<="0000";CT2<="0000";SG<='1';

ENDIF;

WHENOTHERS=>

DOUT<="00";

ENDCASE;

ENDIF;

ENDIF;

ENDPROCESS;

LOOK<=SG;

ENDBEHAV;

二、仿真波形如下

强洗全部过程

强洗漂洗、甩干

强洗(甩干)

标准全部过程

标准(漂洗、甩干)

标准(甩干)

弱洗全过程

弱洗(漂洗、甩干)

九、弱洗(甩干)

强开盖子:

一、强洗强开盖

一、标准强开盖

二、弱洗强开盖

暂停和启动

一、强洗暂停

二、强洗重新启动

三、标准暂停

四、标准重新启动

五、弱洗暂停

六、弱洗重新启动

两次洗衣

一、两次强洗

两次标准(漂洗、甩干)

二、两次弱甩干

三、设计思想讨论

设计时参考了已有程序,此芯片有五个输入和三个输出,输入COUNT_M和输入COUNT_N是状态控制键,输入START是输入启动和暂停键,以及一个时钟CLK。

输出是洗衣结束铃声端口和电机驱动端口。

在设计中,为便于调试和观察将时钟周期假设为30S。

本次设计大致可以分成两个模块来看待,控制端和工作端。

控制部分使用了三个进程来处理,进程一控制状态COUNT_M,进程二控制状态COUNT_N,进程三控制开始和暂停。

工作部分使用了一个进程来处理,在该进程中主要处理强制开盖,洗衣的各个状态,以及洗衣结束后的铃声。

控制端COUNT_M中,SG是工作结束标志信号,信号TS控制洗衣机的暂停和重新启动,DT是状态的中间变量。

COOKK为强开洗衣机盖子信号端,DCP输入状态中间信号。

洗衣机正常工作过程:

洗衣机总共有九种工作状态,这九种状态可以分成三大部分,强洗,标准,弱洗,此三种状态的洗衣过程类似,因此以强洗来解释说明。

洗涤完成后,将信号TP变换到漂洗状态,然后变换到甩干,甩干结束后将TP置零,以及输出状态置一。

然后等待下次洗涤。

四、心得体会

这次EDA对我来说是一项很大的挑战,看到题目后几乎没有思路,翻阅教材,看了下自动洗衣机那张的讲解,有了眉目,但是设计的内容过于庞杂,很难下手。

这时候,我选择从已有的程序着手,先看懂,然后和同学讨论思路,最后形成了这个作业。

做仿真波形的时候,就是验证结论的时候,过程还算顺利。

通过这次作业,我觉得许多困难的事,需要借鉴已有的经验,请查阅资料,和同学交流讨论,就基本可以完成。

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

当前位置:首页 > 农林牧渔 > 林学

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

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