洗衣机控制电路设计 EDA课程设计

合集下载

EDA课程设计洗衣机控制器

EDA课程设计洗衣机控制器

北京印刷学院EDA课程设计报告课程题目:基于FPGA的洗衣机控制器的设计课程名称:EDA技术课程设计院(系):信息与机电工程学院专业:电子信息工程姓名:薛大神学号:098888888指导老师:xxx实习日期:2012年6月28日-6月30日目录1.系统设计 (3)1.1 设计要求 (3)1.2 总体设计方案 (3)1.2.1 设计思路 (3)1.2.2 系统组成 (3)2. 单元硬件电路设计 (4)2.1 键盘模块 (4)2.2 显示模块 (4)2.3 中心控制模块 (4)3. 软件设计 (4)3.1 控制模块程序设计 (5)3.2 显示译码程序设计 (5)3.3 按键去抖程序设计 (5)3.4 分频模块程序设计 (6)4. 系统仿真测试 (6)4.1 控制模块仿真 (6)4.2 按键去抖模块仿真 (7)4.3 分频模块仿真 (7)4.4 控制器操作演示 (8)附录一使用说明 (9)附录二电路原理图 (9)附录三管脚分配图 (9)附录四程序清单 (10)摘要:洗衣机控制电路由一片altera公司的cyclone2系列EP2C35F672C6的FPGA 作为中心控制器加上必要的外围电路组成,实现对洗衣机工作状态的控制。

芯片编程采用Quartus2作为开发工具,由控制模块,分频模块,按键去抖模块,显示译码模块组成,顶层使用原理图实现,底层由Verilog HDL语句实现。

中心控制器FPGA根据控制键盘的信号,向洗衣机发出正传,反转,待机信号,并通过数码管和LED灯显示当前的状态及剩余时间。

该洗衣机控制电路可以方便快捷的实现对洗衣机的控制和状态的显示功能。

关键字:洗衣机 FPGA Verilog HDL语言 cyclone21.系统设计1.1设计要求1.洗衣机的状态为待机5s→正转60s→待机5s→反转60s→,并用3个LED灯和7段显示器分别表示其工作状态和显示相应工作状态下的时间。

2.可自行设定洗衣机的循环次数,这里设置最大的循环次数为15次。

EDA-洗衣机控制器设计

EDA-洗衣机控制器设计
沈阳理工大学
2010年12月21日
主要内容:
设计一个洗衣机控制器,要求洗衣机有正转、反转、暂停三种状态。设定洗衣机的工作时间,要洗衣机在工作时间内完成:定时启动正转20秒暂停10秒反转20秒暂停10秒定时未到回到“正转20秒暂停10秒……”,定时到则停止,同时发出提示音。
基本要求:
1、设计一个电子定时器,控制洗衣机作如下运转:定时启动正转20秒暂停10秒反转20秒暂停10秒定时未到回到“正转20秒暂停10秒……”,定时到则停止;
2、设计框图
定时时间未到
二、设计步骤和调试过程
1、总体设计电路
洗衣机控制器电路主要有五大部分组成,包括:减法计数器、时序控制电路、预置时间和编码电路、数码管显示、译码器组成。
具体电路如下图所示:
2、模块设计和相应模块程序
⑴数码管显示
实现数码管显示
Library iee;
Use ieee.std_logic_1164.all;
"1000"=> "1111111"
"1001"=> "1111011"
End table;
a<=temp(6);b<=temp(5);c<=temp(4);d<=temp(3);e<=temp(2);f<=temp(1);
g<=temp(0);
end rtl
⑵时序电路
Library ieee;
Use ieee.std_logic_1164.all;
End if;
End if;
End if;
End process;
End rtl;
⑶预置时间和编码电路
Library ieee;
Use ieee.std_logic_1164.all;

EDA洗衣机实验

EDA洗衣机实验

实训报告课程名称:ED(洗衣机控制的设计)学生姓名:肖忠亮学号:8000610040专业班级:计算机软件南昌大学实训报告学生姓名:肖忠亮学号:8000610040专业班级:计算机软件实训类型:口验证□综合二设计口创新实训日期:实验成绩:一、实训工程名称洗衣机控制电路、实训目的1.熟悉verilog语言的程序的设计。

2.熟悉Quatus II软件的使用。

3.熟练掌握代码对硬件的烧写。

4.使用verilog语言设计具有创新的硬件电路三、实训要求1.熟悉EDA的开发环境Quartus II软件的使用;2.设计原理图或者功能模块;3.根据原理图或者功能图编写代码;4.实现洗衣机控制系统的仿真:四、实训基本原理(附原理图、源程序清单)控制功能说明:1.洗衣机的工作状态为待机5秒,正转60秒,待机5秒,反转60秒,并用3 个led灯和7段显示器表示工作的状态和显示相应工作状态下的时间。

2.可以自定义来控制洗衣机的循环次数。

3.具有紧急情况的处理功能,4.设定循环次数递减到0的时候就立刻报警,以表示设定的循环次数已经结束。

2 个数码管,34 表后二个数码管LED 洗衣机工作的的状态的显示//时钟信号// 暂停和开启按钮 (相当于洗衣机遇到经济情况的时候的处理) //电源开关//表示给增加循环次数的确定的按钮 //增加循环次数的开始//记录洗衣机的状态 //洗完后洗衣机的警报灯//4 个状态的灯管显示 //洗衣机工作的时间十位 //时间的个位显示 //记录洗衣要循环的次数十位显示 //循环次数的个位显示// 不工作状态,启动状态,第一个 5 秒状态, 60 秒状态,洗完了状态警报状态,停止状态。

// 用来对 COUNTER2 的数量进行的变换和计算的标志begindec=3'b000。

cur_state=END 。

COUNTER1='h00 。

COUNTER2='h00 。

end*/reg [2:0] state 。

eda技术课程设计洗衣机控制器

eda技术课程设计洗衣机控制器

课程EDA技术课程设计题目洗衣机控制器专业电子信息工程姓名主要内容、基本要求、主要参考资料等主要内容:设计一个洗衣机控制器,要求洗衣机有正转、反转、暂停三种状态。

设定洗衣机的工作时间,要洗衣机在工作时间内完成:定时启动→正转20秒→暂停10秒→反转20秒→暂停10秒→定时未到回到“正转20秒→暂停10秒→……”,定时到则停止,同时发出提示音。

基本要求:1、设计一个电子定时器,控制洗衣机作如下运转:定时启动→正转20秒→暂停10秒→反转20秒→暂停10秒→定时未到回到“正转20秒→暂停10秒→……”,定时到则停止;2、若定时到,则停机发出音响信号;3、用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由“开始”信号开始;4、三只LED灯表示“正转”、“反转”、“暂停”三个状态。

