VHDL洗衣机控制系统设计实验报告
- 格式:doc
- 大小:217.50 KB
- 文档页数:15
华东理工大学20XX -20XX 学年第2学期《电子综合设计DEA》课程设计作业20XX.6电子综合设计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 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 BEHA V OF xiyiji 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 BEHA V;二、仿真波形如下强洗全部过程强洗漂洗、甩干强洗(甩干)标准全部过程标准(漂洗、甩干)标准(甩干)弱洗全过程弱洗(漂洗、甩干)九、弱洗(甩干)强开盖子:一、强洗强开盖一、标准强开盖二、弱洗强开盖暂停和启动一、强洗暂停二、强洗重新启动三、标准暂停四、标准重新启动五、弱洗暂停六、弱洗重新启动一、两次强洗两次标准(漂洗、甩干)二、两次弱甩干三、设计思想讨论设计时参考了已有程序,此芯片有五个输入和三个输出,输入COUNT_M和输入COUNT_N是状态控制键,输入START是输入启动和暂停键,以及一个时钟CLK。
数字电路和逻辑设计综合实验实验报告实验名称:洗衣机控制器班级:班内序号:姓名:学号:数电设计综合实验—洗衣机控制器一.设计课题的任务要求设计制作一个全自动洗衣机的控制器:●洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗衣20秒,漂洗30 秒,脱水15 秒;●用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱水;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;●用显示器件显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全部过程结束后,应提示使用者;●用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留的状态;●选做:三个过程的时间有多个选项供使用者选择。
●选做:可以预约洗衣时间。
●选做:自拟其它功能。
二.系统设计(包括设计思路、总体框图、分块设计)◆设计思路首先从题目进行分析,采用VHDL模块化的设计方法来进行洗衣机控制器的设计,即自顶向下,从系统总体要求出发,自上至下地将设计任务分解为不同的功能模块.最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。
本控制器基本功能描述洗衣机控制器可工作于五种模式下:单洗涤、单漂洗、单脱水、漂洗十脱水、洗涤十漂洗+脱水,可以使洗衣机控制器工作在任意一种模式,并显示出洗衣机的工作状态和剩余工作时间,在剩余时间结束后有报警声提示使用者,并且可实现暂停洗衣和继续的功能,此外,加入附加功能,可自选三个过程是使用时间并且可预约洗衣时间。
由此分析可将洗衣机控制器分为控制模块、倒计时模块,初始模式选择模块,报警模块,洗衣时间选择模块,选通译码模块和分频器模块。
【设计过程】:1)审题,初步确定思路。
2)用VHDL语言进行编程。
3)适时对程序进行修改。
4)编译成功后,进行仿真,观察波形图。
5)将程序下载到实验板上,调试各功能。
6)通过计算机仿真和下载调试,发现问题,返回原程序进行修改。
7)进行总体的调试。
VHDL实验报告洗衣机控制器设计一.实验题目名称:洗衣机控制器设计二:实验目的、任务和要求:设计一个洗衣机洗涤程序控制器,控制洗衣机的电动机按下图所示的规律运转:图2.1 电机运转时序图用两位数码管预置洗涤时间(分钟数),洗涤过程在送入预置时间后开始运转,洗涤中按倒计时方式对洗涤过程作计时显示,用LED表示电动机的正、反转,如果定时时间到,则停机并发出音响信号。
其系统框图如下图所示:图 2.2 系统框图设计思路:此设计问题可分为洗涤预置时间编码寄存电路模块、十进制减法计数器模块、时序电路模块、译码驱动模块四大部分。
设置预置信号LD,LD有效后,可以对洗涤时间计数器进行预置数,用数据开关K1-K10分别代表数字1,2,…,9,0,用编码器对数据开关K1-K10的电平信号进行编码,编码器真值表如下表所示,编码后的数据寄存。
图2.3 编码器真值表设置洗涤开始信号start,start有效,则洗涤时间计数器进行倒计数,并用数码管显示,同时启动时序电路工作。
时序电路中含有20s定时信号,10s定时信号,设为A、B,A、B为“0”表示定时时间未到,为“1”表示定时时间到。
时序电路状态表如下表所示:图 2.4 时序电路状态表状态编码为:S0=00 S1=01 S2=11 S3=10若选JK触发器,其输出为Q2Q1。
逻辑赋值后的状态如下表所示:图2.5 逻辑状态表设置电动机正转信号run、反转信号rev、暂停信号Pause,由时序电路的输出Q2Q1经译码驱动模块,可使显示信号正确反映电路的工作状态,译码驱动模块真值表如下表所示:图2.6 译码驱动真值表直到洗涤计时时间到,时序电路异步复位,并启动音响电路。
其硬件系统示意图如下图所示:图2.7 硬件系统设计三.实验系统结构设计分析系统运行过程如下:在系统进行运行之前,使用K按钮预置洗衣机运转时间,此时用户设定的时间通过数码管时时显示出来,计时设备选取的精度是分钟级,也就是说用户可以设定洗衣时间是多少分钟,范围为00-99。
EDA课程实训报告一、实训课题:洗衣机控制器的设计二、设计的内容及要求:1.设计一个洗衣机控制器,要求为:1) 洗衣机控制器可以驱动洗衣机进行洗涤、漂洗或烘干;2) 洗衣机控制器可以设置洗衣机的工作时间,工作时间最短1分钟,最长30分钟,在工作过程中,工作时间以倒计时显示,若时间为0洗衣机停止工作;3) 洗衣机在待机状态时,洗衣机控制器可以设置洗衣机的工作方式和工作时间;4) 可以暂停或停止洗衣机工作;5) 利用四个数码管显示洗衣机待机时的设置时间和工作时的运行时间,利用一位数码管显示洗衣机待机时所设置的工作方式运行时的工作方式;6)利用三个LED分别表示驱动洗衣机进行洗涤、漂洗或烘干。
2.洗衣机控制器可以划分为状态机模块、计时器模块、设置模块和显示选择模块。
在QuartusII 中输入各个模块的代码,编译综合,仿真,完成各个模块的软件设计;4.把各个模块组合起来,综合编译,仿真,完成整个交通灯控制器系统的软件设计;5. 选择电路方案锁定管脚,把程序下载到实验箱中,利用实验箱进行硬件实现;6. 完成实训报告。
实训报告包括:1)设计的任务和要求;2)模块的划分和系统总框图;3)各个模块的实现,包括模块的作用,模块的输入与输出情况,模块状态图,模块的代码以及注释,模块的波形图;4)系统的实现,包括系统总原理图,系统的波形图;5)管脚的锁定关系;三.设计思路:◆状态切换>>>有限状态机◆按定时时间及时>>> 定时计数器◆显示时间>>> 数码管译码驱动器◆接收设置时间>>>时间设置键盘扫描器◆接收设置模式>>> 模式设置键盘扫描器◆切换显示运行时间和设置时间>>>二路选择器◆切换显示运行模式和设置模式>>>二路选择器整体设计示意图:四.系统组成以及系统各部分的设计:1.状态机的设计:状态机要完成的功能:●能设置工作模式;●控制洗涤、漂洗、干衣的驱动输出;●能启动、暂停、停止洗衣机控制器;●能重启、暂停和停止定时器;●能接收定时器的到时标志;●能使能键盘扫描计数器;●能控制二路选择器。
利用VHDL设计洗衣机控制器1 引言2 选题研究的意义2.1 课题来源2.2 课题研究的背景2.3 研究的目的和意义.4 应解决的主要问题及应达到的技术要求2.4.1 需解决的主要问题洗衣机控制系统的核心部件是控制器。
洗衣机控制电路包括控制器、控制对象、状态显示电路、计时器及报警电路。
它是一闭环系统,内部结构有洗衣机状态转换时间信号产生器、状态计数器、数据选择器和状态译码器,它能自动发出顺序循环控制信号(S、R、L),并同时完成在该状态下的计时功能。
另外,它还向控制对象提供一个工作过程的周期信号(T),作循环次数累计。
控制对象是由4位二进制计数器和4位数值比较器构成,它对T作计数,与此同时与人工输入的预置循环数比较,随时将反应受控器自身状态的信号反馈给控制器,从而实现系统的控制功能。
2.4.2 需实现洗衣机控制器的控制功能⑴洗衣机的状态为待机5s→正转60s→待机5s→反转60s,并用3个LED灯和7段显示器分别表示其工作状态和显示相应工作状态下的时间。
⑵自行设定洗衣机的循环次数,这里设最大的循环次数为15次。
⑶具有紧急情况的处理功能。
当发生紧急情况时,立即转入到待机状态,紧急情况解除后继续执行后续步骤。
⑷洗衣机设定循环次数递减到零时立即报警,以表示洗衣机设定的循环次数已经结束。
⑸输入变量:时钟CLK,直接清零RD,暂停/连续EN,设定洗衣机的循环次数SET。
⑹输出变量:三个工作状态S、R、L,一个过程周期T(T4),8421BCD码Q7…Q0输出及报警信号。
2.5 国内外研究现状,发展趋势及存在的主要问题2.6设计工具介绍3 洗衣机控制器设计的方案论证3.1 洗衣机控制器设计的方案选择设计洗衣机控制器,通常可以用三种方法来实现。
方法一,可以用纯机械式来设计控制器。
本方法利用机械原理来设计定时器。
例如可以利用弹簧储存能量和释放能量的过程得到定时时间。
其原理如同机械式(上发条)的钟表。
由于长时间工作,金属容易疲劳,一旦出现这样的情况,其定时的误差变大,导致定时不准确。
2015~2016 学年第一学期《数字电路与逻辑设计实验(下)》实验报告题目:基于 CPLD 的简易洗衣机控制器的设计与实现班级:学号:班内序号:学生姓名:一、设计课题的任务要求任务要求:基本要求:1、基于 CPLD 的简易洗衣机控制器的工作步骤为洗涤、漂洗和脱水三个过程,工作时间分别为:洗涤30 秒(进水5秒,洗衣15秒,排水5秒,甩干5秒),漂洗25秒(进水5秒,漂洗10秒,排水5秒,甩干5秒),脱水15秒(排水5秒,甩干10秒);2、用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱水;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;3、用发光二极管显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全部过程结束后,应有声音提示使用者,并保持在停止状态,直至再次开始;4、用点阵动画显示洗衣机工作过程中进水、波轮或滚筒转动、排水和甩干等的工作情况,四种工作情况的动画显示要有区别且尽可能的形象。
5、用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留的状态;提高要求:1、三个过程的时间有多个选项供使用者选择。
2、可以预约洗衣时间。
3、自拟其它功能。
二、系统设计(包括设计思路、总体框图、分块设计)A.设计思路:本程序采用自顶向下的设计方法。
先从所需要实现的功能入手,把整个洗衣机的程序分为分频(cp)模块,模式设置(fset)模块,控制(foption)模块和点阵模块(dianzhen)等分别实现,最后再合成一个整的程序。
B.设计过程::1.计算机编程:按照上述设计,用VHDL语言进行编程实现,并通过编译,观察资源使用情况。
2.系统仿真:通过仿真软件仿真,观察波形图,如果不对,对程序进行反复推敲修改.3.下载调试:将程序下载到实验板上,调试各功能看是否满足设计要求。
4.修改程序:通过计算机仿真和下载调试,发现问题,返回原程序进行修改,再次进行下载调试,直到成功为止。
北京邮电大学实验报告题目:洗衣机控制器实验报告专业:信息与通信工程学院学号:09210670班级:2009211125姓名:刘明巍1.实验目的与实验要求2.实验原理及设计过程3.仿真波形及波形分析4.源程序5.元器件清单及资源利用情况6.故障及问题分析7.总结和结论一、实验目的与实验要求目的1. 熟练掌握 VHDL 语言和QuartusII 软件的使用;2. 理解状态机的工作原理和设计方法;3. 掌握利用 EDA 工具进行自顶向下的电子系统设计方法;基本要求1.洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗衣20秒,漂洗15秒,脱水10秒;2.用一个键实现洗衣程序的手动选择:A、单脱水;B、单漂洗;C、单洗涤;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;3.用显示器显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全过程结束后,应提示使用者;4.用一个键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留的状态;提高要求1. 三个过程的时间有多个选项供使用者选择2. 可以预约洗衣时间3. 自拟其他功能二、实验原理及设计过程1.整个洗衣机的控制程序分为:状态控制及倒计时模块、初始模式选择模块、报警模块、洗衣时间选择模块、选通译码模块、分频器模块等分别实现,最后连接为整体。
(1)按键模块由防抖模块和按键信号产生模块构成:防抖模块用来增加按键的灵活性和有效性;按键控制信号产生模块是通过按键来产生模式选择信号、各模式时间选择信号和开始/暂停信号,形成控制模块需要的各种控制信号。
(2)显示模块由时间显示设置模块、数码管显示模块和选通信号模块以及指示灯构成:其中时间设置模块用来完成时间显示个位和十位信号的设计;数码管显示模块用用来完成模式选择选项的显示数字、模式时间选择选项的显示数字和倒计时时间的显示数字的信号设计;选通信号用来实现六个七段数码管的同时显示的设计;而指示灯用来完成对各种状态的指示的设计。
.数字系统设计与硬件描述语言期末考试作业题目:洗衣机控制器的设计学院:电子信息工程学院专业:物联网工程学号:3014204328姓名:刘涵凯资料Word.2016-12-10一、选题设计描述1.功能介绍洗衣机控制器,能够实现开始与暂停、注水,洗涤、排水、脱水和警报提醒的排水洗涤-:注水功能,并且可以随时更改洗衣模式。
洗衣机提供两种模式:模式1- :脱水。
洗衣模式决定洗衣时间。
默认模式为模式2。
2----注水洗涤排水脱水;模式洗衣机界面如下图所示:资料Word.运转方式如下图所示:算法简介2.总程序描述:种模块,在洗衣机控制器输入变化时,立刻转换模式总程序通过调用5;暂停时,除显示开关状态的输出外,并产生对应输出。
当开关关闭时,所有输出为0 。
所有输出为0 开关开启后,设置洗衣模式,之后按下“开始”即可开始工作。
在洗衣机控制器输入变化时,立刻转换模式并产生对应输出。
电子元器件模型如下图所示:资料Word.sorpclkin为开关选择信号,为系统时序脉冲信号,switch为开关信号,modelselect /暂停信号。
为开始drainstate为洗涤程序的工作状态,为注水程序的工作状态,waterstatewashrstate 为脱水程序的工作状态。
为排水程序的工作状态,drystate alarmout为警报提醒的状态。
暂停,/spstate为数码管显示的开始为数码管显示的开关的状态(switchstate0/1)为数码管显currentmodelstate 的状态(0/1),为数码管显示的洗衣机工作状态(0~4),为数码管为数码管显示的剩余时间的十位,timedecadetimeunit,示的当前模式(0~2) 显示的剩余时间的个位。
下面介绍各模块功能与算法:资料Word.1)开关与模式选择模块a接收开关信息,b接收模式选择信息。
c输出总电路的开关信息(开启洗衣机并且设置完毕电路后,即可准备工作,等待“开始”信号)。
电子课程设计——简易洗衣机控制器设计学院:班级:姓名:学号:指导老师:2013年12月目录第一部分:设计任务与要求 (1)第二部分:总体框图 (1)第三部分:选择器件 (2)第四部分:功能模块 (3)4.1时间预置编码寄存模块(settime) (3)4.2减法计数器模块(counter) (4)4.3数码管显示模块(showtime) (7)4.4时序电路模块(analyse) (9)4.5译码器模块(move)………………………………………1 1 第五部分:总体设计电路图 (13)5.1总体(顶层)设计电路图 (13)5.2顶层文件仿真 (13)5.3管脚分配图 (14)5.4硬件实验效果图 (14)第六部分:课程设计心得体会 (15)简易洗衣机控制器设计一、设计任务与要求设计一个洗衣机洗涤程序控制器,控制洗衣机的电动机按下图所示的规律运转:用两位数码管预置洗涤时间(分钟数),洗涤过程在送入预置时间后开始运转,洗涤中按倒计时方式对洗涤过程作计时显示,用LED 表示电动机的正、反转,如果定时时间到,则停机并发出音响信号。
二、总体框图RUN REV PAUSEK5K6K1 K2 K3 K4各个部分的具体功能描述如下:(一)预设时间和编码电路(settime ):接受用户通过按钮预置的时间信息,编码成八位之后转给减法计数器。
(二)减法计数器电路(counter):接收编码之后的预置时间信息,向电机运转控制电路传递运行信号,并将预置时间信息和剩余时间信息发给数码管显示电路进行实时显示。
(三)数码管显示电路(showtime):接收减法计数器电路传来的时间信息,进行实时译码显示。
(四)电机运转时序控制电路(analyse):接收运行起止信号,安排电机运行状态并编码输出。
(五)译码器(move):接收电机运行状态信号,译码后实时控制电机的正传、反转和暂停。
三、选择器件1、pc机一台。
2、CPLD/FPGA适配器板:标准配置EPF10K10LC84-4接口板,下载接口是数字芯片的下载接口(DIGITAL JTAG),主要用于CPLD/FPGA芯片的数据下载。
VHDL实验报告
洗衣机控制器设计
一.实验题目名称:洗衣机控制器设计
二:实验目的、任务和要求:
设计一个洗衣机洗涤程序控制器,控制洗衣机的电动机按下图所示的规律运转:
图2.1 电机运转时序图
用两位数码管预置洗涤时间(分钟数),洗涤过程在送入预置时间后开始运转,洗涤中按倒计时方式对洗涤过程作计时显示,用LED表示电动机的正、反转,如果定时时间到,则停机并发出音响信号。
其系统框图如下图所示:
图 2.2 系统框图
设计思路:
此设计问题可分为洗涤预置时间编码寄存电路模块、十进制减法计数器模块、时序电路模块、译码驱动模块四大部分。
设置预置信号LD,LD有效后,可以对洗涤时间计数器进行预置数,用数据开关K1-K10分别代表数字1,2,…,9,0,用编码器对数据开关K1-K10的电平信号进行编码,编码器真值表如下表所示,编码后的数据寄存。
图2.3 编码器真值表
设置洗涤开始信号start,start有效,则洗涤时间计数器进行倒计数,并用数码管显示,同时启动时序电路工作。
时序电路中含有20s定时信号,10s定时信号,设为A、B,A、B为“0”表示定时时间未到,为“1”表示定时时间到。
时序电路状态表如下表所示:
图 2.4 时序电路状态表
状态编码为:S0=00 S1=01 S2=11 S3=10
若选JK触发器,其输出为Q2Q1。
逻辑赋值后的状态如下表所示:
图2.5 逻辑状态表
设置电动机正转信号run、反转信号rev、暂停信号Pause,由时序电路的输出Q2Q1经译码驱动模块,可使显示信号正确反映电路的工作状态,译码驱动模块真值表如下表所示:
图2.6 译码驱动真值表
直到洗涤计时时间到,时序电路异步复位,并启动音响电路。
其硬件系统示意图如下图所示:
图2.7 硬件系统设计
三.实验系统结构设计分析
系统运行过程如下:在系统进行运行之前,使用K按钮预置洗衣机运转时间,此时用户设定的时间通过数码管时时显示出来,计时设备选取的精度是分钟级,也就是说用户可以设定洗衣时间是多少分钟,范围为00-99。
然后用户可以给出开始信号,系统开始运转并开始从预设时间倒计时,重复“正传->暂停->反转->暂停”的循环过程直至剩余时间变为零。
数码管在系统的整个运行过程中时时显示剩余运转时间,由于我们选用的数码管是一个,故设定的是每隔一秒分别显示十位和个位。
根据以上需求分析,按照系统模块化设计的要求可将洗衣机控制器的电路设计为主要由五部分组成,包括:预设时间和编码电路、减法计数器电路、数码管显示电路、电机运转时序控制电路、译码器。
系统总体电路图如下:
图3.1 系统模块设计图
各个部分的具体功能描述如下:
(一)预设时间和编码电路(settime):接受用户通过按钮预置的时间信息,编码成八位之后转给减法计数器。
(二)减法计数器电路(counter):接收编码之后的预置时间信息,向电机运转控制电路传递运行信号,并将预
置时间信息和剩余时间信息发给数码管显示电路进行实时显示。
(三)数码管显示电路(showtime):接收减法计数器电路传来的时间信息,进行实时译码显示。
(四)电机运转时序控制电路(analyse):接收运行起止信号,安排电机运行状态并编码输出。
(五)译码器(move):接收电机运行状态信号,译码后实时控制电机的正传、反转和暂停。
为方便使用Spartan-3E进行系统实现,我们根据该开发板的特点对实验实现进行了如下修改:(一)开始的时候是在settime模块我们是使用十个按钮进行数字0到9的输入,每一位分别对应数字一到十,后来
在写入板子的时候由于开关个数有限,选用了四位编码输入,即:“0000”到“1001”,非别对应一到十;(二)预置时间的十位数字和个位数字分开输入。
先进行十位数字的输入,完成后通过按钮向系统发送“Load”信号。
然后进行预置时间个位数字的输入,输入完成后同样以“Load”按钮结束;而且,当开始输入的时间是错误的时候,可以进行多次输入,以前的信息会被自动覆盖。
(三)以发光二极管的亮灭展示电机的正转、反转和暂停;
(四)在七个数码管上交替显示倒计时的十位和个位数字,每个时序脉冲替换一次。
开始的时候是设计为两个数码管,
大但考虑到只有一个数码管,故我们设计为每一秒交替显示十位和个位。
四.实验代码设计以及分析:
根据总体设计图和实验分析,各个部分的程序实现如下:
预置时间和编码电路(settime):
其中,time_input为通过开发板上按钮输入的信号,load为输入确认信号。
本模块将输入的四位时间信息编码输出到减法计数器电路。
减法计数器(counter):
本模块中clk为系统时序脉冲信号,start为系统开始运行的信号,time_set为从预置时间模块接收到的时间编码信号,time_remain为输出到数码管显示电路的时间信号,time_is_up为系统运行结束信号,可以用来控制蜂
鸣器的通断。
在系统运行的开始时期,用户第一次输入的预置时间会被赋给个位,第二次输入的时间会被赋给十位,可以进行多次输入,以前的会被覆盖。
数码管显示电路(showtime):
接收减法计数器电路传来的时间信息,进行实时译码显示,由于我们的实际是可以进行两位的时间显示的,所以开始的时候是用的两个数码管,后来见到硬件芯片上是只有一个,又修改成了一个,但为了进行两位的显示,我们就设计了两个小灯,每个小灯分别代表十位和个位,当某个小灯被点亮时代表当前显示的是对应位的数值,每个
一秒转换一次,这样就可以实现两位的显示了。
电机运转时序控制电路(analyse):
通过时钟的输入进行计算当前系统应该处的状态,并进行编码输出电机的运转状态。
由于在显示以及输入的时候只有分钟,故需要内设一个秒的计时变量。
译码器(move):
分析输入的电机转动编码信号,即为思路中的Q1何Q2,安排电机运行状态并进行输出。
此模块较为简单,设计基本没什么难度。
分频电路(主程序中未包含):
由于在最后写入板子的过程中时钟一直产生问题,故我们采取直接调用内部的时钟然后进行分频,这样就可以得到自己所想要的频率了。
主程序(wash)
用来将各个模块进行组合,从而实现一个可以运行的系统。
程序代码如下所示:
五:仿真图以及波形:
以下为系统仿真运行时输出的波形图
通过波形可以看到time_input设定的值通过load读入,start后,电机就会运转,同时数码管进行显示,实现了预定的功能,而且对于minute和second的显示也是正确的。
六.实验问题分析和经验总结:
关于这个洗衣机控制器,就是用模块化层次化的设计方法进行系统层的设计,这样分解下来,设计会更容易点,思路也比较简单。
洗衣机控制器主要就只有三个状态,要实现几种状态的多次循环的改变,其他的还有计时和数码显示的功能,所以电路可以设计为大致五大部分:settime,counter,analyse,move,和showtime。
通过每个模块的设计最后组装即可完成系统级的设计。
在设计的时候,如果特别要注意各个模块之间接口的设计,要是接口不对,模块之间就没法实现组装。
通过这次设计,对于VHDL的设计方法大致有了一些技巧性的了解,位以后的硬件设计打下了基础,对FPGA的编程、定时器和计数器的设计都熟悉起来,加深了对时序组合电路的印象。
通过在网上进行各种资料的查询,也发现了其实FPGA的设计具有较好的前景,其功能的强大和设计方法的简单可靠。
具有较强的适应能力和可移植性。
备注:
本实验报告中的代码均为图片形式,而且有的图片由于较大所以相对显示较为不清晰,在文件目录位置附有压缩包,内含源代码以及各个截图。