全自动洗衣机的设计-Verilog程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

2016 年 5 月 24

学 院:

大数据与信息工程学院 专 业:

电子与通信工程 学 号:

18 学生姓名:

杨 鹏 举 指导教师: 李 良 荣

目录

一、实验题目·············错误!未定义书签。

二、实验目的·············错误!未定义书签。

三、实验要求·············错误!未定义书签。

四、洗衣机工作原理与功能说明·····错误!未定义书签。

状态图如下··············错误!未定义书签。

程序RTL视图如下···········错误!未定义书签。

五、详细代码如下············错误!未定义书签。

模块一实现洗衣机状态转换和各状态输出控制错误!未定义书签。

模块二实现复位信号的异步复位同步释放·错误!未定义书签。

模块三实现当前状态的数码管显示····错误!未定义书签。

模块四实现按键检测··········错误!未定义书签。

模块五实现顶层的调用·········错误!未定义书签。

一、实验题目

自动洗衣机设计

二、实验目的

1、熟练掌握Quartus II 工程文件的建立过程。

2、掌握Verilog的基本语法、语句、模块的使用。

3、了解模块的建立与使用。

4、了解FPGA的开发基本流程。

三、实验要求

1、初始状态,准备启动。

2、开始进水;为防止进水过程出现故障,故不用定时器

控制,而是手动给一个信号模拟水位检测传感器,表示进水完成。

3、开始洗涤:正反洗涤4次开始排水。

4、排水后立即脱水。

5、洗涤之后漂洗2次,每次漂洗过后都排水甩干。

6、整个过程全部用数码管来显示状态机状态,并用两个

led灯表示电机的正转与反转状态。

四、洗衣机工作原理与功能说明

自动洗衣机的工作原理:洗衣机有7个工作状态分别为空闲(idle)、加水(water)、洗衣(wash)、排水(drain)、甩干(dry)、漂洗(rinse)、结束音乐提示(music)。一次完

整的洗涤,进水3次、洗涤1次、漂洗两次、排水3次、甩干3次。一次完整的状态转换为:空闲(idle)、加水(water)、洗衣(wash)、排水(drain)、甩干(dry)、加水(water)、漂洗(rinse)、排水(drain)、甩干(dry)、加水(water)、漂洗(rinse)、排水(drain)、甩干(dry)、结束音乐提示(music)。

程序功能说明:程序有4个输入start启动信号、water_test 水满检测信号,水满了就置一、drain_test排水检测,水排完了就置一、emergency紧急停止信号,任何情况下输入都进入idle状态,即停止工作。一开上电过后系统处于空闲状态,当输入信号start后进入加水状态,水满过后进入浸泡状态,浸泡完毕进入洗衣状态,洗衣完毕进入排水状态,第一次排水完毕进入甩干状态,第一次甩干完成进入加水状态,第二次加水完成后进入第一次漂洗状态,第一次漂洗完毕进入第二次排水状态,排水完毕进入第二次甩干状态,第二次甩干完毕进入第三次加水状态,再进入第二次漂洗状态,第三次排水状态,第三次甩干状态,进入结束音乐提醒状态,回到空闲状态。洗衣服和漂洗为洗衣电机的低速档位,在排水过程中将电机档位变为高档位。当甩干完毕变到其他状态时,就把电机档位变到低档位。洗涤和漂洗时,电机正转和反转之间有3秒钟的延时(即让电机自动减速,不至于电机突然反转时负荷太大烧毁电机)。

状态图如下

程序RTL视图如下

4个输入由外部按键输入,经过模块key按键消抖确定按键是否被按下。按键输入到模块washer作为一些状态转换的条件。washer的状态输出到数码管显示模块segmain显示系统当前处于什么状态。

系统有4个输出clockwise正转信号0表示转,1表示不转、anticlockwise反转信号0表示转,1表示不转、finish结束信号0表示结束,1表示未结束、cstate表示当前状态。经调试实现了想要的功能。

五、详细代码如下

模块一实现洗衣机状态转换和各状态输出控制lk(clk),

.rst_n(sys_rst_n),

.start(start1),

.water_test(water_test1), rain_test(drain_test1), mergency(emergency1),

lockwise(clockwise), nticlockwise(anticlockwise), inish(finish), state(cstate)

);

synchronism_design syschronism(

.clk(clk),

.rst_n(rst_n),

.sys_rst_n(sys_rst_n)

);

segmain segmain(

.clk(clk),

.rst_n(sys_rst_n),

.datain(cstate),

.seg_data(seg_data),

.seg_com(seg_com)

);

key key

(

.clk(clk),

.rst_n(sys_rst_n),

.sw({emergency,start,water_test,drain_test}), .start(start1),

.water_test(water_test1),

.drain_test(drain_test1),

.emergency(emergency1)

);

endmodule

相关文档
最新文档