主要参考资料:[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.[2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006.[3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限2011.3.11指导教师专业负责人2011年3月7日一、总体设计思想1.基本原理从课程设计要求来看,要求实现电机的正传、反转、暂停,需要用LED灯的状态来表示,当显示时间前20秒正传、暂停10秒、反转20秒、再暂停10秒,如此一来,周期恰好是60秒。

洗衣机控制器的设计主要是定时器的设计。

由一片FPGA和外围电路构成了电器控制部分。

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

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

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

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

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

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

华东理工大学2009 -2010 学年第2学期《电子综合设计DEA》课程设计作业 2010.6班级:XXXX 学号: XXX 姓名:XXXX电子综合设计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秒。

整个设计为正逻辑。

一、程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY student ISPORT(COUNT_N,COUNT_M,START,COOK,CLK:IN STD_LOGIC;LOOK:OUT STD_LOGIC;DOUT :OUT STD_LOGIC_VECTOR(1 DOWNTO 0));END STUDENT;ARCHITECTURE BEHAV OF student ISSIGNAL 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);SIGNAL CT1,CT2:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SG,CMKS:STD_LOGIC;BEGINPROCESS(COUNT_N,SG)BEGINIF SG='1' THENDT1<="00";ELSIF COUNT_N'EVENT AND COUNT_N='1' THENIF DT1=3 THENDT1<="01";ELSEDT1<=DT1+1;END IF;END IF;END PROCESS;PROCESS(COUNT_M,SG)BEGINIF SG='1' THENDT2<="00";ELSIF COUNT_M'EVENT AND COUNT_M='1' THENIF DT2=3 THENDT2<="01";ELSEDT2<=DT2+1;END IF;END IF;END PROCESS;PROCESS(START)BEGINIF SG='1' THENCMKS<='0';ELSIF START'EVENT AND START='1' THENDICSOUNT<=DT1&DT2;CMKS<=CMKS XOR '1';END IF;END PROCESS;PROCESS(CLK,START,COOK)BEGINIF START='1' AND DCP="0000" THENDCP<=DICSOUNT;ELSIF CLK'EVENT AND CLK='1' THENIF COOK='1' THENDOUT<="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 THENCT<=CT+1;IF CT1<3 THENDOUT<="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 THENDOUT<="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<="0000";CT2<="0000";DOUT<="00";END IF;WHEN "1011"=>IF CT<8 THENCT<=CT+1;IF CT1<3 THENDOUT<="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 "1101"=>IF CT<19 THENCT<=CT+1;IF CT1<4 THENDOUT<="01";CT1<=CT1+1;ELSIF CT1=4 THENDOUT<="00";CT1<=CT1+1;ELSIF CT2<4 THENDOUT<="10";CT2<=CT2+1;ELSIF CT2=4 THENDOUT<="00";CT1<="0000";CT2<="0000";END IF;ELSEDCP<="1110";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00";END IF;WHEN "1110"=>IF CT<11 THENCT<=CT+1;IF CT1<2 THENDOUT<="01";CT1<=CT1+1;ELSIF CT1=2 THENDOUT<="00";CT1<=CT1+1;ELSIF CT2<2 THENDOUT<="10";CT2<=CT2+1;ELSIF CT2=2 THENDOUT<="00";CT1<="0000";CT2<="0000";END IF;ELSEDCP<="1111";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00";END IF;WHEN "1111"=>IF CT<8 THENCT<=CT+1;IF CT1<3 THENDOUT<="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 OTHERS=>DOUT<="00";END CASE;END IF;END IF;END PROCESS;LOOK<=SG;END BEHAV;二、仿真波形如下强洗全部过程强洗漂洗、甩干强洗(甩干)标准全部过程标准(漂洗、甩干)标准(甩干)弱洗(漂洗、甩干)九、弱洗(甩干)一、强洗强开盖一、标准强开盖二、弱洗强开盖暂停和启动一、强洗暂停二、强洗重新启动三、标准暂停四、标准重新启动五、弱洗暂停六、弱洗重新启动两次洗衣: 两次强洗两次标准(漂洗、甩干)一、两次弱甩三、设计思想讨论设计时参考了已有程序,此芯片有五个输入和三个输出,输入COUNT_M和输入COUNT_N是状态控制键,输入START是输入启动和暂停键,以及一个时钟CLK。

eda洗衣机控制器课程设计课程设计报告

eda洗衣机控制器课程设计课程设计报告

燕山大学课程设计说明书题目:洗衣机控制器学院(系):电气工程学院年级专业:08应用电子技术4班学号: 0204学生姓名:贾灵宇指导教师:吕宏诗张强教师职称:实验师燕山大学课程设计(论文)任务书院(系):电气工程学院基层教学单位:电子实验中心说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。

2011年 1 月 14 日目录第一章设计说明 (3)设计思路 (3)模块介绍 (3)真值表 (5)第二章Verilog HDL设计源程序 (6)第四章管脚锁定及硬件连线 (10)管脚锁定 (10)硬件连线 (11)第五章总结 (12)参考文献 (13)第一章设计说明设计思路本课程设计共应用:三个计数器,分别为五进制计数器、十进制计数器、十五进制计数器;三个拨码开关;两个时钟信号,分别为和1Hz;和三个动态数码显示管。

“洗衣机控制器”课程设计要求,洗衣机工作在两种工作方式:洗衣、甩干。

这两种工作方式分别由拨码开关SW1和拨码开关SW2控制,开关拨起为高电平工作状态即启动。

洗衣机工作在洗衣状态时,工作时间为5分钟,用数码管显示倒计时时间并最终停止在“0”,可以利用五进制加法计数器来计数控制,采用的时钟信号和十五进制计数器共同实现计时1分钟的功能。

洗衣机工作在甩干状态时,工作时间为15秒钟,采用1Hz 的时钟信号,用数码管显示倒计时时间并最终停止在“0”,利用初值为五的十进制减法计数器来控制个位的数码管显示,利用十进制计数器的进位来控制十位的数码管的显示数字。

另外,设计要求有紧急情况手动停止功能,由拨码开关3控制,当拨码开关3为高电平时洗衣机为可启动状态由拨码开关2和3控制在不同工作状态正常工作,当拨码开关3为低电平时,计数器全部清零数码管显示为零,洗衣机紧急急停。

并在完成了任务书的要求功能的基础上,增加了完成洗衣或甩干的工作时蜂鸣的效果。

模块介绍本课程设计程序上运用了一个模块,综合了任务的所有要求。

利用十五进制计数器和的时钟信号组合获得了以分钟为变化周期的控制信号,来驱动五进制加法计数器的工作,是数码管显示5分钟倒计时时间。

基于EDA的全自动洗衣机控制器设计

基于EDA的全自动洗衣机控制器设计

※※※※※※※※※※※※※※※※※※※※※※※※EDA课程设计报告书课题名称基于EDA的全自动洗衣机控制器设计姓名学号院系专业指导教师一、设计任务及要求:1.强洗:洗涤18分钟,漂洗14分钟,甩干4分钟。

2.标准:洗涤14分钟,漂洗8 分钟,甩干4分钟。

3.弱洗: 洗涤10分钟,漂洗6 分钟,甩干4分钟。

4.有强制开洗衣机盖的能力。

5.可实行多次洗衣的功能。

6.有启动和暂停和再重起的功能。

指导教师签名:年月日二、指导教师评语:指导教师签名:年月日三、成绩验收盖章年月日基于EDA的全自动洗衣机控制器设计1设计目的《EDA技术与应用》课程是电子信息工程、自动控制、计算机科学与工程等专业的技术课之一,具有很强的工程实践性。

通过本次课程设计来掌握现代硬件数字电路的软件化设计的基本方法、掌握应用VHDL及EDA工具开发设计各种电路的基本方法,以及对现代电子设计自动化技术有一定的了解,会把所学的专业知识更好的用到实践中去。

2设计的主要内容和要求(1)设计一简易全自动洗衣机控制器。

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

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

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

(3)过程启动后洗衣机盖开启能任意控制。

(4)能设置实现多次洗衣的功能。

3整体设计方案本次设计大致可以分成两个模块来看待:控制端和工作端。

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

其中,COUNT_M:当连顺出现一个,两个,三个高电平时分别表示强洗,标准,弱洗三种状态的洗衣过程。

再者,COUNT_N:当出现一个,两个,三个高电平时分别表示洗涤,漂洗与甩干,甩干。

其次,信号START控制洗衣机的暂停和重新启动。

沈阳理工大学EDA洗衣机时控电路课程设计

沈阳理工大学EDA洗衣机时控电路课程设计

沈阳理工大学课程设计专用纸目录1设计目的 (1)2设计要求和任务 (1)3总体设计思路及原理描述 (1)3.1设计思想 (1)4分层次方案设计及代码描述 (2)4.1各模块代码 (2)4.2功能模块整体结构设计 (7)5逻辑仿真与时序仿真的实现 (8)6设计结论 (12)7参考文献 (12)1设计目的科技的进步多少体现在了日常生活必需品的进步,本次课设目的是设计一个与现实生活中很多家庭使用的洗衣机具有相同功能的时序控制的洗衣机。

熟练掌握 QuartusⅡ软件,编写程序,绘制原理图,可进行编译及功能仿真,实现软件上的洗衣机功能。

2设计要求和任务任务:设计洗衣机时控电路要求:1、洗衣机工作时间可在1~15分钟任意设定(正分钟数);2、规定电动机运行规律为正转20s.停10s.反转20s.停10s.再正转20s,以后反复运行;3、要求能显示洗衣机剩余工作时间,每当电机运行1分钟,显示计数器自动减1,直到显示器为“0”时,电机停止运转;4、电机正转和反转要有指示灯指示。

3总体设计思路及原理描述3.1设计思想基本原理:洗衣机时控电路,主要思想就是时间控制洗衣机的工作状态,设计该电路得有如下功能,时间预置,时间显示,状态控制,减法计数等,所以电路大概分一下5部分:(1)时间设置(2)数码管显示电路(3)时序控制电路(4)预置时间和编码电路(5)译码器电路顶层文件用原理图来实现,通过创建各个子模块的原件,在顶层文件中按照底层文件实现的功能进行连线就可以得到完整的顶层原理图。

层次图如图3.1所示:图3.14分层次方案设计及代码描述4.1各模块代码(1)预设时间和编码电路:本模块将输入的四位时间信号编码成八位二进制数输出到减法计数器电路。

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity settime is ——定义实体名port(load:in std_logic;time_input:in std_logic_vector(3 downto 0); ——输入时间time_set:out std_logic_vector(7 downto 0)); ——设置时间end settime; ——VHDL实体描述部分architecture settime of settime issignal p1:std_logic_vector(7 downto 0); ——结构体描述部分beginprocess(load) beginif(load'event and load='1') then ——load有效case time_input iswhen "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 others=>p1<="00000000"; ——设置时间end case;end if;time_set<=p1; ——输出设置的时间P1 end settime;(2)减法计数器模块:由于洗衣机有工作时间,必须要一模块来控制它的工作时间范围,当洗衣机开始工作后,减法计数器即会实现减数功能,直到时间减到零,洗衣机便停止工作。

EDA课程设计洗衣机控制器

EDA课程设计洗衣机控制器
评估标准:根据测试结果,评估控制器的性能指标,如响应时间、准确性、稳定性等
优化建议:根据评估结果,提出优化建议,如改进算法、优化硬件配置、提高软件效率 等
测试报告:编写测试报告,详细记录测试过程、结果和优化建议,以便于后续改进和维 护。
单击此处添加标题
智能化:随着人工智能技术的发展,洗衣机控制器将更加智能化,能够自动识别 衣物类型、数量、脏污程度等,实现更加精准的洗涤控制。
控制器芯片类型:微控制器(MCU)
控制器芯片品牌:STM32系列
控制器芯片型号:STM32F103C8T6
控制器芯片功能:控制洗衣机的电机、水位、温度等参数,实现洗衣机的洗涤、脱水等 功能。
控制器接口:用于连接洗衣 机控制器和外部设备的接口
接口类型:包括数字接口和 模拟接口
数字接口:用于传输数字信 号,如开关信号、传感器信 号等
意义:通过设计洗衣机控制器,可以加深对电子设计自动化课程的理解,提高实 践能力和创新能力,为未来的工作打下坚实的基础
提高学生实践能力:通过设计洗衣机控制器,提高学生的实践操作能力和创新能力。
掌握专业知识:通过设计洗衣机控制器,让学生更好地掌握电子设计自动化(EDA)的相 关专业知识。
培养团队协作能力:设计洗衣机控制器需要团队合作,可以培养学生的团队协作能力和 沟通能力。
测试报告:详细记录测试过程、结果和 结论,为改进设计提供依据
测试环境:模拟家庭 环境,包括温度、湿 度、电压等
测试设备:洗衣机、 测试仪器、数据记录 仪等
测试项目:洗涤性能、 能耗、噪音、振动等
数据分析:使用统计方 法,如方差分析、回归 分析等,对测试数据进 行处理和分析,得出结 论。
性能测试:包括功能测试、性能测试、稳定性测试等

EDA课程设计洗衣机控制器要点

EDA课程设计洗衣机控制器要点

东北石油大学课程设计技术课程设 ED洗衣机控制电子科学学电子信息工专业班学生姓学生学号指导教师2014年 3 月7日东北石油大学课程设计任务书课程EDA技术课程设计洗衣机控制器题目专业姓名电子信息工程学号主要内容、基本要求、主要参考资料等主要内容:设计一个洗衣机控制器,要求洗衣机有正转、反转、暂停三种状态。

设定洗衣机的工作时间,要洗2010秒?定时未到回到“正转秒正转20?暂停10秒?反转20秒?暂停衣机在工作时间内完成:定时启动? 10秒?……”,定时到则停止,同时发出提示音。

秒?暂停基本要求:暂?反转20秒?1、设计一个电子定时器,控制洗衣机作如下运转:定时启动正转20秒?暂停10秒?,定时到则停止;?……”定时未到回到“正转20秒?暂停10秒秒停10?、若定时到,则停机发出音响信号;2,按倒计时方式对洗涤过程作计时显示,直到时间到3、用两个数码管显示洗涤的预置时间(分钟数)”信号开始;停机;洗涤过程由“开始三个状态。

“反转”、“暂停”正转4、三只LED灯表示“”、主要参考资料:,2005. .EDA技术实用教程(第二版). 北京:科学出版社潘松著[1],2006. 电子技术基础模拟部分. 北京:高教出版社[2] 康华光主编.,2003.北京:高教出版社.数字电子技术基础. [3] 阎石主编2014.3.7 完成期限指导教师专业负责人日年2014 33月一、设计思想1.基本原理洗衣机控制器的设计主要是定时器的设计。

由一片FPGA和外围电路构成了电器控制部分。

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

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

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

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

(完整word版)洗衣机控制器课程设计(word文档良心出品)

(完整word版)洗衣机控制器课程设计(word文档良心出品)

九江学院课程设计课程 EDA技术课程设计题目洗衣机控制器院系电子信息学院专业班级电子信息工程技术学生姓名张翁生学生学号 37 指导教师高玉宝一、设计要求与原理设计一个洗衣机控制器,要求洗衣机有正转、反转、暂停三种状态。

设定洗衣机的工作时间,要洗衣机在工作时间内完成:定时启动 正转20秒 暂停10秒 反转20秒 暂停10秒 定时未到回到“正转20秒 暂停10秒 ……”,定时到则停止,同时发出提示音。

基本要求:1、设计一个电子定时器,控制洗衣机作如下运转:定时启动 正转20秒 暂停10秒 反转20秒 暂停10秒 定时未到回到“正转20秒 暂停10秒 ……”,定时到则停止;2、若定时到,则停机发出音响信号;3、用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由“开始”信号开始;4、三只LED 灯表示“正转”、“反转”、“暂停”三个状态。

二、洗衣机的工作过程 首先用电路控制三只LED 显示洗衣机正转、反转、暂停三种状态。

然后用电子定时器控制洗衣机设定的工作时间,以及正传和反转运行时间的控制。

同时用两个数码管显示洗涤的预置时间(按分钟计数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由“开始”信号开始;最后定时到则停止,同时用蜂鸣器发出提示音。

通过各种开关组成控制电路,使洗衣机实现程序运转。

直至结束为止。

三、各模块图洗衣机控制电路由定时输入模块,电机输出模块,电机时间控制模块,数字显示电路,倒计时模块以及报警器模块组成。

图一四、各模块的VHDL 代码与仿真结果循环控制电路,使其在三个状态转换按键控制模块 控制循环时间 数字显示模块 报警电路 定时输入模块 倒计时模块1、输入定时模块,此模块是为了实现希望让洗衣机工作多少个分钟,有两个数码管显示工作时间,所以可以不同要求输入要洗衣的时间,可以输入1~59分钟不等时间,人性化控制,与实际的洗衣机工作是一样的。

洗衣机控制电路设计 电子电路设计课程设计 毕业设计

洗衣机控制电路设计 电子电路设计课程设计 毕业设计

洗衣机控制电路设计电子电路设计课程设计毕业设计洗衣机控制电路设计摘要本设计是基于数字电路定时器的洗衣机简易控制电路。

通过预置洗衣机的洗涤时间来自动的正反转和暂停,并且用不同的指示灯来表示洗衣机的正逆暂停三状态。

当到达定时时间后,会自动报警,发出蜂鸣声。

同时,用两位数码管来显示预置时间和洗涤剩余时间。

具有良好的用户界面。

电路主要分为显示电路、秒脉冲发生电路、计时电路、报警状态电路和洗衣机正反转控制电路。

显示电路使用的是两个单位的共阴极八段数码管,使用两片74ls48作为数码管译码芯片。

秒脉冲发生电路采用了使用成熟广泛的555定时器芯片,通过电脑USB插口供电,产生秒信号,作为各芯片的时钟信号。

计时电路使用的是四片十进制可逆计数器74ls192芯片,分别设计为十进制和六进制电路,用于完成时间的定时、计时功能。

报警电路和状态显示电路使用的是简单的74ls04非门、74LS21双4输入与门、74LS125三态门组成的逻辑组合电路,分别控制蜂鸣器和发光二极管,来实现报警和状态显示。

实验通过电脑软件仿真和实物验证,具有良好的可行性,能够稍加修改后用于洗衣机控制电路中,能满足一般的要求。

关键词:洗衣机控制;数字电子控制;定时器目录摘要 (2)1 设计要求分析与方案选择 (4)1.1 设计要求分析 (4)1.1.1洗衣机控制电路原理及电路设计1.2 方案选择 (7)1.2.1 单片机方案 (7)1.2.2 数字电路方案 (7)2 方案总体框图设计 (7)2.1 方案总体设计思路 (7)2.1.1 各模块器件选择 (8)2.1.2 模块总体电路实现 (8)2.2 方案总体电路图 (8)3 电路各模块设计与参数选择 (12)3.1 秒脉冲电路 (12)3.2 计时电路 (14)3.3 显示电路 (16)3.4 状态显示电路 (18)4 仿真调试分析 (22)4.1 仿真软件介绍 (22)4.2 仿真总体电路图分析 (22)4.3 仿真结果分析 (24)5 电路实物验证结果 (24)5.1 实物总体图片和介绍 (24)5.2 实物功能演示 (24)6 方案的分析与总结体会 (24)6.1 方案选择总结与分析 (25)6.2 仿真调试总结与体会 (25)6.3 实物制作总结与体会 (26)6.4 设计优点分析 (26)6.5 设计不足分析 (26)7 参考文献 (26)8 附录 (27)1 设计要求分析与方案选择1.1 设计要求分析设计制作一个洗衣机控制器,具有如下功能:1)采用中小规模集成芯片设计洗衣机的控制定时器,控制洗衣机电机作如下运转:2)洗涤电机用两个继电器控制。

eda课程设计报告格式洗衣机

eda课程设计报告格式洗衣机

eda课程设计报告格式洗衣机
1
2020年4月19日
燕山大学
课程设计说明书
题目:洗衣机
学院(系):电气工程学院
年级专业:
学号:
学生姓名:
指导教师:吕宏诗张强
教师职称:实验师
燕山大学课程设计(论文)任务书
院(系):电气工程学院基层教学单位:电子实验中心
3
2020年4月19日
说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份
年月日
目录
第1章摘要 (1)
第2章设计方案 (2)
第3章 Verilog HDL源程序 (3)
第4章源程序各部分波形仿真图 (5)
第5章管脚锁定及硬件连线 (14)
第6章结论…………………………………………………………………
4
2020年4月19日
(16)
参考文献 (18)
5
2020年4月19日。

EDA具有数字显示的洗衣机时控电路

EDA具有数字显示的洗衣机时控电路

燕山大学EDA课程设计报告书题目:具有数字显示的洗衣机时控电路姓名:班级:学号:成绩:一、设计题目及要求一)设计题目:具有数字显示的洗衣机时控电路(二)设计要求:1、洗衣机工作时间可在1~15分钟任意设定(正分钟数);2、规定电动机运行规律为正转20s.停10s.反转20s.停10s.再正转20s,以后反复运行;3、要求能显示洗衣机剩余工作时间,每当电机运行1分钟,显示计数器自动减1,直到显示器为“0”时,电机停止运转;4、电机正转和反转要有指示灯指示二、设计过程及内容(包括○1总体设计的文字描述,即由哪几个部分构成的,各个部分的功能及如何实现方法;○2主要模块比较详尽的文字描述,并配以必要的图片加以说明,但图片数量无需太多)(一)设计方案:(1)首先设计一个366进制的分频器fenpin, 用3个74161构成,将366HZ的时钟脉冲分频为1HZ,来实现1秒的频率作时钟信号。

(2)设计一个可产生六十进制进位信号模块count60,用2个74161构成,每六十个时钟信号产生一个进位信号。

,实现1分钟的频率作时钟信号。

(3)设计一个控制灯的模块light,在六十秒周期中前二十秒灯L1亮(表示正转),再十秒灯L3亮(表示停),再有二十秒灯L2亮(表示反转)再十秒灯L3亮(表示停)。

(4)设计两个模块jianfa和xianshi来完成“洗衣机工作时间可在1~15分钟任意设定(正分钟数);能显示洗衣机剩余工作时间,每当电机运行1分钟,显示计数器自动减1,直到显示器为“0”时,电机停止运转”的任务。

用减法计数器74191使分钟数自动减1,另外要用到扫描显示电路,将分钟的个位和十位上的数据分别用两个数码管进行显示,用以显示倒计时,显示机器的剩余工作时间。

数码管显示电路用门电路和BCD —七段7449显示器构成。

74191和数码管显示电路之间需加一个将四位二进制数转换八位二进制数以实现十位和个位显示的模块xianshi。

洗衣机自动控制电路 数字逻辑课程设计

洗衣机自动控制电路 数字逻辑课程设计

《数字逻辑》课程设计报告题目:洗衣机自动控制电路目录1 设计任务书2 总体方案设计2.1 功能和逻辑需求分析2.2 总体方案设计3 单元模块设计3.1分倒数单元电路设计3.2 秒倒数单元电路设计3.4 计数器单元电路设计3.2 状态译码器单元电路设计3.5总体电路设计(画出总体电路图)4 电路调试与测试4.1分倒数单元模块4.2秒倒数单元模块4.3计数器单元模块4.4状态译码器单元模块4.5全部器件5 总结1 设计任务书洗衣机自动控制电路为洗衣机设计一控制电路,当洗衣机控制开关打开后,电动机先正转20S,然后暂停10S,随后反转20S,再然后暂停10S;如果定时时间没到,则开始循环,若定时时间到,则停机断电。

定时时间设定范围为0~60分,显示分秒的倒计时。

用LED指示灯表示电机的正转、反转和暂停状态。

2 总体方案设计(1)、计时器:由两片芯片来分别完成分、秒的倒计时功能,分芯片提供预置功能,两片芯片的模均为60.(2)、计数器:通过计数来完成输出洗衣机四种状态(正转 > 暂停 > 反转 > 暂停 > 正转)的切换(3)、状态译码器:将输入的四种状态转换为三种状态(正转、暂停、反转)(4)、所有芯片都使用每秒一脉冲的统一脉冲,实现同步。

2.1 功能和逻辑需求分析1)、计时器:①由于平常用的基础器件无法简单做到倒数功能,所以决定用GAL器件,通过编写ABEL-HEL并在GAL器件上实现。

