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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于VHDL语言的简易洗衣机控制器Word格式文档下载.docx

1、一、设计任务与要求设计一个洗衣机洗涤程序控制器,控制洗衣机的电动机按下图所示的规律运转:时间到用两位数码管预置洗涤时间(分钟数,洗涤过程在送入预置时间后开始运转,洗涤中按倒计时方式对洗涤过程作计时显示,用LED 表示电动机的正、反转,如果定时时间到,则停机并发出音响信号。二、总体框图RUN REV PAUSEtime_over clk K5 startK6 loadK1 K2 K3 K4各个部分的具体功能描述如下:(一预设时间和编码电路(settime :接受用户通过按钮预置的时间信息,编码译码驱动模块(moveclk out_1 out_2start 时序电路模块(analyseclk ti

2、me_overstart 十进制减法计数器模块(counter洗涤预置时间编码寄存电路模块(settime报警信号时间显示模块(showtime 定时启动 停止正转 暂停 反转 暂停成八位之后转给减法计数器。(二减法计数器电路(counter:接收编码之后的预置时间信息,向电机运转控制电路传递运行信号,并将预置时间信息和剩余时间信息发给数码管显示电路进行实时显示。(三数码管显示电路(showtime:接收减法计数器电路传来的时间信息,进行实时译码显示。(四电机运转时序控制电路(analyse:接收运行起止信号,安排电机运行状态并编码输出。(五译码器(move:接收电机运行状态信号,译码后实时控

3、制电机的正传、反转和暂停。三、选择器件1、pc机一台。2、CPLD/FPGA适配器板:标准配置EPF10K10LC84-4接口板,下载接口是数字芯片的下载接口(DIGITAL JTAG,主要用于CPLD/FPGA芯片的数据下载。3、实验箱:装有七段数码管及蜂鸣器等,七段数码管字形及真值表如下七段数码管字形如下:七段数码管真值表如下:四、功能模块4.1时间预置编码寄存模块(settime1、时间预置编码寄存模块settime如图1所示,time_input为通过开发板上拨码开关K1、K2、K3、K4输入的信号,load为输入确认信号。本模块将输入的四位时间信号编码成八位二进制数输出到减法计数器电

4、路。图1 时间预置编码寄存模块settime2、仿真图图2 时间预置编码寄存模块仿真图用K1、K2、K3、K4给time_input输入一个二进制数0111,让load有效,输出time_set为00000111。3、时间预置编码寄存模块源代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity settime isport(load:in std_logic;time_input:in std_logic_vector(3 downto 0;time_set:out std_logic_

5、vector(7 downto 0;end settime;architecture settime of settime issignal p1:std_logic_vector(7 downto 0;beginprocess(loadif(loadevent and load=1thencase time_input iswhen 0000=p1end case;end if;end process;time_set=p1;4.2减法计数器模块(counter1、减法计数模块counter如图3所示,本模块中clk为系统时序脉冲信号, start为系统开始运行的信号,time_set接收编

6、码之后的预置时间信息,向电机运转控制电路传递运行信号,并将预置时间信息和剩余时间信息发给数码管显示电路进行实时显示。time_remain为输出到数码管显示电路的时间信号, time_over为系统运行结束信号,可以用来控制蜂鸣器的通断。图3 减法计数模块图4 减法计数模块仿真图3、减法计数模块源程序entity counter isclk,start:in std_logic_vector(7 downto 0;time_remain:buffer std_logic_vector(7 downto 0; time_over:buffer std_logicend counter;archi

7、tecture counter of counter isprocess(clkvariable time_second:integer range 0 to 59 :=59;if(clkevent and clk=if(start=0if(time_remain(7 downto 0=0time_remain=time_set;elsetime_remain(7 downto 4=time_remain(3 downto 0; time_remain(3 downto 0=time_set(3 downto 0; end if;time_second:time_over=if(time_ov

8、er=if(time_second=0 and time_remain(7 downto 0=0 thenif(time_second=0if(time_remain(3 downto 0=0=time_remain(7 downto 4-1;=time_remain(7 downto 4;=time_remain(3 downto 0-1; time_second:=time_second-1;4.3数码管显示模块(showtime1、数码管显示模块showtime如图5所示,本模块clk为系统时序脉冲信号,time_remain接收减法计数器电路传来的时间信息,进行实时译码显示, a,b,

9、c,d,e,f,g分别对应数码管的七段,minute和second分别位选两个数码管,显示十位和个位。图5 数码管显示模块图6 数码管显示模块仿真图3、数码管显示模块源程序entity showtime is clk:minute,second:out std_logic;a,b,c,d,e,f,g:out std_logicend showtime;architecture showtime of showtime issignal temp:std_logic_vector(6 downto 0;signal bcd:std_logic_vector(3 downto 0;signal c

10、hoose:std_logic;choose=not choose;if(choose=minutesecondbcd= time_remain(7 downto 4; else= time_remain(3 downto 0;process(bcdcase bcd istemp1111110011000011011011111001011001110110111011111111000011111111111011a=temp(6;b=temp(5;c=temp(4;d=temp(3;e=temp(2;f=temp(1; g=temp(0;4.4时序电路模块(analyse1、时序电路模块a

11、nalyse如图7所示,本模块由start控制使能控制,通过时钟的输入进行计算当前系统所处的状态,并进行编码输出电机的运转状态, out_1为高位时表示电机正转,out_2为高位时表示电机反转。由于在显示以及输入的时候只有分钟,故在模块内部设计了一个秒的计时变量。图7 时序电路模块2 、仿真图3、时序电路模块analyse源程序entity analyse isclk,start,time_over:out_1,out_2:end analyse;architecture analyse of analyse isvariable state:variable wash_time:intege

12、r:=0;variable wait_time:wash_time:wait_time:state:out_1out_2if(wash_time=20if(wait_time=10=not state;=wait_time+1;=wash_time+1;if (wash_time=20if(state=4.5译码器模块(move1、译码器模块move如图9所示,out_1和out_2接收时序电路模块的信号对信号进行译码,安排电机运行状态即正转(RUN、反转(REV、暂停(PAUSE,并进行输出。此模块较为简单,设计基本没什么难度。图9 译码器模块图10 译码器模块仿真图3、译码器模块move源

13、程序entity move isREV,RUN,PAUSE:end move;architecture move of move isstd_logic_vector(1 downto 0;choose(1=out_1;choose(0=out_2;process(choosecase choose is00REVRUNPAUSE暂停-反转-暂停”的循环过程直至剩余时间变为零, 剩余时间为零时,time_over 指示报警信号。数码管在系统的整个运行过程中时时显示剩余 运转时间。 本设计在电路中加入了扫描信号,输入到减法模块,时序电路模块,实时显示模块。由 于扫描信号非常高,在我们看来,输出在

14、数码管上的数字都是连续的两位数字,由预置时间 开始以一分钟减一的速度递减。当数码管显示为零时,洗衣停止。 5.2 顶层文件仿真 13 由上图可以看出:当预置号时间,启动 start,数码管显示预置时间,电 机开始以正转=暂停=反转=暂停为周期进行循环,一个周期正好费时一分钟, 一个周期结束,数码管显示减一,依次循环,直至数码管显示时间为零,洗衣结 束。 5.3 管脚分配图 5.4 硬件实验效果图 14 六、课程设计心得体会 二周的课程设计终于做完了,在这二周的课设中我感觉我学到了蛮多东西。 首先, 我学会了如何对一个大的课题进行分析将大的整体划分为许多小 的部分,直到各个部分容易设计出来。关于

15、这个洗衣机控制器,就是用模块化层 次化的设计方法进行系统层的设计,这样分解下来,设计会更容易点,思路也比 较简单。 洗衣机控制器主要就只有三个状态, 要实现几种状态的多次循环的改变, 其他的还有计时和数码显示的功能, 通过每个模块的设计最后组装即可完成系统 级的设计。在设计的时候,如果特别要注意各个模块之间接口的设计,要是接口 不对,模块之间就没法实现组装。 其次, 这次课程设计让我感受到了我对所学习的内容是多么的不熟练,在编 程的时候还要老是去翻书。 我记忆在深刻的是在编写程序时,看了一遍又一遍书 但在编写的过程中还是出错了, 最后只好对着书编写。但我觉的出现问题并不是 很要紧, 这些问题能

16、提醒我那些地方没有学好,只要我重视这些地方将其巩固我 想我将能学到许多的知识。通过这次设计,对于 VHDL 的设计方法大致有了一些 技巧性的了解,位以后的硬件设计打下了基础,对 FPGA 的编程、定时器和计数 器的设计都熟悉起来,加深了对时序组合电路的印象。 最后,我感觉我对 Quartus I I 软件的使用熟练了许多。我虽然以前在试验 的时候使用过 Quartus I I 这个软件,但用的时间毕竟不长,对其不太熟练,经 过这次做课设我对这个软件运用熟练很多,这对以后的学习一定有很大的帮助。 我想在面对一个问题时不能存在侥幸心理,只要我们认真对待它,我们就能学到 东西。通过在网上进行各种资料的查询,也发现了其实 FPGA 的设计具有较好的 前景,其功能的强大和设计方法的简单可靠。具有较强的适应能力和可移植性。 15

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

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