2010—2011学年第二学期《数字电子技术课程设计》报告课题:简易洗衣机控制电路专业班级:自动化09-1姓名:仇涛学号:09051107设计日期:2011年7月7日~10日目录一、设计任务及要求-------------------------------------------------------------------------------2(一)具体要求--------------------------------------------------------------------------------2(二)输入输出资源说明--------------------------------------------------------------------2二、设计原理与方案--------------------------------------------------------------------------------4(一)顶层设计方案---------------------------------------------------------------------------4(二)分频器设计方案------------------------------------------------------------------------5(三)计时器(倒计时)设计方案---------------------------------------------------------5(四)显示器设计方案------------------------------------------------------------------------5(五)暂停设计方案---------------------------------------------------------------------------5三、电路设计、仿真与实现-----------------------------------------------------------------------6(一)顶层的设计实现------------------------------------------------------------------------6(二)分频器的设计实现---------------------------------------------------------------------8(三)计数器(倒计时)的设计实现-----------------------------------------------------10(四)显示器设计实现-----------------------------------------------------------------------15(五)暂停设计实现--------------------------------------------------------------------------17(六)FitDesign结果------------------------------------------------------------------------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时正常运转。(二)输入输出资源说明:启动正转(25s)反转(25s)间歇(5s)间歇(5s)停止定时到启动正转(20s)反转(20s)间歇(10s)间歇(10s)停止定时到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语言实现的子模块(包括分频器、计数器、主控制器、扫描显示译码四部分)的逻辑功能仿正转指示灯LED1S0S2S3控制器洗涤时间倒计时计数器七段LED数码管译码扫描显示50MHz反转指示灯LED3暂停指示灯LED4间歇指示灯LED2CLKS1分频器1Hz60s倒计时计数器真,并对顶层设计进行功能仿真。3、在2步的基础上,采用Altera公司的CPLD器件EP1C12F324C8对顶层设计进行适配(FitDesign),生成下载文件。4、采用DownLoad软件将设计的JED文件烧录到试验板的芯片上,实际测试。二、设计原理与方案(一)、顶层设计方案:本系统主要有分频器,计时器(倒计时),和显示器三大部分。整体设计框图如下:其中,分频器为其他模块提供合适的脉冲信号,计时器(倒计时)接受外部控制信号(S0S1S2),根据不同的信号进行不同的洗衣时间的倒计时并且根据倒计时的时间控制三个LED灯(正转、反转与间歇)以及将倒计时结束的信号输出,显示器将倒计时的现态时间显示。S3与倒计时结束信号一起控制计数器的暂停与暂停灯的亮灭。S1计时器(倒计时)模块S0S2译码扫描显示七段LED数码管三个LED指示灯(正转、反转和间歇)OUTS3暂停与LED(暂停)(二)、分频器设计方案:分频器一输入两输出,输入为50MHZ的原脉冲信号,输出clko1为1HZ脉冲信号(给计数器),输出clko2为1KHZ脉冲信号(给显示器)。(三)、计时器(倒计时)设计方案:计时器的输入有:clk(1HZ脉冲输入),S0(复位控制输入),S1(模式控制输入),S2(时间控制输入)。输出有:out(倒计时结束输出,与S3一起控制计数器的暂停与暂停灯的亮灭),fenshi(倒计时现态时间的分的十位输出,给显示器),fenge(倒计时现态时间分的个位输出,给显示器),miaoshi(倒计时现态时间的秒的十位输出,给显示器),miaoge(倒计时现态时间秒的个位输出,给显示器),LED(正转、反转与间歇)。计时器的工作原理是:当clk出现上升沿时,将时间自减一秒,在按下S0(系统复位)后进入时间选择上,如果S2(时间输入)发生了改变则按新输入时间倒计时,如果没有发生改变则按原有状态时间继续倒计时直到时间为0:00为止并且反馈倒计时结束(out)信号。其中S1控制模式信号,不按S1时S1=0,执行模式一;按下S1时,S1=1,执行模式2。.(四)、显示器设计方案:将输入的倒计时现态时间(fenshi,fenge,miaoshi,miaoge)以七段码的形式通过数码管输出,数码管的扫描信号del。(五)、暂停设计方案:本系统中的暂停主要是通过控制CLK的脉冲输入来控制计时器的计算。当无脉冲输入时,计时器不运算,即暂停。三、电路设计、仿真与实现:(一)顶层的设计实现:顶层设计的原理图:顶层设计的RTL视图:整体的仿真结果:(二)、分频器的设计实现:分频器的源程序:modulefenpin(clk,//源脉冲输入clko1,//1HZ脉冲输出clko2//1KHZ脉冲输出);/*==================================*/inputclk;outputclko1;outputclko2;/*==================================*/regclko1;regclko2;reg[31:0]clk1;//控制1HZ的中间变量reg[31:0]clk2;//控制1KHZ的中间变量/*==================================*/initial//初始化beginclk1=32'd0;clk2=32'd0;end/*==================================*/always@(posedgeclk)//变频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分频器的仿真结果:(三)计数器(倒计时)的设计实现:计数器(倒计时)的源程序:moduledaojishi(clk,//脉冲s0,//开关s0s1,//开关s1s2,//开关s2fenshi,//分的十位fenge,//分的秒位miaoshi,//秒的十位miaoge,//秒的个位LED,//3个指示out);/*===========================================*/inputclk;//1HZ脉冲inputs0;inputs1;inputs2;outputout;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;regout;/*===========================================*/initialbeginmiaoshi=3'b000;out=1'd1;miaoge=4'b0000;LED=4'b0000;end/*=========================================