《EDA技术》大作业电子钟电路设计要求:1、准确计时,以数字形式显示时、分、秒的时间;2、小时为24进制,分与秒的计时要求为60进制;3、具有校时功能;、整点报时。
4:姓名:学号武启明1893130125:班级科学:专业与光电信息131 工程安徽科技学院数理与信息工程学院物电系EDA全自动洗衣机控制器1设计目的《EDA技术与应用》课程是电子信息工程、自动控制、计算机科学与工程等专业的技术课之一,具有很强的工程实践性。
通过本次课程设计来掌握现代硬件数字电路的软件化设计的基本方法、掌握应用VHDL及EDA 工具开发设计各种电路的基本方法,以及对现代电子设计自动化技术有一定的了解,会把所学的专业知识更好的用到实践中去。
2设计的主要内容和要求(1)设计一简易全自动洗衣机控制器。
该控制器由两大状态A和B组成,每个状态分三个子状态,每个状态分别由选择A和选择B控制。
其中A为步进选择按纽,每步跳转一个子状态、B也为步进选择按纽,但每步选择B中的所有组合中的一种。
(2)过程启动由启动/暂停键控制(暂停键在过程启动后任意时间可暂停/恢复过程)。
(3)过程启动后洗衣机盖开启能任意控制。
(4)能设置实现多次洗衣的功能。
3整体设计方案本次设计大致可以分成两个模块来看待:控制端和工作端。
控制部分使用了三个进程来处理,进程一控制状态COUNT_M,进程二控制状态:当连顺出现一个,两个,COUNT_M,进程三控制开始和暂停。
其中,COUNT_N.三个高电平时分别表示强洗,标准,弱洗三种状态的洗衣过程。
再者,COUNT_N:当出现一个,两个,三个高电平时分别表示洗涤,漂洗与甩干,甩干。
其次,信号START控制洗衣机的暂停和重新启动。
工作部分使用了一个进程来处理,在该进程中主要处理强制开盖,洗衣的各个状态。
控制端中,中间变量SG是工作结束标志信号, DT是状态的中间变量。
COOK为强开洗衣机盖子信号端,DCP输入状态中间信号。
LOOK为时间到输出停机,当其输出为高电平时所有数据为0。
然后等待下次洗涤始工作,直至再次按下START键,又从新开洗衣机正常工作过程。
与暂停后的再次启动不同。
ST 为时间计数的中间变量。
整体设计方案如下:图3-1 整体设计方框图4 软件设计EDA工具在EDA技术应用中占据极其重要的位置,EDA的核心是利用计算机软件的支持是必不可少EDA完成电子设计全程自动化,因此基于计算机环境的.的。
此次设计所用EDA工具是由著名的Alter公司生产的MAX+plus Ⅱ工具软件,它是一种集成的开发环境,支持原理图、VHDL和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,CLK:IN STD_LOGIC;--端口说明LOOK:OUT STD_LOGIC;DOUT :OUT STD_LOGIC_VECTOR(1 DOWNTO 0));END xiyiji;ARCHITECTURE BEHAV 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 SIGNALSIGNAL SG,CMKS:STD_LOGIC;BEGIN4.2进程一(控制状态COUNT_N)每次按下COUNT_N依次代表00-01-10-11状态。
当COUNT_N为11时又跳到01状态,如此循环。
其中01状态代表强洗状态,10代表标准状态,11代表弱洗状态。
由于是单纯的软件仿真,故用COUNT_N 的上升沿代表按下COUNT_N键。
PROCESS(COUNT_N,SG) --进程一控制状态COUNT_N BEGINIF SG='1' THENDT1<=ELSIF COUNT_N'EVENT AND COUNT_N='1' THENIF DT1=3 THENDT1<=;ELSEDT1<=DT1+1;END IF;END IF;END PROCESS;)COUNT_M进程二(控制状态4.3.每次按下COUNT_M依次代表00-01-10-11状态。
当COUNT_M为11时又跳到01状态,如此循环。
其中01状态代表洗涤状态,10代表漂洗甩干状态,11代表甩干状态。
由于是单纯的软件仿真,故用COUNT_M的上升沿代表按下COUNT_M键。
PROCESS(COUNT_M,SG) --进程二控制状态COUNT_MBEGINIF SG='1' THENDT2<=ELSIF COUNT_M'EVENT AND COUNT_M='1' THENIF DT2=3 THENDT2<=;ELSEDT2<=DT2+1;END IF;END IF;END PROCESS;4.4进程三(控制开始和暂停)按下START代表开始洗衣状态,再次按下代表暂停状态,再次按下代表停止状态如此循序进行。
由于是单纯的软件仿真。
故用START 的上升沿代表按下START键。
PROCESS(START)--进程三控制开始和暂停BEGINIF SG='1' THENCMKS<='0';ELSIF START'EVENT AND START='1' THENDICSOUNT<=DT1&DT2;CMKS<=CMKS XOR '1';END IF;END PROCESS;4.5进程四(工作部分)强开盖:当时钟信号为上升沿的时候,按下强开盖按钮,无论洗衣机是何种洗衣状态都要开启洗衣机盖。
用COOK的上升沿代表按下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=THEN --启动CP<=DICSOUNT;ELSIF CLK'EVENT AND CLK='1' THENIF COOK='1' THEN --强开盖DOUT<=ELSIF START='1' AND DCP>THEN DOUT<=ELSIF SG='1' THENIF CT1<THENCT1<=END IF;ELSIF CMKS='1' THENCASE DCP ISWHEN 1=> --强洗部分IF CT<35 THENCT<=CT+1;IF CT1<8 THENDOUT<=;CT1<=CT1+1;ELSIF CT1=8 THENDOUT<=THEN CT2<8 ELSIFDOUT<=;CT2<=CT2+1;ELSIF CT2=8 THENDOUT<=END IF;ELSEDCP<= 0;CT<=END IF;WHEN 0=> --强洗-漂洗-甩干 IF CT<27 THENCT<=CT+1;IF CT1<6 THENDOUT<=;CT1<=CT1+1; ELSIF CT1=6 THENDOUT<=ELSIF CT2<6 THENDOUT<=;CT2<=CT2+1;ELSIF CT2=6 THENDOUT<=END IF;ELSEDCP<= 1;CT<=END IF;WHEN 1=>IF CT<8 THEN --强洗-甩干CT<=CT+1;IF CT1<3 THEN --甩干DOUT<=;CT1<=CT1+1;ELSIF CT1=3 THENDOUT<=ELSIF CT2<3 THENDOUT<=;CT2<=CT2+1;ELSIF CT2=3 THENDOUT<=END IF;ELSEDCP<=END IF;WHEN @1=> -- 标准部分IF CT<27 THENCT<=CT+1;IF CT1<6 THEN DOUT<=;CT1<=CT1+1;THEN CT1=6 ELSIFDOUT<=ELSIF CT2<6 THENDOUT<=;CT2<=CT2+1; ELSIF CT2=6 THENDOUT<=END IF;ELSEDCP<=A0;CT<=END IF;WHEN A0=> -- 标准-漂洗甩干 IF CT<15 THENCT<=CT+1;IF CT1<3 THEN --甩干DOUT<=;CT1<=CT1+1; ELSIF CT1=3 THENDOUT<=ELSIF CT2<3 THENDOUT<=;CT2<=CT2+1; ELSIF CT2=3 THENDOUT<=END IF;ELSEDCP<=A1;CT<=END IF;WHEN A1=> IF CT<8 THEN --标准-甩干CT<=CT+1;IF CT1<3 THEN --甩干DOUT<=;CT1<=CT1+1;ELSIF CT1=3 THENDOUT<=ELSIF CT2<3 THENDOUT<=;CT2<=CT2+1;ELSIF CT2=3 THENDOUT<=END IF;ELSEDCP<=END IF;WHEN H1=> -- 弱洗部分IF CT<19 THENCT<=CT+1; IF CT1<4 THENDOUT<=;CT1<=CT1+1;ELSIF CT1=4 THENDOUT<=ELSIF CT2<4 THENDOUT<=;CT2<=CT2+1;ELSIF CT2=4 THENDOUT<=END IF;ELSEDCP<=I0;CT<=END IF;WHEN I0=> --弱洗-漂洗-甩干IF CT<11 THENCT<=CT+1;IF CT1<2 THEN DOUT<=;CT1<=CT1+1; ELSIF CT1=2 THENDOUT<=ELSIF CT2<2 THENDOUT<=;CT2<=CT2+1;ELSIF CT2=2 THENDOUT<=IF; ENDELSEDCP<=I1;CT<=END IF;WHEN I1=> --弱洗-甩干IF CT<8 THENCT<=CT+1; IF CT1<3 THEN --甩干DOUT<=;CT1<=CT1+1;ELSIF CT1=3 THENDOUT<=ELSIF CT2<3 THENDOUT<=;CT2<=CT2+1;ELSIF CT2=3 THENDOUT<=END IF;ELSEDCP<=END IF;WHEN OTHERS=>DOUT<=CASE; ENDEND IF;END IF;END PROCESS; --结束工作进程LOOK<=SG;END BEHAV;5 时序仿真5.1洗涤共有9种功能:强洗全过程,强洗漂洗和甩干,强洗甩干;标准全过程,标准漂洗和甩干,标准甩干;弱洗全过程,弱洗漂洗和甩干弱洗甩干。