基于FPGA的洗衣机电机正反转控制器_第1页
基于FPGA的洗衣机电机正反转控制器_第2页
基于FPGA的洗衣机电机正反转控制器_第3页
基于FPGA的洗衣机电机正反转控制器_第4页
基于FPGA的洗衣机电机正反转控制器_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、电机控制综合课程设计报告 课题名称:基于FPGA的洗衣机电机正反转控制器学 院:信息与控制工程学院专业班级:姓 名:学 号: 2014 年 7 月 4 日目录1、 设计内容-32、 设计方案-3 1 洗衣机控制器的整体框图与原理-3 2 控制电路各模块程序及仿真图-43、 电路调试-104、 总结与体会-10 一、设计内容 1.任务要求及内容 设计一个基于FPGA的洗衣机正反转定时控制器,其具体要求如下:控制洗衣机的电机作如下周期性运转,正转4S暂停2S反转4S暂停2S,用8位七段数码管显示自己学号的后四位(显示在从左边数第一个到第四个数码管上)、定时时间(两位,单位:分钟,显示在第五个和第六

2、个数码管上),剩余时间(两位,单位:分钟,显示在第七个和第八个数码管上)。 2.洗衣机控制器的工作过程(1)上电后显示自己学号的后四位,在运行中不变;初始洗涤时间为10分钟,在开始前可用S1和S2按键设置总的工作时间,确定洗衣机控制器定时工作时间。(按下并松开S1 定时时间增加一分钟,按下并松开S2定时时间减少一分钟,时间范围为:0030分钟)(2)设定好定时时间后,按下并松开S3(按下时S3=0,松开时S3=1),启动控制器,整个系 统开始运行;再次按下并松开S3,停止运行;再次按下并松开S3继续运行;按下并松开S4则回到上电初始状态。其他两个按键不起作用。到达定时时间后,停止运行,按下并松

3、开S4则回到初始状态,在运行中要显示定时时间和剩余工作时间,当剩余时间为0时,要显示“End”。在工作过程中用三个LED指示灯指示电机工作状态,正转D1灯亮,反转D2灯亮,暂停D3灯亮,如此反复直至工作时间为0停止(三个LED灯都不亮)。2、 设计方案 1 洗衣机控制器的整体框图与原理: 原理:本次设计中七段数码管采用动态扫描的方式显示,扫描需要一个比较高频率的信号,本次设计选用1000HZ。为了得到1000Hz信号,必须对输入的时钟信号50MHZ进行分频。而定时脉冲采用秒脉冲,所以选用两个分频器。总的电路图包括时钟分频模块、定时和加减模块、时钟中心控制模块、数码管显示译码模块。具体电路图如图

4、所示: 2. 控制电路各模块程序及仿真图 2.1 时钟分频模块 FPGA的输入脉冲有50MHz,而数码管显示所需的脉冲为1KHz.而时钟中心控制模块所需的脉冲为1Hz.所以需要两个分频器,具体如下: 其Verilog HDL 语言描述如下:module fenpin(p_50MHz,p_1kHz); /分频input p_50MHz;output p_1kHz;reg p_1kHz;reg 15:0count1;always (posedge p_50MHz)if(count1 = 24999)begincount1 = 15d0;p_1kHz = p_1kHz;endelse count1

5、= count1 + 1b1;endmodulemodule fenpin1(clk_1000,clk_1);input clk_1000;output clk_1;reg clk_1;reg 9:0 cnt;always(posedge clk_1000)begin if (cnt=10d499)cnt = 10d0;else cnt = cnt+1;endalways(posedge clk_1000)begin if (cnt=10d0)clk_1 = clk_1;endendmodule50MHz-1KHz仿真波形1KHz-1Hz仿真波形2.2定时和时钟中心控制模块通过此模块,可以实现

6、时间的设定及加减,时钟中心控制正反转,暂停,以及LED灯的亮灭。通过设定时间及脉冲来决定剩余时间,二者输出作为选择器的输入。 其Verilog HDL 语言描述如下:modulekongzhi(clk,s1,s2,s3,s4, set,show,d1,d2,d3);input clk;input s1;input s2;input s3;input s4;output 4:0show;output 4:0set;output d1,d2,d3;reg 5:0s_out;reg 4:0m_out;reg 4:0show;reg 4:0m_up;reg 4:0m_down;reg 4:0set;r

