万年历设计年月日可调VHDL代码Quartus仿真

名称:万年历设计年月日可调VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

万年历设计年月日可调Quartus9.0

1、使用VHDL设计电子万年历

2、年月日可以通过按键调整


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


演示视频:

设计文档:

设计文档.doc

1. 工程文件


2. 程序文件


3. 程序编译


4. 仿真图








a




部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--万年历
ENTITY calendar IS
   PORT (
      CLK        : IN STD_LOGIC;
      RST        : IN STD_LOGIC;
      --年月日调整按键
      day_add    : IN STD_LOGIC;--天加
      day_sub    : IN STD_LOGIC;--天减
      month_add  : IN STD_LOGIC;--月加
      month_sub  : IN STD_LOGIC;--月减
      year_add   : IN STD_LOGIC;--年加
      year_sub   : IN STD_LOGIC;--年减
      day_max    : IN STD_LOGIC_VECTOR(4 DOWNTO 0);----月最大天数
      
  year_h     : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--年高位
      year_l     : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--年低位
      month      : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--月
      day        : OUT STD_LOGIC_VECTOR(4 DOWNTO 0)--天
   );
END calendar;
ARCHITECTURE behave OF calendar IS
   SIGNAL month_add_cin : STD_LOGIC := '0';
   SIGNAL month_sub_cin : STD_LOGIC := '0';
   SIGNAL year_add_cin  : STD_LOGIC := '0';
   SIGNAL year_sub_cin  : STD_LOGIC := '0';
   SIGNAL year_h_temp  : STD_LOGIC_VECTOR(7 DOWNTO 0);
   SIGNAL year_l_temp  : STD_LOGIC_VECTOR(7 DOWNTO 0);
   SIGNAL month_temp   : STD_LOGIC_VECTOR(3 DOWNTO 0);
   SIGNAL day_temp     : STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
--输出
   year_h<=year_h_temp;
   year_l <= year_l_temp;
   month <= month_temp;
   day <= day_temp;
   
 --调整天  
   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         day_temp <= "00001";--1日
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         IF (day_add = '1') THEN--加
            IF (day_temp >= day_max) THEN
               day_temp <= "00001";
               month_add_cin <= '1';--月进1
            ELSE
               day_temp <= day_temp + "00001";
               month_add_cin <= '0';
            END IF;
         ELSIF (day_sub = '1') THEN--减
            IF (day_temp = "00001") THEN
               day_temp <= day_max;
               month_sub_cin <= '1';--月减1
            ELSE
               day_temp <= day_temp - "00001";
               month_sub_cin <= '0';
            END IF;
         ELSIF (day_temp >= day_max) THEN
            day_temp <= day_max;
            month_add_cin <= '0';
            month_sub_cin <= '0';
         ELSE
            day_temp <= day_temp;
            month_add_cin <= '0';
            month_sub_cin <= '0';
         END IF;
      END IF;
   END PROCESS;
   
  --调整月 
   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         month_temp <= "0001";--1月
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         IF (month_add = '1' OR month_add_cin = '1') THEN--加
            IF (month_temp >= "1100") THEN--12月
               month_temp <= "0001";
               year_add_cin <= '1';--年加1
            ELSE
               month_temp <= month_temp + "0001";
               year_add_cin <= '0';
            END IF;
         ELSIF (month_sub = '1' OR month_sub_cin = '1') THEN--减
            IF (month_temp = "0001") THEN
               month_temp <= "1100";
               year_sub_cin <= '1';--年减1
            ELSE
               month_temp <= month_temp - "0001";
               year_sub_cin <= '0';
            END IF;
         ELSE

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 万年历设计年月日可调VHDL代码Quartus仿真

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员