EDA程序设计--万年历设计

目 录

一   课程设计的目的及意义... 1

1.0设计目的... 1

1.1设计意义... 2

1.2设计要求... 2

二   设计流程:... 2

2.0  万年历原理... 2

2.1 原理框图... 2

2.2原理框图中各子模块的VHDL语言表述及生成模块框图... 3

2.3 VHDL设计流程.................................................................................................... 3

三 VHDL程序... 3

3.0  60进制计数器... 4

3.1  24进制计数器... 4

3.2  天计数模块... 5

3.3  月计数模块... 6

3.4  年计数模块... 7

3.5  秒分时和日月年分组输出控制模块... 8

3.6秒分时和日月年分两种模式切换和调整模块... 8

3.7下载到试验箱上实现其功能... 8

四   总结... 10

4.0. 10

   课程设计的目的及意义

1.0设计目的

本次设计的目的就是在掌握计算机组成原理理论的基础上,了解EDA技术,掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,例如本课程设计就是基于所学的计算机原理中的数控分频器基础之上的,通过本课程设计,达到巩固和综合运用计算机原理中的知识,理论联系实际,巩固所学理论知识,并且提高自己通过所学理论分析、解决计算机实际问题的能力。进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤

1.1设计意义

  巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。为了进一步了解计算机工作组成原理与系统结构,深入学习EDA技术,用VHDL技术,用VHDL语言去控制将会使我们对本专业知识可以更好地掌握。熟悉QUARUS II软件的应用。熟悉EDA实验开发系统的基本使用。学习用VHDL基本单元电路的时间应用。进一步掌握EDA的多层次设计方法

1.2 设计要求

    1. 在Quartus中编写VHDL程序实现年、月、日、时、分、秒各模块的功能。

(2) 将各模块在原理图中连接起来实现百年历计时功能。

(3) 将年、月、日和时、分、秒两种模式分别在试验箱模式7下显示,并设置键8为模式的切换键,键3 为调整数键,键6为在当前模式下切换调整位键。将各端口引脚绑定好并下载到实验箱实现其功能,观察是否能实现相应功能效果,如是否可以进位,是否能判断闰年等等。

   设计流程:

 2.0  万年历原理

      秒、分是60进制,时是24进制,日31天由月1.3.5.7.8.10.12控制,日28/29由2月和润年控制,日30由月4.6.9.11控制。原理如下图:

2.1 原理框图

根据实验要求,截得实验原理框图如下:

2.2 原理框图中各子模块的VHDL语言表述及生成模块框图:

2.3 VHDL设计流程

(1)设计输入根据电路设计所提出的要求,将程序输入到VHDL编辑器中区编辑。

(2)功能及模拟用VHDL,模拟器对编辑后的程序进行模拟,如果达不到设计要求,则可以重新修改程序,直到通过功能模拟。

(3)逻辑综合与优化,将通过功能模拟的程序放到VHDL编译器中,进行逻辑、综合与优化。

三 部分VHDL程序

3.0  60进制计数器

library ieee;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT60 IS

PORT(CLK:IN STD_LOGIC;

      CQ1,CQ2:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);

     COUT:OUT STD_LOGIC);

END CNT60;

ARCHITECTURE behav OF CNT60 IS

BEGIN

PROCESS(CLK)

VARIABLE Q1,Q2: STD_LOGIC_VECTOR (3 DOWNTO 0);

BEGIN

IF CLK'EVENT AND CLK='1' THEN

Q1:=Q1+1;

  IF Q1>9 THEN Q1:="0000";Q2:=Q2+1;

END;

3.1   24进制计数器

library ieee;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY cnt24 IS

PORT(CLK:IN STD_LOGIC;

      CQ1,CQ2:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);

PROCESS(CLK)

VARIABLE Q1,Q2: STD_LOGIC_VECTOR (3 DOWNTO 0);

BEGIN

IF CLK'EVENT AND CLK='1' THEN

Q1:=Q1+1;

  IF Q1>9 THEN Q1:="0000";Q2:=Q2+1;

  END IF;

    IF Q2=2  AND Q1=4 THEN Q1:="0000";Q2:="0000";COUT<='1';

    ELSE COUT<='0';

    END IF;

END IF;

CQ1<=Q1;CQ2<=Q2;  

END PROCESS;

END;

3.2 天计数模块

Library ieee;

USE IEEE.STD_LOGIC _UNSIGNED.ALL;

USE IEEE.STD_LOGIC _1164.all;

Entity day is

   Port( clk : in std_logic;

         a,b : in std_logic;

         T1,T2 : out std_logic_vector(3 downto 0);

        

PROCESS(clk,a,b)

begin

IF CLK'EVENT AND CLK='1' THEN

Q1<=Q1+1;

IF Q1=9 THEN Q1<="0000";Q2<=Q2+1;

end if;

ab<=a&b;

case ab is

when"00"=>

   if Q2=3 AND Q1=1 THEN

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白茶丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值