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的洗衣机控制器设计
本设计实现 了对洗衣机整个 过程的控制 , 主要研究 内容 如下 : 1上 电复位后 的初始化 , () 初始化 的洗涤模式是标准模
式 b 定时 间为 1 , 5分钟 ;2 启, () 停控制 , 每按 一次启/ 键 , 停 状 态转换一次 ;3 控制器正/ 向输出信号 , () 反 工作控制 过程 如图
原理 以及状 态机的设计 , 利用 Q ats I .进行 时序仿真 , ur 0 u I6 并下载到 G 8系 ̄/O CE A实验 开发 系统箱进行硬 件验 证。 W4 ] P /D S
【 关键词 】D ; E A 洗衣机控制 器;ur sI .; 态机 Q au I6 状 t 0
w la tem c i ei teQ a u I . f mn i l i , n o nodt G 8sr s| O C | D xe m na e ss t ahn ds n h ur sI 60 o t igs ao ad dw l W4 e e S P E A epr etl l a e g t ri mu t n a o i i
S in e& Te h oo yVi o ce c c n lg s n i
机械 与 电子
科 技 视 界
21 年0 月第 l期 02 6 6
基于 E A的洗衣机控制器设计 D
姚 毅 陈艳风
( 南人 文科 技学 院通信 与控 制 工程 系 湖
【 摘
湖南
娄底
4 70 ) 10 0
d v lp n y t m o o a d a e v r c t n e eo me t se b xf rh r w r e f ai . s i i o
【 e od]D ; si a i noe Q au I6 ;te ah e K y rsE A Wa n m c n c tlr ur sI . S tm ci w h g h e o rl; t 0 a n
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洗衣机实验
实训报告课程名称: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的洗衣机控制器设计
2012年06月第16期科技视界SCIENCE &TECHNOLOGY VISION 科技视界Science &Technology Vision0前言当代,快节奏高质量的生活,使洗衣机越来越受到人们的青睐。
洗衣机在市场发展中备受欢迎,日渐成为人们生活中的必备品,因此革新洗涤技术成为业界人士非常关注的问题,越来越多的人投身于研究洗衣机[1],探索各种新的技术。
现代的电子设计技术的核心已趋转向基于计算机的电子设计自动化技术[2],即EDA(Electronic Design automation)技术,它以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,可以大大降低设计成本,缩短设计周期。
EDA 工具软件大致可分为芯片设计辅助软件、可编程芯片辅助设计软件、系统设计辅助软件等三类,包括Protel、multiSIM10、OrCAD、Quartus II [3]、Matlab 等等,E⁃DA 设计方法分为图形输入和硬件描述文本输入[4]。
此次设计的基于EDA 的洗衣机控制器,以杭州康芯电子有限公司生产的GW48系列/SOPC/EDA 实验开发系统箱为硬件平台,Quartus II 6.0为软件平台,选择的目标芯片是Cyclone 系列EP1C6Q240C8,采用VHDL 语言输入法进行设计。
实验结果显示,系统运行良好,实现了全自动洗衣机的基本功能。
1研究内容本设计实现了对洗衣机整个过程的控制,主要研究内容如下:(1)上电复位后的初始化,初始化的洗涤模式是标准模式b,定时间为15分钟;(2)启/停控制,每按一次启/停键,状态转换一次;(3)控制器正/反向输出信号,工作控制过程如图1所示;(4)洗涤定时精确度0.1,选择的洗衣模式不同,正反基于EDA 的洗衣机控制器设计姚毅陈艳风(湖南人文科技学院通信与控制工程系湖南娄底417000)【摘要】EDA 技术融合了大规模集成电路制造技术、FPGA/CPLD 编程下载和自动检测等技术,利用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控制洗衣机的暂停和重新启动。
洗衣机控制器设计
宜宾学院课程设计2010-12-19宜宾学院课程设计任务书课程EDA技术课程设计题目洗衣机控制器设计专业电子信息工程姓名谢小龙学号080304044主要内容、基本要求、主要参考资料等主要内容:设计一个洗衣机控制器,要求洗衣机有正转、反转、暂停三种状态。
设定洗衣机的工作时间,要洗衣机在工作时间内完成:定时启动→正转20秒→暂停10秒→反转20秒→暂停10秒→定时未到回到“正转20秒→暂停10秒→……”,定时到则停止,同时发出提示音。
基本要求:1、设计一个电子定时器,控制洗衣机作如下运转:定时启动→正转20秒→暂停10秒→反转20秒→暂停10秒→定时未到回到“正转20秒→暂停10秒→……”,定时到则停止;2、若定时到,则停机发出音响信号;3、用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由“开始”信号开始;4、三只LED灯表示“正转”、“反转”、“暂停”三个状态。
主要参考资料:[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.[2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006.[3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限指导教师专业负责人2010-12-19一、总体设计思想1、基本原理洗衣机控制器的设计主要是定时器的设计。
由一片FPGA和外围电路构成了电器控制部分。
FPGA接收键盘的控制命令,控制洗衣机的进水、排水、水位和洗衣机的工作状态、并控制显示工作状态以及设定直流电机速度、正反转控制、制动控制、起停控制和运动状态控制。
对芯片的编程采用模块化的VHDL (硬件描述语言)进行设计,设计分为三层实现,顶层实现整个芯片的功能。
顶层和中间层多数是由VHDL的元件例化语句实现。
中间层由无刷直流电机控制、运行模式选择、洗涤模式选择、定时器、显示控制、键盘扫描、水位控制以及对直流电机控制板进行速度设定、正反转控制、启停控制等模块组成,它们分别调用底层模块。
EDA课程设计洗衣机控制器
优化建议:根据评估结果,提出优化建议,如改进算法、优化硬件配置、提高软件效率 等
测试报告:编写测试报告,详细记录测试过程、结果和优化建议,以便于后续改进和维 护。
单击此处添加标题
智能化:随着人工智能技术的发展,洗衣机控制器将更加智能化,能够自动识别 衣物类型、数量、脏污程度等,实现更加精准的洗涤控制。
控制器芯片类型:微控制器(MCU)
控制器芯片品牌:STM32系列
控制器芯片型号:STM32F103C8T6
控制器芯片功能:控制洗衣机的电机、水位、温度等参数,实现洗衣机的洗涤、脱水等 功能。
控制器接口:用于连接洗衣 机控制器和外部设备的接口
接口类型:包括数字接口和 模拟接口
数字接口:用于传输数字信 号,如开关信号、传感器信 号等
意义:通过设计洗衣机控制器,可以加深对电子设计自动化课程的理解,提高实 践能力和创新能力,为未来的工作打下坚实的基础
提高学生实践能力:通过设计洗衣机控制器,提高学生的实践操作能力和创新能力。
掌握专业知识:通过设计洗衣机控制器,让学生更好地掌握电子设计自动化(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 的元件例化语句实现。
中间层由无刷直流电机控制、运行模式选择、洗涤模式选择、定时器、显示控制、键盘扫描、水位控制以及对直流电机控制板进行速度设定、正反转控制、启停控制等模块组成,它们分别调用底层模块。
EDA洗衣机控制器
EDA课程作业报告——洗衣机控制器学院电气学院专业建筑电气与智能化班级092 班姓名何涛学号109035039浙江科技学院2012年10月29日目录1.设计内容与目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1.1课题选择. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11.2设计思路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12.程序设计与思路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 2.1定义输入输出和中间变量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2.2分频. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 2.3停机与复位. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.4设定定时时间(分)与复位. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2.5工作状态选择. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2.6工作状态输出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42.7数码管选择与显示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43.结果截图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 3.1程序框图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 3.2引脚设置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53.3仿真波形. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64.调试中遇到的问题和解决方法. . . . . . . . . . . . . . . . . . . . . . . . .65.心得与体会. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66.附录:所有程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71.设计内容与目的1.1课题选择项目5:洗衣机控制器 ● 设计要求:● 设计一个洗衣机洗涤程序控制器,控制洗衣机的电机作如下规律运转:● 用两位数码管预置洗涤时间(分钟数),洗涤过程在送入预置时间后开始运转,洗涤中按倒计时方式对洗涤过程作计时显示,用LED 表示电机的正、反转,如果定时时间到,则停机并发出音响信号。
(完整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分钟不等时间,人性化控制,与实际的洗衣机工作是一样的。
EDA全自动洗衣机控制器的设计与仿真
课程设计任务书学生姓名:专业班级:指导教师:工作单位:信息工程学院题目: 全自动洗衣机控制器的设计与仿真初始条件:设计一个全自动洗衣机控制器,功能为:1.具备水位设定开关一个:①普通(进水阀开启3分钟)②脏(进水阀开启4分钟)③极脏(进水阀开启5分钟);2.具备模式设定开关一个:①轻柔(电机单次正反转时间均为10秒)②标准(电机单次正反转时间均为20秒)③增强(电机单次正反转时间均为30秒);3.洗衣流程为;(电机的暂停时间均为2秒)①浸泡:进水→浸泡(5分钟)②清洗:正转→暂停→反转(前三个步骤循环5次)→排水③漂洗:进水→正转→暂停→反转(后三个步骤循环3次)→排水(整个漂洗过程循环2次)④脱水:电机正转同时排水(5分钟),完成后停止并发出报警信号。
过程由“开始”按钮启动,按下该钮后,自动按4个流程执行,无需人工干预。
要求完成的主要任务:1.以XX方式显示运行时间,以指示灯方式表示进水阀、排水阀、电机的正反转、结束报警等信号。
电机和阀门的驱动电路另行设计(本次省略)2.广泛调研,提出几种可行的方案,多方论证,确定设计方案,用EDA软件仿真;3. 按格式要求撰写课程设计说明书一份;4.提供程序代码一份;5. 参考文献不少于5篇,其中期刊文献不少于2篇。
时间安排:1.06月28日布置设计任务;2.07月02日收集资料并确定设计方案;3.07月03~04日系统设计、仿真和调试;4.07月05日撰写课程设计报告;5.07月06日答辩;课设答疑/答辩地点:鉴主15楼实验室指导教师签名: 2012年 6 月 25 日系主任(或责任教师)签名: 2012年 6 月 25 日1绪论2.设计任务及完成的功能2.1设计任务:设计一个全自动洗衣机。
2. 2功能:2.2.1具备水位设定开关一个:①普通(进水阀开启3分钟)②脏(进水阀开启4分钟)③极脏(进水阀开启5分钟);2.2.2具备模式设定开关一个:①轻柔(电机单次正反转时间均为10秒)②标准(电机单次正反转时间均为20秒)③增强(电机单次正反转时间均为30秒);2.2.3洗衣流程为;(电机的暂停时间均为2秒)① 浸泡:进水→浸泡(5分钟)② 清洗:正转→暂停→反转(前三个步骤循环5次)→排水③ 漂洗:进水→正转→暂停→反转(后三个步骤循环3次)→排水(整个漂洗过程循环2次)④ 脱水:电机正转同时排水(5分钟),完成后停止并发出报警信号。
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。
EDA-洗衣机控制器设计
2010年 12 月21日
主要内容:
设计一个洗衣机控制器,要求洗衣机有正转、反转、暂停三种状态。设定洗衣机的工作时间,要洗衣机在工作时间内完成:定时启动正转20秒暂停10秒反转20秒暂停10秒定时未到回到“正转20秒暂停10秒……”,定时到则停止,同时发出提示音。
基本要求:
1、设计一个电子定时器,控制洗衣机作如下运转:定时启动正转20秒暂停10秒反转20秒暂停10秒定时未到回到“正转20秒暂停10秒……”,定时到则停止;
"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
Begin
Table
Bcd => temp;
"0000"=> "1111110";
"0001"=> "0110000"
"0010"=> "1101101"
"0011"=> "1111001"
"0100"=> "0110011"
"0101"=> "1011011"
"0110"=> "1011111"
"0111"=> "1110000"
2、设计框图
定时时间未到
二、设计步骤和调试过程
1、总体设计电路
洗衣机控制器电路主要有五大部分组成,包括:减法计数器、时序控制电路、预置时间和编码电路、数码管显示、译码器组成。
具体电路如下图所示:
2、模块设计和相应模块程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
佛山职业技术学院2013年07月1日洗衣机控制器的设计一、实训课题:洗衣机控制器的设计二、设计的内容及要求:1.设计一个洗衣机控制器,要求为:1)洗衣机控制器可以驱动洗衣机进行洗涤、漂洗或烘干;2)洗衣机控制器可以设置洗衣机的工作时间,工作时间最短1分钟,最长1小时,在工作过程中,工作时间以倒计时显示,若时间为0洗衣机停止工作;3)洗衣机在待机状态时,洗衣机控制器可以设置洗衣机的工作方式和工作时间;4)可以暂停或停止洗衣机工作;5)利用三个数码管显示洗衣机待机时的设置时间和工作时的运行时间,利用一位数码管显示洗衣机待机时所设置的工作方式运行时的工作方式;6)利用三个LED分别表示驱动洗衣机进行洗涤、漂洗或烘干。
7)洗涤时,电机中速正转;漂洗时,电机慢速反转;烘干时,电机快速正转。
2.洗衣机控制器可以划分为状态机模块、计时器模块、设置模块和显示选择模块。
在QuartusII中输入各个模块的代码,编译综合,仿真,完成各个模块的软件设计;3.把各个模块组合起来,综合编译,仿真,完成整个控制器系统的软件设计;4.选择电路方案锁定管脚,把程序下载到实验箱中,利用实验箱进行硬件实现;5.以EPM240为核心,设计洗衣机控制器硬件电路原理图和PCB版图。
6.完成实训报告。
实训报告包括:1)设计的任务和要求;2)模块的划分和系统总框图;3)各个模块的实现,包括模块的作用,模块的输入与输出情况,模块状态图,模块的代码以及注释,模块的波形图;4)系统的实现,包括系统总原理图,系统的波形图;5)管脚的锁定关系;6)电路原理图和PCB版图;7)实训总结。
三.设计思路:1)状态切换→有限状态机2)按定时时间及时→定时计数器3)显示时间→数码管译码驱动器4)接收设置时间→时间设置键盘扫描器5)接收设置模式→模式设置键盘扫描器6)切换显示运行时间和设置时间→二路选择器7)切换显示运行模式和设置模式→二路选择器8)控制电机→电机驱动器基本原理洗衣机控制器的设计主要是定时器的设计。
由一片FPGA和外围电路构成了电器控制部分。
FPGA接收键盘的控制命令,控制洗衣机的进水、排水、水位和洗衣机的工作状态、并控制显示工作状态以及设定直流电机速度、正反转控制、制动控制、起停控制和运动状态控制。
对芯片的编程采用模块化的VHDL(硬件描述语言)进行设计,设计分为三层实现,顶层实现整个芯片的功能。
顶层和中间层多数是由VHDL的元件例化语句实现。
中间层由无刷直流电机控制、运行模式选择、洗涤模式选择、定时器、显示控制、键盘扫描、水位控制以及对直流电机控制板进行速度设定、正反转控制、启停控制等模块组成,它们分别调用底层模块。
洗衣机控制器要完成的功能:1)控制四个功能状态切换:待机、洗涤、漂洗和干衣;2)按定时时间进行计时;3)显示时间或显示设置的时间;4)接收和保存设置的时间;5)能接收模式输入;6)能显示设置模式和当前工作模式;7)驱动电机转动。
整体设计示意图:四.系统组成以及系统各部分的设计:1.状态机的设计:状态机要完成的功能:1)能设置工作模式;2)控制洗涤、漂洗、干衣的驱动输出;3)能启动、暂停、停止洗衣机控制器;4)能重启、暂停和停止定时器;5)能接收定时器的到时标志;6)能使能键盘扫描计数器;7)能控制二路选择器。
状态机的输入:1)时钟(clk);2)工作模式(modein(1DOWNTO0));3)启动(start)、停止(stop)、暂停(pause);4)定时器标志(tcin)。
状态机的输出:1)洗涤、漂洗、干衣的驱动输出(wout(3downto0));2)使能(ten)和停止(tstop)定时器;3)使能键盘扫描计数器(ken);4)控制二路选择器(sel);5)运行模式(modeout(1DOWNTO0))。
状态图分析设计如下:状态机设计图:模块设计图:状态机仿真图如下:2.定时器设计:定时器的功能:1)能通过使能端暂停和允许定时器工作;2)能停止并复位定时器;3)能进行定时;4)能输出定时标志。
定时器的输入:1)时钟端(clk);2)使能端(ten);3)停止复位端(tstop);4)预置分钟个位、分钟十位、秒个位、秒十位(smg,sms,ssg,sss)定时器的输出:计时分钟十位,分钟个位,秒十位,秒个位(oms,omg,oss,osg)模块设计图如下:定时器波形图如下:3.时间设置:时间设置键盘扫描器的功能:1)能响应按键;2)能在使能端的控制下工作。
时间设置键盘扫描器的输入:1)按键输入(kin);2)使能端(ken).时间设置键盘扫描器的输出:预置分钟个位、分钟十位、秒个位、秒十位(smg,sms,ssg,sss)模式设计图如下:波形图如下:4.模式设置:模式设置键盘扫描器的功能:预设工作模式,”000”为待机,”001”为洗涤,”010”为漂洗,”022”为干衣,”100”为暂停。
模式设计图如下:波形图如下:5.二路选择器:二路选择器的功能:设置显示运行时间还是设置时间,显示运行模式还是设置模式。
模式设计图如下:波形图如下:6.电机驱动器:模式设计图如下:波形图如下:五、整体结构图:整体波形图:六、实验心得:经过了这两个周的努力设计与思考,并在这次的实训设计的过程中我们有一些是实在在的心得:1、设计初期要明确题目的要求,根据要求去思考,构思大题的思路,并且了解课设过程可能要用到的芯片的功能及用法,可以在练习纸上将所要的逻辑进行抽象,演练,要思考全面,尽量避免在用软件设计过程中一次一次的改动。
2、方案确定后再开始设计。
设计时要注意对芯片的反馈控制及课程设计要求的紧急手动停止功能。
3、在设计某些模块的时候无法把握住整体,这时可以先进行小部分功能的实现,在此基础上进行改进,虽然可能会多花一些时间,但这比空想要有效的多。
4、尽可能是电路连线有序,模块之间关系清楚,既利于自己修改,也利于与别人交流。
5、注意多与同学交流意见,交流使自己获得更多信息,开拓了思路。
通过这次课程设计使我们发现了很多自己在EDA学习中被忽略的问题,一些重点。
从一次次的程序的调试中发现了自己在程序设计中的弱项,为自己敲了一个警钟。
更是我们充分的认识到不断学习、不断探索的重要性。
通过查阅其它资料丰富了我们的知识,是我们所能学到的东西不仅仅是局限于课堂上,加强了我们自主学习的积极性。
并且从同学的相互交流中弥补了自身的弱点。
形成了一种你争我赶的良好学风。
因为这次课设题目的新颖,更提高了我们的自主创新能力,大幅的提高了我们的学习效率,快速的实现了学以致用的目的。
因此,通过这次课程我们受益匪浅。
总之,要完成实验应该有较好的理论基础,整个实验都是在理论的指导下完成的,并且设计过程中使用了许多理论课上学的内容,如数据选择器,减法计数器等。
本次设计把理论应用到了实践中,通过设计,不但加深了我们对理论知识的理解和掌握,还加深了我们动手操作的能力。
当我们在实验设计过程遇到的挫折带给我们的不仅仅是悲痛的挫败感,更重要的是会给自己带来了一份成功时的喜悦,无形之中增加了我们的自信心,让我们在以后的大学生活中更加自信坚定的去面对每一困难与挫折。
七、附录:1.状态机的编程:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY synopsys;USE synopsys.attributes.all;ENTITY SHELL_XIYIJI ISPORT(CLK,modein0,modein1,modein2,pause,start,stop,tcin:IN std_logic;ken,modeout0,modeout1,modeout2,sel,ten,tstop,wout0,wout1,wout2:OUTstd_logic);ATTRIBUTE async_set_reset OF stop:signal is"true";END;ARCHITECTURE BEHAVIOR OF SHELL_XIYIJI IS--State variables for machine sregSIGNAL dry,next_dry,ready,next_ready,rinse,next_rinse,waitup,next_waitup,wash,next_wash:std_logic;SIGNAL next_ken,next_modeout0,next_modeout1,next_modeout2,next_sel,next_ten, next_tstop,next_wout0,next_wout1,next_wout2:std_logic;SIGNAL modeout:std_logic_vector(2DOWNTO0);SIGNAL wout:std_logic_vector(2DOWNTO0);BEGINPROCESS(CLK,stop,next_dry,next_ready,next_rinse,next_waitup,next_wash ,next_ken,next_sel,next_ten,next_tstop,next_modeout2,next_modeout1,next_modeout0,next_wout2,next_wout1,next_wout0)BEGINIF(stop='1')THENdry<='0';ready<='1';rinse<='0';waitup<='0';wash<='0';sel<='0';ken<='1';ten<='1';tstop<='1';modeout2<='0';modeout1<='0';modeout0<='0';wout2<='0';wout1<='0';wout0<='0';ELSIF CLK='1'AND CLK'event THENdry<=next_dry;ready<=next_ready;rinse<=next_rinse;waitup<=next_waitup;wash<=next_wash;ken<=next_ken;sel<=next_sel;ten<=next_ten;tstop<=next_tstop;modeout2<=next_modeout2;modeout1<=next_modeout1;modeout0<=next_modeout0;wout2<=next_wout2;wout1<=next_wout1;wout0<=next_wout0;END IF;END PROCESS;PROCESS(dry,modein0,modein1,modein2,pause,ready,rinse,start,tcin,waitup, wash,modeout,wout)BEGINIF((tcin='0'AND pause='0'AND(dry='1'))OR(modein0='1'ANDmodein1='1'AND modein2='0'AND start='1'AND(ready='1'))OR(tcin='0'ANDmodein0='1'AND modein1='1'AND modein2='0'AND pause='0'AND(waitup='1')))THEN next_dry<='1';ELSE next_dry<='0';END IF;IF((tcin='1'AND(dry='1'))OR(start='0'AND(ready='1'))OR(modein2='1'AND(ready='1'))OR(modein0='0'AND modein1='0'AND(ready='1'))OR(tcin='1'AND(rinse='1'))OR(tcin='1'AND(wash='1')))THEN next_ready<='1';ELSE next_ready<='0';END IF;IF((modein0='0'AND modein1='1'AND modein2='0'AND start='1'AND( ready='1'))OR(tcin='0'AND pause='0'AND(rinse='1'))OR(tcin='0'ANDmodein0='0'AND modein1='1'AND modein2='0'AND pause='0'AND(waitup='1')))THEN next_rinse<='1';ELSE next_rinse<='0';END IF;IF((tcin='0'AND pause='1'AND(dry='1'))OR(tcin='0'AND pause='1'AND(rinse='1'))OR(pause='1'AND(waitup='1'))OR(modein2='1'AND(waitup='1'))OR(modein0='0'AND modein1='0'AND(waitup='1'))OR(tcin='1'AND(waitup='1'))OR(tcin='0'AND pause='1'AND(wash='1')))THEN next_waitup<='1';ELSE next_waitup<='0';END IF;IF((modein0='1'AND modein1='0'AND modein2='0'AND start='1'AND( ready='1'))OR(tcin='0'AND modein0='1'AND modein1='0'AND modein2='0'ANDpause='0'AND(waitup='1'))OR(tcin='0'AND pause='0'AND(wash='1')))THEN next_wash<='1';ELSE next_wash<='0';END IF;IF((tcin='1'AND(dry='1'))OR(start='0'AND(ready='1'))OR(modein2='1'AND(ready='1'))OR(modein0='0'AND modein1='0'AND(ready='1'))OR(tcin='1'AND(rinse='1'))OR(tcin='1'AND(wash='1')))THEN next_ken<='1';ELSE next_ken<='0';END IF;modeout<=((std_logic_vector'(dry,dry,dry))AND((std_logic_vector' (NOT tcin,NOT tcin,NOT tcin)AND std_logic_vector'(NOT pause,NOT pause, NOT pause)))AND(std_logic_vector'("011")))OR((std_logic_vector'(ready,ready,ready))AND((std_logic_vector'(modein0,modein0,modein0)AND std_logic_vector'(modein1,modein1,modein1)AND std_logic_vector'(NOT modein2,NOT modein2,NOT modein2)AND std_logic_vector'(start,start,start)))AND(std_logic_vector'("011")))OR((std_logic_vector'(waitup,waitup,waitup))AND((std_logic_vector'(NOT tcin,NOT tcin,NOTtcin)AND std_logic_vector'(modein0,modein0,modein0)AND std_logic_vector' (modein1,modein1,modein1)AND std_logic_vector'(NOT modein2,NOT modein2, NOT modein2)AND std_logic_vector'(NOT pause,NOT pause,NOT pause)))AND (std_logic_vector'("011")))OR((std_logic_vector'(dry,dry,dry))AND((std_logic_vector'(tcin,tcin,tcin)))AND(std_logic_vector'("000")))OR((std_logic_vector'(ready,ready,ready))AND((std_logic_vector'(NOT modein0,NOT modein0,NOT modein0)ANDstd_logic_vector'(NOT modein1,NOT modein1,NOT modein1))OR(std_logic_vector'(modein2,modein2,modein2))OR(std_logic_vector'(NOTstart,NOT start,NOT start)))AND(std_logic_vector'("000")))OR((std_logic_vector'(rinse,rinse,rinse))AND((std_logic_vector'(tcin,tcin,tcin)))AND(std_logic_vector'("000")))OR((std_logic_vector'(wash,wash,wash))AND((std_logic_vector'(tcin,tcin,tcin)))AND(std_logic_vector'("000")))OR((std_logic_vector'(ready,ready,ready))AND((std_logic_vector'(NOT modein0,NOT modein0,NOT modein0)ANDstd_logic_vector'(modein1,modein1,modein1)AND std_logic_vector'(NOTmodein2,NOT modein2,NOT modein2)AND std_logic_vector'(start,start,start)))AND(std_logic_vector'("010")))OR((std_logic_vector'(rinse,rinse,rinse))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)ANDstd_logic_vector'(NOT pause,NOT pause,NOT pause)))AND(std_logic_vector'("010")))OR((std_logic_vector'(waitup,waitup,waitup))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)ANDstd_logic_vector'(NOT modein0,NOT modein0,NOT modein0)ANDstd_logic_vector'(modein1,modein1,modein1)AND std_logic_vector'(NOTmodein2,NOT modein2,NOT modein2)AND std_logic_vector'(NOT pause,NOTpause,NOT pause)))AND(std_logic_vector'("010")))OR((std_logic_vector'(dry,dry,dry))AND((std_logic_vector'(NOT tcin,NOTtcin,NOT tcin)AND std_logic_vector'(pause,pause,pause)))AND(std_logic_vector'("100")))OR((std_logic_vector'(rinse,rinse,rinse))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)ANDstd_logic_vector'(pause,pause,pause)))AND(std_logic_vector'("100")))OR((std_logic_vector'(waitup,waitup,waitup))AND((std_logic_vector'(tcin,tcin,tcin))OR(std_logic_vector'(NOT modein0,NOT modein0,NOT modein0)AND std_logic_vector'(NOT modein1,NOT modein1,NOT modein1))OR(std_logic_vector'(modein2,modein2,modein2))OR(std_logic_vector'(pause,pause,pause)))AND(std_logic_vector'("100")))OR((std_logic_vector'(wash,wash,wash))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)AND std_logic_vector'(pause,pause,pause)))AND(std_logic_vector'("100")))OR((std_logic_vector'(ready,ready,ready))AND((std_logic_vector'(modein0,modein0,modein0)ANDstd_logic_vector'(NOT modein1,NOT modein1,NOT modein1)ANDstd_logic_vector'(NOT modein2,NOT modein2,NOT modein2)ANDstd_logic_vector'(start,start,start)))AND(std_logic_vector'("001")))OR((std_logic_vector'(waitup,waitup,waitup))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)AND std_logic_vector'(modein0,modein0,modein0)AND std_logic_vector'(NOT modein1,NOT modein1,NOT modein1)AND std_logic_vector'(NOT modein2,NOT modein2,NOT modein2)AND std_logic_vector'(NOT pause,NOT pause,NOT pause)))AND(std_logic_vector'("001")))OR((std_logic_vector'(wash,wash,wash))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)ANDstd_logic_vector'(NOT pause,NOT pause,NOT pause)))AND(std_logic_vector'("001")));IF((modein1='1'AND modein2='0'AND start='1'AND(ready='1'))OR(tcin='0'AND(dry='1'))OR(tcin='0'AND(rinse='1'))OR(modein0='1'ANDmodein2='0'AND start='1'AND(ready='1'))OR((waitup='1'))OR(tcin='0'AND(wash='1')))THEN next_sel<='1';ELSE next_sel<='0';END IF;IF((tcin='1'AND(dry='1'))OR(start='0'AND(ready='1'))OR(modein2='1'AND(ready='1'))OR(modein0='0'AND modein1='0'AND(ready='1'))OR(tcin='1'AND(rinse='1'))OR(tcin='1'AND(wash='1')))THEN next_ten<='1';ELSE next_ten<='0';END IF;IF((pause='0'AND(dry='1'))OR(tcin='1'AND(dry='1'))OR(tcin='1' AND(rinse='1'))OR(tcin='1'AND(wash='1'))OR(pause='0'AND(rinse='1'))OR(tcin='0'AND modein1='1'AND modein2='0'AND pause='0'AND(waitup='1'))OR((ready='1'))OR(tcin='0'AND modein0='1'ANDmodein2='0'AND pause='0'AND(waitup='1'))OR(pause='0'AND(wash='1')))THEN next_tstop<='1';ELSE next_tstop<='0';END IF;wout<=((std_logic_vector'(dry,dry,dry))AND((std_logic_vector'( NOT tcin,NOT tcin,NOT tcin)AND std_logic_vector'(NOT pause,NOT pause,NOT pause)))AND(std_logic_vector'("011")))OR((std_logic_vector'(ready,ready,ready))AND((std_logic_vector'(modein0,modein0,modein0)AND std_logic_vector'(modein1,modein1,modein1)AND std_logic_vector'(NOT modein2,NOT modein2,NOT modein2)AND std_logic_vector'(start,start,start)))AND(std_logic_vector'("011")))OR((std_logic_vector'(waitup,waitup,waitup))AND((std_logic_vector'(NOT tcin,NOT tcin,NOTtcin)AND std_logic_vector'(modein0,modein0,modein0)AND std_logic_vector' (modein1,modein1,modein1)AND std_logic_vector'(NOT modein2,NOT modein2, NOT modein2)AND std_logic_vector'(NOT pause,NOT pause,NOT pause)))AND (std_logic_vector'("011")))OR((std_logic_vector'(dry,dry,dry))AND((std_logic_vector'(tcin,tcin,tcin)))AND(std_logic_vector'("000")))OR((std_logic_vector'(ready,ready,ready))AND((std_logic_vector'(NOT modein0,NOT modein0,NOT modein0)ANDstd_logic_vector'(NOT modein1,NOT modein1,NOT modein1))OR(std_logic_vector'(modein2,modein2,modein2))OR(std_logic_vector'(NOTstart,NOT start,NOT start)))AND(std_logic_vector'("000")))OR((std_logic_vector'(rinse,rinse,rinse))AND((std_logic_vector'(tcin,tcin,tcin)))AND(std_logic_vector'("000")))OR((std_logic_vector'(wash,wash,wash))AND((std_logic_vector'(tcin,tcin,tcin)))AND(std_logic_vector'("000")))OR((std_logic_vector'(ready,ready,ready))AND((std_logic_vector'(NOT modein0,NOT modein0,NOT modein0)ANDstd_logic_vector'(modein1,modein1,modein1)AND std_logic_vector'(NOTmodein2,NOT modein2,NOT modein2)AND std_logic_vector'(start,start,start)))AND(std_logic_vector'("010")))OR((std_logic_vector'(rinse,rinse,rinse))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)ANDstd_logic_vector'(NOT pause,NOT pause,NOT pause)))AND(std_logic_vector'("010")))OR((std_logic_vector'(waitup,waitup,waitup))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)ANDstd_logic_vector'(NOT modein0,NOT modein0,NOT modein0)ANDstd_logic_vector'(modein1,modein1,modein1)AND std_logic_vector'(NOTmodein2,NOT modein2,NOT modein2)AND std_logic_vector'(NOT pause,NOTpause,NOT pause)))AND(std_logic_vector'("010")))OR((std_logic_vector'(dry,dry,dry))AND((std_logic_vector'(NOT tcin,NOTtcin,NOT tcin)AND std_logic_vector'(pause,pause,pause)))AND(std_logic_vector'("100")))OR((std_logic_vector'(rinse,rinse,rinse))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)ANDstd_logic_vector'(pause,pause,pause)))AND(std_logic_vector'("100")))OR((std_logic_vector'(waitup,waitup,waitup))AND((std_logic_vector'(tcin,tcin,tcin))OR(std_logic_vector'(NOT modein0,NOT modein0,NOT modein0)AND std_logic_vector'(NOT modein1,NOT modein1,NOT modein1))OR(std_logic_vector'(modein2,modein2,modein2))OR(std_logic_vector'(pause,pause,pause)))AND(std_logic_vector'("100")))OR((std_logic_vector'(wash,wash,wash))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)AND std_logic_vector'(pause,pause,pause)))AND(std_logic_vector'("100")))OR((std_logic_vector'(ready,ready,ready))AND((std_logic_vector'(modein0,modein0,modein0)ANDstd_logic_vector'(NOT modein1,NOT modein1,NOT modein1)ANDstd_logic_vector'(NOT modein2,NOT modein2,NOT modein2)ANDstd_logic_vector'(start,start,start)))AND(std_logic_vector'("001")))OR((std_logic_vector'(waitup,waitup,waitup))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)AND std_logic_vector'(modein0,modein0,modein0)AND std_logic_vector'(NOT modein1,NOT modein1,NOT modein1)AND std_logic_vector'(NOT modein2,NOT modein2,NOT modein2)ANDstd_logic_vector'(NOT pause,NOT pause,NOT pause)))AND(std_logic_vector'("001")))OR((std_logic_vector'(wash,wash,wash))AND((std_logic_vector'(NOT tcin,NOT tcin,NOT tcin)ANDstd_logic_vector'(NOT pause,NOT pause,NOT pause)))AND(std_logic_vector'("001")));next_modeout2<=modeout(2);next_modeout1<=modeout(1);next_modeout0<=modeout(0);next_wout2<=wout(2);next_wout1<=wout(1);next_wout0<=wout(0);END PROCESS;END BEHAVIOR;LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY synopsys;USE synopsys.attributes.all;ENTITY XIYIJI ISPORT(modein:IN std_logic_vector(2DOWNTO0);modeout:OUT std_logic_vector(2DOWNTO0);wout:OUT std_logic_vector(2DOWNTO0);CLK,pause,start,stop,tcin:IN std_logic;ken,sel,ten,tstop:OUT std_logic);END;ARCHITECTURE BEHAVIOR OF XIYIJI ISCOMPONENT SHELL_XIYIJIPORT(CLK,modein0,modein1,modein2,pause,start,stop,tcin:IN std_logic;ken,modeout0,modeout1,modeout2,sel,ten,tstop,wout0,wout1,wout2:OUTstd_logic);END COMPONENT;BEGINSHELL1_XIYIJI:SHELL_XIYIJI PORT MAP(CLK=>CLK,modein0=>modein(0),modein1=> modein(1),modein2=>modein(2),pause=>pause,start=>start,stop=>stop,tcin=>tcin,ken=>ken,modeout0=>modeout(0),modeout1=>modeout(1),modeout2=>modeout(2),sel=>sel,ten=>ten,tstop=>tstop,wout0=>wout(0),wout1=>wout(1),wout2=>wout(2));END BEHAVIOR;2.定时器的编程:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xiyiji6ISPORT(clk:IN STD_LOGIC;ten,tstop:IN STD_LOGIC;sms:IN INTEGER RANGE0TO3;sss:IN INTEGER RANGE0TO6;smg,ssg:IN INTEGER RANGE0TO9;cin:OUT STD_LOGIC;oms:BUFFER INTEGER RANGE0TO3;oss:BUFFER INTEGER RANGE0TO6;omg,osg:BUFFER INTEGER RANGE0TO9);END xiyiji6;ARCHITECTURE one OF xiyiji6ISBEGINPROCESS(clk,ten,tstop)BEGINIF ten='1'THENIF tstop='1'THEN osg<=ssg;ELSIF clk'EVENT AND clk='1'THENIF osg=0THENIF oss>0OR omg>0OR oms>0THEN osg<=9; ELSE osg<=0;END IF;ELSE osg<=osg-1;END IF;END IF;END IF;END PROCESS;PROCESS(clk,ten,tstop,osg)BEGINIF ten='1'THENIF tstop='1'THEN oss<=sss;ELSIF clk'EVENT AND clk='1'THENIF osg=0THENIF oss=0THENIF omg>0OR oms>0THEN oss<=5;ELSE oss<=0;END IF;ELSE oss<=oss-1;END IF;END IF;END IF;END IF;END PROCESS;PROCESS(clk,ten,tstop,osg,oss)BEGINIF ten='1'THENIF tstop='1'THEN omg<=smg;ELSIF clk'EVENT AND clk='1'THENIF oss=0THENIF omg=0THENIF oms>0THEN omg<=9;ELSE omg<=0;END IF;ELSE omg<=omg-1;END IF;END IF;END IF;END IF;END PROCESS;PROCESS(clk,ten,tstop,osg,oss,omg)BEGINIF ten='1'THENIF tstop='1'THEN oms<=sms;ELSIF clk'EVENT AND clk='1'THENIF omg=0THENIF oms=0THEN oms<=0;ELSE oms<=oms-1;END IF;END IF;END IF;END IF;END PROCESS;PROCESS(clk,ten,tstop,osg,oss,omg,oms)BEGINIF ten='1'THENIF tstop='0'THENIF clk'EVENT AND clk='1'THENIF oms=0AND omg=0AND oss=0AND osg=1THEN cin<='1'; ELSE cin<='0';END IF;END IF;END IF;END IF;END PROCESS;END one;3.时间设置的编程:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY XIYIJI ISPORT(kin:IN STD_LOGIC;ken:IN STD_LOGIC;sms:BUFFER INTEGER RANGE0TO3;sss:BUFFER INTEGER RANGE0TO6;smg,ssg:BUFFER INTEGER RANGE0TO9);END XIYIJI; ARCHITECTURE one OF XIYIJI IS BEGINPROCESS(kin,ken)BEGINIF ken='1'THENIF kin'EVENT AND kin='1'THEN IF ssg=9THENssg<=0;ELSEssg<=ssg+1;END IF;END IF;END IF;END PROCESS;PROCESS(kin,ken,ssg)BEGINIF ken='1'THENIF kin'EVENT AND kin='1'THEN IF ssg=9THENIF sss=5THENsss<=0;ELSEsss<=sss+1;END IF;END IF;END IF;END IF;END PROCESS;PROCESS(kin,ken,ssg,sss) BEGINIF ken='1'THENIF kin'EVENT AND kin='1'THEN IF sss=5AND ssg=9THENIF smg=9THENsmg<=0;ELSEsmg<=smg+1;END IF;END IF;END IF;END PROCESS;PROCESS(kin,ken,ssg,sss,smg)BEGINIF ken='1'THENIF kin'EVENT AND kin='1'THENIF smg=9AND sss=5AND ssg=9THENIF sms=2THENsms<=0;ELSEsms<=sms+1;END IF;END IF;END IF;END IF;END PROCESS;END one;4.模式设置:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY xiyiji4ISPORT(kin:IN STD_LOGIC;ken:IN STD_LOGIC;modeset:BUFFER STD_LOGIC_VECTOR(2DOWNTO0)); END xiyiji4;ARCHITECTURE one OF xiyiji4ISBEGINPROCESS(kin,ken)BEGINIF ken='1'THENIF kin'EVENT AND kin='1'THENIF modeset>="011"THEN modeset<="001";ELSE modeset<=modeset+1;END IF;END IF;END PROCESS;END one;5.二路选择器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xiyiji5ISPORT(oms:IN INTEGER RANGE0TO3;oss:IN INTEGER RANGE0TO6;omg,osg:IN INTEGER RANGE0TO9;sms:IN INTEGER RANGE0TO3;sss:IN INTEGER RANGE0TO6;smg,ssg:IN INTEGER RANGE0TO9;modeset:IN STD_LOGIC_VECTOR(2DOWNTO0);modeout:IN STD_LOGIC_VECTOR(2DOWNTO0);sel:IN STD_LOGIC;msdis:OUT INTEGER RANGE0TO3;mgdis:OUT INTEGER RANGE0TO9;ssdis:OUT INTEGER RANGE0TO6;sgdis:OUT INTEGER RANGE0TO9;modedis:OUT STD_LOGIC_VECTOR(2DOWNTO0));END xiyiji5;ARCHITECTURE one OF xiyiji5ISBEGINPROCESS(sel,oms,oss,omg,osg,sms,sss,smg,ssg,modeset,modeout) BEGINIF sel='1'THENmsdis<=oms;mgdis<=omg;ssdis<=oss;sgdis<=osg;modedis<=modeout;ELSEmsdis<=sms;mgdis<=smg;ssdis<=sss;sgdis<=ssg;modedis<=modeset;END IF;END PROCESS;6.电机驱动器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY xiyiji3ISPORT(win:IN STD_LOGIC_VECTOR(2DOWNTO0);clk:IN STD_LOGIC;fw,bw:OUT STD_LOGIC);END xiyiji3;ARCHITECTURE one OF xiyiji3ISBEGINPROCESS(clk,win)VARIABLE d,cnt8:STD_LOGIC_VECTOR(7DOWNTO0); VARIABLE fout:STD_LOGIC;BEGINCASE win ISWHEN"000"=>fw<='0';bw<='0'; WHEN"001"=>d:="00111111";fw<=fout;bw<='0'; WHEN"010"=>d:="00001111";fw<='0';bw<=fout; WHEN"100"=>d:="01111111";fw<=fout;bw<='0'; WHEN OTHERS=>fw<='0';bw<='0';END CASE;IF clk'EVENT AND clk='1'THENIF CNT8="11111111"THENCNT8:="00000000";fout:='1';ELSECNT8:=CNT8+1;IF CNT8>d THENfout:='0';END IF;END IF;END IF;END PROCESS;END one;。