利用WHDL设计洗衣机控制器_第1页
利用WHDL设计洗衣机控制器_第2页
利用WHDL设计洗衣机控制器_第3页
利用WHDL设计洗衣机控制器_第4页
利用WHDL设计洗衣机控制器_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、利用VHDL设计洗衣机控制器1 引言2 选题研究的意义21 课题来源22 课题研究的背景23 研究的目的和意义4 应解决的主要问题与应达到的技术要求241 需解决的主要问题洗衣机控制系统的核心部件是控制器。洗衣机控制电路包括控制器、控制对象、状态显示电路、计时器与报警电路。它是一闭环系统,部结构有洗衣机状态转23 / 23换时间信号产生器、状态计数器、数据选择器和状态译码器,它能自动发出顺序循环控制信号(S、R、L),并同时完成在该状态下的计时功能。另外,它还向控制对象提供一个工作过程的周期信号(T),作循环次数累计。控制对象是由4位二进制计数器和4位数值比较器构成,它对T作计数,与此同时与人

2、工输入的预置循环数比较,随时将反应受控器自身状态的信号反馈给控制器,从而实现系统的控制功能。242 需实现洗衣机控制器的控制功能 洗衣机的状态为待机5s正转60s待机5s反转60s,并用3个LED灯和7段显示器分别表示其工作状态和显示相应工作状态下的时间。自行设定洗衣机的循环次数,这里设最大的循环次数为15次。 具有紧急情况的处理功能。当发生紧急情况时,立即转入到待机状态,紧急情况解除后继续执行后续步骤。 洗衣机设定循环次数递减到零时立即报警,以表示洗衣机设定的循环次数已经结束。 输入变量:时钟CLK,直接清零RD,暂停/连续EN,设定洗衣机的循环次数SET。输出变量:三个工作状态S、R、L,

3、一个过程周期T(T4),8421BCD码Q7Q0输出与报警信号。25 国外研究现状,发展趋势与存在的主要问题26设计工具介绍3 洗衣机控制器设计的方案论证3.1 洗衣机控制器设计的方案选择设计洗衣机控制器,通常可以用三种方法来实现。方法一,可以用纯机械式来设计控制器。本方法利用机械原理来设计定时器。例如可以利用弹簧储存能量和释放能量的过程得到定时时间。其原理如同机械式(上发条)的钟表。由于长时间工作,金属容易疲劳,一旦出现这样的情况,其定时的误差变大,导致定时不准确。同时由于金属的疲劳和磨损等,可能引发定时器停摆,轮子打滑,进水等问题。但机械式控制器具有制造方便,成本低等特点,所以在很多场合应

4、用面依然比较广。方法二,利用单片机控制。利用单片机设计控制器也是一种理想的设计方案。其优点突出,主要表现为:前期开发投入少,效率高,设计周期短,控制精度较高。但单片机芯片单价高,如果大批量生产,其性价比较低;另外,在实际工作过程中容易出现死机,程序调用混乱等问题。方法三,采用FPGA。FPGA具有体积小,可靠性高等优点。它一方面克服了机械式控制器所引发的定时器停摆,轮子打滑,进水等缺点;另一方面也克服了利用单片机设计的控制器的问题,不易出现死机,程序调用混乱等问题。同时,采用大批量生产时,其性价比高。虽然方案二也能实现设计任务,但程序结构繁冗,用户看起来不太直观。方案三只用一个转换器就能实现,

5、程序简单也能较好的完成设计任务。且移植性好,功能更容易扩展。本设计选择方案三实现洗衣机控制器的功能。3.2数字系统的FPGA设计流程 3.2.1设计系统结构框图系统结构框图8如图2所示。洗衣机控制电路包括控制器,控制对象,状态显示电路,计时器与报警电路。控制器是系统的核心部件。它是一闭环系统,部结构有5s和60s信号产生器,状态计数器,数据选择器和状态译码器,它能自动发出顺序控制信号(S、R、L),并同时完成在该状态下的计时功能。另外,它还向控制对象提供一个工作过程的周期信号(T),作循环次数累计。控制对象是由4位二进制计数器和4位数值比较器构成,它对T作计数,与此同时与人工输入的预置循环数比

6、较,随时将反应受控器自身转台的信号反馈给控制器,实现系统的控制功能8。图2 系统的结构框图状态显示电路是通过3个LED灯来显示洗衣机的状态:当洗衣机暂停或出现紧急情况时第二个LED灯亮,当洗衣机正转时第一个LED灯都亮,当洗衣机反转时,只有第三个LED灯亮。报警控制电路的功能是当设定的循环次数减到零时提示用户。LED灯和数码管显示电路:通过LED灯来显示洗衣机的各种工作状态,利用数码管来显示时间。3.2.2洗衣机控制框图蜂鸣报警系统(根据机器运行的过程或状态给出蜂鸣或报警)供电系统(提供控制板电源)门盖状态检测(检测洗涤过程中门盖状态)供排水系统(按照一定的洗涤中期进水或排水)电机驱动系统(驱

7、动电机按照一定的周期或节奏洗涤与脱水)负载检测系统( 检测衣物重量 )用户接口(获得用户输入同时反映机器状态)控制器图3 洗衣机控制系统3.2.3洗衣机控制系统流程图洗涤洗涤放入衣物水流设置水位设置模式选择洗涤时间设置默认洗涤时间手动设置洗涤时间进水进水排水进水清洗排水脱水自动断电图4 洗衣机控制系统流程图3.2.4洗衣机状态转移图S0S1S2S211S221S3S4S5S222S212S8S7S6图5 洗衣机状态转移图4 设计论述系统有3个工作状态:正转,反转,暂停,由状态标志量count控制。count=0时,洗衣机正转,时间持续60s;count=1时洗衣机第一次暂停,时间持续5s;co

