基于FPGA的洗衣机控制器的设计说明书

上传人:沈*** 文档编号:114898036 上传时间:2022-06-30 格式:DOC 页数:14 大小:60.50KB
收藏 版权申诉 举报 下载
基于FPGA的洗衣机控制器的设计说明书_第1页
第1页 / 共14页
基于FPGA的洗衣机控制器的设计说明书_第2页
第2页 / 共14页
基于FPGA的洗衣机控制器的设计说明书_第3页
第3页 / 共14页
资源描述:

《基于FPGA的洗衣机控制器的设计说明书》由会员分享,可在线阅读,更多相关《基于FPGA的洗衣机控制器的设计说明书(14页珍藏版)》请在装配图网上搜索。

1、 .wd.湖南文理学院课程设计报告课程名称: 自动化专业课程设计 专业班级: 自动化 2班 学生姓名: 石 扬 指导教师: 彭 琛 完成时间:报告成绩:评阅意见: 评阅教师 日期 基 于 F P G A 的 洗 衣 机 控 制 器 的 设 计摘 要基于FPGA的洗衣机控制器设计,主要通过使用VerilogHDL语言,在Quartus2上完成电路设计以及程序开发模拟。实现以洗衣机控制器为核心,加上必要的外围电路,能够对洗衣机工作状态自由控制。全部程序由控制器模块,分频模块,按键去抖模块,显示译码模块组成,顶层模块使用原理图实现,底层由Verilog HDL语句实现。核心控制器FPGA根据控制端口

2、的信号输入,向洗衣机发出正传,反转,待机信号,并通过数码管和LED灯显示当前的工作状态以及工作时间。该洗衣机控制电路可以方便快捷的实现对洗衣机的控制和状态的显示功能,同时具有紧急暂停待机功能,保证控制的可靠性,以及洗涤循环次数报警功能,提高任务精度。 目录一、系统设计11、设计要求12、总体设计方案11.设计思路12.系统组成1二、单元硬件电路设计21、按键模块22、显示模块23、中心控制模块2三、软 件 设 计31、控制模块程序设计32、显示译码程序设计43、按键去抖程序设计44、分频模块程序设计5四、系统仿真测试51、控制模块仿真52、显示译码模块仿真73、分频模块仿真84、按键去抖模块仿

3、真8五、心得体会9六、参考文献10七、附录11附录一:电路使用说明11附录二:电路原理图11附录三:程序代码121.控制器模块程序122.显示译码模块程序153.按键去抖模块程序164.分频模块程序17一、系统设计1、设计要求1洗衣机的状态为待机5s正转60s待机5s反转60s,并用3个LED灯和7段显示器分别表示其工作状态和显示相应工作状态下的时间。2可自行设定洗衣机的循环次数,这里设置最大的循环次数为15次。3具有紧急情况的处理功能。当发生紧急情况时,立即转入待机状态,紧急情况解除后,继续执行后续步骤;4洗衣机设定循环次数递减到零时立即报警,以表示洗衣机设定的循环次数已经完毕。2、总体设计

4、方案1、设计思路题目要求设计一个洗衣机控制电路,实现对洗衣机工作状态的控制。1. 中心控制模块 基本实现要求功能,包括计时、LED输出、电机正反转信号输出、洗涤循环置数设置。2. 分频模块实现从高频向低频转换,供中心控制模块使用3按键去抖模块,实现对按键的去抖功能。4. 数码显示电路,将10进制时间通过数码管显示出来。2、系统组成洗衣机控制电路主要由中心控制模块、按键模块,显示模块,时钟分频模块,四局部组成组成。FPGA键盘模块按键,拨码开关等显示模块数码管,LED灯等晶体振荡模块产生100Hz信号报警功能系统构造框图二、单元硬件电路设计1、按键模块设有1个按键:add;1个拨码开关start

5、。add用于初始状态下设置循环次数,没按一次循环次数加一,start用于启动和停顿洗衣机。2、显示模块设有3个LED灯,两个数码管,一个蜂鸣器。LED灯用来表示当前状态,数码管用来表示当前状态所剩余时间。蜂鸣器用来表示洗衣是否完成,洗衣完成时蜂鸣器发出声音。3、中心控制模块中心控制模块是以一片altera公司的Cyclone2系列FPGA为主体,配合一些外围电路实现的。Cyclone2系列FPGA采用全铜层、低K值、1.2伏SRAM工艺设计,裸片尺寸被尽可能最小的优化。采用300毫米晶圆,以TSMC成功的90nm工艺技术为根基,Cyclone II 器件提供了4,608到68,416个逻辑单元

