ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:281.70KB ,
资源ID:22775134      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22775134.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字系统设计与硬件描述语言基于VHDL的洗衣机控制器设计Word格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字系统设计与硬件描述语言基于VHDL的洗衣机控制器设计Word格式.docx

1、alarmout为警报提醒的状态。switchstate为数码管显示的开关的状态(0/1),spstate为数码管显示的开始/暂停的状态(0/1), state为数码管显示的洗衣机工作状态(04),currentmodel为数码管显示的当前模式(02),timedecade为数码管显示的剩余时间的十位,timeunit为数码管显示的剩余时间的个位。下面介绍各模块功能与算法:1)开关与模式选择模块a接收开关信息,b接收模式选择信息。c输出总电路的开关信息(开启洗衣机并且设置完毕电路后,即可准备工作,等待“开始”信号)。e为开关信息,将输入到数码管中显示。time1与time2分别代表洗衣时间的十

2、位和个位,将输入到计数器与警报模块中。y为模式信息,将输入到码管中显示。2)开始/暂停模块a接收开关信息,b接收开始/暂停信息,clk接收系统时序脉冲信号。startorpause输出受开始/暂停信息调控的系统时序脉冲信号。y为开始/暂停信息,将输入到码管中显示。3)计数器与警报模块clk接收受开始/暂停信息调控的系统时序脉冲信号,a接收开关信息,time1和time2分别接收洗衣时间的十位和个位。alarm输出警报信息;outtime1和outtime2分别为剩余时间的十位和个位,将输入到数码管中显示,同时将输入到控制模块中。在脉冲信号的控制下,剩余时间逐渐减少,当剩余时间为0时,停止减小,

3、并开启警报。4)控制模块a接收开关信息,b接收开始/暂停信息,time1和time2分别接收剩余时间的十位和个位。water、wash、drain、dry分别输出注水、洗涤、排水、脱水的控制信息。act为模块内部使用的BUFFER量。控制模块根据剩余时间的多少决定工作状态。如:剩余时间为16-30分钟时洗涤,31-35分钟时注水。则剩余时间33分钟时,water为1,其他控制信息为0;剩余时间21分钟时,wash为1,其他控制信息为0。5)译码器与数码管显示模块b接收开关信息,a接收4位二进制数据。q在数码管上显示字形。二、 程序源代码及说明程序代码由主程序及5个模块代码组成1)主程序LIBR

4、ARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY xyj IS PORT(switch,modelselect,clkin,sorp: IN STD_LOGIC; -电源开关、模式选择、时钟、开始/暂停按键状态的输入 waterstate,washstate,drainstate,drystate,alarmout: OUT STD_LOGIC; -注水程序、洗涤程序、排水程序、脱水程序、警报状态的输出 switchstate,spstate,state,currentmodel,time

5、decade,timeunit: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -工作状态、工作模式、剩余时间的输出END ENTITY xyj;ARCHITECTURE behave OF xyj ISCOMPONENT model -调用开关与模式选择模块 PORT(a,b: c: e,time1,time2,y: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 ); END COMPONENT model;COMPONENT count -调用计数器与警报模块 PORT(clk,a: time1,time2: IN STD_LOGIC_VECTO

6、R(3 DOWNTO 0); alarm: outtime1,outtime2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT count; COMPONENT BCD7 -调用译码器与数码管显示模块 PORT(b: a: q : OUT STD_LOGIC_VECTOR(0 TO 6) ); END COMPONENT BCD7; COMPONENT startpause -调用开始/暂停模块 PORT(a,b,clk: startorpause: e: END COMPONENT startpause; COMPONENT control

7、-调用控制模块 water,wash,drain,dry: act: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT control; SIGNAL sig1,sig2,sigBCD7_1,sigBCD7_2,sigBCD7_3,sigBCD7_4,sigBCD7_5,sigBCD7_6:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL aout,bout:STD_LOGIC;BEGINU1: model PORT MAP(a=switch,b=modelselect,c=aout,y=sigBCD7_1,time1

8、=sig1,time2=sig2,e=sigBCD7_5);U2: startpause PORT MAP(a=aout,b=sorp,clk=clkin,startorpause=bout,e=sigBCD7_6);U3: control PORT MAP(a=sorp,time1=sigBCD7_2,time2=sigBCD7_3,water=waterstate,wash=washstate,drain=drainstate,dry=drystate,act=sigBCD7_4);U4: count PORT MAP(a=aout,clk=bout,time1=sig2,alarm=al

9、armout,outtime1=sigBCD7_2,outtime2=sigBCD7_3);U5: BCD7 PORT MAP(b=aout,a=sigBCD7_1,q=currentmodel);U6:sigBCD7_2,q=timedecade);U7:sigBCD7_3,q=timeunit);U8:sigBCD7_4,q=state);U9:sigBCD7_5,q=switchstate);U10:sigBCD7_6,q=spstate);END ARCHITECTURE behave;2)开关与模式选择模块ENTITY model IS -开关与模式选择模块 -定义开关和模式选择按键

