当前位置:文档之家› 电风扇的自动定时开关控制设计方案

电风扇的自动定时开关控制设计方案

电风扇的自动定时开关控制设计方案第1章 FPGA课程设计报告提纲1.1 任务运用FPGA用FPGA开发板的按键作为输入控制键,用数码管显示当前电风扇自动定时状态(包括:自动开/关,工作定时等)。

1.2 目的运用verilog hdl描述设计,用Quartus II进行仿真波形1.3使用环境 (软件/硬件环境,设备等)Pc机 Quartus II软件环境第2章技术规2.1 功能定义(1),根据用户需求,通过按键切换来实现风扇定时和普通工作模式。

(2)普通工作模式时,由手动开关控制电风扇的开关,即当开关打开时,风扇工作;开关关闭时,风扇停止工作。

(3)定时模式时,根据设定定时时间来选择电风扇工作时间,比如10 分钟、 20分钟、 30分钟等,并且同步显示剩余工作时间,但是此时用户仍可以通过开关控制提前关掉电扇。

(4) LED 上显示当前工作状态:风扇工作亮,停止工作灭。

数码管显示总的设定的时间(小时,分钟)和剩余工作时间。

2.2系统结构框图总体设计可以分为以上几个模块,各模块的功能简要介绍:(1)分频模块:模块的功能是把 50MHz 的系统时钟转换为 1Hz 的时钟,和2Hz 的时钟。

1Hz的时钟供计数模块的使用。

2Hz的时钟供输入定时数值的使用。

(2)模式选择控制模块:选择需要的工作模式。

包括两个模式:定时、普通。

(3)自动定时倒计时模块:选择定时模式后,根据键盘的输入值来设定工作时间,在定时时间以则风扇工作,倒计时结束或开关关闭时风扇自动关闭。

(4)显示模块:LED 上显示当前工作状态:风扇工作亮,停止工作灭。

数码管显示总的设定的时间和剩余工作时间。

2.3 应用围可以用于控制电扇手动控制电风扇工作或停止,也可以按照设定的时间自动工作或停止。

2.4 引脚描述顶层模块管脚描述(1)输入开关管脚(2)输出显示管脚第3章设计方案3.1 概述此自动定时控制器,可以实现定时模式和普通模式的切换,一共有六个模块。

(1)分频模块:模块的功能是把 50MHz 的系统时钟转换为 1Hz 的时钟,和2Hz 的时钟。

1Hz的时钟供计数模块的使用。

2Hz的时钟供输入定时数值的使用。

(2)模式选择控制模块:模式选择控制模块:选择需要的工作模式。

包括两个模式:定时、普通。

(3)自动定时倒计时模块:选择定时模式后,根据键盘的输入值来设定工作时间,在定时时间以则风扇工作,倒计时结束或开关关闭时风扇自动关闭。

(4)显示模块:LED 上显示当前工作状态:风扇工作亮,停止工作灭。

数码管显示总的设定的时间和剩余工作时间。

(5)信号处理模块:该模块的主要作用是在定时没有结束的时候用火仍可以通过开关来控制电扇的关闭。

(6)数据输入模块:当赋值信号(fz)有效后可以通过键盘输入定时的时间,确定输入无误后按下启动键(en),风扇开始倒计时。

3.2 顶层模块划分(1)分频模块:这个模块的功能是把频率为50MHz的时钟转换为1Hz的时钟,供计时模块的使用。

引脚分配:电路设计:(2)模式选择控制模块:选择需要的工作模式。

包括两个模式:自动、手动,op 为1时是定时模式,opl为0时是普通模式。

若为定时模式风在设定的时间自动工作,当计时结束时风扇自动停止工作,即计时反馈信号out为0时,风扇自动关闭。

若选为手动模式,则在有手动开关key来控制风扇的开关,key为1时风扇工作,为0时停止工作。

引脚分配信号名功能描述方向宽度称op 模式选择信号,为1时为自input 1动开关模式;为0时为手动开关模式。

