基于FPGA的洗衣机控制器.docx
- 文档编号:11465760
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:13
- 大小:189.27KB
基于FPGA的洗衣机控制器.docx
《基于FPGA的洗衣机控制器.docx》由会员分享,可在线阅读,更多相关《基于FPGA的洗衣机控制器.docx(13页珍藏版)》请在冰豆网上搜索。
基于FPGA的洗衣机控制器
编号:
1
《FPGA》
设计报告
学院:
专业:
班级:
姓名:
学号:
一、洗衣机控制器主要内容3
1.任务要求和内容3
2.洗衣机控制器的使用步骤:
3
二、设计原理简介4
三、正文4
1洗衣机控制器的整体框图及原理:
4
2洗衣机控制电路各个模块6
1)洗衣机控制电路(秒数加一)时序控制中心模块……6
2)时钟分频模块的设计6
由于使用的FPGA勺输入时钟是20Mhz,定时模块的自加
频率是1hz,因此需要进行分频得到1hz的时钟频率输入
给定时模块。
6
3)定时器设定7
4)直流电机模块9
5)数码管显示译码模块的设计9
四、电路调试10
1•引脚分配图11
五、结束语和心得体会12
六、参考文献13
一、洗衣机控制器主要内容
I.任务要求和内容
设计制作一个洗衣机的正反转及暂停定时控制线路。
1)控制洗衣机的电机作如下运转
定时开始一一正转20S暂停10S反转20S暂停10S定时到停
止
定时未到
2.定时到报警。
3用直流电机模拟洗衣机。
2.洗衣机控制器的使用步骤:
⑴电路上电后,在Start拨码开关未闭合前设定工作时间(分钟数)设置总的工作时间,确定洗衣机控制器工作允许时间。
(2)设定好允许工作时间后,闭合Start开关,洗衣机控制器开始工作。
(3)可以看见指示正转LED丁亮20s,停转LED灯亮10S,反转LED灯亮200s,
停转LED亮10s,如此反复直至工作允许时间为0,蜂鸣器发出警报。
二、设计原理简介
洗衣机控制器的设计主要是时序控制和定时器的设计,由一片FPGA和外
围电路构成电器控制部分。
FPGA接收键盘的控制命令,控制洗衣机的正转、反转、停机和定时时间为0报警的工作状态、控制并显示工作状态以及显示定时时间。
对FPGA芯片的编程采用模块化的VerilogHDL(硬件描述语言)进行设计,设计由分频模块,定时时间自减模块,时序中心控制模块,直流电机模块,数码管显示模块组成,顶层实现整个芯片的功能。
顶层使用原理图实现,底层由
VerilogHDL语句实现。
FPGA勺输入时钟为20Mhz,因此使用了分频模块输出1hz的方波给定时器设定秒数每1s自加1的信号,控制灯的秒加法计数模块输出一个脉冲给减法定时器模块使之每分钟减1,随之将分钟通过译码模块定时器的值可以在数码管上显示,同时定时器的值输入到时序控制模块由此可以控制洗衣机的正转、反转、停机和报警工作方式。
三、正文
1洗衣机控制器的整体框图及原理:
基于fpga的洗衣机控制器电路主要由五大模块组成,分别为时钟分频模块,定时器设定和自减模块,时序中心(秒数加法计数)控制模块,数码管显示译码模块。
具体电路如图1所示:
I»>jfirw4pr
T0
Indtaiauar
Lr-
1hz的方波(中间上方
由于输入时钟为20Mhz,因此使用了分频模块输出
模块)给定时器设定和秒数加1提供每1s自加1的信号,定时器模块输出的自
减值输入给数码管显示译码模块(右下方模块)和时序控制模块(右上模块)通过译码模块定时器的值可以在数码管上显示,同时秒数加法计数的脉冲输入到
定时器分钟减1模块由此可以控制洗衣机的正转、反转、停机和报警工作方式
2洗衣机控制电路各个模块
1)洗衣机控制电路(秒数加一)时序控制中心模块
ajBAdOLfEtfrltli:
ELK^XSTpEJTjXXUtDjCOTljDITA.2)I
inputIWHU
cnitput[7:
0]DCX7T;
ovcpuzGOUT黔
zeg[7:
0]QI;zcgCOTleIrJrKrlasxgEDOUT^Jl;
j.luj.y4|(pe■址曲eELKaz乂学弩£SL±T1
■
ifllUfTi
Q1<=0;
elseif>;£»]
Dbegin
丄却10呦
gizmeu
*1MifCOKCbllllOODO)
elae
eid
ej^d.
if(rgica生doq】叽口叶pcqksiq鼻吨叽】ioi111iqrb"bioociioqeqi>b'tDiilamki[Qica^i^bioiigqliij
I<=lr
elMR=Cl:
du戸軌選〕
bif(iskb"bdtoiinoab(mira.ikitgicQ"bwi'Mdiiimihi(gi 4QKBpblODlQllD«Ql>B怙1Q>DC1(J111|iSKB"MOI101CQEQ1>B"blCLVlOQil11](QKB''bl1Q10QIXQIM! blIQWUlll|(gi<5'bl11100WEQ1>8'billD01VIJIJc=" else灭= ; AlwaysL: 0t〕 il[QlcABb^liraLa4Ql>|'bO&Oill&l11i: QlA'hOlUlllXil)||CQKfl'blOlOlUliZ^Qlji'blDDlOlDL)|CQ-L<»1hlllO-OllOfQL^1hl101DD01J;iJ&r*U «IlV! RC^-r alva;9[QII if怕: L=EJbfiOOCl&fiOa|Q1=! •MOilltll|良=日'hflillCllijgi=! 'biaiLKil|駅=11104111j CTERU COTK^Cj a-viiipi-耳二口 a^ai^ny=j; ajfsigpiZ^C; eiAuidiile rCNTlO L i i CLK COUT i 7 j 1 RST DOU7I7..0) L j E'N X i i i 1 LOAD Y — CATAl? .0] z F \llUt 2)时钟分频模块的设计 由于使用的FPGA的输入时钟是20Mhz,定时模块的自加频率是1hz,因此需要进行分频得到1hz的时钟频率输入给定时模块。 Smodulefrediv(elk,clkout);//^j'A20KHz,纟盯二廿玉U王UlHz inputcllr; outputclkout; regclkout; reg[23: O)counter;//中闫变呈ccmrrtE工走乂为吞存器空parameterN=20_000_000; Salways®(pasedgeelk}beginif(counter=N/2-1) Sbegin cllcout<=^clkout;counrer<=O; end else caunjter<=counter+l*101; end endmed^le 3)定时器设定 定时器设定和自减模块可以设定定时器的工作时间,通过输入的1hz的信号 使定时器的值每分自减1,直至为0. moduleCOUNTER(CLK,RST,EN,LOAD,COUT,DOUT,DATA,K}; inputCLKfENfRSTfLOAD,K;input[3: 0]DATA; output[3: 0: DOUT; outp-j匸COUT; reg(3: 0]QI;xe? COUT; assignDOUT=Q1; always§(posedgeCLKctnegedgeRST)fceqin if(! RST) Ql<=0Oil; elseif((EN==14K—1}|(EN-=14K-==-l))begin if(Ql>04K==L| Ql<^Ql-lTbl; else Ql<-^'toon;end end always电(QI) if(Ql==4rh0)COUT=l*bl; else COUT=l'tO; endiEQdule 4)直流电机模块 lodulfcountstout,resec,die}; cm匸put;[r: 0]out;inputreset‘elk;reg[7: □]口口匸;always3(posedgeelk}Hbegin if(reset) elseout<=cut+l・bl; end endrEodule moduleccunt4(out,reset,clJc}; output[3: 0]out; j.np口匸reset,elk; reg(3: 0] always@(posedgeelk} 3begin if(reset) else □Ut<=QUt+l1bl; end endmcdule 5)数码管显示译码模块的设计 数码管显示译码模块主要功能是把定时器送来的值译码并通过数码管显示出来。 fpga的VerilogHDL硬件语言是并行的这有别于软件的描述语言扫描方式 iDduleDECL8S{A,LED8S); input[3: 0]A;outp-Jt[10]LEDSS; reg[7: 0: LEDS5; always0(A) endmodule IU L 1 3 A[3.0] LEDSSF.0) f] 「 四、电路调试 1.引脚分配图 1•定时器自减值与洗衣机控制器的正转、反转,停机,报警在RTL仿真的时候 是同步的,但是下载到硬件上运行的时候出错,不能同步。 解决方法: 反复的研究VerilogHDL程序后发现,开始是使用分频器输出的1hz 的时钟输入给时序中心控制器模块,而定时器模块的时钟是20Mhz的,两个模 块的时钟不能同步,因此就存在一定的延时不同步导致错误。 然后我把时序中心控制模块的时钟也改为20Mhz,让两个模块的时钟同步,定时器自减输出的值输入到时序中心控制模块作为时序控制的信号,问题顺利解决。 2•程序在运行的时有时候数码管会显示定时器的起始值,洗衣机控制器又重新 从头开始运行。 解决方法: 研究硬件电路的设计发现,启动工作控制开关,默认设置为了低电平是不启动的,高电平启动并保持才能使洗衣机控制器正常工作,而在启动后工作中,电平出现不稳的状态,电平并不能很好的起到拉高的作用,因此怀疑是上拉能力不足和电源纹波的干扰,导致电平的不稳定性使洗衣机控制器有时复位。 随后我便在电源的输出端并接一个220uf的电解电容和一个O.luf的瓷片电容,再用示波器测试发现纹波减少很多;同时为了防止上拉能力不足导致错误,我便把启动控制开关默认设置为高电平,低电平为启动和保持。 然后再测试,问题解决。 3•使用按键修改定时器模块的设定值时,按一下按键,数据变化好几次,不是 每按一次改变一个值。 解决方法: 根据以往的经验可以知道是因为按键没有消抖所致,在设计电路的时 候忘记了使用按键消抖模块,随后编写了按键消抖模块,再接入控制系统测试,数据正确,问题解决。 五、结束语和心得体会 在经过了几天的学习设计仿真,我学到了很多东西,主要是对数字电路的基础理论知识的复习巩固和对FPGA方面知识的掌握,更加清楚了解到了VerilogHDL语言的魅力,对以前学的理论知识通过实践来检验,更深入的理解了理论联系实际的重要性。 通过这次的FPGA设计,我可以说是受益良多。 看到洗衣机控制器的题目, 我首先想到的是状态机的设计,因为课本上说状态机其实就是控制器,后来经过看书觉得应该是摩尔型状态机,可是分析后发现设计题目比较复杂,如果用状态机的思路来设计,比较困难。 结合以前做课程设计的经验,如果用模块化层次化的设计思路更清晰,设计起来也更容易,特别是更符合FPGA设计的的流程,故 自己开始设计各功能模块。 洗衣机控制器主要实几种状态的循环改变,还有计时和数码显示的功能,所以我觉得电路主要有五大部分组成,包括: 按键消抖模块,时钟分频模块,定时器设定和自减模块,时序中心控制模块,数码管显示译码模块。 在设计的过程中,我也遇到了不少困难,在经过耐心的调试后还是顺利解决了所有问题。 通过这次设计,让我更深入的掌握了VerilogHDL的设计方法与一 些技巧,让我对FPGA勺编程、定时器和计数器的设计更加熟悉,让我更加明白时序组合门电路设计思路和方法。 在设计中学到不少课本上没有的东西,并且充 分认识到家电控制电路设计在一片FPGA芯片内,具有体积小、可靠性高、降低 成本、设计周期短,功能灵活的特点,本人受益匪浅。 我相信通过此次课程设计,一定会对以后的设计工作提供很大帮助。 六、参考文献 1、黑金开发板配套教程VerilogHDL 2、康华光主编电子技术基础数字部分(第五版) 3、陈明义主编、电子技术课程设计实用教程[S]2002年05月第1版 4、EDA先锋工作室设计与验证VerilogHDL 5、马建国孟宪元编著FPGA现代数字系统设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 洗衣机 控制器
![提示](https://static.bdocx.com/images/bang_tan.gif)