当前位置:文档之家› 洗衣机控制电路数电实验

洗衣机控制电路数电实验

2010—2011学年第二学期《数字电子技术课程设计》报告课题:简易洗衣机控制电路专业班级:自动化 09-1姓名:仇涛学号: 09051107设计日期: 2011年7月7日~10日目录一、设计任务及要求-------------------------------------------------------------------------------2(一)具体要求--------------------------------------------------------------------------------2(二)输入输出资源说明--------------------------------------------------------------------2二、设计原理与方案--------------------------------------------------------------------------------4(一)顶层设计方案---------------------------------------------------------------------------4(二)分频器设计方案------------------------------------------------------------------------5(三)计时器(倒计时)设计方案---------------------------------------------------------5(四)显示器设计方案------------------------------------------------------------------------5(五)暂停设计方案---------------------------------------------------------------------------5三、电路设计、仿真与实现-----------------------------------------------------------------------6(一)顶层的设计实现------------------------------------------------------------------------6(二)分频器的设计实现---------------------------------------------------------------------8(三)计数器(倒计时)的设计实现-----------------------------------------------------10(四)显示器设计实现-----------------------------------------------------------------------15(五)暂停设计实现--------------------------------------------------------------------------17(六)Fit Design 结果------------------------------------------------------------------------18四、分析与讨论-------------------------------------------------------------------------------------18一、设计任务及要求:洗衣机是家庭常用电器,一般可以有多种工作模式可供选择。

在此要求设计具有两种工作模式的简易洗衣机控制电路,具有复位、模式设置、启动、暂停功能,并能显示洗衣机的工作状态(如洗涤时间倒计时,电动机的正反转、暂停)。

(一)具体要求:1、设置为复位按钮S0,按钮状态S0=0时,对系统状态进行复位,计数器清零。

S0=1时,进入模式选择。

2、设置模式选择按钮S1。

按钮状态S1=0时,执行洗衣模式一,控制洗衣机的电机按照图1的规律循环运转;S1=1执行洗衣模式二,控制洗衣机的电机按照图2规律循环运转。

图1 洗衣模式一图2 洗衣模式二3、设置启动按钮S2。

洗衣模式设定后,按钮状态S2=1时,设定洗衣时间为30分钟,按钮状态S2=0时,设定洗衣时间为15分钟。

在洗衣过程中分别用3个LED灯来显示电动机的正转、翻转,间歇等状态。

4、设置暂停按钮S3。

当按钮状态S3=0时,洗衣暂停,计数器状态、显示均保持,并点亮1个LED灯显示暂停状态。

S3=1时正常运转。

(二)输入输出资源说明:1、输入信号:四个控制按钮S0、S1、S2、S3(按钮按下时S=0,松开时S=1)。

2、外部输入脉冲信号时钟源CP(50MHz),应设计一分频器得到5Hz信号供计数器使用。

3、输出3组显示译码信号,并在FPGA内部经过译码后获得7段LED显示码,并通过扫描方式在三个发光LED显示数码管上显示当前洗衣时间的倒计时(分钟)、每个洗衣循环的60s倒计时的十位和个位。

4、输出4个高低电平信号,分别接到外部的4个LED灯指示电机的正转、间歇、反转和系统的暂停。

(输出高电平时,对应的LED灯亮)其具体框图如下:(此图只是大概结构,设计时可根据自己的思路稍微改动电路图)图3 洗衣机控制器结构框图根据如上说明,本设计的主要任务和设计要求是:1、按照现代数字系统的Top-Down模块化设计方法,提出简易洗衣机控制电路设计系统的整体设计方案,并进行正确的功能划分,分别提出并实现控制器、计数器、输出译码等模块化子系统的设计方案。

2、在Quartus的EDA设计环境中,采用原理图和Verilog语言混合输入的方法,完成系统的顶层设计、各子系统的模块化设计。

分别完成各个基于Verilog语言实现的子模块(包括分频器、计数器、主控制器、扫描显示译码四部分)的逻辑功能仿真,并对顶层设计进行功能仿真。

3、在2步的基础上,采用Altera公司的CPLD器件EP1C12F324C8对顶层设计进行适配(Fit Design),生成下载文件。

4、采用DownLoad软件将设计的JED文件烧录到试验板的芯片上,实际测试。

二、设计原理与方案(一)、顶层设计方案:本系统主要有分频器,计时器(倒计时),和显示器三大部分。

整体设计框图如下:其中,分频器为其他模块提供合适的脉冲信号,计时器(倒计时)接受外部控制信号(S0 S1 S2),根据不同的信号进行不同的洗衣时间的倒计时并且根据倒计时的时间控制三个LED 灯(正转、反转与间歇)以及将倒计时结束的信号输出,显示器将倒计时的现态时间显示。

S3与倒计时结束信号一起控制计数器的暂停与暂停灯的亮灭。

(二)、分频器设计方案:分频器一输入两输出,输入为50MHZ 的原脉冲信号,输出clko1为1HZ 脉冲信号(给计数器),输出clko2为1KHZ 脉冲信号(给显示器)。