②计数器的分和秒分别需要8位输出(4位作为十位,另外4位作为个位,每4位二进制数在数码管上显示为一个十进制的数。

)③所以计数器的分和秒必须分为两个GAL器件,但同时秒需要有一个退位输出信号,分需要一个抑制秒继续倒数的输出信号,所以每个芯片需要9个输出端。

④总结:计数器需要两个GAL22v10分别实现分和秒的倒数。

2)、按周期显示正、反灯和暂停灯:①该功能仍然需要GAL器件来实现,首先需要内部能自己计数,电动机先正转20S,然后暂停10S,随后反转20S,再然后暂停10S,按20+10+20+10=60秒为一周期,所以需要6个输出来计数(作为内部计数,可以不必显示)。

洗衣机时控电路eda课程设计报告书

洗衣机时控电路eda课程设计报告书

燕山大学EDA课程设计报告书题目:洗衣机时控电路(注:此文件应以同学学号为文件名)一、设计题目及要求1.洗衣机工作时间可在1~15 分钟内任意设定(整分钟数);2.规定电动机运行规律为正转20s、停10s、反转20s、停10s、再正转20s,以后反复运行;3.要求能显示洗衣机剩余工作时间,每当电机运行一分钟,分钟计时器自动减1,直到显示为“0”时电机;4. 停止运转,停运后发出响两秒停一秒的蜂鸣提示;5.电机正转、反转和停转要有指示灯指示,并要有秒数正计时显示。