key 开关信号input 1out 风扇工作状态信号output 1Clr 清零信号Input 1A_1 Op为1时a_1为1 Output 1A_0 Op为0时a_0为1 Output 1Output 1 Key_1 Key和a_0都为1时可key_1为1,否则为0。

电路设计(3)自动定时倒计时模块:选择定时模式后,根据键盘的输入值来设定工作时间,在定时时间以则风扇工作,倒计时结束时风扇自动关闭。

管脚分配信号名称功能描述输入输位宽出nclk 计时时钟,频率为1Hz input 1en 开始倒计时信号input 1H 小时数据输入input 8m 分钟数据输入Input 8Sign 时间计数为零反馈信号output 1电路设计(4)显示模块:LED 上显示当前工作状态:风扇工作亮,停止工作灭。

数码管显示总的设定的时间和剩余工作时间。

管脚分配信号名称功能描述输入输出位宽Data_3 时间高位输出端,为小时的十位input 4Data_2 时间低位输出端,为小时的个位input 4Data_1 时间高位输出端,为分钟的十位input 4Data_0 时间低位输出端,为分钟的个位input 4Out_3 时间高位数码管输出端,为output 7小时的十位Out_2 时间低位数码管输出端,为output 7小时的个位Out_1 时间高位数码管输出端,为Output 7分钟的十位Output 7 Out_0 时间低位数码管输出端,为分钟的个位Clk 主时钟Input 1clr 清零信号Input 1sign 计时信号Input 1电路设计(5)信号处理模块:该模块主要是用来在定时还没有结束时,用户仍可以通过开关关闭电扇。

位宽信号名称功能描述输入输出Key 电扇开关Input 1Key_1 电扇在普通模式下产生的工Input 1作信号Sign 倒计时信号Input 1 Out 电扇工作信号Output 1(6)数据输入模块:该模块用于用户输入定时时间。

