名称:洗衣机控制器Basys3开发板verilog倒计时
软件:VIVADO
语言:Verilog
代码功能:
vivado 洗衣机控制器的设计
要求
1)具有启动、定时、暂停的功能,用按键控制
2)启动后洗衣机按正转20秒暂停10秒反转20秒暂停10秒的规律循环
3)定时可以设置洗衣机工作的时间;(有个按键进入定时模式,再有一个按键负责按键负责减,可以定时可以不定时,如果定时需要在开始按键前完成,定时最多三分钟,如果不定时
就按照默认三分钟一旦按下开始键就要循环运行上述流程
4)用两个数码管显示洗涤的预置时间(分钟数,最大3分钟),按倒计时方式显示,直到时间到停机;洗涤过程由“开始”信号开始;
5)三只LED灯表示“正转”、“反转”、“暂 停”三个状态。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在Basys3开发板验证,开发板如下,其他开发板可以修改管脚适配:
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模块
部分代码展示:
module wash_machine( input clk,//100MHz input key_add,//加按键,设置时间--BTL input key_sub,//减按键,设置时间--BTR input key_start,//启动按键--BTU input key_stop,//暂停按键,按下高电平--BTD input key_reset,//复位按键--BTC output D1,//正转 output D2,//反转 output D3,//暂停 output end_led,//结束指示灯 output stop_led, output [3:0] bit_select,//数码管位选 output [7:0] seg_select//数码管段选 ); wire clk_1Hz; wire clk_1K; wire [7:0] time_data;//剩余时间 wire [7:0] led_time;//正计时时间 //100M分频到1K div_to_1K i_div_to_1K( . clk(clk),//100MHz . key_reset(key_reset),//按键,按下高电平 . clk_1K(clk_1K)//1KHz信号 ); //1K分频到1Hz div_to_1 i_div_to_1( . clk_1K(clk_1K),//1KHz . key_reset(key_reset),//按键,按下高电平 . clk_1Hz(clk_1Hz)//1Hz信号 ); //控制模块 control i_control( . clk_1Hz(clk_1Hz),//1Hz . key_add(key_add),//加按键,按下高电平 . key_sub(key_sub),//减按键,按下高电平 . key_stop(key_stop),//暂停按键,按下高电平 . key_start(key_start),//启动按键,按下高电平 . key_reset(key_reset),//复位按键,按下高电平 . end_led(end_led), . stop_led(stop_led), . D1(D1),//正转 . D2(D2),//反转 . D3(D3),//暂停 . led_time(led_time), . time_data(time_data)//剩余时间 ); //显示模块 display i_display ( . clk(clk_1K), . led_time(led_time),//正计时时间 . time_data(time_data),//剩余时间 . bit_select(bit_select),//数码管位选 . seg_select(seg_select)//数码管段选 ); endmodule