基于FPGA的洗衣机电机正反转控制器说明书.doc

上传人:h**** 文档编号:137939 上传时间:2018-07-10 格式:DOC 页数:39 大小:395KB
下载 相关 举报
基于FPGA的洗衣机电机正反转控制器说明书.doc_第1页
第1页 / 共39页
基于FPGA的洗衣机电机正反转控制器说明书.doc_第2页
第2页 / 共39页
基于FPGA的洗衣机电机正反转控制器说明书.doc_第3页
第3页 / 共39页
基于FPGA的洗衣机电机正反转控制器说明书.doc_第4页
第4页 / 共39页
基于FPGA的洗衣机电机正反转控制器说明书.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

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

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

3、续运行;按下并松开 S4则回到上电初始状态。其他两个按键不起作用。到达定时时间后,停止运行,按下并松开 S4则回到初始状态,在运行中要显示定时时间和剩余工作时间,当剩余时间为 0时,要显示 “ End” 。 在工作过程中用三个 LED指示灯指示电机工作状态,正转 D1灯亮,反转 D2灯亮,暂停 D3灯亮,如此反 复直至工作时间为 0停止(三个 LED灯都不亮)。 二、 设计方案 1 洗衣机控制器的整体框图与原理: 原理:本次设计 中七段数码管采用动态扫描的方式显示,扫描需要一个比较高频4 率的信号,本次设计选用 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 (pose

5、dge p_50MHz) if(count1 = 24999) begin count1 = 15d0; p_1kHz = p_1kHz; end 5 else count1 = count1 + 1b1; endmodule module 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; end always(posedge clk_

6、1000) begin if (cnt=10d0) clk_1 = clk_1; end endmodule 50MHz-1KHz仿真波形 1KHz-1Hz仿真波形 2.2定时和时钟中心控制模块 通过此模块,可以实现时间的设定及加减,时钟中心控制正反转,暂停,以及 LED灯的亮灭。通过设定时间及脉冲来决定剩余时间,二者输出作为选择器的输入。 其 Verilog HDL 语言描述如下: modulekongzhi(clk,s1,s2,s3,s4, set,show,d1,d2,d3); 6 input clk; input s1; input s2; input s3; input s4; ou

7、tput 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; reg str; reg d1,d2,d3; reg 3:0i; reg stop; always(posedge clk or negedge s4) begin if(!s4) begin s_out=0; m_out=0; i=0; d1=0; d2=0; d3=0; stop=0; end else if(str d1=0; d2=0;

8、 d3=0; stop=1; end if(i4) begin if(!stop) begin i=i+1; d1=1; end d3=0; end else if(i6) begin i=i+1; d1=0; d3=1; end else if(i10) begin i=i+1; d3=0; d2=1; end else if(i11) begin i=i+1; d2=0; d3=1; end else if(i=11) i=0; if(s_out!=6d59) s_out=s_out+1; else begin s_out=0; m_out=m_out+1; end end end alw

9、ays(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) begin if(!s4) 7 m_down=0; else if(!str) m_down=m_down-5d1; end always(posedge s3 or negedge s4) begin if(!s4) str=0; else if(str=1) str=0; else if(str=0) str=1; end always( s1 or s2

10、or s4) begin set=5d10+m_up+m_down; end always(clk or s3 or s4) begin show=set-m_out; end endmodule 模块仿真图 2.3 数码管显示译码模块 由于本次显示的内容较多且有的恒定不变,有的要随脉冲改变。所以加一个控制模块来选择数码管的输出,将八选一选择器和数码管显示作为一个模块。 其 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

11、:0show,set; reg 3:0s1,s2,s3,s4,s5,s6,s7,s8; always(set or show)begin 8 s1=4h2; s2=4h1; s3=4h0; s4=4h3; if(show=0)begin s5=4hd; s6=4ha; s7=4hb; s8=4hc;end else begin s5=set/10; s6=set%10; s7=show/10; s8=show%10; end end endmodule module xuan(in1,in2,in3,in4,in5,in6,in7,in8,sel,decode_out); input3:0in

12、1,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=in3; 3d3:out=in4; 3d4:out=in5; 3d5:out=in6; 3d6:out=in7; 3d7:out=in8; endcase end alway

13、s (out) begin case(out) 4h0:decode_out=7b1111110; 4h1:decode_out=7b0110000; 9 4h2:decode_out=7b1101101; 4h3:decode_out=7b1111001; 4h4:decode_out=7b0110011; 4h5:decode_out=7b1011011; 4h6:decode_out=7b1011111; 4h7:decode_out=7b1110000; 4h8:decode_out=7b1111111; 4h9:decode_out=7b1111011; 4ha:decode_out

14、=7b1001111; 4hb:decode_out=7b0010101; 4hc:decode_out=7b0111101; 4hd:decode_out=7b0000000; endcase end endmodule 数码管显示仿真图 选择控制八个数码管输出仿真图 2.4 计数器提供脉冲模块 该模块采用模八计数器来提供数码管的扫描脉冲以及作为八选一选择器的输入端 10 其 Verilog HDL 语言描述如下: module jishu (cp,q); input cp; output2:0 q; reg2:0 q; always(negedge cp) begin if(q4b111)

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。