名称:洗衣机控制器设计Verilog代码Quartus 远程云端平台
软件:Quartus
语言:Verilog
代码功能:
洗衣机控制器设计要求
1.设计一个电子定时器,控制洗衣机作如下运转定时启动→正转20秒→暂停10秒→反转20秒→暂停10秒,每个循环1分钟;
2.按正计时方式用两个数码管显示正转、暂停、反转时间,同时用三只LED灯表示“正转”反转”、“暂停”三个状态;
3.用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,时间到停机,停机指示灯亮;
4.洗涤过程由“开始”开关开始,设置“暂停”开关。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在远程云端平台验证,远程云端平台如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
部分代码展示:
module washing_machine(clk_in, dataout,en,reset_n, start_key, stop_key,led, end_beep); input clk_in;//1000Hz input reset_n;//复位按下低电平 input start_key;//启动按下低电平 input stop_key;//暂停按下低电平 output [2:0] led;//正反转灯 output end_beep;//结束报警 output[7:0] dataout;//数码管段选 output[3:0] en;//COM使能输出 reg [1:0] state; reg [2:0] led; reg [7:0] washing_time; reg end_beep_buf; reg [7:0] second_cnt; reg min_en; reg second_en_1s; reg [31:0] second_div_cnt; reg [31:0] beep_cnt=32'd0; always @(posedge clk_in or negedge reset_n) if(!reset_n) state<=2'b00;//空闲状态 else case (state) 2'b00 ://空闲状态 if (start_key == 1'b0) state <= 2'b01; else state <= 2'b00; 2'b01 ://倒计时状态 if(stop_key==0) state <= 2'b11; else if (washing_time > 8'b00000000) state <= 2'b01; else state <= 2'b10; 2'b10 ://结束 state <= 2'b10; 2'b11 ://暂停 if (start_key == 1'b0) state <= 2'b01; else state <= 2'b11; default : state <= 2'b00; endcase always @(posedge clk_in) begin if (state == 2'b10)//结束计数 beep_cnt <=beep_cnt+ 1'b1; end always @(posedge clk_in) begin if (state == 2'b10)//结束 end_beep_buf <= 1'b1; else end_beep_buf <= 1'b0; end assign end_beep = end_beep_buf; always @(posedge clk_in) if(state!=2'b01)//非倒计时状态清零 begin second_div_cnt <= 32'd0; second_en_1s <= 1'b0; end else//倒计时状态计时 begin if (second_div_cnt >= 32'd1000)//计数1000为1s,仿真将计数器改小为50 begin
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1297
阅读全文
509