二、设计过程及内容(一)设计方案1、首先设计一个732进制的分频器frequency模块,来产生1秒的频率做时钟信号。

用3个74160构成,采用整体置数法,将732HZ的时钟脉冲分频为1HZ。

2、设计一个time模块完成“洗衣机工作时间可在1~15分钟任意设定(整分钟数);能显示洗衣机剩余工作时间,每当电机运行1分钟,显示计数器自动减1,直到显示器为“0”时,电机停止运转”的任务。

用2个减法计数器74190使分钟数自动减1,其中一个控制个位,另外一个控制十位。

3、十进制向二进制转换电路模块:设置时间的时候考虑日常生活习惯用十进制数,而数字电路中减法器和显示电路中都使用的是二进制数字,因此设计十进制向二进制转换的电路,用以将设置的0~15分钟十进制数字转换为电路使用的二进制数字,用2片74148实现。

4、设计一个灯控zhuan模块,用于指示洗衣机正转、反转和停转的状态。

在六十秒的周期中前20秒灯L1(指示正转)亮,再十秒灯L3(指示停转)亮,再有20秒灯L2(指示反转)亮,再十秒灯L3亮。

其中用两个74160构成60进制,并采用1个74138译码器实现对指示灯的控制。

5、设计一个display模块,用于对正转、反转和停转进行秒数正计时。