(三)、计时器(倒计时)设计方案:计时器的输入有:clk (1HZ 脉冲输入),S0(复位控制输入),S1(模式控制输入),S2(时间控制输入)。

输出有:out (倒计时结束输出,与S3一起控制计数器的暂停与暂停灯的亮灭),fenshi (倒计时现态时间的分的十位输出,给显示器),fenge (倒计时现态时S 3间分的个位输出,给显示器),miaoshi(倒计时现态时间的秒的十位输出,给显示器),miaoge (倒计时现态时间秒的个位输出,给显示器),LED(正转、反转与间歇)。

计时器的工作原理是:当clk出现上升沿时,将时间自减一秒,在按下S0(系统复位)后进入时间选择上,如果S2(时间输入)发生了改变则按新输入时间倒计时,如果没有发生改变则按原有状态时间继续倒计时直到时间为0:00为止并且反馈倒计时结束(out)信号。

其中S1控制模式信号,不按S1时S1=0,执行模式一;按下S1时,S1=1,执行模式2。

.(四)、显示器设计方案:将输入的倒计时现态时间(fenshi,fenge,miaoshi,miaoge)以七段码的形式通过数码管输出,数码管的扫描信号del。

(五)、暂停设计方案:本系统中的暂停主要是通过控制CLK的脉冲输入来控制计时器的计算。

当无脉冲输入时,计时器不运算,即暂停。