7、eg str;reg d1,d2,d3;reg 3:0i;reg stop;always(posedge clk or negedge s4)begin if(!s4)begins_out=0; m_out=0;i=0;d1=0;d2=0;d3=0;stop=0;endelse if(str&!stop)beginif(show=0)begini=0;d1=0;d2=0;d3=0;stop=1;endif(i4)beginif(!stop)begini=i+1;d1=1;endd3=0;endelse if(i6)begini=i+1;d1=0;d3=1;endelse if(i10)begi

8、ni=i+1;d3=0;d2=1;endelse if(i11)begini=i+1;d2=0;d3=1;endelse if(i=11)i=0;if(s_out!=6d59)s_out=s_out+1;elsebegins_out=0;m_out=m_out+1;endendendalways(posedge s1 or negedge s4) begin if(!s4)m_up=0;else if(!str)m_up=m_up+5d1; end always(posedge s2 or negedge s4)beginif(!s4)m_down=0;else if(!str)m_down=

9、m_down-5d1;endalways(posedge s3 or negedge s4)beginif(!s4)str=0;else if(str=1)str=0;else if(str=0)str=1;endalways( s1 or s2 or s4) beginset=5d10+m_up+m_down;endalways(clk or s3 or s4)beginshow=set-m_out;endendmodule 模块仿真图2.3 数码管显示译码模块 由于本次显示的内容较多且有的恒定不变,有的要随脉冲改变。所以加一个控制模块来选择数码管的输出,将八选一选择器和数码管显示作为一个模

10、块。 其Verilog HDL 语言描述如下:module xuanze(set,show,s1,s2,s3,s4,s5,s6,s7,s8);output 3:0s1,s2,s3,s4,s5,s6,s7,s8;input 4:0show,set;reg 3:0s1,s2,s3,s4,s5,s6,s7,s8;always(set or show)begins1=4h2;s2=4h1;s3=4h0;s4=4h3;if(show=0)begins5=4hd;s6=4ha;s7=4hb;s8=4hc;endelse begins5=set/10;s6=set%10;s7=show/10;s8=show

11、%10;end endendmodule module xuan(in1,in2,in3,in4,in5,in6,in7,in8,sel,decode_out);input3:0in1,in2,in3,in4,in5,in6,in7,in8;input2:0sel;output6:0decode_out;reg3:0out;reg6:0decode_out;always( in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8 or sel)begin case(sel) 3d0:out=in1; 3d1:out=in2; 3d2:out=in

12、3; 3d3:out=in4; 3d4:out=in5; 3d5:out=in6; 3d6:out=in7; 3d7:out=in8;endcaseendalways (out)begincase(out) 4h0:decode_out=7b;4h1:decode_out=7b;4h2:decode_out=7b;4h3:decode_out=7b;4h4:decode_out=7b;4h5:decode_out=7b;4h6:decode_out=7b;4h7:decode_out=7b;4h8:decode_out=7b; 4h9:decode_out=7b;4ha:decode_out=

13、7b;4hb:decode_out=7b;4hc:decode_out=7b;4hd:decode_out=7b;endcaseendendmodule数码管显示仿真图选择控制八个数码管输出仿真图2.4 计数器提供脉冲模块该模块采用模八计数器来提供数码管的扫描脉冲以及作为八选一选择器的输入端其Verilog HDL 语言描述如下:module jishu (cp,q);input cp;output2:0 q;reg2:0 q;always(negedge cp)begin if(q4b111)q=q+1;else q=4b000;endendmodule计数器仿真波形3、 电路调试1. 在调

14、试时,学号在整个运行过程中都保持不变,此符合要求。2.第一次调试时,设置的定时时间和自减的初值不能同步。这是因为一开始我把它们分为两个模块,时钟控制不一致。 解决方法:将这两部分放到一个模块里面,由一个时钟脉冲来控制,问题顺利解决。3.每次按键改变定时器的初值,有时不是减一而是减多值。这是因为抖动产生的不稳定,若要解决,须给程序加上消抖模块。四、总结与体会 通过本次设计,对于Verilog语言和quartus软件有了更深的了解,由开始的只知皮毛到现在的自己可独立编程,真的有很大收获。由于开始对知识的不熟悉,在设计过程中困难重重。起初没有思路,后来明白框图又不知如何下手的辛酸,在第一天尤其明显。在设计中,时钟中心控制模块最为困难,因为要控制的量很多,而且控制条件也较复杂,参阅和查询了资料,一次又一次的测试才成功。此次设计的模块化是一亮点,减少了很多不必要的连线使整体更加清晰。到电路测试时,也不是一次便成功。多改多试,持之不懈,最终得以成功。在项目设计方面中,我遇到了些

温馨提示

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

评论

0/150

提交评论