6、设计一个fengming模块,用于完成“停止运转后发出响两秒停一秒的蜂鸣提示”这一要求。

用一个74160构成三进制电路完成蜂鸣器控制。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

HUNAN UNIVERSITY数字电子技术课程设计报告设计课题:洗衣机控制电路设计学生姓名:王建平学生学号:专业班级:08级自动化1班学院名称:电气与信息工程学院指导教师:叶佳卓第2页一课程设计的目的:1、能够全面巩固和应用“电子技术基础数字部分”课程中所学的基本理论和方法,并初步掌握小型数字系统设计的基本方法。

2、掌握VHDL语言编制小型模块的方法,并采用层次化设计。

3、培养电路设计能力,懂得理论设计与实物实现的有效结合。

4、掌握Altium Designer软件的应用。

二总体方案分析及选择:洗衣机电路包含有总的控制模块,洗涤控制模块,洗涤记时模块,电动机控制模块以及LCD液晶板的动态显示模块.经过分析后,我们把前四个模块进行组合,把他们合成一个模块即:总控制模块.他们之间的逻辑联结关系,是对数电课程的一个很好总结,也是自己对新知识(LCD液晶板的动态显示)学习理解运用能力的一个很好的提升机会。

三基本功能要求:1要求设计制作一个普通功能洗衣机控制电路,使之能控制洗衣机的进水阀,排水阀,洗涤程序电机,甩干驱动装置等按预定程序工作.总体过程包括:进水浸泡洗涤排水甩干五个过程.进水从电路启动开始.其中浸泡可供选择,洗涤时间可以预置,洗涤结束时发出铃声进行提示并自动切断电源.发生故障如:缺水或进水超时排水超时甩干碰桶等时也可自动切断电源!2根据洗衣机工作时不同的洗衣服数量,我们设计了三个档(duoxi zhongxishaoxi)来对洗衣机的进水浸泡洗涤排水甩干的五个过程分别预置时间。

以此来区分洗衣机不同洗衣数量下的工作状态。