8、unt=2时洗衣机反转,时间持续60s;count=3时洗衣机第二次暂停,时间持续5 s,此时一个工作周期结束会产生控制信号T,设定的循环次数减1,若减1后循环次数为零,则洗衣机停止工作,产生报警信号;若循环次数不为零则继续工作。如果系统产生复位信号,则洗衣机停止工作产生报警信号。整个控制功能的VHDL程序见附录一。该程序经编译后创立的模块图如图8所示,其输入输出信号说明如下:系统时钟CLK,直接清零RD,暂停/连续EN,设定洗衣机的循环次数SET,报警脉冲信号CLK_1024;LAMP:洗衣机运行各状态指示灯Seg2,seg1:各状态运行时间的显示Seg4,seg3:设定工作周期显示时间计数

9、ALARM:报警信号部信号说明:temp:状态转换控制信号count:状态转换信号C:清零信号s1,s2,s3,s4:状态值T:控制器产生的控制信号A:报警信号图11 I/O模块图432 使用说明 在EN为低电平时通过SET设定洗衣机循环工作的次数。 通过按键将EN置为高电平,启动洗衣机工作,以后可通过EN暂停/继续。 若中途发生故障,可通过按键RD直接清零复位,待清除故障后重新启动。 洗衣机结束工作,报警,可通过RD或EN直接取消报警,将EN置为低电平,即可重新设定工作次数。44 测试仿真步骤 在Max+plus软件平台上进行仿真的基本步骤如下: 选File/Project/Name菜单建立

10、项目名。见图12图12 选File/New菜单,并选text Editor条目,进入文本编辑窗,然后输入电路设计文件。见图13图13 选File/Project/Save & Check 菜单将文件存盘并检查文件的正确性。见图14。图14 选Max+plus/waveform Editor菜单,编辑输入信号波形(在波形编辑窗口,选Node/Enter Nodes from SNF菜单将输入和输出端口调入,然后再编辑)。见图15。图15 选Max+plus/Simulator 菜单进行行为仿真。见图16图16 观察仿真结果,研究设计的正确性。5 结果分析测试仿真波形见附录二BCD码模块仿

11、真波形和七段显示译码模块仿真波形如附录二中图1和图2所示,测试波形正确。执行设定次数为2的波形图见附录二图3所示,测试波形符合要求。加入暂停信号后的波形。从附录二图4整体上看暂停有效。从附录二图5细节上看程序具有记忆功能,能从断点处装载,继续工作,符合要求。加入RD信号后的波形附录二图6复位信号有效,复位后报警提示成功。6 设计总结设计过程中采用了VHDL语言进行编写,并用MAX + plus软件进行仿真,它主要是对洗衣机工作状态、时间进行控制,在整个设计过程中,我先对FPGA的结构和VHDL的语法结构进一步的掌握,然后着重根据设计原理和思路着手编程,其间参考了不少文献资料,对计数器、数据选择

12、器、译码器、数值比较器的功能、逻辑图、引脚图进行分析,然后再在MAX + plus上进行编译仿真,分析波形,修改程序直至与设计要求相符。当然在研究中还存在不少问题,比如我设计的洗衣机只是半自动的,其功能还不完善,如水位的控制、脱水、漂洗的方式等都还没设计出来;仿真的波形还没完全达到设计标准,对时间的延迟没考虑清楚等,如果是对课题的进一步研究可以增加洗衣机的功能,这就还需要增加传感器等等,同时还可以添加一个测试程序,就可以更加直观的看到仿真结果。参考文献1 黄任. VHDL入门、解惑、经典实例、经验总结. 第一版,:航空航天大学,2005.12 谭会生,瞿遂春. EDA技术综合应用实例与分析.

13、第一版,:电子科技大学,2004.113 松,黄继业. EDA技术实用教程. 第三版,:科学,20064 徐光辉,程东旭,黄如. 基于FPGA的嵌入式开发与应用. 第一版,:电子工业,2006.95 郭冀岭,王君瑞,王远波. 用VHDL实现智能洗衣机控制系统有限状态机的设计. 电子技术,2004; 6 渊,马善农. 基于CPLD的洗衣机控制器. 科技广场,2007; 7 波,王章瑞,高一波. 基于VHDL的洗衣机控制器设计. 科技设计成果,2007; 8 司孝平,严峰. 基于FPGA的洗衣机控制器设计与实验教学. 天中学刊,2006; 9 司孝平,严峰. 对一种洗衣机控制器的FPGA设计改进.