10、的输入 -洗衣机工作开关的输出 -定义所需时间/min,time1为十位,time2为各位END ENTITY model;ARCHITECTURE behave OF model IS PROCESS(a,b) BEGIN IF(a=1)THEN -开关开启时执行 CASE b IS WHEN = y=0001;time10110time20000 -模式1:60分钟00010 -模式2:10分钟 END CASE; c=e -开关开启且模式选择完毕,开始工作 ELSE y c -开关关闭时不工作 END IF; END PROCESS;3)开始/暂停模块ENTITY startpause

11、IS -开始/暂停模块END ENTITY startpause;ARCHITECTURE behave OF startpause IS)THEN startorpause=clk; ELSIF(a= startorpause END IF;4)计数器与警报模块ENTITY count IS -计数器与警报模块END ENTITY count;ARCHITECTURE behave OF count ISSIGNAL intime11 : STD_LOGIC_VECTOR(3 DOWNTO 0):SIGNAL intime22 :SIGNAL intime3 : STD_LOGIC_VECT

12、OR(1 DOWNTO 0):01 -intime3与intime4联系,实现变量的合理赋值SIGNAL intime4 :00PROCESS(time1) -此段的作用为当模式更改时,令变量重新赋值 IF(time1/= intime310 ELSIF(time1/= intime311 ELSE intime3END IF; intime11=time1; intime22=time2;END PROCESS; PROCESS(clk,intime3,intime4) VARIABLE intime1,intime2 : STD_LOGIC_VECTOR(3 DOWNTO 0); IF(c

13、lkEVENT AND clk= IF(a= IF(intime3/=intime4)THEN -第一个PROCESS运行时,变量被重新赋值 intime4=intime3; intime1:=intime11; intime2:=intime22; IF(intime2/=)THEN =intime2- alarm ELSIF(intime1/=1001=intime1- ELSE alarm outtime1=intime1; outtime201010101 act -注水 ELSIF(time1&01000000 act -洗涤001101010011 -排水0011000000010

14、10100010000000000000100 -脱水 ELSE act ELSE act CASE act IS WHEN waterwashdraindry END PROCESS; END ARCHITECTURE behave;6)译码器与数码管显示模块LIBRARY IEEE;ENTITY BCD7 IS -译码器与数码管显示模块PORT(b: a: -数据输入 -7段输出END BCD7;ARCHITECTURE behav OF BCD7 IS PROCESS (a) BEGIN IF(b= CASE a(3 DOWNTO 0) IS - BCD 7段译码表 q0000000 E

15、ND CASE; ELSE qEND behav;三、 仿真结果及分析首先对每个模块进行仿真:1、 仿真结果表明,只有a为1时,输出变化。但a为1的一瞬间便已有了模式,这不符合洗衣机的操作流程,所以在之后的模块中写入了控制其输出变化的程序。2、 仿真考虑多种情况,如:a变换时、a为0且b变化时等,输出皆符合所需。1、 仿真结果表明,只有a为1时,输出变化,产生受b控制的脉冲信号。模块运行完全符合所需,输出了正确的剩余时间与alarm。1、对模块在开关、开始/暂停及剩余时间变化下控制的仿真。2、仿真结果表明,暂停时(b为0),洗衣进程停止,开始时,进程继续;3、仿真模拟了“暂停-切换模式-开始”

16、的进程,输出符合所需。1、对模块在开关及输入控制下的输出仿真。2、仿真模拟了中途开关关闭与开启状态下数码管输出变化。6) 主程序1、对洗衣机在开关、开始/暂停及模式选择控制下的工作进程进行仿真。3、 剩余时间的个位数(timeunit)和工作模式(state)过于密集,所以展开。3、仿真结果表明,洗衣机在各输入控制下,可以很好地改变自己的工作状态。四、 心得体会决定做洗衣机控制器后,我以宿舍楼内的洗衣机为模板编写了这套程序。为了便于纠错,我决定分别编写每个元器件,当各个元器件的程序都正确后,再将它们整合在一起。事实证明,每个元器件的编写途中都会出现各种各样的问题,这种方式可以最快速地发现错误并

17、改正。整个程序最大的问题出现在计数器与警报模块中。当时,无论我怎样调试,输出的剩余时间都是0。我在这个错误的纠正上花费了极大的精力,最后,我加入了几个输出来将程序内部变化表示出来,于是我发现了问题所在:信号的初值只能为一个定值而不能为一个输入。但另一个问题接踵而来:我需要在输入转换时更改剩余时间为模式时间,但当输入不变时,怎样才能在process不停循环而变量只能在process内定义的情况下不重新给剩余时间赋值?在咨询舍友后,我使用了intime3和intime4并增加了一个process来判断输入是否改变,问题得到了完美解决。当各个元器件编写成功后,我将它们整合在一起,仿真出了初步结果。但随后我发现了诸多问题,比如器件不受开关调控,并且洗衣机没有开始/暂停。于是,我编写了开始/暂停模块,并更改各个模块使它们能够得到正确的控制。本次洗衣机控制器的编写,使我对VHDL语言的理解进一步加深,并且在实践操作上的能力大大提高。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1