3用中小规模集成电路芯片或CPLD/FPGA设计符合上述任务要求的电路,并制作出能实际运行的装置.4安装并调试电路,测试各部分电路功能或模型.5演示并交验硬件装置.下载实现图:第3页第4页四总控制模块的生成程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity washer isport(clk0, clk1, rst, alarm: in std_logic;-----clk0:控制开关脉冲.clk1:记时开关脉冲.Rst:复位端.alarm报警输入端.-------duoxi,zhongxi,shaoxi : in std_Logic;-----qiangxi:强洗输入端。

zhongxi:中洗输入端。

ruoxi:弱洗输入端。

------------- water_in, water_out, immersion, dry, z1, z2, voice, poweroff: out std_logic; -----进水,出水,浸泡,甩干,洗涤,响铃,断电输出端-------display_th, display_tl: out std_logic_vector(3 downto 0)-------------------输出时间显示高位低位输出端-------------);end entity washer;architecture behave of washer issignal js, js_ten : std_logic;signal im, im_ten : std_logic;signal wa, wa_ten : std_logic;signal wa1, wa2, pwf: std_logic;signal cs, cs_ten : std_logic;signal dr, dr_ten : std_logic;signal xl, xl_ten : std_logic;signal js_dh, js_dl: std_logic_vector(3 downto 0);signal im_dh, im_dl: std_logic_vector(3 downto 0);signal wa_dh, wa_dl: std_logic_vector(3 downto 0);signal cs_dh, cs_dl: std_logic_vector(3 downto 0);signal dr_dh, dr_dl: std_logic_vector(3 downto 0);signal xl_dh, xl_dl: std_logic_vector(3 downto 0);signal dis_th,dis_tl: std_logic_vector(3 downto 0);signal water_inh, water_inl, im_th, im_tl, wash_th: std_logic_vector(3 downto 0);signal wash_tl, water_outh, water_outl, dry_th, dry_tl: std_logic_vector(3 downto 0);begin-----------------------控制:控制器件实现洗衣机的功能:进水->浸水->洗涤->出水->甩第5页干control:process(clk0, rst,alarm,duoxi,zhongxi,shaoxi)variable n: integer;beginif duoxi='1' and zhongxi='0' and shaoxi='0' thenwater_inh<="0001";water_inl<="0010";im_th<="1001";im_tl<="0000";wash_th<="1001";wash_tl<="0000";water_outh<="0001";water_outl<="0010";dry_th<="1001";dry_tl<="0000";elsif duoxi='0' and zhongxi='1' and shaoxi='0' thenwater_inh<="0000";water_inl<="0110";im_th<="0110";im_tl<="0000";wash_th<="0110";wash_tl<="0000";water_outh<="0000";water_outl<="0110";dry_th<="0110";dry_tl <="0000";elsif duoxi='0' and zhongxi='0' and shaoxi='1' thenwater_inh<="0000";water_inl<="0110";im_th<="0011";im_tl<="0000";wash_th<="0011";wash_tl<="0000";water_outh<="0000";water_outl<="0110";dry_th<="0011";dry_tl <="0000";elsewater_inh<="0000";water_inl<="0000";im_th<="0000";im_tl<="0000";第6页 wash_th<="0000";wash_tl<="0000";water_outh<="0000";water_outl<="0000";dry_th<="0000";dry_tl <="0000";end if;if alarm = '1' thenpwf <= '1';elseif rst = '1' thenn := 0;im_ten <= '0';js_ten <= '0';wa_ten <= '0';cs_ten <= '0';dr_ten <= '0';xl_ten <= '0';pwf <= '0';elsif clk0 = '1' and clk0 'event thenif n = 0 thenif water_inh = "0000" and water_inl = "0000" thenn := 1;elsejs_ten <= '1';if js = '1' thenn := 1;end if;end if;elsif js = '0' and n = 1 thenif im_th = "0000" and im_tl = "0000" thenn := 2;elseim_ten <= '1';if im = '1' thenn := 2;end if;end if;elsif im = '0' and n = 2 thenif wash_th = "0000" and wash_tl = "0000" thenn := 3;else第7页 wa_ten <= '1';if wa = '1' thenn := 3;end if;end if;elsif wa = '0' and n = 3 thenif water_outh = "0000" and water_outl = "0000" then n := 4;elsecs_ten <= '1';if cs = '1' thenn := 4;end if;end if;elsif cs = '0' and n = 4 thenif dry_th = "0000" and dry_tl = "0000" thenn := 5;elsedr_ten <= '1';if dr = '1' thenn := 5;end if;end if;elsif dr = '0' and n = 5 thenxl_ten <= '1';if xl = '1' thenn := 6;end if;elsif xl = '0' and n = 6 thenpwf <= '1';end if;end if;end if;end process;-----------------------------记时-----------------------------------------------进水记时--------------------------js_jishiqi:process(clk1, js_ten,water_inh,water_inl)beginif js_ten = '0' thenjs_dh <= water_inh;js_dl <= water_inl;js <= '0';第8页elsif clk1 = '1' and clk1 'event thenif js_dh = "0000" and js_dl = "0000" thenjs <= '0';elsejs <= '1';if js_dl = "0000" thenjs_dl <= "1001";js_dh <= js_dh - 1;elsejs_dl <= js_dl - 1;end if;end if;end if;end process;-------------浸泡记时-----------------------im_jishiqi:process(clk1, im_ten,im_th,im_tl)beginif im_ten = '0' thenim_dh <= im_th;im_dl <= im_tl;im <= '0';elsif clk1 = '1' and clk1 'event thenif im_dh = "0000" and im_dl = "0000" thenim <= '0';elseim <= '1';if im_dl = "0000" thenim_dl <= "1001";im_dh <= im_dh - 1;elseim_dl <= im_dl - 1;end if;end if;end if;end process;-----------------洗涤记时----------------------wa_jishiqi:process(clk1, wa_ten,wash_th,wash_tl)variable m: integer;beginif wa_ten = '0' thenwa_dh <= wash_th;wa_dl <= wash_tl;第9页 wa <= '0';wa1 <= '0';wa2 <= '0';m := 0;elsif clk1 = '1' and clk1 'event thenif wa_dh = "0000" and wa_dl = "0000" thenwa <= '0';wa1 <= '0';wa2 <= '0';elsewa <= '1';if m = 0 thenwa1 <= '1';wa2 <= '1';elsif m = 10 thenwa1 <= '0';wa2 <= '1';elsif m = 13 thenwa1 <= '1';wa2 <= '0';elsif m = 23 thenwa1 <= '0';wa2 <= '0';elsif m = 26 thenm := 0;wa1 <= '1';wa2 <= '1';end if;m := m + 1;if wa_dl = "0000" thenwa_dl <= "1001";wa_dh <= wa_dh - 1;elsewa_dl <= wa_dl - 1;end if;end if;end if;end process;--------------出水记时---------------------------cs_jishiqi:process(clk1, cs_ten,water_outh,water_outl)beginif cs_ten = '0' then第10页 cs_dh <= water_outh;cs_dl <= water_outl;cs <= '0';elsif clk1 = '1' and clk1 'event thenif cs_dh = "0000" and cs_dl = "0000" thencs <= '0';elsecs <= '1';if cs_dl = "0000" thencs_dl <= "1001";cs_dh <= cs_dh - 1;elsecs_dl <= cs_dl - 1;end if;end if;end if;end process;--------------甩干记时-----------------------dr_jishiqi:process(clk1, dr_ten,dry_th,dry_tl)beginif dr_ten = '0' thendr_dh <= dry_th;dr_dl <= dry_tl;dr <= '0';elsif clk1 = '1' and clk1 'event thenif dr_dh = "0000" and dr_dl = "0000" thendr <= '0';elsedr <= '1';if dr_dl = "0000" thendr_dl <= "1001";dr_dh <= dr_dh - 1;elsedr_dl <= dr_dl - 1;end if;end if;end if;end process;------------------响铃记时----------------------xl_jishiqi:process(clk1, xl_ten)beginif xl_ten = '0' then第11页xl_dh <= "0010";xl_dl <= "0000";xl <= '0';elsif clk1 = '1' and clk1 'event thenif xl_dh = "0000" and xl_dl = "0000" thenxl <= '0';elsexl <= '1';if xl_dl = "0000" thenxl_dl <= "1001";xl_dh <= xl_dh - 1;elsexl_dl <= xl_dl - 1;end if;end if;end if;end process;----------------------------显示时间--------------------------xianshishijian: process(clk1, js_ten, im_ten, wa_ten,cs_ten,dr_ten,xl_ten) beginif js_ten = '1' and im_ten = '0' and wa_ten = '0' and cs_ten = '0' and dr_ten = '0' and xl_ten = '0' thenif clk1 = '1' and clk1 'event thendis_th <= js_dh;dis_tl <= js_dl;end if;elsif im_ten = '1' and wa_ten = '0' and cs_ten = '0' and dr_ten = '0' and xl_ten = '0' thenif clk1 = '1' and clk1 'event thendis_th <= im_dh;dis_tl <= im_dl;end if;elsif wa_ten = '1' and cs_ten = '0' and dr_ten = '0' and xl_ten = '0' then if clk1 = '1' and clk1 'event thendis_th <= wa_dh;dis_tl <= wa_dl;end if;elsif cs_ten = '1' and dr_ten = '0' and xl_ten = '0' thenif clk1 = '1' and clk1 'event thendis_th <= cs_dh;dis_tl <= cs_dl;end if;第12页 elsif dr_ten = '1' and xl_ten = '0' thenif clk1 = '1' and clk1 'event thendis_th <= dr_dh;dis_tl <= dr_dl;end if;elsif xl_ten = '1' thenif clk1 = '1' and clk1 'event thendis_th <= xl_dh;dis_tl <= xl_dl;end if;end if;end process;----------------------------输出-----------------------------output:process(dis_th, dis_tl, im, js, cs, dr, wa1, wa2, xl, pwf)begindisplay_th <= dis_th;display_tl <= dis_tl;immersion <= im;water_in <= js;water_out <= cs;dry <= dr;z1 <= wa1;z2 <= wa2;voice <= xl;poweroff <= pwf;end process;end behave;测试文件:-------------------------------------------------------------- VHDL Testbench for washer-- 2010 11 26 21 48 4-- Created by "EditVHDL"-- "Copyright (c) 2002 Altium Limited"------------------------------------------------------------Library IEEE;Use IEEE.std_logic_1164.all;Use IEEE.std_logic_textio.all;Use STD.textio.all;------------------------------------------------------------第13页------------------------------------------------------------entity Testwasher isend Testwasher;------------------------------------------------------------------------------------------------------------------------architecture stimulus of Testwasher isfile RESULTS: TEXT open WRITE_MODE is "results.txt";procedure WRITE_RESULTS(alarm: std_logic;clk0: std_logic;clk1: std_logic;display_th: std_logic_vector(3 downto 0);display_tl: std_logic_vector(3 downto 0);dry: std_logic;duoxi: std_logic;immersion: std_logic;poweroff: std_logic;rst: std_logic;shaoxi: std_logic;voice: std_logic;water_in: std_logic;water_out: std_logic;z1: std_logic;z2: std_logic;zhongxi: std_logic) isvariable l_out : line;beginwrite(l_out, now, right, 15);write(l_out, alarm, right, 2);write(l_out, clk0, right, 2);write(l_out, clk1, right, 2);write(l_out, display_th, right, 5);write(l_out, display_tl, right, 5);write(l_out, dry, right, 2);write(l_out, duoxi, right, 2);write(l_out, immersion, right, 2);write(l_out, poweroff, right, 2);write(l_out, rst, right, 2);write(l_out, shaoxi, right, 2);write(l_out, voice, right, 2);第14页 write(l_out, water_in, right, 2);write(l_out, water_out, right, 2);write(l_out, z1, right, 2);write(l_out, z2, right, 2);write(l_out, zhongxi, right, 2);writeline(RESULTS, l_out);end procedure;component washerport (alarm: in std_logic;clk0: in std_logic;clk1: in std_logic;display_th: out std_logic_vector(3 downto 0);display_tl: out std_logic_vector(3 downto 0);dry: out std_logic;duoxi: in std_logic;immersion: out std_logic;poweroff: out std_logic;rst: in std_logic;shaoxi: in std_logic;voice: out std_logic;water_in: out std_logic;water_out: out std_logic;z1: out std_logic;z2: out std_logic;zhongxi: in std_logic);end component;signal alarm: std_logic;signal clk0: std_logic;signal clk1: std_logic;signal display_th: std_logic_vector(3 downto 0);signal display_tl: std_logic_vector(3 downto 0);signal dry: std_logic;signal duoxi: std_logic;signal immersion: std_logic;signal poweroff: std_logic;signal rst: std_logic;signal shaoxi: std_logic;signal voice: std_logic;第15页 signal water_in: std_logic;signal water_out: std_logic;signal z1: std_logic;signal z2: std_logic;signal zhongxi: std_logic;beginDUT:washer port map (alarm => alarm,clk0 => clk0,clk1 => clk1,display_th => display_th,display_tl => display_tl,dry => dry,duoxi => duoxi,immersion => immersion,poweroff => poweroff,rst => rst,shaoxi => shaoxi,voice => voice,water_in => water_in,water_out => water_out,z1 => z1,z2 => z2,zhongxi => zhongxi);STIMULUS0:processbegin-- insert stimulus herealarm <= '0';duoxi<='0';zhongxi<='1';shaoxi<='0' ;rst <= '1';wait for 10ns;rst <= '0';wait for 1000ns;alarm <= '1';wait;end process;第16页 processbeginclk0 <= '1';clk1 <= '1';wait for 1ns;clk0 <= '0';clk1 <= '0';wait for 1ns;end process;WRITE_RESULTS(alarm,clk0,clk1,display_th,display_tl,dry,duoxi,immersion,poweroff,rst,shaoxi,voice,water_in,water_out,z1,z2,zhongxi);end architecture;------------------------------------------------------------生成的器件和仿真波形:第17页第18页显示模块生成程序:LIBRARY IEEE;USE IEEE.std_Logic_1164.ALL;ENTITY OUTPUT ISPORT(R, CP, BUSY :IN Std_Logic;-----使能输入端,脉冲输入端,输入信号忙输入端-------- LINE_OUT,STROBE,RST:OUT STD_LOGIC;------行选择输出端,输入数据使能输出端,复位输出端---TIME_IN :IN STD_LOGIC_VECTOR(7 DOWNTO 0);--------输入时间-----------ADDR_OUT :OUT Std_Logic_Vector( 3DOWNTO 0);--------地址输出端----------DATA_OUT : OUT Std_Logic_Vector(7 DOWNTO 0));-----数据输出端---------END OUTPUT;ARCHITECTURE XS OF OUTPUT ISTYPE State_type IS(S0,S1,S2,S3,S4);SIGNAL S :State_Type;SIGNAL LCDPT:INTEGER RANGE 0 TO 14;BEGINPROCESS(CP,R)BEGINIF R='1' THENS<=S0;LCDPT<=0;RST<='1';ELSIF CP='1' AND CP 'EVENT THENCASE S ISWHEN S0=> S<=S1;LCDPT<=0;RST<='1';WHEN S1=> RST<='0';STROBE<='0';IF BUSY='0' THENLCDPT<=LCDPT+1;IF LCDPT=15 THENS<=S3;ELSES<=S2;END IF;END IF;WHEN S2=> S<=S1;STROBE<='1';WHEN S3=> STROBE<='0';IF BUSY='0' THENIF LCDPT=16 THENLCDPT<=15;第19页ELSELCDPT<=LCDPT+1;END IF;S<=S4;END IF;WHEN S4=> STROBE<='1';S<=S3;WHEN OTHERS=> NULL;END CASE;END IF;END PROCESS;PROCESS (LCDPT,TIME_IN)BEGINCASE LCDPT ISWHEN 0 => NULL;WHEN 1 => DATA_OUT<="01010111" ; ADDR_OUT<="0000"; LINE_OUT<='0';WHEN 2 => DATA_OUT<="01000001" ; ADDR_OUT<="0001"; LINE_OUT<='0';WHEN 3 => DATA_OUT<="01010011" ; ADDR_OUT<="0010"; LINE_OUT<='0';WHEN 4 => DATA_OUT<="01001000" ; ADDR_OUT<="0011"; LINE_OUT<='0';WHEN 5 => DATA_OUT<="01000101" ; ADDR_OUT<="0100"; LINE_OUT<='0';WHEN 6 => DATA_OUT<="01010010" ; ADDR_OUT<="0101"; LINE_OUT<='0';WHEN 7 => DATA_OUT<="01001111" ; ADDR_OUT<="0111"; LINE_OUT<='0';WHEN 8 => DATA_OUT<="01000110" ; ADDR_OUT<="1000"; LINE_OUT<='0';WHEN 9 => DATA_OUT<="01010000" ; ADDR_OUT<="1010"; LINE_OUT<='0';WHEN 10 => DATA_OUT<="01001001" ; ADDR_OUT<="1011"; LINE_OUT<='0';WHEN 11=> DATA_OUT<="01001110" ; ADDR_OUT<="1100"; LINE_OUT<='0';WHEN 12 => DATA_OUT<="01000111" ; ADDR_OUT<="1101"; LINE_OUT<='0';WHEN 13 => DATA_OUT<="0011"&TIME_IN(7 DOWNTO 4);ADDR_OUT<="0111";LINE_OUT<='1';WHEN 14=> DATA_OUT<="0011"&TIME_IN(3 DOWNTO 0);ADDR_OUT<="1001";LINE_OUT<='1';END CASE;END PROCESS;END ARCHITECTURE;--1,2,3,4,6,7,8,9,10,11,12,13,14输入字母WASHER OF LTTWWQ,15,16输入时间变化------测试文件:-------------------------------------------------------------- VHDL Testbench for output-- 2010 11 16 14 31 28第20页-- Created by "EditVHDL"-- "Copyright (c) 2002 Altium Limited"------------------------------------------------------------Library IEEE;Use IEEE.std_logic_1164.all;Use IEEE.std_logic_textio.all;Use STD.textio.all;------------------------------------------------------------------------------------------------------------------------entity Testoutput isend Testoutput;------------------------------------------------------------------------------------------------------------------------architecture stimulus of Testoutput isfile RESULTS: TEXT open WRITE_MODE is "results.txt";procedure WRITE_RESULTS(ADDR_OUT: std_logic_vector(3 downto 0);BUSY: std_logic;CP: std_logic;DATA_OUT: std_logic_vector(7 downto 0);LINE_OUT: std_logic;R: std_logic;RST: std_logic;STROBE: std_logic;TIME_IN: std_logic_vector(7 downto 0)) isvariable l_out : line;beginwrite(l_out, now, right, 15);write(l_out, ADDR_OUT, right, 5);write(l_out, BUSY, right, 2);write(l_out, CP, right, 2);write(l_out, DATA_OUT, right, 9);write(l_out, LINE_OUT, right, 2);write(l_out, R, right, 2);write(l_out, RST, right, 2);write(l_out, STROBE, right, 2);write(l_out, TIME_IN, right, 9);writeline(RESULTS, l_out);第21页 end procedure;component outputport (ADDR_OUT: out std_logic_vector(3 downto 0);BUSY: in std_logic;CP: in std_logic;DATA_OUT: out std_logic_vector(7 downto 0);LINE_OUT: out std_logic;R: in std_logic;RST: out std_logic;STROBE: out std_logic;TIME_IN: in std_logic_vector(7 downto 0));end component;signal ADDR_OUT: std_logic_vector(3 downto 0);signal BUSY: std_logic;signal CP: std_logic;signal DATA_OUT: std_logic_vector(7 downto 0);signal LINE_OUT: std_logic;signal R: std_logic;signal RST: std_logic;signal STROBE: std_logic;signal TIME_IN: std_logic_vector(7 downto 0);beginDUT:output port map (ADDR_OUT => ADDR_OUT,BUSY => BUSY,CP => CP,DATA_OUT => DATA_OUT,LINE_OUT => LINE_OUT,R => R,RST => RST,STROBE => STROBE,TIME_IN => TIME_IN);STIMULUS0:PROCESSBEGIN第22页 WAIT FOR 25NS;TIME_IN<="10000000";WAIT FOR 20NS;TIME_IN<="01000000";WAIT FOR 20NS;TIME_IN<="00110000";WAIT;END PROCESS;processbegin-- insert stimulus hereR<='1';BUSY<='0';WAIT FOR 2NS;R<='0';WAIT FOR 100NS;R<='1';WAIT FOR 100NS;wait;end process;PROCESSBEGINCP<='0';WAIT FOR 1NS;CP<='1';WAIT FOR 1NS;end process;WRITE_RESULTS(ADDR_OUT,BUSY,CP,DATA_OUT,LINE_OUT,R,RST,STROBE,TIME_IN第23页 );end architecture;------------------------------------------------------------------------------------------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity CT60 isport (CP ,DIR ,R: IN STD_LOGIC;Z: OUT STD_LOGIC;QH,QL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));end CT60;architecture JGT of CT60 ISSIGNAL YH,YL: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CP,R)BEGINIF R='1' THENYH<="0000";YL<="0000";ELSIF CP='1' AND CP 'EVENT THENIF DIR='1' THENIF YL="1001" AND YH="0101" THENYH<="0000";YL<="0000";Z<='1';ELSE Z<='0';IF YL="1001" THENYL<="0000";YH<=YH+1;ELSE第24页 YL<=YL+1;END IF;END IF;ELSEIF YL="0000" AND YH="0000"THENYL<="1001";YH<="0101" ;Z<='1';ELSE Z<='0';IF YL="0000" THENYL<="1001";YH<=YH-1;ELSEYL<=YL-1;END IF;END IF;END IF;END IF;END PROCESS;PROCESS(YH,YL)BEGINQH<=YH;QL<=YL;END PROCESS;END JGT;生成的器件::第25页模拟波形:五总结:1.通过这次课程设计,使我们又学会了一种编程语言——HDLE语言。

相关文档
最新文档