1、基于FPGA的洗衣机控制器编号: 1FPGA设计报告学院: 专业: 班级: 姓名: 学号: 一、 洗衣机控制器主要内容 31.任务要求和内容 32.洗衣机控制器的使用步骤: 3二、 设计原理简介 4三、 正文 41洗衣机控制器的整体框图及原理: 42洗衣机控制电路各个模块 61) 洗衣机控制电路(秒数加一)时序控制中心模块 62) 时钟分频模块的设计 6由于使用的FPGA勺输入时钟是20M hz,定时模块的自加频率是1hz,因此需要进行分频得到 1hz的时钟频率输入给定时模块。 63) 定时器设定 74) 直流电机模块 95) 数码管显示译码模块的设计 9四、 电路调试 101引脚分配图 11
2、五、 结束语和心得体会 12六、 参考文献 13一、洗衣机控制器主要内容I.任务要求和内容设计制作一个洗衣机的正反转及暂停定时控制线路。1)控制洗衣机的电机作如下运转定时开始一一正转20S暂停10S反转20S暂停10S定时到停止定时未到2.定时到报警。3用直流电机模拟洗衣机。2 .洗衣机控制器的使用步骤: 电路上电后,在Start拨码开关未闭合前设定工作时间(分钟数)设置总的 工作时间,确定洗衣机控制器工作允许时间。(2)设定好允许工作时间后,闭合Start开关,洗衣机控制器开始工作。(3)可以看见指示正转LED丁亮20s,停转LED灯亮10S,反转LED灯亮200s,停转LED亮10s,如此
3、反复直至工作允许时间为 0,蜂鸣器发出警报。二、设计原理简介洗衣机控制器的设计主要是时序控制和定时器的设计, 由一片FPGA和外围电路构成电器控制部分。FPGA接收键盘的控制命令,控制洗衣机的正转、反 转、停机和定时时间为0报警的工作状态、控制并显示工作状态以及显示定时时 间。对FPGA芯片的编程采用模块化的Verilog HDL (硬件描述语言)进行设计, 设计由分频模块,定时时间自减模块,时序中心控制模块,直流电机模块,数码 管显示模块组成,顶层实现整个芯片的功能。顶层使用原理图实现,底层由Verilog HDL 语句实现。FPGA勺输入时钟为20M hz,因此使用了分频模块输出1hz的方
4、波给定时器 设定秒数每1s自加1的信号,控制灯的秒加法计数模块输出一个脉冲给减法定 时器模块使之每分钟减1,随之将分钟通过译码模块定时器的值可以在数码管上 显示,同时定时器的值输入到时序控制模块由此可以控制洗衣机的正转、反转、 停机和报警工作方式。三、正文1洗衣机控制器的整体框图及原理:基于fpga的洗衣机控制器电路主要由五大模块组成,分别为时钟分频模块,定 时器设定和自减模块,时序中心(秒数加法计数)控制模块,数码管显示译码模 块。具体电路如图1所示:Ijfirw4prT0Ind taiauarLr-1hz的方波(中间上方由于输入时钟为20M hz,因此使用了分频模块输出模块)给定时器设定和
5、秒数加1提供每1s自加1的信号,定时器模块输出的自减值输入给数码管显示译码模块(右下方模块)和时序控制模块(右上模块) 通过译码模块定时器的值可以在数码管上显示,同时秒数加法计数的脉冲输入到定时器分钟减1模块由此可以控制洗衣机的正转、反转、停机和报警工作方式2洗衣机控制电路各个模块1)洗衣机控制电路(秒数加一)时序控制中心模块a jBAdOLf Etfrltl i:ELK XSTp EJTj XXUtDj COTlj DITA. 2) Iinput IWHUcnitput 7:0 DCX7T;ovcpuz GOUT 黔zeg 7:0 QI; zcg COTle Ir JrKr lasxgE D
6、OUTJl;j.luj.y4 | (pe址曲e ELK az 乂学弩 SLT1ifllUfTiQ1;D begin丄却10呦gizmeu*1M ifCOKCbllllOODO)elaeeidejd.if( rgica生doq】叽口叶 p cqks iq鼻吨叽】ioi 111 iqrbbioociioqeqibtDiilamk i QicaibioiigqliijI=lrelM R=Cl:du戸軌選b if( iskb bdto ii no ab(mira.i k i tgicQ bwi Mdiiimi h i(giB怙 1QDC1(J111 | iSKBMOI 101CQEQ1BblCLVlO
7、Qil 11 (QKBbl 1Q10QIXQIM !blIQWUlll |(gi8 billD01VIJI Jc=else 灭=|bO&Oill&l11 i:QlA hOlUlllXil) | CQKfl blOlOlUliZQlji blDDlOlDL) | CQ-L1 hlllO-OllOfQL 1 hl 101DD01J ;i J&r*UIlV! RC-ralva;9 QI Iif 怕:L=E JbfiOOCl&fiOa |Q1=! MOilltll | 良=日hflillClli j gi=! biaiLKil | 駅=11104111 jCTERUe上COTKCja-viiipi-耳
8、二口aain y=j;ajfsigpi ZC;eiAuidiilerCNTlO Lii CLKCOUTi7j1 RSTDOU7I7.0)LjENXiii 1LOADYCATAl? .0z F llUt2)时钟分频模块的设计由于使用的FPGA的输入时钟是20M hz,定时模块的自加频率是1hz,因此 需要进行分频得到1hz的时钟频率输入给定时模块。S module fre div (elk, clkout); /jA20KHz,纟盯二廿玉U王UlHzinput cllr;output clkout;reg clkout;reg23:O) counter; /中闫变呈ccmrrtE工走乂为吞存器空
9、 parameter N=20_000_000;S always (pasedge elk begin if (counter= N/2-1)S begincllcout = clkout; counrer=O;endelsecaunjter=counter+l *101;endendmedle3)定时器设定定时器设定和自减模块可以设定定时器的工作时间, 通过输入的1hz的信号使定时器的值每分自减1,直至为0.module COUNTER (CLK,RST,EN,LOAD,COUT,DOUT,DATA,K;input CLKf ENf RSTf LOAD,K; input 3:0 DATA;o
10、utput 3:0: DOUT;outp-j匸 COUT;reg (3:0 QI; xe? COUT;assign DOUT=Q1;always (posedge CLK ct negedge RST) fceqinif(!RST)Ql04K=L|QlQl-lTbl;elseQl- toon; endendalways 电(QI)if(Ql=4rh0) COUT=l*bl;elseCOUT=ltO;endiEQ dule4)直流电机模块lodulf counts tout, resec, die;cm 匸 put; r:0 out; input reset elk; reg7: 口口匸; al
11、ways 3 (posedge elk H beginif(reset)else out=cut+lbl;endendrEodulemodule ccunt4 (out, reset, clJc;output 3:0 out;j.np口匸 reset , elk;reg(3:0always (posedge elk3 beginif (reset)else Ut=QUt + l 1 bl;endendmcdule5)数码管显示译码模块的设计数码管显示译码模块主要功能是把定时器送来的值译码并通过数码管显示 出来。fpga的Verilog HDL硬件语言是并行的这有别于软件的描述语言扫描方式iDd
12、ule DECL8S A,LED8S);input 3:0 A; outp-Jt 10 LEDS S ;reg7:0: LEDS5;always 0 (A)endmoduleIUL13A3. 0LEDSSF .0)f四、电路调试1.引脚分配图1 定时器自减值与洗衣机控制器的正转、反转,停机,报警在 RTL仿真的时候是同步的,但是下载到硬件上运行的时候出错,不能同步。解决方法:反复的研究 Verilog HDL程序后发现,开始是使用分频器输出的 1hz的时钟输入给时序中心控制器模块,而定时器模块的时钟是 20M hz的,两个模块的时钟不能同步,因此就存在一定的延时不同步导致错误。然后我把时序中心
13、 控制模块的时钟也改为20M hz,让两个模块的时钟同步,定时器自减输出的值 输入到时序中心控制模块作为时序控制的信号,问题顺利解决。2程序在运行的时有时候数码管会显示定时器的起始值,洗衣机控制器又重新从头开始运行。解决方法:研究硬件电路的设计发现,启动工作控制开关,默认设置为了低电平 是不启动的,高电平启动并保持才能使洗衣机控制器正常工作, 而在启动后工作 中,电平出现不稳的状态,电平并不能很好的起到拉高的作用, 因此怀疑是上拉 能力不足和电源纹波的干扰,导致电平的不稳定性使洗衣机控制器有时复位。 随 后我便在电源的输出端并接一个 220uf的电解电容和一个O.luf的瓷片电容,再 用示波器
14、测试发现纹波减少很多;同时为了防止上拉能力不足导致错误, 我便把 启动控制开关默认设置为高电平,低电平为启动和保持。然后再测试,问题解决。3 使用按键修改定时器模块的设定值时,按一下按键,数据变化好几次,不是每按一次改变一个值。解决方法:根据以往的经验可以知道是因为按键没有消抖所致, 在设计电路的时候忘记了使用按键消抖模块,随后编写了按键消抖模块,再接入控制系统测试, 数据正确,问题解决。五、结束语和心得体会在经过了几天的学习设计仿真,我学到了很多东西,主要是对数字电路的基础理 论知识的复习巩固和对FPGA方面知识的掌握,更加清楚了解到了 Verilog HDL 语言的魅力,对以前学的理论知识
15、通过实践来检验,更深入的理解了理论联系实 际的重要性。通过这次的FPGA设计,我可以说是受益良多。看到洗衣机控制器的题目,我首先想到的是状态机的设计,因为课本上说状态机其实就是控制器, 后来经过 看书觉得应该是摩尔型状态机,可是分析后发现设计题目比较复杂,如果用状态 机的思路来设计,比较困难。结合以前做课程设计的经验,如果用模块化层次化 的设计思路更清晰,设计起来也更容易,特别是更符合 FPGA设计的的流程,故自己开始设计各功能模块。洗衣机控制器主要实几种状态的循环改变,还有计时 和数码显示的功能,所以我觉得电路主要有五大部分组成, 包括:按键消抖模块, 时钟分频模块,定时器设定和自减模块,时
16、序中心控制模块,数码管显示译码模 块。在设计的过程中,我也遇到了不少困难,在经过耐心的调试后还是顺利解决 了所有问题。通过这次设计,让我更深入的掌握了 Verilog HDL的设计方法与一些技巧,让我对FPGA勺编程、定时器和计数器的设计更加熟悉,让我更加明白 时序组合门电路设计思路和方法。 在设计中学到不少课本上没有的东西, 并且充分认识到家电控制电路设计在一片 FPGA芯片内,具有体积小、可靠性高、降低成本、设计周期短,功能灵活的特点,本人受益匪浅。我相信通过此次课程设计,一定会对以后的设计工作提供很大帮助。六、参考文献1、 黑金开发板配套教程 VerilogHDL2、 康华光主编 电子技术基础 数字部分(第五版)3、 陈明义主编、电子技术课程设计实用教程S 2002年05月第1版4、 EDA先锋工作室 设计与验证 Verilog HDL5、 马建国孟宪元编著FPGA现代数字系统设计
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1