基于FPGA的洗衣机的设计Word格式文档下载.docx

上传人:b****5 文档编号:19922241 上传时间:2023-01-12 格式:DOCX 页数:28 大小:518.87KB
下载 相关 举报
基于FPGA的洗衣机的设计Word格式文档下载.docx_第1页
第1页 / 共28页
基于FPGA的洗衣机的设计Word格式文档下载.docx_第2页
第2页 / 共28页
基于FPGA的洗衣机的设计Word格式文档下载.docx_第3页
第3页 / 共28页
基于FPGA的洗衣机的设计Word格式文档下载.docx_第4页
第4页 / 共28页
基于FPGA的洗衣机的设计Word格式文档下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

基于FPGA的洗衣机的设计Word格式文档下载.docx

《基于FPGA的洗衣机的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的洗衣机的设计Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。

基于FPGA的洗衣机的设计Word格式文档下载.docx

主分频器、主控制器、洗涤定时器和水流控制器。

洗衣机洗涤控制电路的结构框图

主分频器

主分频器用来产生0.1秒的时钟供主控制器使用。

本方案DE2板自带时钟,其振荡频率为50MHz。

这样,主分频器的分频系数为5M。

现采用3个分频器构成主分频器的分频电路。

3个分频器是1k分频器、1k分频器和5分频器。

主分频器的结构如下图所示。

主分频器的结构

三、洗衣机洗涤控制电路的算法状态机图描述

1.主控制器算法状态机图描述

根据主控制器的工作要求,洗衣机洗涤时的工作状态共有以下9种:

标准——15分钟标准——10分钟

标准——5分钟轻柔——15分钟

轻柔——10分钟轻柔——5分钟

强洗——15分钟强洗——10分钟

强洗——5分钟

1)模式选择控制状态机图

2)定时选择控制状态机图

3)启/停控制算法状态机图描述

2.洗涤定时器算法状态机图描述

洗涤定时器有3种状态:

停止状态(IDLE)、计时状态(INCCOUNT)和暂停状态(TMP_STOP)。

3.水流控制器算法状态机图描述

该状态机图有3种状态:

停止状态(STOP)、电机接通定时计数状态(ON_TIME)和电机断开定时计数状态(OFF_TIME)。

四、洗衣机洗涤控制电路的VHDL语言描述

1.主分频器timectr_clkdiv模块

主分频器的功能是将50MHz的主频分频为10Hz的时钟。

该模块由3个进程组成,其VHDL语言描述的程序清单如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYtimectr_clkdivIS

PORT(sysclk:

INSTD_LOGIC;

clk_01:

OUTSTD_LOGIC);

ENDtimectr_clkdiv;

ARCHITECTURErtlOFtimectr_clkdivIS

SIGNALdiv1:

STD_LOGIC_VECTOR(9DOWNTO0):

="

0000000000"

;

--divideby1kcounter

SIGNALdiv2:

SIGNALdiv3:

STD_LOGIC_VECTOR(2DOWNTO0):

000"

--divideby5counter

SIGNALclk1,clk2:

STD_LOGIC;

BEGIN

div_1k:

PROCESS(sysclk)

BEGIN

IF(sysclk'

EVENTANDsysclk='

1'

)THEN

IF(div1="

1111100111"

)THENdiv1<

ELSEdiv1<

=div1+1;

ENDIF;

ENDIF;

ENDPROCESS;

clk1<

=div1(999);

PROCESS(clk1)

