软件:Quartus
语言:Verilog
代码功能:
| 1 | 能显示当前模式:1—洗涤定时,2—洗涤工作,3—甩干定时,4—甩干工作;显示洗涤剩余时间、甩干剩余时间,单位为分钟; |
| 2 | 功能选择键,可在模式1~4之间轮流切换;在定时模式下,由上下键对定时进行±调整;启动/暂停键;启动暂停工作; |
| 3 | 在洗涤工作模式下,先按洗涤运转流程工作;定时启动→正转20秒→暂停10秒→反转20秒→暂停10秒→定时未到回到“正转20秒→暂停10秒→……”,定时时间到则自动进入甩干流程,直到甩干定时时间到之后停止;在甩干模式下,只进行甩干流程;工作过程中能进行对应的倒计时显示; |
| 4 | 工作过程由“启动”信号开始,直到定时结束;结束时通过指示灯闪烁10s进行提醒; |
| 5 | 对工作流程中的“正转”、“反转”、“暂停”、“甩干”等状态通过多个指示灯以流水灯形式加以体现。
设计文档:见附件
1、工程文件
2、程序文件
3、程序编译
4、RTL图
5、仿真图
顶层仿真图
按键检测模块
洗衣机控制模块
流水灯控制模块
部分代码展示:
//洗衣机 module wash_machine ( input wire clk, // 100Hz时钟 input wire rst, // 复位信号(高电平复位) input wire mode_select_key, // 模式选择键 input wire up_key, // 增加时间 input wire down_key, // 减少时间 input wire start_pause_key, // 启动/暂停键 output [1:0] mode, // 当前模式:00-洗涤定时,01-洗涤工作,10-甩干定时,11-甩干工作 output [5:0] wash_min, // 洗涤剩余分钟 output [5:0] dry_min, // 甩干剩余分钟 output [7:0] water_led, // 流水灯 led output finish_flash // 结束闪烁提示(1Hz闪烁) ); wire [3:0] state_leds; // 状态指示:正转(bit3)、反转(bit2)、暂停(bit1)、甩干(bit0) wire mode_select; // 模式选择键 wire up; // 增加时间 wire down; // 减少时间 wire start_pause; // 启动/暂停键 //按键检测 key_rise i0_key_rise ( . clk(clk), // 100Hz时钟 . key_in(mode_select_key), // 按键输入 . key_out(mode_select) //按键脉冲输出 ); //按键检测 key_rise i1_key_rise ( . clk(clk), // 100Hz时钟 . key_in(up_key), // 按键输入 . key_out(up) //按键脉冲输出 ); //按键检测 key_rise i2_key_rise ( . clk(clk), // 100Hz时钟 . key_in(down_key), // 按键输入 . key_out(down) //按键脉冲输出 );
代码文件(付费下载):http://hdlcode.com/index.php?m=home&c=View&a=index&aid=1509&sessionid=-800671776
【来源:www.hdlcode.com】
阅读全文