万年历实训报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《EDA技术及其应用》
实
训
报
告
班级电信一班
姓名 xx
学号 xx 指导教师 xx
2012年 05月 21 日
xxxx学院
10级机械电子工程系
目录
前言......................................................... .. (4)
课题......................................................... (4)
实验的目的及意义......................................................... (4)
实验的内容及要求......................................................... (4)
实验的地点......................................................... (4)
1. 6 实验的器材.........................................................
(4)
1. 7 实验设计思想......................................................... .. (4)
1.8各模块的设计程序和元件介
绍 (5)
感想……………………………………………………….
前言
随着电子技术的不断发展与进步,电子系统的设计方法发生了很大的变化,基于EDA技术的设计方法正成为电子系统设计的主流,EDA技术已成为许多高职高专院校电类专业学生必须掌握的一门重要技术。
此次基于EDA技术的万年历实训,加强了同学们对EDA 工具QuartusII的使用方法、VHDL语言知识、FPGA开发技术的深入理解,通过万年历的功能实现和功能测试,详细介绍QuartusII的完整设计流程,在此基础上,进一步介绍面向复杂模块的使用方法。其中包括年、月、日、时、分、秒以及调整、控制等各个模块的功能实现和仿真测试,进一揭示VHDL语言在语句应用和电路功能描述上的特点及其特殊用法,使我们在很短的时间内快速掌握了EDA这门重要技术。实验的课题:万年历
实验的目的及意义:
(1)掌握EDA技术及FPGA技术的开发流程。
(2)掌握系统设计的方法和层次化设计的方法。
(3)掌握QuartusII软件的使用方法。
(4)掌握VHDL语言的程序设计、编写、编译和错误修改。
(5)掌握熟悉EDA实验箱的各个模块
(6)掌握EDA试验箱与pc机的连接、下载和引脚绑定的全过程和方法,实现功能仿真。
实验的内容及要求:
(1)实现年、月、日、时、分、秒的显示并具有闰年判断计数的功能
(2)在试验箱上通过按键实现年月日和时分秒的显示切换。
(3)利用试验箱和pc机进行功能测试并实现万年历的显示功能。实验的地点:xxx学院EDA实验室
实验的器材:
硬件:计算机、EDA试验箱软件:QuartusII软件
实验设计思想:
将万年历分为各个模块分项处理,每个小模块实现一个小的功能,最后在万年历的顶层文件中将各个模块整好在一起,实现万年历的整体功能。这是万年历实验设计的整体思想。
其中组成模块有:
秒计时模块cnt60、分计时模块cnt60、时计时模块cnt24、日计时模块tian、月计时模块yue、年计时模块nian、调整模块tz、控制模块mux21,然后在顶层文件中连接个各个模块组成万年历的完整连接图,之后再pc机上进行编译,完成引脚绑定再下载到实验箱上,根据程序内容及引脚绑定通过按键控制和led灯的显示最终完成测试。
各模块设计:
1、秒分时、年月日、调整控制模块设计程序
(1)秒计时模块cnt60(六十进制计数器)程序:
library ieee;
use CNT60 is
port(clk:in std_logic;
CQ1,CQ2:out std_logic_vector(3 downto 0);
COUT:OUT std_logic);
end entity CNT60;
architecture art of CNT60 is
signal s1,s2:std_logic_vector(3 downto 0);
begin
process(clk)
begin
IF clk'event AND clk='1' then S1<=S1+1;
IF S1=9 THEN S1<="0000";S2<=S2+1; END IF;
IF s2=5 AND S1=9 then s1<="0000";s2<="0000"; COUT<='1'; else COUT<='0'; end if; end if;
CQ1<=S1;CQ2<=S2;
end process;
END art;
将程序用QuartusII软件编译之后生成的cnt60模块元件如下图所示:
(此模块实现六十进制计数,用它实现分和秒功能)(2)分计时模块cnt60:(六十进制计数器)
分计时模块和秒计时秒快一样,同样是用六十进制计数器cnt60,程序和生成元件同上所述。
(3)时计时模块cnt24(二十四进制计数器)程序:
library ieee;
use CNT24 is
port( clk:in std_logic;
CQ1,CQ2:out std_logic_vector(3 downto 0);
COUT:OUT std_logic);
end entity CNT24;
architecture art of CNT24 is
signal s1,s2:std_logic_vector(3 downto 0);
begin
process(clk)
begin
IF clk'event AND clk='1' then S1<=S1+1;
IF S1=9 THEN S1<="0000"; S2<=S2+1; END IF;
if s2=2 AND S1=3 then s1<="0000";s2<="0000";COUT<='1';
else COUT<='1'; end if; end if;