基于FPGA的数字洗衣机Verilog开发Modelsim仿真

链接:https://pan.baidu.com/s/1dUKtiykRin3chAq48nOMkg
提取码:ipmz

部分参考代码

(末尾附文件)

module XiYiJi(
	input clk,
	input reset_n,
	
	input add_set,
	input start_set,
	
	input stop_set,
	
	output led_1,
	output led_2,
	output led_3,
	
	output [5:0] sm_cs,
	output [7:0] sm_db,
	output alarm
);

wire add_set_r;
wire start_set_r;
wire stop_set_r;

reg [3:0] looptimes;
reg [3:0] actualtimes;

reg [11:0] clk_100us_cnt;
reg clk_100us_tmp;
reg [3:0] scan_cnt;
reg [3:0] data;

wire clk_1s;

reg led_1_r;
reg led_2_r;
reg led_3_r;

reg [5:0] sm_cs_r;
reg [7:0] sm_db_r;

reg alarm_r;
reg alarm_o;

reg status_1;
reg status_2;
reg status_3;
reg status_4;
reg status_5;

reg [7:0] cnt;

reg [7:0] cnt1;
reg [7:0] cnt2;
reg [7:0] cnt3;
reg [7:0] cnt4;
reg [7:0] cnt5;

wire [1:0] cnt1_bai;
wire [3:0] cnt1_shi;
wire [3:0] cnt1_ge;

wire [1:0] cnt2_bai;
wire [3:0] cnt2_shi;
wire [3:0] cnt2_ge;

wire [1:0] cnt3_bai;
wire [3:0] cnt3_shi;
wire [3:0] cnt3_ge;

wire [1:0] cnt4_bai;
wire [3:0] cnt4_shi;
wire [3:0] cnt4_ge;

wire [1:0] cnt5_bai;
wire [3:0] cnt5_shi;
wire [3:0] cnt5_ge;

reg start_flag;
reg pause_flag;

reg [6:0]	current_state, next_state;
parameter	IDLE = 7'd00,		
					S01 = 7'd01,				
			   	S02 = 7'd02,			
					S03 = 7'd03,			
			   	S04 = 7'd04,
			   	S05 = 7'd05,
					S_CHECK = 7'd125;
				
counter_1s counter_1s(
		.clk					(clk),
		.reset_n				(reset_n),
		.clk_1s				(clk_1s)
); 

Control Control(
		.clk 					(clk),
		.reset_n 			(reset_n),
	 
		.add_set 			(add_set),
		.start_set			(start_set),
	 
		.stop_set			(stop_set),
		
		.add_set_r			(add_set_r),
		.start_set_r		(start_set_r),
	 
		.stop_set_r			(stop_set_r)
);

BinToDec BinToDec_cnt1(
		.clk					(clk),
		.reset_n				(reset_n),
		.bin					(cnt1),
		.one					(cnt1_ge),
		.ten					(cnt1_shi),
		.hun					(cnt1_bai)
);

BinToDec BinToDec_cnt2(
		.clk					(clk),
		.reset_n				(reset_n),
		.bin					(cnt2),
		.one					(cnt2_ge),
		.ten					(cnt2_shi),
		.hun					(cnt2_bai)
);

BinToDec BinToDec_cnt3(
		.clk					(clk),
		.reset_n				(reset_n),
		.bin					(cnt3),
		.one					(cnt3_ge),
		.ten					(cnt3_shi),
		.hun					(cnt3_bai)
);

BinToDec BinToDec_cnt4(
		.clk					(clk),
		.reset_n				(reset_n),
		.bin					(cnt4),
		.one					(cnt4_ge),
		.ten					(cnt4_shi),
		.hun					(cnt4_bai)
);

BinToDec BinToDec_cnt5(
		.clk					(clk),
		.reset_n				(reset_n),
		.bin					(cnt5),
		.one					(cnt5_ge),
		.ten					(cnt5_shi),
		.hun					(cnt5_bai)
);

always@(posedge clk or negedge reset_n) begin
	if(~reset_n) begin
		start_flag <= 1'b0;
		pause_flag <= 1'b0;
	end
	else
		if(start_set_r == 1'b1) begin
			start_flag <= 1'b1;
		end
		
		else if(stop_set_r == 1'b1) begin
			pause_flag <= ~pause_flag;
		end
		
		else if(looptimes == 4'b0) begin
			start_flag <= 1'b0;
		end 
end

always@(posedge clk or negedge reset_n) begin
	if(~reset_n)
		cnt <= 8'd129;
	else
		if(start_flag == 1'b1) begin
			if(clk_1s == 1'b1) begin
				cnt <= cnt - 1'b1;
				if(cnt == 8'd0)
					cnt <= 8'd129;
			end
		end
end

always@(posedge clk or negedge reset_n) begin
	if(~reset_n)
		current_state <= IDLE;
	else
		current_state <= next_state;
end

.

.

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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.状态转换:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值