IF(clk1'

EVENTANDclk1='

IF(div2="

)THENdiv2<

ELSEdiv2<

=div2+1;

clk2<

=div2(999);

div_5:

PROCESS(clk2)

IF(clk2'

EVENTANDclk2='

IF(div3="

100"

)THENdiv3<

ELSEdiv3<

=div3+1;

clk_01<

=div3

(2);

ENDrtl;

div_5进程为5分频进程,div_1k进程为1000分频进程。

50MHz主频经该3个进程串行分频就得到10Hz的时钟clk_01。

2.定时器控制timer_ctr模块

如前所述,定时器控制timer_ctr模块的功能是根据启/停按键(start_stop)、模式选择按键(mode_sel)和定时选择按键(time_sel)的不同输入状态,产生对应的控制信号输出,其VHDL语言描述的程序清单如下。

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYtimer_ctrIS

PORT(reset,sysclk,start_stop,mode_sel,time_sel,timer_down:

s5min_out,s10min_out,s15min_out,start_out:

OUTSTD_LOGIC;

b_out,j_out,z_out:

ENDtimer_ctr;

ARCHITECTURErtlOFtimer_ctrIS

TYPEstate1TYPEIS(s_b,s_z,s_j);

TYPEstate2TYPEIS(s_15min,s_10min,s_5min);

TYPEstate3TYPEIS(s_start,s_stop);

SIGNALstate1,nextstate1:

state1TYPE;

SIGNALstate2,nextstate2:

state2TYPE;

SIGNALstate3,nextstate3:

state3TYPE;

SIGNALstart_stop_rising,start_stop_dlayed,setstart,clrstart:

SIGNALmode_sel_dlayed,modesel_rising,time_sel_dlayed,timesel_rising,

timer_down_rising:

SIGNALset_5min,set_10min,set_15min,start,set_b,set_j,set_z,

timer_down_dlayed:

modesel_rising<

=mode_selAND(NOTmode_sel_dlayed);

timesel_rising<

=time_selAND(NOTtime_sel_dlayed);

start_stop_rising<

=start_stopAND(NOTstart_stop_dlayed);

mode_ctr:

PROCESS(modesel_rising,state1,timer_down)

set_b<

='

0'

set_j<

set_z<

CASEstate1IS

WHENs_b=>

IF(timer_down='

)THENset_b<

nextstate1<

=s_b;

ELSIF(modesel_rising='

)THENnextstate1<

ELSE

=s_z;

ENDIF;

WHENs_z=>

set_z<

)THENset_z<

=s_j;

WHENs_j=>

set_j<

)THENset_j<

ENDCASE;

ENDPROCESS;

time_ctr:

PROCESS(timesel_rising,state2,timer_down)

set_15min<

set_10min<

set_5min<

CASEstate2IS

WHENs_15min=>

)THENset_15min<

nextstate2<

=s_15min;

ELSIF(timesel_rising='

)THENnextstate2<

nextstate2<

=s_10min;

WHENs_10min=>

)THENset_10min<

=s_5min;

WHENs_5min=>

set_5min<

)THENset_5min<

timer_down_rising<

=timer_downAND(NOTtimer_down_dlayed);

start_ctr:

PROCESS(start_stop_rising,state3,timer_down)

setstart<

clrstart<

CASEstate3IS

WHENs_stop=>

IF(start_stop_rising='

)THENnextstate3<

=s_start;

setstart<

nextstate3<

=s_stop;

WHENs_start=>

IF(timer_down_rising='

)THENclrstart<

nextstate3<

ELSIF(start_stop_rising='

nextstate3<

time_ctr_update:

PROCESS(reset,sysclk,timer_down_rising)

IF(reset='

)THEN

state1<

state2<

state3<

start_stop_dlayed<

ELSIF(sysclk'

)THEN

=nextstate1;

state2<

=nextstate2;

state3<

=nextstate3;

IF(set_b='

)THENb_out<

ELSEb_out<

ENDIF;

IF(set_z='

)THENz_out<

ELSEz_out<

IF(set_j='

)THENj_out<

ELSEj_out<

IF(set_15min='

)THENs15min_out<

ELSEs15min_out<

IF(set_10min='

)THENs10min_out<

ELSEs10min_out<

IF(set_5min='

)THENs5min_out<

ELSEs5min_out<

)THENstart_out<

