名称:智能饮水机设计VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
设计智能饮水机要求实现以下功能:
控制模块:实现对水温的控制。设置不同加热模式,沏茶、冲咖啡、泡牛奶等多个功能;设置保温模式,限制水反复加热的次数,若水反复加热次数超过上限值,放掉现有加热容器内的水重新加生水进去;若是生水直接加温到给定温度,必须是水烧开以后的水温,若是滚沸后的开水,则将温度直接下降或上升到给定温度。
节能模块:当水温达到预置温度后,半个小时内无人使用,暂停给水加热,有人用水,则恢复到上一时刻的设置状态;当水温达到预置温度后,一个小时内无人使用,暂停给水加热,有人用水,则除保持水反复加热的次数外,其他设置恢复初试状态。
显示模块:现有的水温、设置的水温;水加热的次数;加热的具体模式、保温模式。
采用50MHZ时钟源的FPGA芯片,使用VHDL语言编程。Quartus9.0版本
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
状态图
5. 仿真图
饮水机控制模块仿真
显示模块仿真
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --分频模块,分频到10Hz ENTITY fenping IS PORT ( clk_50M : IN STD_LOGIC; clk_10Hz : OUT STD_LOGIC--10Hz ); END fenping; ARCHITECTURE behave OF fenping IS SIGNAL time_count : STD_LOGIC_VECTOR(31 DOWNTO 0) := "00000000000000000000000000000000"; BEGIN --分频 PROCESS (clk_50M) BEGIN IF (clk_50M'EVENT AND clk_50M = '1') THEN IF (time_count = "00000000010011000100101101000000") THEN--5000000 time_count <= "00000000000000000000000000000000"; clk_10Hz <= '1'; ELSE time_count <= time_count + "00000000000000000000000000000001";--计数 clk_10Hz <= '0'; END IF; END IF; END PROCESS; END behave;
![]()
44