基于VHDL语言的简易洗衣机控制器_图文._vhdl洗衣机控制器
基于VHDL语言的简易洗衣机控制器_图文.由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“vhdl洗衣机控制器”。
电子课程设计
——简易洗衣机控制器设计
学院: 班级: 姓名: 学号:
指导老师: 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 PAUSE time_over clk K5 start K6 load K1 K2 K3 K4 各个部分的具体功能描述如下:(一预设时间和编码电路(settime :接受用户通过按钮预置的时间信息,编码 译码驱动模块(move clk out_1 out_2 start 时序电路模块(analyse clk time_over start 十进制减法计数器模块(counter
洗涤预置时间编码寄存电路模块(settime 报警信号
时间显示模块(showtime 定时启动 停止 正转 暂停 反转 暂停
成八位之后转给减法计数器。
(二减法计数器电路(counter:接收编码之后的预置时间信息,向电机运转 控制电路传递运行信号,并将预置时间信息和剩余时间信息发给数码管显示电路进行实时显示。
(三数码管显示电路(showtime:接收减法计数器电路传来的时间信息,进行 实时译码显示。
(四电机运转时序控制电路(analyse:接收运行起止信号,安排电机运行状态 并编码输出。
(五译码器(move:接收电机运行状态信号,译码后实时控制电机的正传、反转 和暂停。
三、选择器件
1、pc机一台。
2、CPLD/FPGA适配器板:标准配置EPF10K10LC84-4接口板,下载接口是数字芯片的下载接口(DIGITAL JTAG,主要用于CPLD/FPGA芯片的数据下载。
3、实验箱:装有七段数码管及蜂鸣器等,七段数码管字形及真值表如下 七段数码管字形如下:
七段数码管真值表如下:
四、功能模块
4.1时间预置编码寄存模块(settime1、时间预置编码寄存模块settime如图1所示,time_input为通过开发板上拨码开关K1、K
2、K3、K4输入的信号,load为输入确认信号。本模块将输入的四位时间信号编码成八位二进制数输出到减法计数器电路。
图1 时间预置编码寄存模块settime2、仿真图
图2 时间预置编码寄存模块仿真图
用K1、K2、K3、K4给time_input输入一个二进制数0111,让load有效,输出time_set为00000111。
3、时间预置编码寄存模块源代码 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;architecture settime of settime is signal p1:std_logic_vector(7 downto 0;begin proce(load begin if(load'event and load='1' then case time_input is when “0000”=>p1p1p1p1p1p1
when “0110”=>p1p1p1p1p1
1、减法计数模块counter如图3所示,本模块中clk为系统时序脉冲信号, start为系统开始运行的信号,time_set接收编码之后的预置时间信息,向电机运转控制电路传递运行信号,并将预置时间信息和剩余时间信息发给数码管显示电路进行实时显示。time_remain为输出到数码管显示电路的时间信号, time_over为系统运行结束信号,可以用来控制蜂鸣器的通断。
图3 减法计数模块
2、仿真图
图4 减法计数模块仿真图
3、减法计数模块源程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter is port(clk,start:in std_logic;
time_set:in std_logic_vector(7 downto 0;time_remain:buffer std_logic_vector(7 downto 0;time_over:buffer std_logic;end counter;architecture counter of counter is begin proce(clk variable time_second:integer range 0 to 59 :=59;begin if(clk'event and clk='1' then if(start='0' then if(time_remain(7 downto 0=0 then time_remain
time_second:=59;time_over
else time_second:=time_second-1;end if;end if;end if;end if;end if;end proce;end counter;4.3数码管显示模块(showtime1、数码管显示模块showtime如图5所示,本模块clk为系统时序脉冲信号,time_remain接收减法计数器电路传来的时间信息,进行实时译码显示, a,b,c,d,e,f,g分别对应数码管的七段,minute和second分别位选两个数码管,显示十位和个位。
图5 数码管显示模块
2、仿真图
图6 数码管显示模块仿真图
3、数码管显示模块源程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity showtime is port(time_remain:in std_logic_vector(7 downto 0;clk:in std_logic;
minute,second:out std_logic;a,b,c,d,e,f,g:out std_logic;end showtime;architecture showtime of showtime is signal temp:std_logic_vector(6 downto 0;signal bcd:std_logic_vector(3 downto 0;signal choose:std_logic;begin proce(clk begin if(clk'event and clk='1' then choose
bcdtemptemptemptemptemptemptemptemptemptemptemp
end proce;end showtime;4.4时序电路模块(analyse1、时序电路模块analyse如图7所示,本模块由start控制使能控制,通过时钟的输入进行计算当前系统所处的状态,并进行编码输出电机的运转状态, out_1为高位时表示电机正转,out_2为高位时表示电机反转。由于在显示以及输入的时候只有分钟,故在模块内部设计了一个秒的计时变量。
图7 时序电路模块 2、仿真图
3、时序电路模块analyse源程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity analyse is port(clk,start,time_over:in std_logic;out_1,out_2:out std_logic;end analyse;architecture analyse of analyse is
begin proce(clk variable state:std_logic;variable wash_time:integer:=0;variable wait_time:integer:=0;begin if(clk'event and clk='1' then if(start='0' then wash_time:=0;wait_time:=0;state:='0';out_1
if(wait_time=10 then wash_time:=0;state:=not state;else wait_time:=wait_time+1;end if;else wash_time:=wash_time+1;wait_time:=0;end if;end if;if(wash_time=20 then out_1
out_1
1、译码器模块move如图9所示,out_1和out_2接收时序电路模块的信号对信号进行译码,安排电机运行状态即正转(RUN、反转(REV、暂停(PAUSE,并进行输出。此模块较为简单,设计基本没什么难度。
图9 译码器模块
2、仿真图
图10 译码器模块仿真图
3、译码器模块move源程序 library ieee;use ieee.std_logic_1164.all;entity move is port(out_1,out_2:in std_logic;REV,RUN,PAUSE:buffer std_logic;
end move;architecture move of move is signal choose:std_logic_vector(1 downto 0;begin choose(1REVREVREVREV
五、总体设计电路图 5.1 总体(顶层)设计电路图 图 11 各模块连结后的电路图 系统运行过程如下:在系统进行运行之前,使用 K 按钮预置洗衣机运转时间,此时用 户设定的时间通过数码管时时显示出来,计时设备选取的精度是分钟级,也就是说用户可以 设定洗衣时间是多少分钟,范围为 00-99。然后用户可以给出开始信号,系统开始运转并开 始从预设时间倒计时,重复“正传->暂停->反转->暂停”的循环过程直至剩余时间变为零,剩余时间为零时,time_over 指示报警信号。数码管在系统的整个运行过程中时时显示剩余 运转时间。本设计在电路中加入了扫描信号,输入到减法模块,时序电路模块,实时显示模块。由 于扫描信号非常高,在我们看来,输出在数码管上的数字都是连续的两位数字,由预置时间 开始以一分钟减一的速度递减。当数码管显示为零时,洗衣停止。5.2 顶层文件仿真 13 由上图可以看出:当预置号时间,启动 start,数码管显示预置时间,电 机开始以正转=>暂停=>反转=>暂停为周期进行循环,一个周期正好费时一分钟,一个周期结束,数码管显示减一,依次循环,直至数码管显示时间为零,洗衣结 束。5.3 管脚分配图 5.4 硬件实验效果图 14
六、课程设计心得体会 二周的课程设计终于做完了,在这二周的课设中我感觉我学到了蛮多东西。首先,我学会了如何对一个大的课题进行分析——将大的整体划分为许多小 的部分,直到各个部分容易设计出来。关于这个洗衣机控制器,就是用模块化层 次化的设计方法进行系统层的设计,这样分解下来,设计会更容易点,思路也比 较简单。洗衣机控制器主要就只有三个状态,要实现几种状态的多次循环的改变,其他的还有计时和数码显示的功能,通过每个模块的设计最后组装即可完成系统 级的设计。在设计的时候,如果特别要注意各个模块之间接口的设计,要是接口 不对,模块之间就没法实现组装。其次,这次课程设计让我感受到了我对所学习的内容是多么的不熟练,在编 程的时候还要老是去翻书。我记忆在深刻的是在编写程序时,看了一遍又一遍书 但在编写的过程中还是出错了,最后只好对着书编写。但我觉的出现问题并不是 很要紧,这些问题能提醒我那些地方没有学好,只要我重视这些地方将其巩固我 想我将能学到许多的知识。通过这次设计,对于 VHDL 的设计方法大致有了一些 技巧性的了解,位以后的硬件设计打下了基础,对 FPGA 的编程、定时器和计数 器的设计都熟悉起来,加深了对时序组合电路的印象。最后,我感觉我对 Quartus I I 软件的使用熟练了许多。我虽然以前在试验 的时候使用过 Quartus I I 这个软件,但用的时间毕竟不长,对其不太熟练,经 过这次做课设我对这个软件运用熟练很多,这对以后的学习一定有很大的帮助。我想在面对一个问题时不能存在侥幸心理,只要我们认真
对待它,我们就能学到 东西。通过在网上进行各种资料的查询,也发现了其实 FPGA 的设计具有较好的 前景,其功能的强大和设计方法的简单可靠。具有较强的适应能力和可移植性。15
电信学院毕业设计(论文)任务书题目全自动洗衣机控制器设计学生姓名 班级 学号题目类型工程设计 指导教师成娟娟系主任一、毕业设计(论文)的技术背景和设计依据:随着科技的的发展,......
一.EDA技术简介在计算机技术的推动下,20世纪末,电子技术获得了飞速的发展,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使......
洗衣机节水控制器管理系统介绍及解决方案一、洗衣机节水控制器管理系统概述:随着水资源的日益短缺,节水已成为各个用水单位、整个国家以及世界各国的重要课题。在我国,用水存在......
学习心得 ——《eda技术实用教程》本学期对《eda技术实用教程--vhdl版》的学习为我的专业知识学习打开了一个全新的窗口——微电子技术领域。对eda技术,我更是有了全新的认识......
《创新实验》实验报告—基于VHDL的编程和硬件实现一、实验目的 1.2.3.4.熟悉和掌握硬件描述语言VHDL的基本语法及编写; 掌握软件Xilinx ISE 10.1的使用; 熟悉SDZ-6电子技术实......