14、 大学学报(自然科学版), 2006; 10 晓博,展威,素娟. 数字电压表的VHDL设计与实现. 仪表技术,2005; 11 EP1C12.pdf . 12 EP1C8.pdf. 13 ByteBlaster_II_Download_Cable.pdf. 致 附录一 程序源代码-BCD码变换模块。module bcdma(clk,TIMES,t);input clk;input 3:0 TIMES;output 7:0 t;reg 7:0 t;always (posedge clk)beginif(TIMES>4'b1001)t<=TIMES+8'b0000011

15、0;elset<=TIMES+8'b00000000;endendmodule-共阴极七段显示译码模块module decode(COUNT,oseg1,oseg2);input 7:0 COUNT;output 6:0 oseg1,oseg2;reg 6:0 oseg1,oseg2;always (COUNT7:0)begincase(COUNT3:0)4'h1: oseg1 = 7'b0000110;4'h2: oseg1 = 7'b1011011; 4'h3: oseg1 = 7'b1001111; 4'h4: ose

16、g1 = 7'b1100110; 4'h5: oseg1 = 7'b1101101; 4'h6: oseg1 = 7'b1111101; 4'h7: oseg1 = 7'b0000111; 4'h8: oseg1 = 7'b1111111; 4'h9: oseg1 = 7'b1100111; 4'ha: oseg1 = 7'b1110111;4'hb: oseg1 = 7'b1111100;4'hc: oseg1 = 7'b0111001;4'hd:

17、oseg1 = 7'b1011110;4'he: oseg1 = 7'b1111001;4'hf: oseg1 = 7'b1110001;4'h0: oseg1 = 7'b0111111;endcase case( COUNT7:4 )4'h1: oseg2 = 7'b0000110;4'h2: oseg2 = 7'b1011011; 4'h3: oseg2 = 7'b1001111; 4'h4: oseg2 = 7'b1100110; 4'h5: oseg2 = 7

18、'b1101101; 4'h6: oseg2 = 7'b1111101; 4'h7: oseg2 = 7'b0000111; 4'h8: oseg2 = 7'b1111111; 4'h9: oseg2 = 7'b1100111; 4'ha: oseg2 = 7'b1110111;4'hb: oseg2 = 7'b1111100;4'hc: oseg2 = 7'b0111001;4'hd: oseg2 = 7'b1011110;4'he: oseg2 =

19、 7'b1111001;4'hf: oseg2 = 7'b1110001;4'h0: oseg2 = 7'b0111111;endcase endendmodule-扫描选择输出模块module scan4(rd,clk,seg1,seg2,seg3,seg4,c1,c2,c3,c4,seg); output6 : 0seg; output c1,c2,c3,c4; input clk,rd; input6 : 0seg1,seg2,seg3,seg4;reg6 : 0seg;reg c1,c2,c3,c4; reg1: 0sel;always(pose

20、dge clk)beginif (rd=1) sel<=0;else if(sel=3) sel<=0;elsesel<=sel+1;end always(sel)begincase (sel1: 0) 2'b00:beginseg<=seg1;c1=1;c2=0;c3=0;c4=0;end2'b01:beginseg<=seg2;c1=0;c2=1;c3=0;c4=0;end2'b10:beginseg<=seg3;c1=0;c2=0;c3=1;c4=0;end2'b11:beginseg<=seg4;c1=0;c2=

21、0;c3=0;c4=1;endendcaseendendmodule-整个洗衣机控制模块module washer1(CLK,CLK_1024,SET,RD,EN,LAMP,seg,c1,c2,c3,c4,ALARM); output6 : 0seg; output c1,c2,c3,c4; output3 : 0LAMP; output ALARM; input CLK,CLK_1024,EN,RD; input3 : 0SET; reg7 : 0num; reg temp,C,ALARM; reg2 : 0count; reg7 : 0s1,s2,s3,s4; reg3 : 0LAMP,t

22、im;reg6:0seg;reg c1,c2,c3,c4;reg6 : 0seg1,seg2,seg3,seg4;reg7:0t;wire T,A; assign T=(count=0&&num=2&&LAMP=2)|!EN|RD); /控制器产生的控制信号Tassign A=(!tim&&EN); /报警信号always /状态转换置数 begin s1 <=8'h 60; s2 <=8'h 05; s3 <=8'h 60; s4 <=8'h 05; endalways (posedge CLK) /控制器模块beginif(!RD)beginC<=0; if(EN&&!C) begin if(!temp&&tim) begin temp<=1; case(count) 0: begin num<=s1;LAMP<=4;count<=1;end 1: begin num<=s2;LAMP<=2;count<=2;end 2: begin num<=s3;LAMP<=1;count<=3;end 3: begin num

温馨提示

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

评论

0/150

提交评论