电风扇的自动定时开关控制设计方案.doc_第1页
电风扇的自动定时开关控制设计方案.doc_第2页
电风扇的自动定时开关控制设计方案.doc_第3页
电风扇的自动定时开关控制设计方案.doc_第4页
电风扇的自动定时开关控制设计方案.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电风扇的自动定时开关控制设计方案第1章 FPGA课程设计报告提纲1.1 任务运用FPGA用FPGA开发板的按键作为输入控制键,用数码管显示当前电风扇自动定时状态(包括:自动开/关,工作定时等)。1.2 目的运用verilog hdl描述设计,用Quartus II进行仿真波形1.3 使用环境 (软件/硬件环境,设备等) Pc机 Quartus II软件环境26第2章 技术规范2.1 功能定义(1),根据用户需求,通过按键切换来实现风扇定时和普通工作模式。(2) 普通工作模式时,由手动开关控制电风扇的开关,即当开关打开时,风扇工作; 开关关闭时,风扇停止工作。(3) 定时模式时,根据设定定时时间来选择电风扇工作时间,比如10 分钟、 20分钟、 30分钟等,并且同步显示剩余工作时间,但是此时用户仍可以通过开关控制提前关掉电扇。(4) LED 上显示当前工作状态:风扇工作亮,停止工作灭。数码管显示总的设定的时间(小时,分钟)和剩余工作时间。2.2 系统结构框图分频模块自动定时倒计时模块模式选择控制模块显示模块ClkInoptkeyEnOnOut_HOut_LC_out总体设计可以分为以上几个模块,各模块的功能简要介绍:(1)分频模块:模块的功能是把 50MHz 的系统时钟转换为 1Hz 的时钟,和2Hz的时钟。1Hz的时钟供计数模块的使用。2Hz的时钟供输入定时数值的使用。(2)模式选择控制模块:选择需要的工作模式。包括两个模式:定时、普通。(3)自动定时倒计时模块:选择定时模式后,根据键盘的输入值来设定工作时间,在定时时间以内则风扇工作,倒计时结束或开关关闭时风扇自动关闭。 (4)显示模块:LED 上显示当前工作状态:风扇工作亮,停止工作灭。数码管显示总的设定的时间和剩余工作时间。2.3 应用范围可以用于控制电扇手动控制电风扇工作或停止,也可以按照设定的时间自动工作或停止。2.4 引脚描述顶层模块管脚描述(1)输入开关管脚信号名称功能描述输入输出位宽Clk系统时钟,频率为50MHzinput1Op模式选择信号,为1时为定时模式;为0时为普通模式。input1In输入设定时间信号input4Key设定时间后开始计时信号Input1Clr清零信号input1Fz复制信号Input1En开始计时信号Input1(2) 输出显示管脚 信号名称功能描述输入输出位宽Out风扇工作信号,为1是风扇工作,为0时风扇停止工作Output1Out_3时间高位数码管输出端,为时钟的十位output7Out_2时间低位数码管输出端,为时钟的个位output7Out_1时间高位数码管输出端,为分钟的十位output7Out_0时间高位数码管输出端,为分钟的十位output7第3章 设计方案3.1 概述此自动定时控制器,可以实现定时模式和普通模式的切换,一共有六个模块。(1) 分频模块:模块的功能是把 50MHz 的系统时钟转换为 1Hz 的时钟,和2Hz的时钟。1Hz的时钟供计数模块的使用。2Hz的时钟供输入定时数值的使用。(2)模式选择控制模块:模式选择控制模块:选择需要的工作模式。包括两个模式:定时、普通。(3)自动定时倒计时模块:选择定时模式后,根据键盘的输入值来设定工作时间,在定时时间以内则风扇工作,倒计时结束或开关关闭时风扇自动关闭。 (4)显示模块:LED 上显示当前工作状态:风扇工作亮,停止工作灭。数码管显示总的设定的时间和剩余工作时间。(5)信号处理模块:该模块的主要作用是在定时没有结束的时候用火仍可以通过开关来控制电扇的关闭。(6)数据输入模块:当赋值信号(fz)有效后可以通过键盘输入定时的时间,确定输入无误后按下启动键(en),风扇开始倒计时。3.2 顶层模块划分(1)分频模块:这个模块的功能是把频率为50MHz的时钟转换为1Hz的时钟,供计时模块的使用。 引脚分配: 信号名称功能描述方向宽度 Clk输入50MHz的时钟信号input1 Inclk输出经过分频以后的1Hz的时钟信号 output1Nclk输出经过分频后的2hz的时钟信号Output1 电路设计:(2)模式选择控制模块:选择需要的工作模式。包括两个模式:自动、手动,op为1时是定时模式,opl为0时是普通模式。若为定时模式风在设定的时间内自动工作,当计时结束时风扇自动停止工作,即计时反馈信号out为0时,风扇自动关闭。若选为手动模式,则在有手动开关key来控制风扇的开关,key为1时风扇工作,为0时停止工作。 引脚分配 信号名称功能描述方向宽度op模式选择信号,为1时为自动开关模式;为0时为手动开关模式。input1key开关信号input1out风扇工作状态信号output1clk主时钟Input1Clr清零信号Input1A_1Op为1时a_1为1Output1A_0Op为0时a_0为1Output1Key_1Key和a_0都为1时可key_1为1,否则为0。Output1 电路设计(3)自动定时倒计时模块:选择定时模式后,根据键盘的输入值来设定工作时间,在定时时间以内则风扇工作,倒计时结束时风扇自动关闭。 管脚分配信号名称功能描述输入输出位宽Clk主时钟Input1nclk计时时钟,频率为1Hzinput1en开始倒计时信号input1H小时数据输入input8m分钟数据输入Input8Sign时间计数为零反馈信号output1 电路设计(4)显示模块:LED 上显示当前工作状态:风扇工作亮,停止工作灭。数码管显示总的设定的时间和剩余工作时间。 管脚分配信号名称功能描述输入输出位宽Data_3时间高位输出端,为小时的十位input4Data_2时间低位输出端,为小时的个位input4Data_1时间高位输出端,为分钟的十位input4Data_0时间低位输出端,为分钟的个位input4Out_3时间高位数码管输出端,为小时的十位output7Out_2时间低位数码管输出端,为小时的个位output7Out_1时间高位数码管输出端,为分钟的十位Output7Out_0时间低位数码管输出端,为分钟的个位Output7Clk主时钟Input1clr清零信号Input1sign计时信号Input1 电路设计 (5)信号处理模块:该模块主要是用来在定时还没有结束时,用户仍可以通过开关关闭电扇。信号名称功能描述输入输出位宽Key电扇开关Input1Key_1电扇在普通模式下产生的工作信号Input1Sign倒计时信号Input1Out电扇工作信号Output1 (6)数据输入模块:该模块用于用户输入定时时间。信号名称功能描述输入输出位宽Clk2hz时钟,用于防抖Input1clr清零信号Input1Fz赋值信号Input1H_0小时低位输入端Input1H_1小时高位输入端Input1M_0分钟低位输入端Input1M_1分钟高位输入端Input1H小时输入数值Output8M分钟输入数值Output8第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) begin if(!clr) begin nclk=0; nadd=0; end else begin if(nadd=24999999) begin nclk=!nclk; nadd=0; end else nadd=nadd+1; end endalways (posedge clk) begin if(!clr) begin inclk=0; inadd=0; end else begin if(inadd=12999999) begin inclk=!inclk; inadd=0; end else inadd=inadd+1; end endendmodule倒计时模块 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) begin if(!en) e=1; end always (posedge a or negedge en) if(!en) begin count=data; b_h=0; end else begin if(a) begin if(count3:0=0) begin if(count7:4=0) begin b_h=1; end else begin count7:4=count7:4-1; count3:0=4b1001; b_h=0; end end else begin count3:0=count3:0-1; b_h=0; end end end always (posedge clk or posedge e) begin if(e) begin bcd_h=count7:4; bcd_l=count3:0; end end Endmodulemodule 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) begin if(!en) e=1; End always (posedge sclk or negedge en) if(!en) begin count=data; b_m=0; end else begin if(as) begin if(count3:0=0) begin if(count7:4=0) begin count7:4=4b0101; count3:0=4b1001; b_m=1; end else begin count7:4=count7:4-1; count3:0=4b1001; b_m=0; end end else begin count3:0=count3:0-1; b_m=0; end end endalways (posedge clk or posedge e) begin if(e) begin bcd_h=count7:4; bcd_l=count3:0; end end endmodule module 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) begin if(!clr) begin sign=1; end else begin if(b_h) begin if(b_m) begin sign=0; end else begin sign=1; end end else begin sign=1; end end end Endmodule信号处理模块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) begin if(!clr) begin add_m_0=0; add_m_1=0; end else begin if(fz) begin if(!m_0) begin if(add_m_0=4b1001) begin add_m_0=1b0; end else begin add_m_0=add_m_0+1b1; end end if(!m_1) begin if(add_m_1=4b0101) begin add_m_1=1b0; end else begin add_m_1=add_m_1+1b1; end end end end end always (posedge clk or negedge clr) begin if(!clr) begin add_h_0=0; add_h_1=0; end else begin if(fz) begin if(!h_0) begin if(add_h_0=4b1001) begin add_h_0=0; end else begin add_h_0=add_h_0+1; end end if(!h_1) begin if(add_h_1=4b0101) begin add_h_1=0; end else begin add_h_1=add_h_1+1; end end end end end always (posedge clk or negedge clr) begin if(!clr) begin h=0; m=0; end else begin h=add_h_1,add_h_0; m=add_m_1,add_m_0; end endEndmodule模式切换模块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) begin if(!clr) begin a_0=0; a_1=0; end else begin if(op) begin a_1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论