FGPD洗衣机控制电路数电实验.docx
- 文档编号:9259654
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:23
- 大小:330.63KB
FGPD洗衣机控制电路数电实验.docx
《FGPD洗衣机控制电路数电实验.docx》由会员分享,可在线阅读,更多相关《FGPD洗衣机控制电路数电实验.docx(23页珍藏版)》请在冰点文库上搜索。
FGPD洗衣机控制电路数电实验
2010—2011学年第二学期
《数字电子技术课程设计》报告
课题:
简易洗衣机控制电路
专业班级:
姓名:
学号:
设计日期:
目录
一、设计任务及要求-------------------------------------------------------------------------------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时正常运转。
(二)输入输出资源说明:
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对顶层设计进行适配(FitDesign),生成下载文件。
4、采用DownLoad软件将设计的JED文件烧录到试验板的芯片上,实际测试。
二、设计原理与方案
(一)、顶层设计方案:
本系统主要有分频器,计时器(倒计时),和显示器三大部分。
整体设计框图如下:
三个LED指示灯(正转、反转和间歇)
七段LED数码管
译码扫描显示
OUT
暂停与LED(暂停)
S3
其中,分频器为其他模块提供合适的脉冲信号,计时器(倒计时)接受外部控制信号(S0S1S2),根据不同的信号进行不同的洗衣时间的倒计时并且根据倒计时的时间控制三个LED灯(正转、反转与间歇)以及将倒计时结束的信号输出,显示器将倒计时的现态时间显示。
S3与倒计时结束信号一起控制计数器的暂停与暂停灯的亮灭。
(二)、分频器设计方案:
分频器一输入两输出,输入为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//初始化
begin
clk1<=32'd0;
clk2<=32'd0;
end
/*==================================*/
always@(posedgeclk)//变频
begin
clk1<=(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,//开关s0
s1,//开关s1
s2,//开关s2
fenshi,//分的十位
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;
/*===========================================*/
initial
begin
miaoshi=3'b000;
out=1'd1;
miaoge=4'b0000;
LED=4'b0000;
end
/*===========================================*/
always@(posedgeclk)
begin
if(s0===1'd0)//判断是否复位,并且判断s2,从而改变分的初值
begin
fenshi=3'd0;
fenge=4'd0;
miaoshi=3'd0;
miaoge=4'd0;
LED=3'b000;
out=1'd1;
if(s2===1'd0)
begin
fenshi=3'd1;
fenge=4'd5;
end
elseif(s2===1'd1)
begin
fenshi=3'd3;
fenge=4'd0;
end
end
elseif(s0!
=1'd0)
begin
begin
if(fenshi===0&&fenge===0&&miaoshi===0&&miaoge===0)//呈0:
00,则结束,且输出OUT为0,使LED3暗
begin
LED=4'b0000;
out=1'b0;
end
elseif(fenshi!
=0||fenge!
=0||miaoshi!
=0||miaoge!
=0)//如果还有时间,则倒计时
begin
begin//倒计时
if(miaoge===4'b0000)//秒的个位为0则借位
begin
if(miaoshi!
=3'd0)
begin
miaoshi=miaoshi-3'd1;
miaoge=4'd9;
end
elseif(miaoshi===3'b000)
//如果秒的十位也为0则向分个借位
begin
if(fenge!
=4'd0)
begin
fenge=fenge-4'd1;
miaoshi=3'd5;
miaoge=4'd9;
end
elseif(fenge===4'd0)//如果分个为0则向分十借位
begin
fenshi=fenshi-3'd1;
fenge=4'd9;
miaoshi=3'd5;
miaoge=4'd9;
end
end
end
else
begin
miaoge=miaoge-4'd1;
end
end
/*===========================================*/
begin//模式选择
if(s1===1'b0)//模式1
begin
if(miaoshi===3'd5||miaoshi===3'd4)//正转
begin
LED[0]=1'b1;
LED[1]=1'b0;
LED[2]=1'b0;
end
if(miaoshi===3'd3||miaoshi===3'd0)//间歇
begin
LED[0]=1'b0;
LED[1]=1'b0;
LED[2]=1'b1;
end
if(miaoshi===3'd2||miaoshi===3'd1)//反转
begin
LED[0]=1'b0;
LED[1]=1'b1;
LED[2]=1'b0;
end
end
/*===========================================*/
elseif(s1===1'b1)//模式2
begin
if(miaoshi===3'd5||miaoshi===3'd4||(miaoshi===3'd3&&miaoge>=4'd5))//正转
begin
LED[0]=1'b1;
LED[1]=1'b0;
LED[2]=1'b0;
end
if((miaoshi===3'd3&&miaoge<=4'd4&&miaoge>=4'd0)||(miaoshi===3'd0&&miaoge<=4'd4&&miaoge>=4'd0))//间歇
begin
LED[0]=1'b0;
LED[1]=1'b0;
LED[2]=1'b1;
end
if(miaoshi===3'd2||miaoshi===3'd1||(miaoshi===3'd0&&miaoge>=5))//反转
begin
LED[0]=1'b0;
LED[1]=1'b1;
LED[2]=1'b0;
end
end
end
/*===========================================*/
end
end
end
end
/*===========================================*/
Endmodule
计数器(倒计时)的仿真结果:
(四)显示器设计实现:
显示器源程序:
modulexianshi(clk,
fenshi,
fenge,
miaoshi,
miaoge,
del,
duanma
);
/*==============================================*/
inputclk;//1KHZ脉冲
input[2:
0]fenshi;//分
input[2:
0]miaoshi;
input[3:
0]fenge;//秒十
input[3:
0]miaoge;//秒个
output[2:
0]del;//3-8
output[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;
/*==============================================*/
initial
begin
del<=3'b000;
duanma<=7'b0000_000;
end
/*==============================================*/
always@(posedgeclk)//3-8译码器扫描
begin
if(del===3'b111)
begin
del<=3'b000;
end
else
begin
del<=del+3'b001;
end
end
/*==============================================*/
always@(fenshiorfengeormiaoshiormiaoge)//翻译成七段码
begin
case(miaoge)//秒的个位
4'b0000:
miaogeo<=7'B0111_111;//0
4'b0001:
miaogeo<=7'b0000_110;//1
4'b0010:
miaogeo<=7'b1011_011;//2
4'b0011:
miaogeo<=7'b1001_111;//3
4'b0100:
miaogeo<=7'b1100_110;//4
4'b0101:
miaogeo<=7'b1101_101;//5
4'b0110:
miaogeo<=7'b1111_101;//6
4'b0111:
miaogeo<=7'b0000_111;//7
4'b1000:
miaogeo<=7'b1111_111;//8
4'b1001:
miaogeo<=7'b1101_111;//9
default:
miaogeo<=7'b0000_000;//暗
endcase
case(miaoshi)//秒的十位
3'b000:
miaoshio<=7'B0111_111;//0
3'b001:
miaoshio<=7'b0000_110;//1
3'b010:
miaoshio<=7'b1011_011;//2
3'b011:
miaoshio<=7'b1001_111;//3
3'b100:
miaoshio<=7'b1100_110;//4
3'b101:
miaoshio<=7'b1101_101;//5
default:
miaoshio<=7'b0000_000;//暗
endcase
case(fenge)//分的个位
4'b0000:
fengeo<=7'B0111_111;//0
4'b0001:
fengeo<=7'b0000_110;//1
4'b0010:
fengeo<=7'b1011_011;//2
4'b0011:
fengeo<=7'b1001_111;//3
4'b0100:
fengeo<=7'b1100_110;//4
4'b0101:
fengeo<=7'b1101_101;//5
4'b0110:
fengeo<=7'b1111_101;//6
4'b0111:
fengeo<=7'b0000_111;//7
4'b1000:
fengeo<=7'b1111_111;//8
4'b1001:
fengeo<=7'b1101_111;//9
default:
fengeo<=7'b0000_000;//暗
endcase
case(fenshi)//分的十位
3'b000:
fenshio<=7'B0111_111;//0
3'b001:
fenshio<=7'b0000_110;//1
3'b010:
fenshio<=7'b1011_011;//2
3'b011:
fenshio<=7'b1001_111;//3
3'b100:
fenshio<=7'b1100_110;//4
3'b101:
fenshio<=7'b1101_101;//5
default:
fenshio<=7'b0000_000;//暗
endcase
end
/*==============================================*/
always@(fenshioorfengeoormiaoshioormiaogeo)//对应数码管输出
begin
case(del)
3'b000:
duanma<=miaogeo;//秒的个位
3'b001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FGPD 洗衣机 控制电路 实验