6、LE,并具有一整套最正确的功能,包括嵌入式18比特x18比特乘法器、专用外部存储器接口电路、4kbit嵌入式存储器块、锁相环PLL和高速差分I/O能力。三、软 件 设 计采用Quartus2作为开发工具对可编程逻辑器件FPGA的编程,底层由Verilog HDL语句实现,顶层使用原理图实现。软件设计由控制模块,分频模块,按键去抖模块,显示译码模块四局部组成,由于输入时钟为100 HZ,因此使用分频模块输出1HZ的方波,给控制模块提供每1s自加1的信号,控制模块输出的计数时间输入给数码管显示译码模块,通过译码模块定时器的值可以在数码管上显示,控制模块由此1hz的方波信号可以控制洗衣机的正转、反转

7、、待机和报警工作方式。按键消抖模块的作用是为了消除按键抖动而设立的。1、控制模块程序设计控制模块采用有限状态机实现对洗衣机工作状态的控制。状态转换示意图s0: 待机状态 s1:正转状态 s2:待机状态 s3:反转状态软件流程图循环设置循环开场待机5秒正转60秒待机5秒反转60秒到达循环次数最大值循环完毕循环次数未到报警开场2、显示译码程序设计数码管显示译码模块主要功能是把定时器送来的值译码并通过数码管显示出来。fpga的Verilog HDL硬件语言是并行的这有别于软件的描述语言扫描方式。3、按键去抖程序设计在进展独立按键或者矩阵式按键的设计的时候,我们在按下键盘的时候其实并不只是按下去而是有

8、一个抖动的过程,就连松手的过程也有抖动,然而这个抖动通常被人们所忽略,从而导致输入数据的错误和乱码,因此我们必须对按键进展按键的消抖处理。fpga的Verilog HDL语言是硬件描述语言,主要运用了状态机和延时的消抖方式。4、分频模块程序设计该模块通过输入的clock信号100HZ分频后得到1HZ,供给中心控制模块,其余模块使用未分频的100HZ信号。四、系统仿真测试1、控制模块仿真 顶层原理图设计 设置循环次数为3,按start后洗衣机开场工作。循环次数由3次减为2次,从电机反转到待机状态待机5秒后,电机正转,开场第二次循环当按下emergency紧急状况按钮计数器count保持不变,电机

9、停顿转动当emergency完毕后电机恢复转动,洗衣机正常工作循环次数完毕,count和times同时清零,洗衣机停顿工作2、显示译码模块仿真3、分频模块仿真4.按键去抖模块仿真五、心得体会经过2周的设计,通过不断地努力与完善,终于完成了这次的专业综合课程设计。从一开场确实定课题,到后来的资料查找、理论学习,这一切都使我的理论知识和动手能力进一步得到提高。在选择课题、原理分析、调试过程中不可防止地遇到各种问题,这要求保持沉着冷静,联系书本理论知识积极地思考,遇到解决不了的可以请教同学或指导教师,虽然在设计过程中不可防止地遇到很多问题,但是最后还是在教师以及同学的帮助下圆满解决了这些问题,实现了

10、整个系统设计与最后调试,相关指标到达期望的要求,很好地完成了。经过这次课程设计培养了我的设计能力以及全面的考虑问题能力。虽然设计的过程是痛苦的但是收获成功的喜悦却是如此的让人冲动。相信这次课程设计对我以后的学习及工作都会产生积极深远的影响。 另外。通过使用VerilogHDL语言编程实现了一个洗衣机控制器,实现了各项控制要求,该控制器操作简单,可用于实际的洗衣机控制器设计中。在Quartus2上完成电路设计以及程序开发模拟。实现以洗衣机控制器为核心,加上必要的外围电路,能够对洗衣机工作状态自由控制。全部程序由控制器模块,分频模块,按键去抖模块,显示译码模块组成,顶层模块使用原理图实现,底层由V

11、erilog HDL语句实现。核心控制器FPGA根据控制端口的信号输入,向洗衣机发出正传,反转,待机信号,通过数码管和LED灯显示当前的工作状态以及工作时间。该洗衣机控制电路可以方便快捷的实现对洗衣机的控制和状态的显示功能,同时具有紧急暂停待机功能,保证控制的可靠性,以及洗涤循环次数报警功能,提高任务精度。六、参考文献1、黑金开发板配套教程?VerilogHDL那些事儿?2、康华光主编?电子技术根基数字局部?第五版3、陈明义主编?电子技术课程设计实用教程?S 2002年05月第1版4、EDA先锋工作室?设计与验证Verilog HDL? 5、马建国.孟宪元编著?FPGA现代数字系统设计?七、附

