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

上传人:b****4 文档编号:3582982 上传时间:2022-11-24 格式:DOCX 页数:8 大小:90.82KB
下载 相关 举报
EDA课程设计 全自动洗衣机.docx_第1页
第1页 / 共8页
EDA课程设计 全自动洗衣机.docx_第2页
第2页 / 共8页
EDA课程设计 全自动洗衣机.docx_第3页
第3页 / 共8页
EDA课程设计 全自动洗衣机.docx_第4页
第4页 / 共8页
EDA课程设计 全自动洗衣机.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

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

《EDA课程设计 全自动洗衣机.docx》由会员分享,可在线阅读,更多相关《EDA课程设计 全自动洗衣机.docx(8页珍藏版)》请在冰豆网上搜索。

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

EDA课程设计全自动洗衣机

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)时间设置电路:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitysettimeis

port(load:

instd_logic;

k:

instd_logic_vector(9downto0);

o:

outstd_logic_vector(3downto0)

);

endsettime;

architecturert1ofsettimeis

signalp1:

std_logic_vector(3downto0);

begin

process(load)

begin

if(load'eventandload='1')

then

casekis

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";

whenothers=>p1<="0000";

endcase;

endif;

endprocess;

o<=p1;

endrt1;

(2)数码管显示

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entityshowtimeis

port

num:

instd_logic_vector(3downto0);

dout:

outstd_logic_vector(6downto0)

);

endshowtime;

architecturea1ofshowtimeis

begin

withnumselect

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"whenothers;

enda1;

(3)序电路

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entitySHIXUis

port(clk:

instd_logic;

TG:

instd_logic;

start:

instd_logic;

SHUCHU:

BUFFERstd_logic_VECTOR(2DOWNTO0)

);

endSHIXU;

architecturebehavofSHIXUis

SIGNALQQ:

STD_LOGIC_VECTOR(5DOWNTO0);

begin

process(clk,tg,QQ)

begin

if(tg='1')or(start='0')thenshuchu<="001";QQ<="111011";

elseif(clk'event)and(clk='1')then

ifQQ="000000"thenQQ<="111011";shuchu<="100";

elsifQQ="111010"thenshuchu<="100";

elsifQQ="100111"thenshuchu<="001";

elsifQQ="011101"thenshuchu<="010";

elsifQQ="001001"thenshuchu<="001";

endif;

QQ<=QQ-1;

endif;

endif;

ENDPROCESS;

endbehav;

⑷译码器

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entityYIMAis

port(run:

outstd_logic;

rev:

outstd_logic;

pause:

outstd_logic;

SHURU:

INstd_logic_VECTOR(2DOWNTO0)

);

endYIMA;

architecturebehavofyimais

begin

process(shuru)

begin

caseshuruis

when"001"=>rev<='0';run<='0';pause<='1';

when"010"=>rev<='1';run<='0';pause<='0';

when"100"=>rev<='0';run<='1';pause<='0';

whenothers=>rev<='0';run<='0';pause<='1';

endcase;

endprocess;

endbehav;

(5)减法计数器

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entitycounteris

port(start:

INstd_logic;

clk:

INstd_logic;

CHUSHItime:

INintegerrange0to15;

XIANSHItime:

OUTintegerrange0to15;

JINWEI:

BUFFERstd_logic);

endcounter;

architecturebehavofcounteris

signalZHONGJIANtime:

integerrange0to15;

begin

process(clk)

begin

if(start='0')thenZHONGJIANtime<=CHUSHItime;XIANSHItime<=CHUSHItime;jinwei<='0';

else

if(clk'eventandclk='1')then

if(ZHONGJIANtime=0)thenXIANSHItime<=0;JINWEI<='1';

elseZHONGJIANtime<=ZHONGJIANtime-1;XIANSHItime<=ZHONGJIANtime;

endif;

endif;

endif;

endprocess;

endbehav;

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进行数字电路设计》关于控制器的一些设计方法和范例,并且在无忧电子开发网(

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1