EDA技术大作业-全自动洗衣机控制器
EDA技术大作业电子钟电路设计要求:1、准确计时,以数字形式显示时、分、秒的时间;2、小时为24进制,分与秒的计时要求为60进制;3、具有校时功能;4、整点报时。姓名:武启明学号:1893130125专业:光电信息科学与班级:131工程价成绩:评阅人:安徽科技学院数理与信息工程学院物电系ED雇自动洗衣机控制器1设计目的ED世术与应用课程是电子信息工程、自动控制、计算机科学与工 程等专业的技术课之一,具有很强的工程实践性。通过本次课程设计来掌握现代硬 件数字电路的软件化设计的基本方法、掌握应用 VHD汲EDAC具开发设计各种 电路的基本方法,以及对现代电子设计自动化技术有一定的了解,会把所学的 专业知识更好的用到实践中去。2设计的主要内容和要求(1)设计一简易全自动洗衣机控制器。 该控制器由两大状态A和B组成, 每个状态分三个子状态,每个状态分别由选择 A和选择B控制。其中A为步进 选择按纽,每步跳转一个子状态、B也为步进选择按纽,但每步选择 B中的所有 组合中的一种。(2)过程启动由启动/暂停键控制(暂停键在过程启动后任意时间可暂停 /恢 复过程)。(3)过程启动后洗衣机盖开启能任意控制。(4)能设置实现多次洗衣的功能。3整体设计方案本次设计大致可以分成两个模块来看待:控制端和工作端。控制部分使用了三个进程来处理, 进程一控制状态COUNT-MS程二控制状态COUNT-N进程三控制开始和暂停。其中,COUNT二M当连顺出现一个,两个, 三个高电平时分别表示强洗,标准,弱洗三种状态的洗衣过程。再者,COUNT.:N 当出现一个,两个,三个高电平时分别表示洗涤,漂洗与甩干,甩干。其次, 信号START空制洗衣机的暂停和重新启动。工作部分使用了一个进程来处理,在该进程中主要处理强制开盖,洗衣的各个状态。控制端中,中间变量 SG是工作结束标志信号,DT是状态的中间变量。COOK&强开洗衣机盖子信号端,DC喻入状态中间信号。LOO劭时间到输 出停机,当其输出为高电平时所有数据为 0。然后等待下次洗涤始工作,直至再 次按下START键,又从新开洗衣机正常工作过程。与暂停后的再次启动不同。ST为时间计数的中间变量。整体设计方案如下:图3-1 整体设计方框图4软件设计EDA工具在ED世术应用中占据极其重要的位置,EDA的核心是利用计算机完成电子设计全程自动化,因此基于计算机环境的EDA软件的支持是必不可少 的。此次设计所用EDACC具是由著名的Alter公司生产的MAW plus H工具软件,它是一种集成的开发环境,支持原理图、VHD次口 Verilog语言文本文件,以及波形文件作为设计输入,并支持这些文件的人文混合设计。本实验主要采用单 纯的软件仿真来做,不涉及硬件电路的设计。故主要是先编写程序,然后编译, 再时序仿真。最后观查仿真结果是否符合当初的设计要求。4.1 库和实体及信号声明部分LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-库使用说明ENTITY xiyiji ISPORT(COUNT_N,COUNT_M,START,COOK,CLSTD_LOGIC;-端口说明 LOOK:OUT STD_LOGIC;DOUT :OUT STD_LOGIC_VECTOR(DOWNTO0);END xiyiji;ARCHITECTUREBEHAV OF xiyiji IS-内部信号声明SIGNAL DT1,DT2:STD_LOGIC_VECTOR(DOWNTO0);SIGNAL DICSOUNT,TEM:STD_LOGIC_VECTOD3WNTG0);SIGNAL DCP:STD_LOGIC_VECTOR(3OWNTO0);SIGNAL CT:STD_LOGIC_VECTOR(DOWNTO0);SIGNAL CT1,CT2:STD_LOGIC_VECTOR(D OWNTO0);SIGNAL SG,CMKS:STD_LOGIC;BEGIN4.2 进程一(控制状态 COUNT)N每次按下 COUNT除次代表00-01-10-11状态。当COUNT_NI11时又跳到01状态,如此循环。其中01状态代表强洗状态,10代表标准状态,11代表弱洗状态。由于是单纯的软件仿真,故用COUNT_N)上升沿代表按下COUNT_NoPROCESS(COUNT_N,SG)-进程一控制状态COUNT_NBEGINIF SG=1 THENDT1<="00"ELSIF COUNT_NEVENTAND COUNT_N=1 THENIF DT1=3 THENDT1<="01"ELSEDT1<=DT1 + 1;END IF;END IF;END PROCESS;4.3 进程二(控制状态 COUNT)M每次按下COUNT_M次代表00-01-10-11状态。当COUNT_M 11时 又跳到01状态,如此循环。其中01状态代表洗涤状态,10代表漂洗甩干状态, 11代表甩干状态。由于是单纯的软件仿真,故用COUNT_I上升沿代表按下COUNT_MoPROCESS(COUNT_M,SG)-进程二控制状态COUNT_M BEGINIF SG=1 THENDT2<="00"ELSIF COUNT_MEVENTAND COUNT_M=1 THENIF DT2=3 THENDT2<="01" ELSEDT2<=DT2+1;END IF;END IF;END PROCESS;4.4 进程三(控制开始和暂停)按下START弋表开始洗衣状态,再次按下代表暂停状态,再次按下代表停止状态如此循序进行。由于是单纯的软件仿真。故用START的上升沿代表按下STARTaPROCESS(START)-进程三控制开始和暂停BEGINIF SG=1 THENCMKS<=0;ELSIF STARTEVENT AND START=1 THENDICSOUNT<=DT1&DT2;CMKS<=CMOR1;END IF;END PROCESS;4.5 进程四(工作部分)强开盖:当时钟信号为上升沿的时候,按下强开盖按钮,无论洗衣机是 何种洗衣状态都要开启洗衣机盖。用COO的上升沿彳t表按下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)-进程四工作部分BEGINIF START=1 AND DCP="0000" THEN-启动CP<=DICSOUNT;ELSIF CLKEVENT AND CLK=1 THENIF COOK=1 THEN-强开盖DOUT<="00"ELSIF START=1 AND DCP>"0000" THENDOUT<="00"ELSIF SG=1 THENIF CT1<"0001" THENCT1<="0000"SG<=0;END IF;ELSIF CMKS=1 THENCASE DCP ISWHEN "0101"=>-强洗部分IF CT<35 THENCT<=CT+1;IF CT1<8 THENDOUT<="01"CT1<=CT1 + 1;ELSIF CT1=8 THENDOUT<="00"CT1<=CT1 + 1;ELSIF CT2<8 THENDOUT<="10"CT2<=CT2+1;ELSIF CT2=8 THENDOUT<="00"CT1<="0000"CT2<="0000"END IF;ELSEDCP<="0110"CT<="000000”;CT1<="0000"CT2<="0000"DOUT<="00"END IF;WHEN "0110"=>-强洗-漂洗-甩干IF CT<27 THENCT<=CT+1;IF CT1<6 THENDOUT<="01"CT1<=CT1 + 1;ELSIF CT1=6 THENDOUT<="00"CT1<=CT1 + 1;ELSIF CT2<6 THENDOUT<="10"CT2<=CT2+1;ELSIF CT2=6 THENDOUT<="00"CT1<="0000"CT2<="0000"END IF;ELSEDCP<="0111"CT<="000000”;CT1<="0000"CT2<="0000"DOUT<="00"END IF;WHEN "0111"=>IF CT<8 THEN-强洗-甩干CT<=CT+1;IF CT1<3 THEN-甩干DOUT<="01"CT1<=CT1 + 1;ELSIF CT1=3 THENDOUT<="00"CT1<=CT1 + 1;ELSIF CT2<3 THENDOUT<="10"CT2<=CT2+1;ELSIF CT2=3 THENDOUT<="00"CT1<="0000"CT2<="0000"END IF;ELSEDCP<="0000"CT<="000000”;CT1<="0000"CT2<="0000"SG<=1;END IF;WHEN "1001"=>- 标准部分IF CT<27 THENCT<=CT+1;IF CT1<6 THENDOUT<="01"CT1<=CT1 + 1;ELSIF CT1=6 THENDOUT<="00"CT1<=CT1 + 1;ELSIF CT2<6 THENDOUT<="10"CT2<=CT2+1;ELSIF CT2=6 THENDOUT<="00"CT1<="0000"CT2<="0000"END IF;ELSEDCP<="1010"CT<="000000”;CT1<="0000"CT2<="0000"DOUT<="00"END IF;WHEN "1010"=>- 标准-漂洗甩干IF CT<15 THENCT<=CT+1;IF CT1<3 THEN-甩干DOUT<="01"CT1<=CT1 + 1;ELSIF CT1=3 THENDOUT<="00"CT1<=CT1 + 1;ELSIF CT2<3 THENDOUT<="10"CT2<=CT2+1;ELSIF CT2=3 THENDOUT<="00"CT1<="0000"CT2<="0000"END IF;ELSEDCP<="1011"CT<="000000”;CT1<="