- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
全自动洗衣机设计全自动洗衣机设计
数字逻辑电路设计
全自动洗衣机控制器
设计任务及要求:
本实验要求全自动洗衣机控制电路具有启动,复位,水洗,排水,甩干,报警等功能, 其中水洗过程包括正转,暂停,反转;并进行重复三次操作。
具体要求:
1.设置复位开关rst,开关状态rst=1时,对系统状态进行复位,计数器清零;
2.外部输入脉冲信号时钟源clk(40Mhz),经分频后供计数器使用。由clk经分频后得到的qclk为1hz,即每个脉冲到来的时间为1秒,能为计数器提供准确的基准源;
3.启动startk开关,系统启动并开始注水(pumpk)持续一分半钟;
4.拨到高水位(wlh),系统进行正转(wfk)20s;
5.暂停3s;
6.反转(wrk)20s,并且重复三次;
7.洗涤结束后进入排水(draink)状态;
8.拨到低水位(wll),排水(draink)和甩干(spink)同时进行,然后再重复以上操作;
9.重复三次程序结束之后进行报警(alark),然后按一下复位键(rst)报警停止。
二.实验硬件及软件平台:
1、由于输入时钟为40M hz,因此使用了分频模块输出1hz的方波。由clk经分频后得到的qclk为1hz,即每个脉冲到来的时间为1秒,能为计数器提供准确的基准源。
2.输入信号:四个拨码开关:复位、开始、高水位、低水位。开关拨上为1,拨下为0。
3.输出信号:7个高低电平信号,分别接到外部的7个LED灯指示控制器的注水,正转,反转,排水,甩干和报警。输出高电平时,对应的LED灯亮。
三.实验原理简介:
洗衣机控制器的设计主要是时序控制和定时器的设计,由一片FPGA和外围电路构成电器控制部分。FPGA接收键盘的控制命令,控制洗衣机的正转、反转、停机和定时时间为0报警的工作状态、控制并显示工作状态以及显示定时时间。对FPGA芯片的编程采用模块化的Verilog HDL (硬件描述语言)进行设计,设计由分频模块,定时时间模块,数码管显示模块组成,顶层实现整个芯片的功能。顶层使用原理图实现,底层由Verilog HDL语句实现。
FPGA的输入时钟为40M hz,因此使用了分频模块输出1hz的方波给定时器设定自减模块提供每1s自减1的信号,定时器模块输出的自减值输入给数码管显示译码模块和时序控制模块,通过译码模块定时器的值可以在数码管上显示,同时定时器的值输入到时序控制模块由此可以控制洗衣机的正转、反转、停机和报警工作方式。
四.电路设计仿真与综合:
(一)分频设计
1. 基于Verilog的分频器设计源文件
module fenpin(clki,clko);
input clki;
output clko;
reg clko;
reg [31:0] out;
always@(posedge clki)
begin
if(out=
out=0;
else
out=out+1;
if(out
clko=1b1;
else
clko=1b0;
end
endmodule
(二) 洗衣机总洗涤程序源文件:
module control(clk,rst,startk,wlh,wll,pumpk,wrk,wfk,draink,spink,alartk);
input clk,rst,startk,wlh,wll;
output pumpk,wrk,wfk,draink,spink,alartk;
reg[4:0] state;
reg pumpk,wrk,wfk,draink,spink,alartk,sta;
reg[8:0] t,t1,t2;
reg[1:0] tt;
parameter
await=5b10000,
pump=5b01000,
wash=5b00100,
drain=5b00010,
spin=5b00001;
//--------------------状态独热码-------------------------------------
always @(posedge clk)
if(rst)
begin
state=await;
t=0;
t1=0;
t2=60;
tt=0;
pumpk=0;
wrk=0;
wfk=0;
draink=0;
spink=0;
alartk=0;
end
//--------------------进入待机状态-----------------------
文档评论(0)