位宽信号名称功能描述输入输出Clk 2hz时钟,用于防抖Input 1 clr 清零信号Input 1 Fz 赋值信号Input 1 H_0 小时低位输入端Input 1 H_1 小时高位输入端Input 1 M_0 分钟低位输入端Input 1 M_1 分钟高位输入端Input 1 H 小时输入数值Output 8 M 分钟输入数值Output 8第4章功能验证方案4.1分频模块module fenpin(clk,clr,nclk,inclk);input clk,clr;output nclk,inclk;reg nclk,inclk;reg [50:0] nadd,inadd;always (posedge clk)beginif(!clr)beginnclk=0;nadd=0;endelsebeginif(nadd==24999999)beginnclk=!nclk;nadd=0;endelsenadd=nadd+1;endendalways (posedge clk)beginif(!clr)begininclk=0;inadd=0;endelsebeginif(inadd==12999999) begininclk=!inclk; inadd=0;endelseinadd=inadd+1;endendendmodule倒计时模块module hour(a,en,sign,data,clk,b_h,bcd_h,bcd_l);input a,clk,en,sign;input [7:0] data;wire [7:0] data;output b_h;reg b_h;output [3:0] bcd_h,bcd_l;reg [3:0] bcd_h,bcd_l;reg [7:0] count;reg e;always (posedge clk)beginif(!en)e=1;endalways (posedge a or negedge en)if(!en)begincount=data;b_h=0;endelsebeginif(a)beginif(count[3:0]==0)beginif(count[7:4]==0)beginb_h=1;endelsebegincount[7:4]=count[7:4]-1;count[3:0]=4'b1001;b_h=0;endendelsebegincount[3:0]=count[3:0]-1; b_h=0;endendendalways (posedge clk or posedge e)beginif(e)beginbcd_h=count[7:4];bcd_l=count[3:0];endendEndmodulemodule clock(en,a_1,sign,data,sclk,clk,b_m,bcd_h,bcd_l); input en,sign,clk,sclk,a_1;input [7:0] data;wire [7:0] data;output b_m;reg b_m;output [3:0] bcd_h,bcd_l;reg [3:0] bcd_h,bcd_l;reg [7:0] count;wire as;reg e;assign as=e&sign&a_1;always (posedge clk)beginif(!en)e=1;Endalways (posedge sclk or negedge en)if(!en)begincount=data;b_m=0;endelsebeginif(as)beginif(count[3:0]==0)beginif(count[7:4]==0)begincount[7:4]=4'b0101;count[3:0]=4'b1001;b_m=1;endelsebegincount[7:4]=count[7:4]-1;count[3:0]=4'b1001;b_m=0;endendelsebegincount[3:0]=count[3:0]-1;b_m=0;endendendalways (posedge clk or posedge e)beginif(e)beginbcd_h=count[7:4];bcd_l=count[3:0];endendendmodulemodule sg(b_m,b_h,clk,sign,clr);input b_m,b_h,clk,clr;output sign;reg sign;always (posedge clk or negedge clr) beginif(!clr)beginsign=1;endelsebeginif(b_h)beginif(b_m)beginsign=0; endelsebeginsign=1; endendelsebeginsign=1;endendendEndmodule信号处理模块module last(key,sign,key_1,out);input key,sign,key_1;output out;wire out;wire ks;assign ks=key&sign;assign out=ks|key_1;endmodule数据输入模块module display(h_1,h_0,m_1,m_0,fz,clk,clr,h,m);input h_1,h_0,m_1,m_0;input clk,clr,fz;output [7:0] h,m;reg [7:0] h,m;reg [3:0] add_m_0,add_m_1,add_h_0,add_h_1;always (posedge clk or negedge clr)beginif(!clr)beginadd_m_0=0;add_m_1=0;endelseif(fz)beginif(!m_0)beginif(add_m_0==4'b1001)beginadd_m_0=1'b0;endelsebeginadd_m_0=add_m_0+1'b1; endendif(!m_1)beginif(add_m_1==4'b0101)beginadd_m_1=1'b0;endelsebeginadd_m_1=add_m_1+1'b1; endendendendendalways (posedge clk or negedge clr)beginif(!clr)beginadd_h_0=0;add_h_1=0;endelseif(fz)beginif(!h_0)beginif(add_h_0==4'b1001)beginadd_h_0=0;endelsebeginadd_h_0=add_h_0+1; endendif(!h_1)beginif(add_h_1==4'b0101)beginadd_h_1=0;endelsebeginadd_h_1=add_h_1+1; endendendendendalways (posedge clk or negedge clr)beginif(!clr)beginh=0;m=0;endelseh={add_h_1,add_h_0}; m={add_m_1,add_m_0}; endendEndmodule模式切换模块module opt(op,a_1,a_0,key_1,key,clk,clr); input op,key,clk,clr;output a_1,a_0,key_1;reg a_1,a_0;assign key_1=key&a_0;always (posedge clk or negedge clr)beginif(!clr)begina_0=0;a_1=0;endelsebeginif(op)begina_1=1; a_0=0; endelsebegina_0=1; a_1=0; endendendendmoduleled数码管显示模块module led(d,clk,clr,out,sign);input [3:0] d;wire [3:0] d;input clk,clr,sign;output [6:0] out;reg [6:0] out;always (posedge clk or negedge clr)beginif(!clr)out=0;elsebeginif(!sign)out=0;elsecase(d)4'b0000:out=7'b0000_001; 4'b0001:out=7'b1001_111; 4'b0010:out=7'b0010_010; 4'b0011:out=7'b0000_110; 4'b0100:out=7'b1001_100; 4'b0101:out=7'b0100_100; 4'b0110:out=7'b0100_000; 4'b0111:out=7'b0001_111; 4'b1000:out=7'b0000_000;4'b1001:out=7'b0001_100; Endcaseendendendmodule课程设计的心得体会本次课程设计自己独立完成,学习到了很多东西,完善了自己很多的不足,比如说不喜欢写设计规,以至于后面在编写代码的时候出现很多没有想到的问题,解决起来没有头绪,对设计造成了很大麻烦,最后虽然完成了设计要求,但是还是有很多的问题存在。

相关主题