• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

洗衣机控制电路VHDL代码Quartus仿真

07/01 16:03
540
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240113134I2419.doc

共1个文件

名称:洗衣机控制电路VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

洗衣机控制电路

设计要求:

1、控制洗衣机实现正转,待机,反转三种状态并用三个LED显示

2、正转60秒,待机5秒,反转60秒,这个过程循环15次,直至循环次数为零时,蜂鸣器发声。

3、时间由数码管显示。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1.工程文件

2.程序文件

3.程序编译

4.仿真图

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--洗衣机控制电路
ENTITY?wash?IS
???PORT?(
??????clk??????:?IN?STD_LOGIC;--时钟1Hz
??????rst_p????:?IN?STD_LOGIC;--复位
??????start_p??:?IN?STD_LOGIC;--开始
??????led_Z????:?OUT?STD_LOGIC;--正转
??????led_D????:?OUT?STD_LOGIC;--待机
??????led_F????:?OUT?STD_LOGIC;--反转
??????beep?????:?OUT?STD_LOGIC;--蜂鸣器
??????HEX0?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--数码管-分钟十位
??????HEX1?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)?--数码管-分钟个位
???);
END?wash;
ARCHITECTURE?RTL?OF?wash?IS
--定义状态
???TYPE??state_type?IS
???(
??????s_idle???,
??????s_start??,
??????s_ledZ???,
??????s_ledD???,
??????s_ledF???,
??????s_end????
???);???
???SIGNAL?state????:?state_type;
???SIGNAL?cnt_Z????:?STD_LOGIC_VECTOR(5?DOWNTO?0)?:=?"000000";
???SIGNAL?cnt_D????:?STD_LOGIC_VECTOR(5?DOWNTO?0)?:=?"000000";
???SIGNAL?cnt_F????:?STD_LOGIC_VECTOR(5?DOWNTO?0)?:=?"000000";
???SIGNAL?time_cnt?:?STD_LOGIC_VECTOR(4?DOWNTO?0)?:=?"00000"?;
???SIGNAL?time_ten?:?STD_LOGIC_VECTOR(4?DOWNTO?0)?:=?"00000"?;
???SIGNAL?time_one?:?STD_LOGIC_VECTOR(4?DOWNTO?0)?:=?"00000"?;
BEGIN
???
--正转时间计数
???PROCESS?(clk,?rst_p)
???BEGIN
??????IF?(rst_p?=?'1')?THEN
?????????cnt_Z?<=?"000000";--复位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(state?=?s_ledZ)?THEN--正转状态
????????????cnt_Z?<=?cnt_Z?+?"000001";--计数
?????????ELSE
????????????cnt_Z?<=?"000000";--清零
?????????END?IF;
??????END?IF;
???END?PROCESS;
--待机时间计数???
???PROCESS?(clk,?rst_p)
???BEGIN
??????IF?(rst_p?=?'1')?THEN
?????????cnt_D?<=?"000000";--复位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(state?=?s_ledD)?THEN--待机状态
????????????cnt_D?<=?cnt_D?+?"000001";--计数
?????????ELSE
????????????cnt_D?<=?"000000";--清零
?????????END?IF;
??????END?IF;
???END?PROCESS;
--反转时间计数???
???PROCESS?(clk,?rst_p)
???BEGIN
??????IF?(rst_p?=?'1')?THEN
?????????cnt_F?<=?"000000";--复位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(state?=?s_ledF)?THEN--反转状态
????????????cnt_F?<=?cnt_F?+?"000001";--计数
?????????ELSE
????????????cnt_F?<=?"000000";--清零
?????????END?IF;
??????END?IF;
???END?PROCESS;
--状态机控制模块???
???PROCESS?(clk,?rst_p)
???BEGIN
??????IF?(rst_p?=?'1')?THEN
?????????state?<=?s_idle;--复位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????CASE?state?IS
????????????WHEN?s_idle?=>--空闲状态
???????????????IF?(start_p?=?'1')?THEN--开始按键
??????????????????state?<=?s_start;
???????????????END?IF;
????????????WHEN?s_start?=>--开始状态
???????????????state?<=?s_ledZ;
????????????WHEN?s_ledZ?=>--正转状态
???????????????IF?(time_cnt?=?"00000")?THEN--时间倒计时结束
??????????????????state?<=?s_end;
???????????????ELSIF?(cnt_Z?=?"111100")?THEN--计数到60s
??????????????????state?<=?s_ledD;
???????????????END?IF;
????????????WHEN?s_ledD?=>--待机状态
???????????????IF?(cnt_D?=?"000101")?THEN--计数到5s
??????????????????state?<=?s_ledF;
???????????????END?IF;
????????????WHEN?s_ledF?=>--反转状态
???????????????IF?(time_cnt?=?"00000")?THEN--时间倒计时结束
??????????????????state?<=?s_end;
???????????????ELSIF?(cnt_F?=?"111100")?THEN--计数到60s
??????????????????state?<=?s_ledZ;
???????????????END?IF;
????????????WHEN?s_end?=>--结束状态
???????????????IF?(start_p?=?'1')?THEN--开始按键
??????????????????state?<=?s_start;
???????????????END?IF;
????????????WHEN?OTHERS?=>
?????????END?CASE;
??????END?IF;
???END?PROCESS;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=558

  • 2-240113134I2419.doc
    下载

相关推荐