77范文网 - 专业文章范例文档资料分享平台

洗衣机VHDL控制器实验报告(3)

来源:网络收集 时间:2019-02-15 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

time_cnt:IN INTEGER RANGE 0 TO 30;

app_time:IN INTEGER RANGE 0 TO 5; clr:IN STD_LOGIC; 清零

cat:OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 ); 输入给数码管选通控制端 seg:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); 输入给七位数码管显示数字 ); END seg7;

ARCHITECTURE bodyofseg7 OF seg7 IS

SIGNAL tem:INTEGER RANGE 0 TO 1; SIGNAL num:INTEGER RANGE 0 TO 9;

SIGNAL cat0:STD_LOGIC_VECTOR( 5 DOWNTO 0 );

BEGIN

PROCESS(cp) BEGIN

IF (cp'EVENT AND cp = '1') THEN IF start='1' THEN

CASE tem IS

WHEN 0 => cat0<=\ WHEN 1 => cat0<=\WHEN OTHERS => cat0<=\

END CASE; cat<=cat0;

ELSE

IF en_app='1' THEN

CASE tem IS -- 数码管低两位选通

WHEN 0 => cat0<=\两位

数的个位给低位数码管

WHEN 1 => cat0<=\ 两位数的个位给高位

数码管

WHEN OTHERS => cat0<=\ END CASE; cat<=cat0; END IF; END IF; END IF; END PROCESS;

PROCESS(num,clr)

第11页,共16页

BEGIN

IF clr='1' THEN seg<=\ELSE

CASE num IS --译码部分 WHEN 0 => seg<=\ WHEN 1 => seg<=\ WHEN 2 => seg<=\ WHEN 3 => seg<=\ WHEN 4 => seg<=\ WHEN 5 => seg<=\ WHEN 6 => seg<=\ WHEN 7 => seg<=\ WHEN 8 => seg<=\ WHEN 9 => seg<=\ WHEN others => seg<=\ END CASE; END IF;

END PROCESS; END bodyofseg7;

(5)报警模块

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY beeper IS

PORT( clk1s:IN STD_LOGIC;

startbeeper:IN STD_LOGIC; --控制器送来的报警信号

st_beeper:OUT STD_LOGIC; --送给板子上蜂鸣器的报警信号

cl_beeper:OUT STD_LOGIC); --报警够时间后,反馈给控制器信号,使之收回报警信号 END beeper;

ARCHITECTURE bodyofbeeper OF beeper IS SIGNAL tem:INTEGER RANGE 0 TO 5;

BEGIN

P1:PROCESS(clk1s,startbeeper) BEGIN

IF(clk1s'EVENT AND clk1s='1') THEN

IF startbeeper='1' THEN ; 控制器送来报警信号

CASE tem IS

WHEN 5=>st_beeper<='0';cl_beeper<='1'; --够时间后,开始报警,同时反馈给控制器信

第12页,共16页

号说明完成报警

WHEN OTHERS=>st_beeper<='1';cl_beeper<='0';tem<=tem+1; END CASE; ELSE

cl_beeper<='0';st_beeper<='0'; tem<=0; END IF; END IF;

END PROCESS P1; END bodyofbeeper;

(6)报警音设置模块

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY beepbeep IS

PORT( clk1000:IN STD_LOGIC; st_beeper:IN STD_LOGIC; out_beeper:OUT STD_LOGIC); END beepbeep;

ARCHITECTURE bodyofbeepbeep OF beepbeep IS SIGNAL tem:INTEGER RANGE 0 TO 5; SIGNAL tem_beeper:STD_LOGIC;

BEGIN

P1:PROCESS(clk1000,st_beeper)

BEGIN

IF(clk1000'EVENT AND clk1000='1') THEN IF st_beeper='1' THEN

tem_beeper<=NOT tem_beeper; out_beeper<=tem_beeper; END IF; END IF;

END PROCESS P1;

END bodyofbeepbeep;

(7)预约模块

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY yuyue is port(

第13页,共16页

clk1s:IN STD_LOGIC;

en_app:IN STD_LOGIC; start:IN STD_LOGIC;

start_out:OUT STD_LOGIC;

app_time:OUT INTEGER RANGE 0 TO 5 );

END yuyue;

ARCHITECTURE bodyofyuyue OF yuyue IS SIGNAL tem:INTEGER RANGE 0 TO 5; SIGNAL start_app:STD_LOGIC; BEGIN

p1:PROCESS(clk1s) BEGIN

IF clk1s'EVENT AND clk1s='1' THEN CASE en_app IS

WHEN '1'=> IF tem<5 THEN

app_time<=5-tem;tem<=tem+1;start_app<='0'; ELSE start_app<='1'; END IF;

WHEN '0'=> start_app<='1'; WHEN OTHERS=> NULL; END CASE; END IF;

start_out<=start_app AND start; END PROCESS; END bodyofyuyue;

第14页,共16页

五. 功能说明

洗衣机控制器的实现功能:

1.使用了一个按键实现洗衣程序的手动选择,在洗涤、漂洗、脱水、漂洗+脱水、洗涤+漂洗+脱水五个模式中进行自由选择。

2.用灯显示洗衣机的工作状态,在设计中共使用了6个LED 灯,其中三个灯显示洗衣机的工作模式(共五种模式),另外三个灯显示工作模式中正在进行的工作模式。

3.数码显示管倒计显示每个状态的工作时间,并且也可显示预约的时间。 4.全部过程结束后,会发出一个结束信号,会发出一个5秒的持续报警信号。 5.一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留的状态,并且设置一个灯,当洗衣机暂停时,灯亮,继续运行时,灯灭。 6.三个过程的时间使用者可自行设定,系统默认是设定好的时间,使用者如想改变时间,可拉低系统默认按钮,再分别拉高button1、button2、button3,每拉高一次,相应时间+1。

7.可以预约洗衣时间,拉高预约时间按钮,设定预约时间,倒计时结束后自动开始。

六. 元器件清单及资源利用情况

元器件清单: 1. 计算机

2. 综合实验板

资源使用情况:

第15页,共16页

七. 故障及问题分析

由于很长时间没有接触数电和VHDL语言的知识,刚接触这个课题最大的困难是要克服这个障碍,要不断熟悉以前学习过的知识,在其中遇到了很多故障,现列写如下:

1. VHDL语句编写问题:在编写VHDL语言的功能选择模块时,最开始的时候我写了两个process进程,试图实现整合,编译通过了,但是在仿真的时候功能二不出波形,改了几次还是不行,后经同学指点,只需要写一个process,在里面加入else语句即可,改了程序之后,编译通过,但是在看仿真波形的时候,我发现在跳变那一刻,默认模式是从第二个灯开始亮,而不是第一个灯,反复修改了语句发现是由于重复使用状态的原因,重新设了几个状态之后问题解决。

2.模块连接问题:在各个模块进行组合的时候,最开始我选用了component语句实现各个模块之间的连接,可是由于模块比较多,在进行语句连接的时候总会报错,而且在改错的时候看着不是很清晰,所以我改用了生成各个模块并用线连起来,这样简单明了,实现简单,容易改错。

3. 状态触发问题: 设计控制器的状态程序时我使用当前的工作状态做敏感信号,但是这样只能处理某一状态到时后送来的触发信号,无法处理最初的模式选择传下来得的信号。后经过咨询发现必须要加入了时钟的触发。

4. 按钮的防抖问题 :把程序下载到实验板上之后,试验洗衣机控制器的功能,但是在我发现按钮功能不够稳定,很难获得正确的上升触发沿,和同学咨询之后,是需要加入防抖电路,这样按钮的功能实现就会相对稳定。

5.计时模块问题:开始时,在赋值及输出控制信号部分无法正确配合,各模块编译成功后,但是整体仿真时就会出问题,分析原因是工作的状态由计时模块输出的使能信号确定,所以需要再加入这样一个信号。

八. 总结和结论

通过这次试验,我了解了在编程过程中,思路要清楚,明白要实现的功能,然后根据实现的功能一步一步的编写。编译成功后,不要急于下载,要先仿真,根据仿真波形判断是否达到要求,一般仿真成功后,下载后就基本没有问题。

在电路设计的过程中,对于电路主体功能有了一个全局的把握,合理分配各模块的功能,使各模块相互独立而又紧密连接,实现各自的功能,最终完成主体电路的设计。

通过这次的VHDL设计,我受益良多。虽然上学期做过了数电的基本实验,但是时间过了很久,但是只记住了一些基本的VHDL语句,而且那些实验只是一些最基础的设计,此次实验是一整个系统的,很多设计的知识我们都不大清楚。只能通过不断地找资料来完成整个实验。通过这次设计,让我进一步掌握了VHDL的设计方法与一些技巧,让我对分频器的设计更加熟悉。而最痛苦的过程就是对VHDL语言的修改,通过不断地调试、下载,一遍一遍的考验着我的耐心,最终成功。我相信通过这次的VHDL设计,对我的今后发展一定大有帮助。

在这次实验过程中遇到了一些困难,老师都给与了耐心指导在此向老师表示最真诚的感谢!

第16页,共16页

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库洗衣机VHDL控制器实验报告(3)在线全文阅读。

洗衣机VHDL控制器实验报告(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/471657.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: