资源描述
EDA课程设计 全自动洗衣机1 设计任务及要求利用可编程逻辑器件丰富的内部资源,借助EDA(电子设计自动化)工具(如MAXplus)把家电控制器电路集成在一片FPGA(现场可编程门阵列)芯片内,这样就无需专门的单片机和外部逻辑电路。从而减小了电路的体积、提高了系统的稳定性。本次电路设计是洗衣机控制器设计。设计的主要内容是:(1)设计一个洗衣机控制器,使洗衣机作如下运转:定时启动正转20秒暂停10秒反转20秒暂停10秒定时不到,重复上面过程。(2)若定时到,则停止,并发出音响信号。(3)用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由开始信号开始。(4)三只LED灯表示正转、反转、暂停三个状态。设计的主要要求是:(1)根据设计题目要求编写相应程序代码(2)对编写的VHDL程序代码进行编译和仿真(3)利用实验箱完成硬件验证(可选)(4)总结设计内容,完成课程设计说明书2设计原理及总体框图洗衣机控制器的设计主要是定时器的设计,由一片FPGA和外围电路构成了电器控制部分。FPGA接收键盘的控制命令,控制洗衣机的进水、排水、水位和洗衣机的工作状态、并控制显示工作状态以及设定直流电机速度、正反转控制、制动控制、起停控制和运动状态控制(洗衣机洗涤过程如图2所示)。对FPGA芯片的编程采用模块化的VHDL (硬件描述语言)进行设计,设计分为三层实现,顶层实现整个芯片的功能。顶层和中间层多数是由VHDL的元件例化语句实现。中间层由无刷直流电机控制、运行模式选择、洗涤模式选择、定时器、显示控制、键盘扫描、水位控制以及对直流电机控制板进行速度设定、正反转控制、启停控制等模块组成,它们分别调用底层模块。洗衣机控制器电路主要有五大部分组成,包括:减法计数器、时序控制电路、预置时间和编码电路、数码管显示、译码器组成。具体电路如图3所示:图3洗衣机控制器总体设计图3 程序设计(1)时间设置电路:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity settime isport(load:in std_logic;k:in std_logic_vector(9 downto 0);o:out std_logic_vector(3 downto 0);end settime;architecture rt1 of settime issignal p1:std_logic_vector(3 downto 0);begin process(load)beginif(loadevent and load=1)thencase k iswhen 1000000000=p1p1p1p1p1p1p1p1p1p1p1=0000;end case;end if;end process;o=p1;end rt1;(2)数码管显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity showtime is port(num:in std_logic_vector(3 downto 0);dout:out std_logic_vector(6 downto 0);end showtime;architecture a1 of showtime isbeginwith num selectdout=1111110 when 0000, 0110000 when 0001, 1101101 when 0010, 1111001 when 0011, 0110011 when 0100, 1011011 when 0101, 1011111 when 0110, 1110000 when 0111, 1111111 when 1000, 1111011 when 1001, 0000000 when others;end a1;(3)序电路library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; entity SHIXU isport(clk:in std_logic;TG:in std_logic;start:in std_logic;SHUCHU:BUFFER std_logic_VECTOR(2 DOWNTO 0);end SHIXU; architecture behav of SHIXU isSIGNAL QQ:STD_LOGIC_VECTOR(5 DOWNTO 0);beginprocess(clk,tg,QQ)beginif(tg=1)or(start=0) then shuchu=001;QQ=111011;else if(clkevent) and (clk=1)then if QQ=000000 then QQ=111011 ;shuchu=100 ; elsif QQ=111010then shuchu=100 ; elsif QQ=100111then shuchu=001; elsif QQ=011101then shuchu=010; elsif QQ=001001then shuchu=001; end if;QQrev=0;run=0;pauserev=1;run=0;pauserev=0;run=1;pauserev=0;run=0;pause=1;end case;end process;end behav;(5)减法计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; entity counter isport(start:IN std_logic;clk:IN std_logic;CHUSHItime:IN integer range 0 to 15;XIANSHItime:OUT integer range 0 to 15;JINWEI:BUFFER std_logic);end counter; architecture behav of counter issignal ZHONGJIANtime:integer range 0 to 15;beginprocess(clk)beginif(start=0)then ZHONGJIANtime=CHUSHItime;XIANSHItime=CHUSHItime;jinwei=0;else if(clkevent and clk=1)then if(ZHONGJIANtime=0) then XIANSHItime=0;JINWEI=1; else ZHONGJIANtime=ZHONGJIANtime-1;XIANSHItime=ZHONGJIANtime; end if; end if;end if;end process;end behav; 4 编译及仿真EDA工具在EDA技术应用中占据极其重要的位置,EDA的核心是利用计算机完成电子设计全程自动化,因此基于计算机环境的EDA软件的支持是必不可少的。此次设计所用EDA工具是由著名的Alter公司生产的MAXplus工具软件,它是一种集成的开发环境,支持原理图、VHDL和Verilog语言文本文件,以及波形文件作为设计输入,并支持这些文件的人以混合设计。 图4洗衣机控制器程序仿真图 MAXplus工具软件具有门级仿真器,可以进行功能仿真和时序仿真,能够产生精确的仿真结果,同是还支持主流第三方EDA工具,所以可以说MAXplus是当今最优秀的EDA工具软件之一。利用MAXplus工具软件仿真仿真结果如图4所示5 硬件调试与结果分析洗衣机接通电源,按load设置洗涤时间按start、rd置为高电平洗衣机开始工作,当时钟第一个上升沿到达时run(正转功能)为高电平维持20s以后变为低电平而pause(暂停功能)随着时钟上升沿的到来变为高电平维持10s变为低电平,然后rev(反转功能)开始随着时钟上升沿的到来变为高电平工作维持20s后变为低电平,再停止pause置高,接下来电路一直重复上述工作,知道定时器计数结束。电路设计完成以后,按照预定设计,输入相应数据,三只LED灯按照设定时间规律间断性亮起,数码管也显示输入时间并按减数计时产生相应的数字显示,直到到达预定时间停止工作显示零,实验设计达到预期效果。6 参考文献1 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.2 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006.3 阎石主编.数字电子技术基础. 北京:高教出版社,2003.4 赵岩岭 刘春等.在MAXplus平台下用VHDL进行数字电路设计. 西安:西电出版社,2005心得体会通过这次的EDA设计,我可以说是受益良多。看到洗衣机控制器的题目,我首先想到的是状态机的设计,因为课本上说状态机其实就是控制器,后来经过看书觉得应该是摩尔型状态机,可是自习分析后发现设计题目比较复杂,如果用状态机的思路来设计,比较困难超出了我的能力。结合以前做课程设计(数字电路设计交通等控制器)的经验,如果用模块化层次化的设计思路更清晰,设计起来也更容易,特别是更符合EDA设计的的流程,故自己开始设计各功能模块。洗衣机控制器主要实几种状态的循环改变,还有计时和数码显示的功能,所以我觉得电路主要有五大部分组成,包括:减法计数器、时序控制电路、预置时间和编码电路、数码管显示、译码器组成。在分析过程中,我遇到了不少困难,因为第一次遇到一个比较复杂的设计,刚开始不知道从哪里入手,所以借鉴了一些书和网上的资料,主要参看了赵岩岭 刘春等老师编著的在MAXplus平台下用VHDL进行数字电路设计关于控制器的一些设计方法和范例,并且在无忧电子开发网(
展开阅读全文