EDA课程设计论文洗衣机控制器.doc
目 录摘要 洗衣机控制器21.前言32.总体方案设计42.1基本原理42.2原理框图43.设计步骤和调试过程53.1总体电路设计53.2模块设计与相应的模块程序63.2.1数码管显示63.2.2时序电路控制73.2.3预置时间83.2.4译码器93.2.5减法计数器103.2.6洗衣机运转模块103.3仿真及仿真结果分析144.实验调试结果155.设计总结166.参考文献17摘要 洗衣机控制器随着电子技术和计算机技术的发展,电子产品已与生活紧密相连,与此同时EDA技术已经越来越渗透到我们的生活中,给我们的生活带来了极大的方便。电子设计自动化(EDA)技术,使得电子线路的设计人员能在计算机上完成电路的功能设计、逻辑设计、性能分析、时序测试直至印刷电路板的自动设计。在高校电子电路课程中结合教学内容引人EDA 工具软件进行设计,使学生掌握一定的EDA技术和EDA软件的使用方法。设计一个洗衣机控制器,要求洗衣机有进水,洗衣(正转、反转、暂停三种状态),放水,脱水。显示工作时间,要洗衣机在工作时间内完成,定时到则停止,同时发出提示音。关键词:预设时间信号输入模块,状态控制模块,减法计数器模块,VHDL语言程序As the electronic technology and the development of computer technology, electronic products already and life are closely linked, at the same time EDA technology already more and more the penetration to our life, brings to our life great convenience. Electronic design automation (EDA) technology, make the design of electronic circuit personnel on the computer can complete circuit design, the function of logical design, performance analysis, timing test until printed circuit board of automatic design. In the electronic circuit course teaching contents in the EDA software is designed, make the student to master certain EDA technology and EDA software use method. Design a washing machine controller, a washing machine, laundry water requirements (are turning, inversion, suspended three states), match-fixing, dehydration. Display work time, to work in the washing machine finish, time to stop, and at the same time, a prompt. Key words:Default time signal input module,State control module, Subtraction counter module, VHDL language program;1.前言随着电子技术和计算机技术的发展,电子产品已与生活紧密相连,电子产品的智能化日益完善,电路的集成度越来越高,而产品的更新周期却越来越短。与此同时EDA技术已经越来越渗透到我们的生活中,给我们的生活带来了极大的方便。目前,EDA技术已成为电子信息类学生一门重要的专业基础课程,并在教学、科研,一级大学生电子设计竞赛等活动中,起着越来越重要的作用,成为电子信息类本科生及研究生必须掌握的基础知识与基本技能。随着EDA技术的应用日益广泛,对EDA课程教学的要求也不断提高,以与EDA技术的发展相适应,正式基于以上考虑,进行EDA课程设计。很多设备在嵌入电子技术后,其产品价值大大提高,如全自动洗衣机、数控机床等。学习EDA技术是十分必要的,它可以提高电子产品设计的速度、精度、可靠性,扩大设计规模等,降低人们的劳动强度,提高工作效率;电子技术扩大了人们的视野。计算机技术和微电子工艺的发展,使得现代数字系统的设计和应用进入了新的阶段。电子设计自动化(EDA)技术在数字系统设计中起的作用越来越重要,新的工具和新的设计方法不断推出,可编程逻辑器件不断增加新的模块,功能越来越强,硬件设计语言也顺应形势,推出新的标准,更加好用,更加便捷。由于EDA技术的发展,使得现代数字系用设计从设计思想,设计工具到实现方式都产生了深刻的变化,呈现出新的特点,怎样体现这种变化,抓住EDA技术和数字设计的实质,是每个在学习的学生中都应思考的问题,EDA课程设计,其根本目的是在于在有限的时间内,掌握了解数字设计技术的本质及其重点,从而数字系统设计和EDA技术的精髓。EDA软件工具也在设计中起着重要的作用,好的EDA软件为数字设计开发提供了平台和工具,它将设计者的设计思想自动、高效地转化为物理电路和网表结构,并以直观、便捷的形式提供了仿真模拟手段。下面,将详细介绍此次课程设计的思路,以及设计流程。2.总体方案设计2.1基本原理洗衣机控制器的设计主要是定时器的设计。由一片FPGA和外围电路构成了电器控制部分。FPGA接收键盘的控制命令,控制洗衣机的进水、排水、水位和洗衣机的工作状态、并控制显示工作状态以及设定直流电机速度、正反转控制、制动控制、起停控制和运动状态控制。对芯片的编程采用模块化的EDA (硬件描述语言)进行设计,设计分为三层实现,顶层实现整个芯片的功能。顶层和中间层多数是由EDA的元件例化语句实现。中间层由无刷直流电机控制、运行模式选择、洗涤模式选择、定时器、显示控制、键盘扫描、水位控制以及对直流电机控制板进行速度设定、正反转控制、启停控制等模块组成,它们分别调用底层模块。首先,从秒脉冲出来的信号,经过一个控制电路后进入秒计数器进行秒计数,进行清零,这时用户置入洗涤时间,并按开始按钮,洗衣机开始工作。当秒计数器变为零的时候,去分钟计数器上面借数;与此同时,从十秒位转化出来的信号进入移位寄存器后,LED灯表示出电机运转状态;当用户设定的洗涤时间结束后,电路报警并清零;同时电机指示灯熄灭。2.2原理框图正转20秒暂停10秒反转20秒暂停10秒定时到停止定时启动图2.1 系统总体框图3.设计步骤和调试过程3.1总体电路设计洗衣机控制器电路主要有五大部分组成,包括:减法计数器、时序控制电路、预置时间、数码管显示、译码器组成。具体电路如下图所示:图3.1系统总体电路3.2模块设计与相应的模块程序3.2.1数码管显示根据课程设计要求,必须将洗衣机的工作状态及工作时间在数码管和指示灯上显示出来,此模块是用来控制洗衣机的工作状态及工作的频率,并把工作状态及工作时间显示出来实现数码管显示Library iee;Use ieee.std_logic_1164.all;Entity encode is Port( Bcd : in std_logic_vector(3 downto o); A,b,c,d,e,f,g: out std_logic );End encode;Architecture rtl of encode isSignal temp:std_logic_vector(6 downto 0);Begin Table Bcd => temp; 0000=> 1111110; 0001=> 0110000 0010=> 1101101 0011=> 1111001 0100=> 0110011 0101=> 1011011 0110=> 1011111 0111=> 1110000 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 rtl3.2.2时序电路控制此模块是为了实现洗衣机的正转、暂转、反转的功能,它由一个状态控制模块构成,是典型的状态机。Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.allEntity shixu isPort(cp,en,rd:in std_logic;Q1,q2:out std_logic);End shixu;Architecture rtl of shixu isBeginProcess(cp)Variable wash_time:integer range 0 to 19;Variable wash_time:integer range 0 to 9;Variable state:std_logic;Variable wash_time:integer :=21;Variable wash_time:integer :=9;BeginIf(en=0)wash_time:=19;wait_time:=9;state:=0;End if;if(en=0)then wash_time:=21;Q1<=0;Q2<=0;Else if (cpevent and cp=1)Then if (rd=1)then if (wash_time>0)Then wash_time:=20;state:=not state;End if; end if; end if;If(wash_time=0)then Q1<=0;Q2<=0;else if (state=0)Then Q1<=1;Q2<=0; else Q1<=0;Q2<=1;End if; end if;Else Q1<=0;Q2,=0;End if;End if;End if;End process;End rtl;3.2.3预置时间此模块由一个累加器和一个命令控制器组成,用来实现预置洗涤时间的功能,洗涤时间以分钟数为单位,用户可根据自己的需求来设定洗涤时间的长短。Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned;all;Entity counter is Port(clk,start:in std_logic; k:in STD_LOGIC_VECTOR(7 downto 0); time_remain:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); time_is_up:out std_logic);end counter;architecture rtl of counter isbeginprocess(clk)variable time_second:integer:=60;variable time_second:integer:=0;begin if (clkevent and clk=1)then if(time_second>0 and start=1)then time_second:=time_second-1;else time_second:=59; end if;if(start=0)then time_remain<=k;time_second:=60;time_second:=0;elseif(time_second=0) then if(time_remain(3 downto 0)>0) then time_remain(3 downto 0)<=time_remain(3 downto 0)-start; time_remain(3 downto 0)<=time_remain(3 downto 0)-1;time_second:=59;else if (time_remain(7 downto 4) >0)then time_remain(7 downto 4) <=time_remain(7 downto 4)-start; time_remain(7 downto 4)<=time_remain(7 downto 4)-1; time_remain(3 downto 0)<=1001;time_second:=59;end if; end if;else if (time_second=0 and time_second=1) if(time_remain=0)then time_is_up<=0;else time_is_up<=1; time_second:=time_second-1;end if;end if;end if;end if;end process; end rtl;3.2.4译码器当洗涤时间结束时,洗衣机就会自动发出警报声,以此提醒用户洗涤工作完成,此模块就是完成此功能。library ieee;use ieee.std_logic_1164.all;entity decoder is port( Q1,Q2: in std_logic; REV,RUN,PAUSE: out std_logic );end decoder;architecture rtl of decoder issignal choose:std_logic_vector(1 downto 0);beginchoose(1)<=q1;choose(0)<=q2;process(choose)begincase choose iswhen "00"=>REV<='0'RUN<='0'PAUSE<='1'when "10"=>REV<='0'RUN<='1'PAUSE<='0'when "01"=>REV<='1'RUN<='0'PAUSE<='0'when others=>REV<='0'RUN<='0'PAUSE<='0'end case;end process;REV<=Q2;RUN<=Q1;PAUSE<=not(Q1 OR Q2);end rtl;3.2.5减法计数器由于洗衣机有工作时间,必须要一模块来控制它的工作时间范围,当洗衣机开始工作后,减法计数器即会实现减数功能,直到时间减到零,洗衣机便停止工作。3.2.6洗衣机运转模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity washer_base isport(clk,clk_s,start,cs:in std_logic;-CS为异常判断信号线 timer1,timer2:in std_logic_vector(4 downto 0);-洗衣时间4/5,脱水时间1/5 vib_l,vib_r,over:out std_logic);end washer_base;architecture behav of washer_base istype states is(water_in,wash,water_out,dry,waiting);signal state:states;signal timer_1,timer_2:std_logic_vector(4 downto 0);signal water_h,water_l,water_door,working:std_logic; signal min:std_logic_vector(4 downto 0); signal vibl,vibr:std_logic;beginstates_switch:process(clk,start) beginif startevent and start='1' then state<=water_in; -start为洗衣流程启动信号elsif clk'event and clk='1' then case state iswhen water_in=>if water_h='0' then state<=wash;else state<=water_in;end if; -water_h低电平有?when wash=>if timer_1="00000" then state<=water_out;else state<=wash;end if; when water_out=>if water_l='0' then state<=dry;else state<=water_out;end if; -water_l低电平有?when dry=>if timer_2="00000" then state<=waiting;else state<=dry;end if;when waiting=>if cs='0' then state<=water_in;else state<=waiting;end if; when others=>state<=waiting; end case;end if;end process states_switch; download:process(start)beginif start'event and start='1' then timer_1<=timer1;timer_2<=timer2;end if;end process; count:process(clk_s) - 计时 variable sec:std_logic_vector( 5 downto 0);beginif state=wash then min<=timer_1+timer_2;if clk_s'event and clk_s='1' then if sec="111111" then sec:="000100"timer_1<=timer_1-1;else sec:=sec+1;end if;end if;elsif state=dry then if clk_s'event and clk_s='1' then if sec="111111" then sec:="000100"timer_2<=timer_2-1;else sec:=sec+1;end if;end if;end if;end process count;vib_l<=vibl;vib_r<=vibr; -连接洗衣机正反转信号与输出端口wash_run:process(clk_s)variable run_time:std_logic_vector(4 downto 0);beginif clk_sevent and clk=1 and cs=1 then run_time:=run_time+1;if run_time<17 then vibr<=1;vibl<=0;else run_time then vibl<=1;vibr<=0;end if;end if;end behav;3.3仿真及仿真结果分析EDA工具在EDA技术应用中占据极其重要的位置,EDA的核心是利用计算机完成电子设计全程自动化,因此基于计算机环境的EDA软件的支持是必不可少的。此次设计所用EDA工具是由著名的Alter公司生产的MAXplus工具软件,它是一种集成的开发环境,支持原理图、VHDL和Verilog语言文本文件,以及波形文件作为设计输入,并支持这些文件的人以混合设计。图3.2 洗衣机控制信号仿真图洗衣机接通电源,按load设置洗涤时间按start、rd置为高电平洗衣机开始工作,当时钟第一个上升沿到达时run(正转功能)为高电平维持20s以后变为低电平而pause(暂停功能)随着时钟上升沿的到来变为高电平维持10s变为低电平,然后rev(反转功能)开始随着时钟上升沿的到来变为高电平工作维持20s后变为低电平,再停止pause置高,接下来电路一直重复上述工作,知道定时器计数结束。图3.3总电路仿真波形4.实验调试结果电路设计完成以后,按照预定设计,输入相应数据,调试电源电路,选定电容,电压线圈型号、参数。调试LED显示电路,选定上拉电阻大小(1K),连接好LED显示器引脚。组建KEY电路、晶振电路、完成控制信号集成放大电路参数的调试。连接各个外围电路与芯片对应信号引脚,完成电路搭建LED灯按照设定时间规律间断性亮起,数码管也显示输入时间并按减数计时产生相应的数字显示,直到到达预定时间停止工作显示零,实验设计达到预期效果。5.设计总结本次课程设计是对所学的模拟电子技术基础和数字电子技术基础以及电工电子技术实验的高度总结应用,在设计的过程中发现了自己在知识上所存在的不足,也意识到除了必须具备专业知识以外,还必须具有塌实坚毅不服输的品格。设计该洗衣机控制器,让我加强了FPGA硬件编程的实际操作。对编程时出现的各种问题,找到相应的办法解决,并逐步完善程序控制电路设计在一片FPGA芯片内,具有体积小、可靠性高、设计周期短,功能灵活的特点。这尤其适用于小批量多品种新产品的开发,以满足人们追求新异、个性化的高品质生活的要求。通过这次课程设计我对FPGA的编程更加熟悉,对定时器和计数器的设计,让我更加明白时序组合门电路设计思路和方法。而且自已独立思考与设计,使我初步掌握了VHDL的设计方法与一些技巧,本人从中受益匪浅。通过这个实验设计,我更加熟练地掌握了一些常见的数字芯片的设计方法,在设计中也参了和查阅了很多资料,从中学到不少课本上没有的东西。从本次课程设计的目的来看,收获也是不少的,它使我们对课本以及以前学过的知识有了一个更好的总结与理解,也让我们知道了,光分开使不够的,从外面学到的知识要把形成一各整体,这也很好的训练了外面对开发一个项目应该有怎样的思路和准备更清晰。无论是从C语言课程设计到金工实习,还是从电子实习到现在的数电课程设计,每一次自己都觉得有一个进步,虽然有些方面自己做不出,但可以从老师和其他同学那里学到更好更多的东西,他们从另一个方面透析了自己的困难,这是很重要的,它让我学会了怎样学习别人的长处并把它变成自己的长处。有这样的机会和收获,要感谢老师的辅导以及同学的帮助,是他们让自己有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路,虽然自己走出来的路要崎岖的多,但觉得踏实、放心。6.参考文献1 潘松,黄继业.EDA技术实用教程 M .北京:科学出版社, 2010.2 杨君,王景存.基于VerilogHDL的流水线的设计方法及应用J.武汉科技大学学报(自然科学版) ,2002,25(4): 394396.3王金明.数字体统设计与Verilog HDL M .北京:电子工业出版社.20104 王景存,李炳生,郝国法,等.用FPGA实现数字逻辑分析仪设计J.武汉科技大学学报(自然科学版),2001,24(1):298300. 16第 页