- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于FPGA的万年历
目录
1 目的 1
1.1硬件实训目的: 1
1.2软件实训目的: 1
2 实训意义 2
3 实训内容 4
3.1 硬件实训内容: 4
3.2 软件实训内容: 4
3.2.1 功能说明: 4
3.2.2 软件设计详细内容: 4
4 疑难解答 17
5 心得 18
参考文献 20
1 目的
1.1硬件实训目的:
1. 熟悉EDA实验箱的基本工作原理。
2. 熟悉并掌握EDA实验箱各个模式的功能。
3. 提高学生的动手能力。
1.2软件实训目的:
熟悉并掌握Max+plus2软件的使用。
熟练的使用原理图输入设计方法,VHDL语言编写程序,进一步了解和掌握各个程序语言,提高编程的熟练程度。
掌握年、月、日、时、分、秒程序的原理,进而理解万年历的设计原理。
拓宽学生知识面,增强工程意识,培养学生的分析和解决实际问题的能力。
提高学生的动手能历。
2 实训意义
该数字时钟实现了调时、年、月、日、时、分、秒的显示功能,无需接译码器,可直接接八段共阴极数码管,总体结构如下图所示:
第一部分 第二部分 第三部分
D8(l5) D7(l2) D6 D5 (l4) D4(l1) D3 D2(l3) D1
8个LED数码管为了显示清楚只用了6个数码管,分为3个部分。采用的是EDA试验箱上的模式7。
软件Max+plus2方面:
在显示程序中,k3控制分屏。当k3=‘1’时,3部分数码管显示年、月、日;当k3=‘0’时,3部分数码管显示时、分、秒。万年历正常工作时,D1~D8都不亮。
调时时,秒的变化不需控制,故需调时有年、月、日、时、分5个量。数码管每部分右边灯亮时,即l5亮、l4亮、l3亮分别控制的是年、月、日的变化;每部分左边亮时,即l2亮、l1亮分别控制的是时、分的变化。若控制其中一个量变化时,其余4个量均不变,也不向高位进位。
调时、显示、年、月、日、时、分、秒的VHDL语言分别生成各自的模块(Symbol),在顶层文件wannianli中调用这些底层模块——CNT60模块,CNT24模块,tian模块,yue模块,nian模块,tiaoshi模块,xianshi模块,然后链接各个模块,构成所需要的电子日历的原理图。
硬件EDA试验箱方面:
电子日历电路图根据要求采用的是EDA试验箱上的模式7。对万年历电路图上的引脚在电脑软件Max+plus2进行绑定,然后编译,在进行下载,下载到硬件EDA试验箱上。在EDA试验箱上就可以观察到上述变化。
引脚绑定如图所示:
3 实训内容
3.1 硬件实训内容:
在电脑上通过软件Max+plus2对万年历电路图的引脚进行绑定,编译, 然后与EDA试验箱连接,把wannianli .sof文件配置通过JTAG口载入FPGA中,选择实验电路模式No.7进行硬件测试。通过学习,理论上学习了EDA试验箱的原理,对试验箱内部的组件,以及组件之间的链接有了一定的了解,为以后的实训打下了良好的基础。
3.2 软件实训内容:
3.2.1 功能说明:
(1)显示准确的北京时间(年、月、日、时、分、秒,年号只显示最后两位)随时可以调校时间1).秒、分:秒和分都是从0计数到59,可以用六十进制表示。
CNT60程序如下:
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 entity;
architecture one of CNT60 is
signal q1,q2:std_logic_vector(3 downto 0);
begin
process(CLK)
begin
if CLKevent and CLK=1 then ––检测时钟上升沿
q2=q2+1; ––q2开始计数
if q2=9 then q1=q1+1;
q2=0000;
end if;
if q2=9 and q1=5 then
q1=0000;q2=0000;
co
文档评论(0)