三、电路设计、仿真与实现:(一)顶层的设计实现:顶层设计的原理图:顶层设计的RTL 视图:整体的仿真结果:(二)、分频器的设计实现:分频器的源程序:module fenpin (clk,//源脉冲输入clko1,//1HZ脉冲输出 clko2//1KHZ脉冲输出 );/*==================================*/input clk;output clko1;output clko2;/*==================================*/reg clko1;reg clko2;reg [31:0]clk1;//控制1HZ的中间变量reg [31:0]clk2; //控制1KHZ的中间变量/*==================================*/initial//初始化beginclk1<=32'd0;clk2<=32'd0;end/*==================================*/always @(posedge clk )//变频beginclk1 <= (clk1 == 32'd50_000_000) ? 32'd0 : (clk1 + 32'd1);//仿真的时候//把50_000_000改小clko1 <= (clk1 == 32'd50_000_000) ? 1'd1 : 1'd0;clk2 <= (clk2 == 32'd50_000) ? 32'd0 : (clk2 + 32'd1);clko2 <= (clk2 == 32'd50_000) ? 1'd1 : 1'd0;end/*==================================*/Endmodule分频器的仿真结果:(三)计数器(倒计时)的设计实现:计数器(倒计时)的源程序:module daojishi(clk,//脉冲s0,//开关s0s1,//开关s1s2,//开关s2fenshi,//分的十位fenge,//分的秒位miaoshi,//秒的十位miaoge,//秒的个位LED,//3个指示out);/*===========================================*/input clk;//1HZ脉冲input s0;input s1;input s2;output out;output [2:0]fenshi;//四位输出,分十,分个,秒十,秒个output [2:0]miaoshi;output [3:0]fenge;output [3:0]miaoge;output [2:0]LED;/*===========================================*/reg [3:0]fenge;reg [2:0]fenshi;reg [2:0]miaoshi;reg [3:0]miaoge;reg [2:0]LED;reg out;/*===========================================*/initialbeginmiaoshi=3'b000;out=1'd1;miaoge=4'b0000;LED=4'b0000;end/*===========================================*/always @ (posedge clk)beginif(s0===1'd0)//判断是否复位,并且判断s2,从而改变分的初值 beginfenshi=3'd0;fenge=4'd0;miaoshi=3'd0;miaoge=4'd0;LED=3'b000;out=1'd1;if(s2===1'd0)beginfenshi=3'd1;fenge=4'd5;endelse if(s2===1'd1)beginfenshi=3'd3;fenge=4'd0;endendelse if(s0!=1'd0)beginbeginif(fenshi===0&&fenge===0&&miaoshi===0&&miaoge===0)//呈0:00,则结束,且输出OUT为0,使LED3暗beginLED=4'b0000;out=1'b0;endelse if(fenshi!=0||fenge!=0||miaoshi!=0||miaoge!=0)//如果还有时间,则倒计时beginbegin//倒计时if(miaoge===4'b0000)//秒的个位为0则借位beginif(miaoshi!=3'd0)beginmiaoshi=miaoshi-3'd1;miaoge=4'd9;endelse if(miaoshi===3'b000)//如果秒的十位也为0则向分个借位beginif(fenge!=4'd0)beginfenge=fenge-4'd1;miaoshi=3'd5;miaoge=4'd9;endelse if(fenge===4'd0) //如果分个为0则向分十借位beginfenshi=fenshi-3'd1;fenge=4'd9;miaoshi=3'd5;miaoge=4'd9;endendendelsebeginmiaoge=miaoge-4'd1;endend/*===========================================*/begin//模式选择if(s1===1'b0)//模式1beginif(miaoshi===3'd5||miaoshi===3'd4)//正转beginLED[0]=1'b1;LED[1]=1'b0;LED[2]=1'b0;endif(miaoshi===3'd3||miaoshi===3'd0)//间歇beginLED[0]=1'b0;LED[1]=1'b0;LED[2]=1'b1;endif(miaoshi===3'd2||miaoshi===3'd1)//反转beginLED[0]=1'b0;LED[1]=1'b1;LED[2]=1'b0;endend/*===========================================*/else if(s1===1'b1)//模式2beginif(miaoshi===3'd5||miaoshi===3'd4||(miaoshi===3'd3&&miaoge>=4'd5))//正转beginLED[0]=1'b1;LED[1]=1'b0;LED[2]=1'b0;endif((miaoshi===3'd3&&miaoge<=4'd4&&miaoge>=4'd0)||(miaoshi===3'd0&&miaoge<=4'd4& &miaoge>=4'd0))//间歇beginLED[0]=1'b0;LED[1]=1'b0;LED[2]=1'b1;endif(miaoshi===3'd2||miaoshi===3'd1||(miaoshi===3'd0&&miaoge>=5))//反转beginLED[0]=1'b0;LED[1]=1'b1;LED[2]=1'b0;endendend/*===========================================*/endendendend/*===========================================*/Endmodule计数器(倒计时)的仿真结果:(四)显示器设计实现:显示器源程序:module xianshi (clk,fenshi,fenge,miaoshi,miaoge,del,duanma);/*==============================================*/ input clk;//1KHZ脉冲input [2:0]fenshi;//分input [2:0]miaoshi;input [3:0]fenge;//秒十input [3:0]miaoge;//秒个output [2:0]del;//3-8output [6:0]duanma;//7段码/*==============================================*/ reg [2:0]del;reg [6:0]duanma;reg [6:0]fenshio;reg [6:0]fengeo;reg [6:0]miaoshio;reg [6:0]miaogeo;/*==============================================*/ initialbegindel<=3'b000;duanma<=7'b0000_000;end/*==============================================*/ always @(posedge clk)//3-8译码器扫描beginif(del===3'b111)begindel<=3'b000;endelsebegindel<=del+3'b001;endend/*==============================================*/always@(fenshi or fenge or miaoshi or miaoge)//翻译成七段码begincase(miaoge)//秒的个位4'b0000: miaogeo<=7'B0111_111;//04'b0001: miaogeo<=7'b0000_110;//14'b0010: miaogeo<=7'b1011_011;//24'b0011: miaogeo<=7'b1001_111;//34'b0100: miaogeo<=7'b1100_110;//44'b0101: miaogeo<=7'b1101_101;//54'b0110: miaogeo<=7'b1111_101;//64'b0111: miaogeo<=7'b0000_111;//74'b1000: miaogeo<=7'b1111_111;//84'b1001: miaogeo<=7'b1101_111;//9default: miaogeo<=7'b0000_000;//暗 endcasecase(miaoshi)//秒的十位3'b000: miaoshio<=7'B0111_111;//03'b001: miaoshio<=7'b0000_110;//13'b010: miaoshio<=7'b1011_011;//23'b011: miaoshio<=7'b1001_111;//33'b100: miaoshio<=7'b1100_110;//43'b101: miaoshio<=7'b1101_101;//5default: miaoshio<=7'b0000_000;//暗 endcasecase(fenge)//分的个位4'b0000: fengeo<=7'B0111_111;//04'b0001: fengeo<=7'b0000_110;//14'b0010: fengeo<=7'b1011_011;//24'b0011: fengeo<=7'b1001_111;//34'b0100: fengeo<=7'b1100_110;//44'b0101: fengeo<=7'b1101_101;//54'b0110: fengeo<=7'b1111_101;//64'b0111: fengeo<=7'b0000_111;//74'b1000: fengeo<=7'b1111_111;//84'b1001: fengeo<=7'b1101_111;//9default: fengeo<=7'b0000_000;//暗 endcasecase(fenshi)//分的十位3'b000: fenshio<=7'B0111_111;//03'b001: fenshio<=7'b0000_110;//13'b010: fenshio<=7'b1011_011;//23'b011: fenshio<=7'b1001_111;//33'b100: fenshio<=7'b1100_110;//43'b101: fenshio<=7'b1101_101;//5default: fenshio<=7'b0000_000;//暗endcaseend/*==============================================*/always @(fenshio or fengeo or miaoshio or miaogeo)//对应数码管输出begincase (del)3'b000: duanma<=miaogeo;//秒的个位3'b001: duanma<=miaoshio;//秒的十位3'b010: duanma<=7'b1000_000;// -3'b011: duanma<=fengeo;//分的个位3'b100: duanma<=fenshio;default: duanma <= 7'b0000_000;//暗endcaseend/*=========================================*/edmodule显示器的仿真结果:(五)暂停设计实现将开关S3与CLK构成一个与门再接到倒计时模块的CLK(脉冲输入)端上,松开S3,S3=1,1Hz的脉冲输入倒计时模块,倒计时模块正常运作,当按下S3后,S3=0,无脉冲输入倒计时模块,模块暂停。

相关主题