12、录附录一:电路使用说明1.电路通电后,在start开关未闭合前可以通过add按键开关设置洗衣机洗涤循环次数待机-正转-待机-反转,为一次循环。2.设定循环次数以后,闭合start开关,洗衣机控制器开场工作。3.可以观察到指示待机LEDSTOP灯亮5s,正转LEDZHENG灯亮60S,待机LEDSTOP亮5s,反转LEDFAN灯亮60s,如此循环直至工作允许时间为0,报警器发出警报。4.当按下emergency紧急情况键时,电机停顿工作,开场进入待机状态,同时LEDSTOP亮。附录二:电路原理图附录三:程序代码1.控制器模块程序module xiyiji(add,ledzheng,ledfan,

13、ledstop,clk,zheng,fan,start,alram,emergency,count);input add,clk,start,emergency;/add循环次数,start洗衣机工作emergency紧急工作output ledzheng,ledfan,ledstop,zheng,fan,alram,count;/ledzheng正转ledfan反转,ledstop暂停alram警报,count计数reg ledzheng,ledfan,ledstop;reg zheng,fan;reg alram;reg 3:0tim,times;reg 9:0 counter;reg 7

14、:0 count;reg 3:0 state;parameter s0=4b0001;parameter s1=4b0010;parameter s2=4b0100;parameter s3=4b1000;/4种工作状态always (posedge add) begin if(tim15) /最大循环次数15次 tim=tim+1b1; else tim=0; end always (posedge clk)begin if(start=0) /strart=0时,赋初值 begin zheng=0; fan=0; count=8b00000000; times=tim; alram=1b0

15、; end else begin if(emergency=1)/紧急情况时,暂停 begin zheng=1b0; fan=1b0; ledstop=1b1; ledzheng=1b0; ledfan=1b0; end else case(state) s0:begin /状态s0开场 if(times=0) begin alram=1b1; count=8b00000000; end else begin zheng=0;fan=0; ledzheng=1b0; ledfan=1b0; ledstop=1b1; if(count=8b00000101) /待机时间够5秒 begin sta

16、te=s1; /状态转换到s1 zheng=1;fan=0; ledzheng=1b1; ledfan=1b0; ledstop=1b0; count=8b00000001; end else count=count+1b1; end end s1:begin/状态s1开场 zheng=1;fan=0; ledzheng=1b1; ledfan=1b0; ledstop=1b0; if(count=8b00111100)/正转够60秒 begin state=s2;/切换到s2 zheng=0;fan=0; ledzheng=1b0; ledfan=1b0; ledstop=1b1; coun

17、t=8b00000001; end else count=count+1b1; end s2:begin /s2开场 zheng=0;fan=0; ledzheng=1b0; ledfan=1b0; ledstop=1b1; if(count=8b00000101) /待机时间够5秒 begin state=s3; zheng=0;fan=1; ledzheng=1b0; ledfan=1b1; ledstop=1b0; count=8b00000001; end else count=count+1b1; end s3:begin /s3开场 zheng=0;fan=1; ledzheng=

18、1b0; ledfan=1b1; ledstop=1b0; if(count=8b00111100) /反转够60秒 begin times=times-1b1; count=8b00000001; state=s0; zheng=0;fan=0; ledzheng=1b0; ledfan=1b0; ledstop=1b1; end else count=count+1b1; if(times=1&count=8b00111100)/如果循环次数完毕,并且反转够60秒,那么停顿工作,报警 begin alram=1b1; count=8b00000000; end end default: b

19、egin state=s0; end endcase end endendmodule2.显示译码模块程序module shumaguan(qclock,code1,code2,discode,enable); input qclock; input 3:0code1,code2; output 6:0discode; output 1:0enable; reg 6:0discode; reg 1:0enable; reg 2:0count; reg 3:0code; always(posedge qclock) begin if(count=1) count=0; else count=co

20、unt+1; case(count)3b000: begin code=code2;enable=8b10; end3b001: begin code=code1;enable=8b01; end endcase case(code)4b0000:discode=7b1111110;4b0001:discode=7b0110000;4b0010:discode=7b1101101;4b0011:discode=7b1111001;4b0100:discode=7b0110011;4b0101:discode=7b1011011;4b0110:discode=7b1011111;4b0111:d

21、iscode=7b1110000;4b1000:discode=7b1111111;4b1001:discode=7b1111011;default:discode=7b0000000; endcase endendmodule 3.按键去抖模块程序module qudou(keyin,keyout,clock); input clock,keyin; output keyout; reg keyout; reg 3:0count;always (posedge clock) begin if(keyin=1) begin count=8) begin keyout=1; count=9; endelse keyout=0; end else begin keyout=0;count=0; end endendmodule4.分频模块程序module fdiv100(clockin,clockout);input clockin;output clockout;reg clockout;reg7:0 count;always (posedge clockin) begin if(count=49) begin clockout=clockout; count=0; end else count=count+1b1; endendmodule

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!