收藏 分销(赏)

EDA课程设计全自动洗衣机.doc

上传人:精*** 文档编号:2935401 上传时间:2024-06-11 格式:DOC 页数:13 大小:232.50KB 下载积分:8 金币
下载 相关 举报
EDA课程设计全自动洗衣机.doc_第1页
第1页 / 共13页
EDA课程设计全自动洗衣机.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
EDA课程设计 全自动洗衣机 1 设计任务及要求 利用可编程逻辑器件丰富的内部资源,借助EDA(电子设计自动化)工具(如MAX+plusⅡ)把家电控制器电路集成在一片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 is port(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 is signal p1:std_logic_vector(3 downto 0); begin process(load) begin if(load'event and load='1') then case k is when "1000000000"=>p1<="0001"; when "0100000000"=>p1<="0010"; when "0010000000"=>p1<="0011"; when "0001000000"=>p1<="0100"; when "0000100000"=>p1<="0101"; when "0000010000"=>p1<="0110"; when "0000001000"=>p1<="0111"; when "0000000100"=>p1<="1000"; when "0000000010"=>p1<="1001"; when "0000000001"=>p1<="1010"; when others=>p1<="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 is begin with num select dout<="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 is port(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 is SIGNAL QQ:STD_LOGIC_VECTOR(5 DOWNTO 0); begin process(clk,tg,QQ) begin if(tg='1')or(start='0') then shuchu<="001";QQ<="111011"; else if(clk'event) and (clk='1')then if QQ="000000" then QQ<="111011" ;shuchu<="100" ; elsif QQ="111010"then shuchu<="100" ; elsif QQ="100111"then shuchu<="001"; elsif QQ="011101"then shuchu<="010"; elsif QQ="001001"then shuchu<="001"; end if; QQ<=QQ-1; end if; end if; END PROCESS; end behav; ⑷译码器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity YIMA is port(run:out std_logic; rev:out std_logic; pause:out std_logic; SHURU:IN std_logic_VECTOR(2 DOWNTO 0) ); end YIMA; architecture behav of yima is begin process(shuru) begin case shuru is when "001"=>rev<='0';run<='0';pause<='1'; when "010"=>rev<='1';run<='0';pause<='0'; when "100"=>rev<='0';run<='1';pause<='0'; when others=>rev<='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 is port(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 is signal ZHONGJIANtime:integer range 0 to 15; begin process(clk) begin if(start='0')then ZHONGJIANtime<=CHUSHItime;XIANSHItime<=CHUSHItime;jinwei<='0'; else if(clk'event 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公司生产的MAX+plusⅡ工具软件,它是一种集成的开发环境,支持原理图、VHDL和Verilog语言文本文件,以及波形文件作为设计输入,并支持这些文件的人以混合设计。 图4洗衣机控制器程序仿真图 MAX+plusⅡ工具软件具有门级仿真器,可以进行功能仿真和时序仿真,能够产生精确的仿真结果,同是还支持主流第三方EDA工具,所以可以说MAX+plusⅡ是当今最优秀的EDA工具软件之一。利用MAX+plusⅡ工具软件仿真仿真结果如图4所示 5 硬件调试与结果分析 洗衣机接通电源,按load设置洗涤时间按start、rd置为高电平洗衣机开始工作,当时钟第一个上升沿到达时run(正转功能)为高电平维持20s以后变为低电平而pause(暂停功能)随着时钟上升沿的到来变为高电平维持10s变为低电平,然后rev(反转功能)开始随着时钟上升沿的到来变为高电平工作维持20s后变为低电平,再停止pause置高,接下来电路一直重复上述工作,知道定时器计数结束。电路设计完成以后,按照预定设计,输入相应数据,三只LED灯按照设定时间规律间断性亮起,数码管也显示输入时间并按减数计时产生相应的数字显示,直到到达预定时间停止工作显示零,实验设计达到预期效果。 6 参考文献 [1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005. [2] 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006. [3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003. [4] 赵岩岭 刘春等.在MAX+plusⅡ平台下用VHDL进行数字电路设计. 西安:西电出版社,2005 心得体会 通过这次的EDA设计,我可以说是受益良多。看到洗衣机控制器的题目,我首先想到的是状态机的设计,因为课本上说状态机其实就是控制器,后来经过看书觉得应该是摩尔型状态机,可是自习分析后发现设计题目比较复杂,如果用状态机的思路来设计,比较困难超出了我的能力。结合以前做课程设计(数字电路设计——交通等控制器)的经验,如果用模块化层次化的设计思路更清晰,设计起来也更容易,特别是更符合EDA设计的的流程,故自己开始设计各功能模块。洗衣机控制器主要实几种状态的循环改变,还有计时和数码显示的功能,所以我觉得电路主要有五大部分组成,包括:减法计数器、时序控制电路、预置时间和编码电路、数码管显示、译码器组成。在分析过程中,我遇到了不少困难,因为第一次遇到一个比较复杂的设计,刚开始不知道从哪里入手,所以借鉴了一些书和网上的资料,主要参看了赵岩岭 刘春等老师编著的《在MAX+plusⅡ平台下用VHDL进行数字电路设计》关于控制器的一些设计方法和范例,并且在无忧电子开发网(
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服