名称:洗衣机控制器VHDL代码Quartus? DE2-115开发板
软件:Quartus
语言:VHDL
代码功能:
洗衣机控制器:
(1)设计一个洗衣机控制器,使洗衣机作如下运转:定时启动—〉正转20秒—〉暂停10秒—〉反转20秒—〉暂停10秒—〉定时不到,重复上面过程。
(2)若定时到,则停止,并发出提示信号。
(3)用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由开始信号开始。
(4)三只LED灯表示正转、反转、暂停三个状态。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE2-115开发板验证,DE2-115开发板如下,其他开发板可以修改管脚适配:
设计文档:
洗衣机程序设计
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. 仿真图
洗涤预制时间寄存模块
时序电路模块
十进制减法计数模块
部分代码展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; ENTITY?washing_machine?IS ???PORT?( ??????clk_in?????:?IN?STD_LOGIC;--50Hz ??????start_key??:?IN?STD_LOGIC;--启动按键 ?????? ??????set_time_key:?IN?STD_LOGIC?;--预置时间按键,按一次增加5分钟,超过60分钟自动回零 ?????? ??????led????????:?OUT?STD_LOGIC_VECTOR(2?DOWNTO?0);--正转,反转,暂停 ??????end_led????:?OUT?STD_LOGIC;--洗衣结束信号 ?????? ??????dig_led1????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--数码管1 ??????dig_led2???:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--数码管2 ???); END?washing_machine; ARCHITECTURE?Behavioral?OF?washing_machine?IS --洗涤预制时间寄存模块/十进制减法计数模块/时序电路模块/译码器驱动电路模块/数码管显示模块??? --洗涤预制时间寄存模块 Component?pre_set_time?IS PORT?( clk_in?????:?IN?STD_LOGIC;--50Hz????? set_time_key:?IN?STD_LOGIC?;--预置时间按键,按一次增加5分钟,超过60分钟自动回零 preset_time????:??OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ); end?Component?; --译码器驱动电路模块 Component?decoder?IS PORT?( clk_in?:?IN?STD_LOGIC?; washing_time?:?IN?STD_LOGIC_VECTOR?(7?downto?0); duanxuan2??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); duanxuan1??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ); end?Component?; --数码管显示模块 Component?display?IS PORT?( duanxuan2??:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); duanxuan1??:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); dig_led1????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--数码管1 dig_led2???:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--数码管2 ); end?Component?; Component?subtraction?IS PORT?( clk_in??:?IN?STD_LOGIC;--50Hz start_key_rise??:?IN?STD_LOGIC; min_en_rise????:?IN?STD_LOGIC; preset_time????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); washing_time???:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ); end?Component?; Component?Sequential_circuit?IS PORT?( clk_in?????:?IN?STD_LOGIC;--50Hz start_key??:?IN?STD_LOGIC;--启动按键 washing_time???:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);?????? led????????:?OUT?STD_LOGIC_VECTOR(2?DOWNTO?0);--正转,反转,暂停 end_led????:?OUT?STD_LOGIC;--洗衣结束信号 ?????? start_key_rise_out????:?OUT?STD_LOGIC; min_en_rise_out???:?OUT?STD_LOGIC ); end?Component?; ???SIGNAL?preset_time????:??STD_LOGIC_VECTOR(7?DOWNTO?0):=?"00000000"; ???SIGNAL?washing_time????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";--预置洗衣时间15分钟 ??? ???SIGNAL?start_key_rise??????:?STD_LOGIC:='0'; ???SIGNAL?min_en_rise?????????:?STD_LOGIC:='0';??? ??? ???SIGNAL?duanxuan2?????????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000"; ???SIGNAL?duanxuan1????????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000"; BEGIN
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=557
阅读全文
393