ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:163.23KB ,
资源ID:7974863      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7974863.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(闰年补偿功能的数字日历论文学位论文.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

闰年补偿功能的数字日历论文学位论文.docx

1、闰年补偿功能的数字日历论文学位论文等级:湖南工程学院课 程 设 计课程名称 EDA技术 课题名称 基于FPGA的具有闰年补偿功能的数字日历 专 业 班 级 学 号 姓 名 指导教师 郭照南 2014 年 12 月 8 日D题(注:完成人员:01班的24号、30号和34号;02班的28号和29号)湖南工程学院课 程 设 计 任 务 书课程名称 EDA技术 课 题 基于FPGA的具有闰年补偿功能的数字日历专业班级 电子科学与技术 学生姓名 蒋玉 学 号 201201180134 指导老师 郭照南 审 批 任务书下达日期2014年12月8日星期一设计完成日期 2014年12月19日星期五 设计内容与

2、设计要求一设计内容:用FPGA为核心器件,用VHDL为设计手段设计制作一个具有大小月份自动调节和闰年补偿功能的数字日历,具体设计要求如下:1、用7个数码管从左到右分别显示年(后两位)、月、日和星期;星期与日之间隔开一位。2、年计数从00到99循环;月、日的计数显示均从1开始,并具备大小月份自动调节和闰年补偿功能,即日期的计数实现大月31天,小月30天,二月28天或29天(闰年)的自动调整(注意:7、8月均为大月)。3、对星期的计数显示从1到6再到日(日用8代替);注意星期应和实际日历相吻合。4、具备日历调整功能和节日提醒功能。要求采用分层次描述方式,且用图形输入和文本输入混合方式建立描述文件。

3、二、设计要求:1、 设计思路清晰,给出整体设计框图;2、 用VHDL设计各单元电路,完成其功能仿真和编译并生成低层计数器;3、 在Quartus中完成顶层设计并编译通过;4、 在Quartus中完成设计下载并调试电路;5、 写出设计报告; 主要设计条件1、 提供EDA设计环境和EDA软件Quartus;2、 提供 EDA实验箱和CPLD下载装置; 说明书格式1、 课程设计报告书封面;2、 任务书;3、 说明书目录;4、 设计总体思路;5、 单元电路设计;6、 总电路设计;7、 设计调试体会与总结;8、 附录;9、 参考文献。注意:每个人的课程设计报告说明书不得雷同!课程设计报告说明书要求用16

4、开纸打印! 进 度 安 排 第一周:星期一 上午 安排任务、讲课。星期一下午星期五 查资料、设计第二周: 星期一星期二 设计输入和设计仿真四楼EDA室 星期三 低层编译和设计下载四楼EDA室 星期四 调试电路、写总结报告; 星期五 答辩 参 考 文 献EDA技术实用教程第四版 潘松主编电子技术与EDA技术课程设计指导 郭照南主编 中南大学出版社电子线路设计、实验、测试 谢自美主编华中理工出版社目 录一、设计总体思路1.1设计内容11.2设计要求11.3设计思路11.4设计框图2二、单元电路设计及仿真2.1年计数器22.2月计数器42.3日计数器62.4星期计数器82.5提醒模块92.6控制模块

5、102.7显示模块11三、总电路设计.13四、设计调试总结与体会.13五、附录.15六、参考文献.15附:课程设计评分表一、设计总体思路1.1设计内容 用FPGA为核心器件,用VHDL为设计手段设计制作一个具有大小月份自动调节和闰年补偿功能的数字日历,具体设计要求如下:1、用7个数码管从左到右分别显示年(后两位)、月、日和星期;星期与日之间隔开一位。2、年计数从00到99循环;月、日的计数显示均从1开始,并具备大小月份自动调节和闰年补偿功能,即日期的计数实现大月31天,小月30天,二月28天或29天(闰年)的自动调整(注意:7、8月均为大月)。3、对星期的计数显示从1到6再到日(日用8代替);

6、注意星期应和实际日历相吻合。4、具备日历调整功能和节日提醒功能。要求采用分层次描述方式,且用图形输入和文本输入混合方式建立描述文件。1.2设计要求1、设计思路清晰,给出整体设计框图;用VHDL设计各单元电路,完成其功能仿真和编译并生成低层计数器;2、在Quartus中完成顶层设计并编译通过;3、在Quartus中完成设计下载并调试电路;4、写出设计报告;1.3设计思路 用FPGA为核心器件,用VHDL为设计手段设计制作一个具有大小月份自动调节和闰年补偿功能的数字日历,日历有年、月、日、星期以及特殊节日提醒的功能,根据要求,用了一个一百进制的计数器来进行年的计数,中间有一个辅助进程,闰年时让进位

7、端输出为一;设计了一个十二进制的计数器进行月的控制,其中用了case语句,来完成该年是不是闰年以及该月是大月或者小月的控制;利用一个七进制计数器来进行星期的计时;现在就完成了我们所需要的几个计数器。设计了一个控制模块来控制是否进入下一年;然后设计了一个特殊节日提醒提醒功能,输出端接了一个LED灯,灯亮时表示提醒;最后设计动态扫描显示部分。将这些计数器的组合,我们可以完成具有闰年补偿功能的万年历的设计,同时可以通过控制键对年、月、日进行调整。1.4设计框图二、 单元电路设计及仿真2.1年计数器的设计对于年100进制的加法计数器的设计,有个位、十位的输出,用显示模块来显示,以及一个进位端,来驱动月

8、模块二月的选择,其输入有清零端,使能端和时钟脉冲,当清零端为低电平0时此计数器被清零,而重新开始计数,当使能端为低电平时该计数器不工作处于暂停状态。其程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY nian ISPORT(clk,en : IN STD_LOGIC;cr : IN STD_LOGIC;co:out STD_LOGIC;q1: OUT STD_LOGIC_VECTOR (3 DOWNTO 0);y10: OUT STD_LOGIC_VECTOR (3 DOWN

9、TO 0); END nian;ARCHITECTURE a OF nian ISSIGNAL bcd1n : STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL vcd10n : STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINq1=bcd1n;y10=vcd10n;PROCESS (clk,cr)BEGIN IF (cr = 0) THEN bcd1n = 0000; vcd10n = 0000;ELSIF (clkEVENT AND clk = 1) THENif (en=1) then IF (bcd1n=9 and vcd10n=9) TH

10、EN bcd1n = 0000; vcd10n = 0000;ELSIF (bcd1n=9) THEN bcd1n = 0000; vcd10n = vcd10n + 1; ELSEbcd1n = bcd1n + 1; END IF;END IF;end if;END PROCESS;process (bcd1n,vcd10n)beginif (bcd1n=0 and vcd10n=0) or(bcd1n=4 and vcd10n=0) or(bcd1n=8 and vcd10n=0) or(bcd1n=2 and vcd10n=1) or(bcd1n=6 and vcd10n=1) or(b

11、cd1n=0 and vcd10n=2) or(bcd1n=4 and vcd10n=2) or(bcd1n=8 and vcd10n=2) or(bcd1n=2 and vcd10n=3) or(bcd1n=6 and vcd10n=3) or(bcd1n=0 and vcd10n=4) or(bcd1n=4 and vcd10n=4) or(bcd1n=8 and vcd10n=4) or(bcd1n=2 and vcd10n=5) or(bcd1n=6 and vcd10n=5) or(bcd1n=0 and vcd10n=6) or(bcd1n=4 and vcd10n=6) or(b

12、cd1n=8 and vcd10n=6) or(bcd1n=2 and vcd10n=7) or(bcd1n=6 and vcd10n=7) or(bcd1n=0 and vcd10n=8) or(bcd1n=4 and vcd10n=8) or(bcd1n=8 and vcd10n=8) or(bcd1n=2 and vcd10n=9) or(bcd1n=6 and vcd10n=9) then co=1;else co=0;end if; end process;end a;其仿真波形如下:2.2月计数器对于月十二进制的加法计数器的设计,有个位、十位的输出用显示模块来显示,a,b的输出,来

13、控制日计数器是31或30或28或29天。其输入有清零端,使能端,run控制端和时钟脉冲,当清零端为低电平0时此计数器被清零,当使能端为低电平时该计数器不工作处于暂停状态。run为1并且计数器记为2时,ab就输出11,run为0并且计数器记为2时,ab就输出10,来控制日计数器二月的输出。其程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY yue ISPORT(clk,run: IN STD_LOGIC;cr : IN STD_LOGIC;en: IN STD_LOGIC;a,

14、b,co : out STD_LOGIC;q1:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);y10:OUT STD_LOGIC_VECTOR (3 DOWNTO 0); END yue;ARCHITECTURE a OF yue ISSIGNAL bcd1n: STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL vcd10n: STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL vcd10nbcd1n:std_logic_vector(7 downto 0); BEGINq1=bcd1n;y10=vcd10n;PROCESS

15、(clk,cr)BEGIN IF (cr = 0) THEN bcd1n = 0001; vcd10n = 0000;ELSIF (clkEVENT AND clk = 1) THENif (en=1) then IF (bcd1n=2 and vcd10n=1) THEN bcd1n = 0001; vcd10n = 0000;ELSIF (bcd1n=9) THEN bcd1n = 0000; vcd10n = vcd10n + 1; ELSEbcd1n = bcd1n + 1; END IF; END IF;end if;IF (bcd1n=2 and vcd10n=1) THEN co

16、=1;ELSE co=0;END IF; vcd10nbcd1na=0;bif run=1 thena=1;b=1;else a=1;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;bnull;END CASE;END PROCESS;end a;仿真波形如下: 2.3日计数器对于日计数器的设计,有个位、十位的输出用显示模块来显示,有一个进位端,来驱动月计算器,给月计数器时钟脉冲。其输入有清零端,使能端,s1,s2控制端和时钟脉冲,当清零端为低电平0时此计数器被清零,当使能端为低电平时该计数器不工作处于暂停状态。用了一个case语句,s1s2

17、分别输出为00、01、10、11时,日计数器就分别计数31、30、28、29天。程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY ri ISPORT(clk,s1,s2:IN STD_LOGIC;cr : IN STD_LOGIC;en: IN STD_LOGIC;co: out STD_LOGIC;q1: OUT STD_LOGIC_VECTOR (3 DOWNTO 0);y10:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END ri;ARCHIT

18、ECTURE a OF ri ISSIGNAL s1s2 : STD_LOGIC_VECTOR (1 DOWNTO 0);SIGNAL bcd1n : STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL vcd10n : STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINq1=bcd1n;y10=vcd10n;PROCESS (clk,cr,s1,s2)BEGIN IF (cr = 0) THEN bcd1n = 0001; vcd10n = 0000;ELSIF (clkEVENT AND clk = 1) THENIF (en=1) then IF

19、 (bcd1n=9) THEN bcd1n = 0000; vcd10n = vcd10n + 1; ELSEbcd1n = bcd1n + 1; END IF; END IF;s1s2IF vcd10n=3 AND bcd1n=1 THENbcd1n=0001; vcd10n=0000; co=1;ELSE coIF vcd10n=3 AND bcd1n=0 THENbcd1n=0001; vcd10n=0000; co=1;ELSE coIF vcd10n=2 AND bcd1n=8 THENbcd1n=0001; vcd10n=0000; co=1;ELSE coIF vcd10n=2

20、AND bcd1n=9 THENbcd1n=0001; vcd10n=0000; co=1;ELSE co=0;END IF;END case;END IF;END PROCESS;END a;仿真波形如下:2.4星期计数器对于星期七进制计数器的设计,有一个输出端,用显示模块来显示。其输入有清零端,使能端和时钟脉冲,当清零端为高电平1时此计数器被清零,当使能端为低电平时该计数器不工作处于暂停状态。其中设计了当输出为6后让输出为8然后回到1重新计数。其程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED

21、.ALL;ENTITY xingqi ISPORT (CLK,RST,EN: IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END xingqi;ARCHITECTURE BEHAV OF xingqi ISSIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,RST,EN)BEGINIF (RST=1) THEN CQI=0001; ELSIF (CLKEVENT AND CLK=1 ) THENIF (EN=1) THENCQI=CQI+1;IF CQI=6 THEN CQI7

22、 THEN CQI=0001;END IF;END IF;END IF;END PROCESS;CQ=CQI;END BEHAV;仿真波形如下:2.5提醒模块设计这个模块是要用来特别节日提醒的,其输入端有一个异步置1端,其它四个输入端,当输入0501时,输出端会为0,此时输出端接一个LED灯,那么灯就会闪一下,表示节日提醒。其程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity tixing isport(cr:in std_logic;ri1,ri2,yue1,yue2:in

23、std_logic_vector(3 downto 0);co:out std_logic);end tixing;architecture a of tixing isbeginprocess(cr,ri1,ri2,yue1,yue2)beginIF (cr = 0) THEN co=1;end if;if(yue2=0 and yue1=1 and ri2=0 and ri1=1)or(yue2=0 and yue1=5 and ri2=0 and ri1=1)or(yue2=0 and yue1=6 and ri2=0 and ri1=1)or(yue2=0 and yue1=8 and

24、 ri2=0 and ri1=1)or(yue2=1 and yue1=0 and ri2=0 and ri1=1)then co=0;end if;end process;end a;仿真波形如下:2.6控制模块 设计控制这一部分是当月和日计数器分别输出12、31时,输出端输出为1,给年计数器一个时钟脉冲。其程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity kongzhi isport(ri1,ri2,yue1,yue2:in std_logic_vector(3 down

25、to 0);co:out std_logic);end kongzhi;architecture a of kongzhi isbeginprocess(ri1,ri2,yue1,yue2)beginif(yue2=1 and yue1=2 and ri2=3 and ri1=1)then co=1;else co BT = 00000001 ; A BT = 00000010 ; A BT = 00000100 ; A BT = 00001000 ; A BT = 00010000 ; A BT = 00100000 ; A BT = 01000000 ; A BT = 10000000 ; A NULL ;END CASE ;END PROCESS P1;P2:PROCESS(CLK)BEGINIF CLKEVENT AND CLK = 1 THEN CNT8 = CNT8 + 1; END IF;END P

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1