洗衣机控制器设计Verilog代码vivado Nexys4开发板

本文详细介绍了如何使用Verilog编程在Vivado环境下设计一个洗衣机控制器,包括定时器功能、显示时间和状态的LED灯控制,以及在Nexys4开发板上的验证过程。测试bench提供了部分代码示例和整体及模块仿真图。
摘要由CSDN通过智能技术生成

名称:洗衣机控制器设计Verilog代码vivado  Nexys4开发板(文末获取)

软件:vivado

语言:Verilog

代码功能:

洗衣机控制器设计要求

·设计一个电子定时器,控制洗衣机作如下运转定时启动→正转20秒→暂停10秒→反转20秒→暂停10秒,每个循环1分钟

按正计时方式用两个数码管显示正转、暂停丶反

转时间,同时用三只LED灯表示“正转

“反转”、“暂停”三个状态

用两个数码管显示洗涤的预置时间(分钟数)按倒计时方式对洗涤过程作计时显示,时间到停机,停机指示灯亮

洗涤过程由“开始”开关开始,设置“暂停”开关。

本代码已在 Nexys4开发板验证, Nexys4开发板如下,其他开发板可以修改管脚适配:

Nexys4开发板开发板.png

1. 工程文件

2. 程序文件

3. 管脚约束

4. 程序编译

5. RTL图

6. Testbench

7. 仿真图

7.1 整体仿真图

7.2 div_to_1K模块

7.3 div_to_1模块

7.4 control模块

7.5 display模块

部分代码展示:

//testebnch
module wash_machine_tb();
reg clk;//100MHz
reg key_add;//加按键,设置时间
reg key_sub;//减按键,设置时间
reg key_start;//启动按键
reg key_stop;//暂停按键,按下高电平
reg key_reset;//复位按键
wire D1;//正转
wire D2;//反转
wire D3;//暂停
wire end_led;//结束指示灯
wire [7:0] bit_select;//数码管位选
wire [7:0] seg_select;//数码管段选
wash_machine i_wash_machine(
. clk       (clk       ),//100MHz
. key_add   (key_add   ),//加按键,设置时间
. key_sub   (key_sub   ),//减按键,设置时间
. key_start (key_start ),//启动按键
. key_stop  (key_stop  ),//暂停按键,按下高电平
. key_reset (key_reset ),//复位按键
. D1        (D1        ),//正转
. D2        (D2        ),//反转
. D3        (D3        ),//暂停
. end_led   (end_led   ),//结束指示灯
. bit_select(bit_select),//数码管位选
. seg_select(seg_select) //数码管段选
);
initial begin
key_add  =0;//加按键,设置时间
key_sub  =0;//减按键,设置时间
key_start=0;//启动按键
key_stop =0;//暂停按键,按下高电平
key_reset=1;//复位按键
#10000;
key_reset=0;
#10000;
key_start=1;//启动按键
#10000;
key_start=0;
#10000;
#300000;
key_stop=1;//暂停按键
#10000;
key_stop=0;
#10000;
#200000;
key_start=1;//启动按键
#10000;
key_start=0;
#10000;
end
always begin
clk=0;
#5;
clk=1;
#5;
end
endmodule
源代码

 扫描文章末尾的公众号二维码

  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Verilog电子课程设计-洗衣机控制器fpga设计实现文档+quartus9.1工程源码文件,可以做为你的学习设计参考。 一、课程设计名称 智能洗衣机控制器设计 二、设计内容与要求 ① 设计一个智能洗衣机控制器,能够实现洗衣,漂洗和脱水的功能。 ②要求能够使用按键模拟对洗衣机控制,能够设置工作模式,为了便于观察,将洗衣机设定的工作模式(1~5)和整个过程所剩的工作时间用数码管显示出来(时间分辨率为1分钟),能够将洗衣机当前所处的状态(注水,洗衣,排水,甩干)用发光管或者数码管显示出来。 【模式1】 :洗衣模式--强力洗( 洗衣30分钟) 【模式2】 :洗衣模式--普通洗(洗衣20分钟) 【模式3】 :洗衣模式--轻柔洗(洗衣10分钟) 【模式4】 :漂洗模式 【模式5】 :甩干模式 注:在以上5个模式中,每次注水1分钟,漂洗5分钟,排水1分钟,甩干1分钟,模式1~3的洗衣时间如上所示,具体的洗衣步骤如下: 【模式1~3】:注水->洗衣->排水->甩干->注水->漂洗->排水->甩干 ->注水->漂洗->排水->甩干。 【模式4】:注水->漂洗->排水->甩干->注水->漂洗->排水->甩干。 【模式5】:甩干。 【要求】:实现逻辑控制过程,可以选择性的加入注水口无水报警等人性化的状态提示,操作完毕使用蜂鸣器鸣叫两秒提示。 ③ 画出洗衣机控制器的状态机,写出状态编码方案。 ④ 用Verilog语言对设计进行描述,设计一个测试方案,并能够下载到实验板上调试成功。 3.输入输出设计(按键,数码管,LCD,键盘,蜂鸣器) (1)输出显示部分: A.LCD显示屏(拓展):用于显示洗衣机出于何种工作模式,采用的型号为1602显示屏,4位数据输入,接5V供电电源。 模块: lcd lcd(R, clk, LCD_E, LCD_RW, LCD_RS, SF_D); lcd_pre lcd_pre(clk, state_dis, R); 显示内容: 7'b1100000: R <= " Strong "; 强力洗 7'b1000000: R <= " Middle "; 普通洗 7'b0100000: R <= " Soft "; 轻柔洗 7'b0010000: R <= " Add "; 注水 7'b0001000: R <= " Potch "; 漂洗 7'b0000100: R <= " Drain "; 排水 7'b0000010: R <= " Dry "; 甩干 7'b0000001: R <= " Finish "; 完成 default R <= " Welcome "; 初始状态 B.数码管:用于显示剩余时间,使用开发板自带的4个数码管。将四位时间分别写入四个数码管中。 (2)输入控制部分: 拨码开关(8个键):5个键控制5种模式,复位键(reset1)个,时间速度控制键1个,无水警报键1个; 模块: Module act(clk1,clk2,clk_sel,clr,sel,warn,state_dis,dis_ts1,dis_ts2,dis_tm1,dis_tm2,LEDW); 4.核心运算模块 (1)时序控制: 通过设置tm1,tm2,ts1,ts2四个变量,对每个状态进行计时,达到时序控制的作用。 B.状态转换:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值