ELSIF(clrstart='

ELSIF(setstart='

mode_sel_dlayed<

=mode_sel;

time_sel_dlayed<

=time_sel;

start_stop_dlayed<

=start_stop;

timer_down_dlayed<

=timer_down;

该模块由4个进程组成。

mode_ctr进程是模式选择控制进程,对应图的模式选择控制状态机图;

timer_cnt进程是定时选择控制进程,对应图的定时选择控制状态机图;

start_ctr进程是启/停控制进程,对应图的启/停控制算法状态机图;

最后一个进程是time_ctr_update进程,它的功能是根据上述3个进程中不同的控制标志输出,在该进程中对输出控制信号进行刷新,其刷新频率为系统主时钟频率(50MHz),这样就可确保控制的精度。

3.定时器timer_count模块

定时器timer_count模块的功能是根据定时控制输出,对洗衣机的洗涤时间进行定时控制。

它由3个进程构成,其VHDL语言描述的程序清单如下:

ENTITYtimer_countIS

PORT(reset,sysclk,clk_01,time_sel:

s5min_in,s10min_in,s15min_in,start_in:

timer_down_out,timer_on_out:

ENDtimer_count;

ARCHITECTURErtlOFtimer_countIS

COMPONENTcnt10a1

PORT(reset,clk:

carry:

ENDCOMPONENT;

COMPONENTcnt60a

ca60:

TYPEstateTYPEIS(IDLE,INCOUNT,TMP_STOP);

SIGNALstate,nextstate:

stateTYPE;

SIGNALset_timer_on,set_timer_down,ca10,s1min,s1min_dlayed,s1min_rising,count_inc,count_clr:

SIGNALtime_sel_dlayed,time_sel_rising,setdown,clrdown,seton,clron,timer_on,timer_down,timer_down_dlayed,timer_down_rising,start1,reset1,clk_01_s:

SIGNALcount,count_u:

STD_LOGIC_VECTOR(3DOWNTO0);

s1min_rising<

=s1minAND(NOTs1min_dlayed);

time_sel_rising<

timer_down_rising<

count_ctr:

PROCESS(s1min_rising,state,start_in,count)

BEGIN

setdown<

clrdown<

seton<

clron<

count_inc<

count_clr<

CASEstateIS

WHENIDLE=>

IF(start_in='

ANDtimer_down='

nextstate<

=INCOUNT;

clron<

=IDLE;

WHENINCOUNT=>

IF(start_in='

)THENclron<

=TMP_STOP;

IF(s1min_rising='

IF(count/=count_u)THEN

count_inc<

ELSE

setdown<

count_clr<

nextstate<

WHENTMP_STOP=>

)THENnextstate<

ELSEnextstate<

update:

PROCESS(reset,sysclk)

AND(NOTtimer_down)='

state<

s1min_dlayed<

time_sel_dlayed<

count<

0000"

=nextstate;

IF(seton='

)THENtimer_on<

ELSIF(clron='

IF(clrdown='

)THENtimer_down<

ELSIF(setdown='

timer_down<

IF(count_inc='

=count+1;

ELSIF(count_clr='

)THENcount<

=s1min;

timer_down_out<

=timer_down;

timer_on_out<

=timer_on;

INIT:

PROCESS(reset,time_sel_rising,timer_down_rising)

ortimer_down_rising='

count_u<

1110"

ELSIF(time_sel_rising'

EVENTANDtime_sel_rising='

IF(s15min_in='

)THENcount_u<

1001"

ELSIF(s10min_in='

0100"

ELSIF(s5min_in='

clk_01_s<

=clk_01ANDstart_in;

reset1<

=resetAND(NOTtimer_down);

u0:

cnt10a1PORTMAP(reset1,clk_01_s,ca10);

u1:

cnt60aPORTMAP(reset1,ca10,s1min);

count_cnt进程是定时计时进程,根据定时选择所确定的定时时间进行计时控制,它对应于图的洗涤定时算法状态机图。

update进程是一个刷新进程,它根据count_ctr进程的输出控制标志,对输出控制信号进行刷新。

INIT进程是对本次定时器赋初值的进程。

定时器根据所赋初值的时间,实现洗涤时间的控制。

在timer_count清单中还含有10分频器和60分频器元件,这主要是为在本模块中得到分时钟s1min。

4.水流周期控制timeronoff_ctr模块

水流周期控制timeronoff_ctr模块的功能是控制洗涤电机的

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

当前位置:首页 > 医药卫生 > 中医中药

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

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