1、EDA技术大作业 全自动洗衣机控制器 EDA技术大作业 电子钟电路设计 要求: 1、准确计时,以数字形式显示时、分、秒的时间; 2、小时为24进制,分与秒的计时要求为60进制; 3、具有校时功能; 、整点报时。4 : 姓名:学号 武启明1893130125 :班级科学:专业与光电信息 131 工程 教 师 评价 成绩: 评阅人: 安徽科技学院数理与信息工程学院物电系 EDA全自动洗衣机控制器 1设计目的 EDA技术与应用课程是电子信息工程、自动控制、计算机科学与工程等 专业的技术课之一,具有很强的工程实践性。通过本次课程设计来掌握现代硬件数字电路的软件化设计的基本方法、掌握应用VHDL及EDA
2、工具开发设计各种电路的基本方法,以及对现代电子设计自动化技术有一定的了解,会把所学的专业知识更好的用到实践中去。 2设计的主要内容和要求 (1)设计一简易全自动洗衣机控制器。该控制器由两大状态A和B组成, 每个状态分三个子状态,每个状态分别由选择A和选择B控制。其中A为步进选择按纽,每步跳转一个子状态、B也为步进选择按纽,但每步选择B中的所有组合中的一种。 (2)过程启动由启动/暂停键控制(暂停键在过程启动后任意时间可暂停/恢复过程)。 (3)过程启动后洗衣机盖开启能任意控制。 (4)能设置实现多次洗衣的功能。 3整体设计方案 本次设计大致可以分成两个模块来看待:控制端和工作端。 控制部分使用
3、了三个进程来处理,进程一控制状态COUNT_M,进程二控制状态:当连顺出现一个,两个,COUNT_M,进程三控制开始和暂停。其中,COUNT_N 三个高电平时分别表示强洗,标准,弱洗三种状态的洗衣过程。再者,COUNT_N:当出现一个,两个,三个高电平时分别表示洗涤,漂洗与甩干,甩干。其次,信号START控制洗衣机的暂停和重新启动。 工作部分使用了一个进程来处理,在该进程中主要处理强制开盖,洗衣的各 个状态。控制端中,中间变量SG是工作结束标志信号, DT是状态的中间变量。COOK为强开洗衣机盖子信号端,DCP输入状态中间信号。LOOK为时间到输出停机,当其输出为高电平时所有数据为0。然后等待
4、下次洗涤始工作,直至再次按下 START 键,又从新开洗衣机正常工作过程。与暂停后的再次启动不同。ST 为时间计数的中间变量。 整体设计方案如下: 图3-1 整体设计方框图 4 软件设计 EDA工具在EDA技术应用中占据极其重要的位置,EDA的核心是利用计算机软件的支持是必不可少EDA完成电子设计全程自动化,因此基于计算机环境的 的。此次设计所用EDA工具是由著名的Alter公司生产的MAXplus工具软件,它是一种集成的开发环境,支持原理图、VHDL和Verilog语言文本文件,以及波形文件作为设计输入,并支持这些文件的人文混合设计。本实验主要采用单纯的软件仿真来做,不涉及硬件电路的设计。故
5、主要是先编写程序,然后编译,再时序仿真。最后观查仿真结果是否符合当初的设计要求。 4.1库和实体及信号声明部分 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; -库使用说明 ENTITY xiyiji IS PORT(COUNT_N,COUNT_M,START,COOK,CLK:IN STD_LOGIC;-端口说明 LOOK:OUT STD_LOGIC; DOUT :OUT STD_LOGIC_VECTOR(1 DOWNTO 0); END xiyiji; ARCHITECTURE BEHA
6、V OF xiyiji IS -内部信号声明 SIGNAL DT1,DT2:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL DICSOUNT,TEM:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL DCP:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL CT:STD_LOGIC_VECTOR(5 DOWNTO 0); 0); DOWNTO CT1,CT2:STD_LOGIC_VECTOR(3 SIGNAL SIGNAL SG,CMKS:STD_LOGIC; BEGIN 4.2进程一(控制状态COUNT_N) 每次按下
7、COUNT_N依次代表00-01-10-11状态。当COUNT_N为11时 又跳到01状态,如此循环。其中01状态代表强洗状态,10代表标准状态,11代表弱洗状态。由于是单纯的软件仿真,故用COUNT_N的上升沿代表按下COUNT_N键。 PROCESS(COUNT_N,SG) -进程一控制状态COUNT_N BEGIN IF SG=1 THEN DT1= ELSIF COUNT_NEVENT AND COUNT_N=1 THEN IF DT1=3 THEN DT1=; ELSE DT1=DT1+1; END IF; END IF; END PROCESS; )COUNT_M进程二(控制状态4
8、.3 每次按下COUNT_M依次代表00-01-10-11状态。当COUNT_M为11时又跳到01状态,如此循环。其中01状态代表洗涤状态,10代表漂洗甩干状态,11代表甩干状态。由于是单纯的软件仿真,故用COUNT_M的上升沿代表按下COUNT_M键。 PROCESS(COUNT_M,SG) -进程二控制状态 COUNT_M BEGIN IF SG=1 THEN DT2= ELSIF COUNT_MEVENT AND COUNT_M=1 THEN IF DT2=3 THEN DT2=; ELSE DT2=DT2+1; END IF; END IF; END PROCESS; 4.4进程三(控
9、制开始和暂停) 按下START代表开始洗衣状态,再次按下代表暂停状态,再次按下代表停止状态如此循序进行。由于是单纯的软件仿真。故用START的上升沿代表按下START键。 PROCESS(START) -进程三控制开始和暂停 BEGIN IF SG=1 THEN CMKS=0; ELSIF STARTEVENT AND START=1 THEN DICSOUNT=DT1&DT2;CMKS=CMKS XOR 1; END IF; END PROCESS; 4.5进程四(工作部分) 强开盖:当时钟信号为上升沿的时候,按下强开盖按钮,无论洗衣机是何种洗 衣状态都要开启洗衣机盖。用COOK的上升沿代表
10、按下COOK按钮。 强洗(36分钟),洗涤时电机分别正、反转4分钟,正反转间停30秒;漂洗时电机分别正、反转3分钟,间停30秒;甩干时电机分别正转1.5分钟,间停30秒。 标准(28分钟),洗涤时电机分别正、反转3分钟,正反转间停30秒;漂洗时电机分别正反转1.5分钟,间停30秒;甩干时电机分别正转1.5分钟,间停30秒。 弱洗(20分钟),洗涤时电机分别正、反转2分钟,正反转间停30秒;漂洗时电机分别正、反转1分钟,间停30秒;甩干时电机分别正转1.5分钟,间停30秒。 PROCESS(CLK,START,COOK) -进程四工作部分 BEGIN IF START=1 AND DCP=THE
11、N -启动 CP=DICSOUNT; ELSIF CLKEVENT AND CLK=1 THEN IF COOK=1 THEN -强开盖 DOUTTHEN DOUT= ELSIF SG=1 THEN IF CT1THEN CT1 -强洗部分 IF CT35 THEN CT=CT+1; IF CT18 THEN DOUT=;CT1=CT1+1; ELSIF CT1=8 THEN DOUT= THEN CT28 ELSIF DOUT=;CT2=CT2+1; ELSIF CT2=8 THEN DOUT= END IF; ELSE DCP= 0;CT -强洗-漂洗-甩干 IF CT27 THEN CT
12、=CT+1; IF CT16 THEN DOUT=;CT1=CT1+1; ELSIF CT1=6 THEN DOUT= ELSIF CT26 THEN DOUT=;CT2=CT2+1; ELSIF CT2=6 THEN DOUT= END IF; ELSE DCP= 1;CT IF CT8 THEN -强洗-甩干 CT=CT+1; IF CT13 THEN -甩干 DOUT=;CT1=CT1+1; ELSIF CT1=3 THEN DOUT= ELSIF CT23 THEN DOUT=;CT2=CT2+1; ELSIF CT2=3 THEN DOUT= END IF; ELSE DCP - 标
13、准部分 IF CT27 THEN CT=CT+1; IF CT16 THEN DOUT=;CT1=CT1+1; THEN CT1=6 ELSIF DOUT= ELSIF CT26 THEN DOUT=;CT2=CT2+1; ELSIF CT2=6 THEN DOUT= END IF; ELSE DCP=A0;CT - 标准-漂洗甩干 IF CT15 THEN CT=CT+1; IF CT13 THEN -甩干 DOUT=;CT1=CT1+1; ELSIF CT1=3 THEN DOUT= ELSIF CT23 THEN DOUT=;CT2=CT2+1; ELSIF CT2=3 THEN DOU
14、T= END IF; ELSE DCP=A1;CT IF CT8 THEN -标准-甩干 CT=CT+1; IF CT13 THEN -甩干 DOUT=;CT1=CT1+1; ELSIF CT1=3 THEN DOUT= ELSIF CT23 THEN DOUT=;CT2=CT2+1; ELSIF CT2=3 THEN DOUT= END IF; ELSE DCP - 弱洗部分 IF CT19 THEN CT=CT+1; IF CT14 THEN DOUT=;CT1=CT1+1; ELSIF CT1=4 THEN DOUT= ELSIF CT24 THEN DOUT=;CT2=CT2+1; E
15、LSIF CT2=4 THEN DOUT= END IF; ELSE DCP=I0;CT -弱洗-漂洗-甩干 IF CT11 THEN CT=CT+1; IF CT12 THEN DOUT=;CT1=CT1+1; ELSIF CT1=2 THEN DOUT= ELSIF CT22 THEN DOUT=;CT2=CT2+1; ELSIF CT2=2 THEN DOUT= IF; END ELSE DCP=I1;CT -弱洗-甩干 IF CT8 THEN CT=CT+1; IF CT13 THEN -甩干 DOUT=;CT1=CT1+1; ELSIF CT1=3 THEN DOUT= ELSIF
16、CT23 THEN DOUT=;CT2=CT2+1; ELSIF CT2=3 THEN DOUT= END IF; ELSE DCP DOUT= CASE; END END IF; END IF; END PROCESS; -结束工作进程 LOOK=SG; END BEHAV; 5 时序仿真 5.1洗涤 共有9种功能:强洗全过程,强洗漂洗和甩干,强洗甩干;标准全过程,标准漂洗和甩干,标准甩干;弱洗全过程,弱洗漂洗和甩干弱洗甩干。现就其中几种做仿真如下: (1)强洗-漂洗和甩干 强洗状态时,COUNT_N按一下按键,仿真中用01表示。漂洗和甩干状态时COUNT_N按两下按键,仿真中用10表示。如
17、图则COUNT_N出现一个高电平,COUNT_M 出现两个高电平。仿真时序图如下: 漂洗和甩干-强洗5-1图 (2)弱洗-漂洗和甩干 弱洗状态时,COUNT_N按三下按键,仿真中用11表示。漂洗和甩干状态时COUNT_N按三下按键,仿真中用11表示。如图则COUNT_N出现三个高平,COUNT_M 出现三个高电平。仿真时序图如下 图5-2弱洗-漂洗和甩干 3)标准-甩干 标准状态时,COUNT_N按两下按键,甩干状态COUNT_N按三下按键,则COUNT_N出现两个高平,COUNT_M 出现三个高电平。仿真时序图如下 图5-3标准-甩干 强开盖5.2 强开盖也有9种情况,既在上述9种洗涤状态下
18、实现强开盖的功能。现已强洗强开盖为例做仿真如下: 图5-4强洗强开盖 5.3暂停重启 (1)暂停功能仿真 第一次按下START键,洗衣机工作。再次按下START键,洗衣机暂停。若再一次又按下START键,洗衣机又从新洗衣。做仿真时。在时钟秒冲上升沿下,START为高电平则相当于按下START键。则两次在时钟秒冲上升沿下,START为高电平则相当于两次按下代表暂停。时序仿真如下: 图5-5强洗暂停 (2)重启功能仿真 第一次按下START键,洗衣机工作。再次按下START键,洗衣机暂停。若再一次又按下START键,洗衣机又从新洗衣。做仿真时。在时钟秒冲上升沿下,START为高电平则相当于按下ST
19、ART键。则三次在时钟秒冲上升沿下,START为高电平则相当于三次按下代表重启。时序仿真如下: 图5-6强洗重启动 5.4两次洗衣 在第一次设置好COUNT_N和COUNT_M所决定的洗衣状态后。如到某一时 刻又再次设置COUNT_N和COUNT_M。则实现两次洗衣的功能。现以两次强洗衣; 为例做时序仿真如下 图5-7两次强洗 6设计总结 这次EDA课程设计对我来说是一项很大的挑战,看到题目后几乎没有思路,去图书馆借阅教材,看了下自动洗衣机讲解,有了眉目,但是设计的内容过于庞杂,很难下手。这时候,我选择从已有的程序着手,先看懂,然后和同学讨论思路,最后形成了这个结果。其次在电路仿真的过程中也会出现一些这样那样的问 题,通过这次课程设计,我觉得许多困难的事都需要自己耐心去思考,或者通过问同学和请教老师使问题得以解决。这次EDA课程设计中,我又学到了许多知识,包括书本上的和实际动手中的。更加巩固了EDA和数电等相关的一些知识,尤其是VHDL语言的使用。感谢学校给我们这次实际动脑动手的机会,使我们熟悉EDA的一些基础知识、理念,培养了我们的独立思考、动手能力和创新意识。同时为以后的学习和实践都会起到很大的帮助。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2