加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

EDA程序设计-万年历设计(VHDL语言)

10/04 17:14
869
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
    • 二   设计流程:
    • 三 部分VHDL程序
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

一   课程设计的目的及意义

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

  • 有需要资料的可了解一下.docx

相关推荐

电子产业图谱