基于FPGA的具有闰年补偿功能的数字日历.docx

上传人:b****1 文档编号:15234358 上传时间:2023-07-02 格式:DOCX 页数:24 大小:208.92KB
下载 相关 举报
基于FPGA的具有闰年补偿功能的数字日历.docx_第1页
第1页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第2页
第2页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第3页
第3页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第4页
第4页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第5页
第5页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第6页
第6页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第7页
第7页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第8页
第8页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第9页
第9页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第10页
第10页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第11页
第11页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第12页
第12页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第13页
第13页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第14页
第14页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第15页
第15页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第16页
第16页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第17页
第17页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第18页
第18页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第19页
第19页 / 共24页
基于FPGA的具有闰年补偿功能的数字日历.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA的具有闰年补偿功能的数字日历.docx

《基于FPGA的具有闰年补偿功能的数字日历.docx》由会员分享,可在线阅读,更多相关《基于FPGA的具有闰年补偿功能的数字日历.docx(24页珍藏版)》请在冰点文库上搜索。

基于FPGA的具有闰年补偿功能的数字日历.docx

基于FPGA的具有闰年补偿功能的数字日历

课程设计任务书

课程名称:

EDA技术

题目:

基于FPGA的具有闰年补偿功能的数字日历

设计内容与设计要求

一.设计内容:

用FPGA为核心器件,用VHDL为设计手段设计制作一个具有大小月份自动调节和闰年补偿功能的数字日历,具体设计要求如下:

1、用7个数码管从左到右分别显示年(后两位)、月、日和星期;星期与日之间隔开一位。

2、年计数从00到99循环;月、日的计数显示均从1开始,并具备大小月份自动调节和闰年补偿功能,即日期的计数实现大月31天,小月30天,二月28天或29天(闰年)的自动调整(注意:

7、8月均为大月)。

3、对星期的计数显示从1到6再到日(日用8代替);注意星期应和实际日历相吻合。

4、具备日历调整功能和节日提醒功能。

要求采用分层次描述方式,且用图形输入和文本输入混合方式建立描述文件。

二、设计要求:

1、设计思路清晰,给出整体设计框图;

2、用VHDL设计各单元电路,完成其功能仿真和编译并生成低层模块;

3、在QuartusⅡ中完成顶层设计并编译通过;

4、在QuartusⅡ中完成设计下载并调试电路;

5、写出设计报告;

主要设计条件

1、提供EDA设计环境和EDA软件QuartusⅡ;

2、提供EDA实验箱和CPLD下载装置;

说明书格式

1、课程设计报告书封面;

2、任务书;

3、说明书目录;

4、设计总体思路;

5、单元电路设计;

6、总电路设计;

7、设计调试体会与总结;

8、附录;

9、参考文献。

注意:

每个人的课程设计报告说明书不得雷同!

进度安排

第一周:

星期一上午安排任务、讲课。

星期一下午~星期五查资料、设计

第二周:

星期一~星期二设计输入和设计仿真〈四楼EDA室〉

星期三低层编译和设计下载〈四楼EDA室〉

星期四调试电路、写总结报告;

星期五答辩。

参考文献

《EDA技术实用教程》第四版潘松主编

 《电子技术与EDA技术课程设计指导》郭照南主编中南大学出版社

《电子线路设计、实验、测试》谢自美主编 华中理工出版社。

一、设计总体思路

1.1课程设计内容-------------------------------------------------1

1.2课程设计要求-------------------------------------------------1

1.3课程设计的意义----------------------------------------------2

1.4设计总体思路-------------------------------------------------2

1.5设计框图-------------------------------------------------------3

二单元电路设计

2.1天模块----------------------------------------------------------4

2.2月模块----------------------------------------------------------5

2.3年模块.---------------------------------------------------------7

2.4星期模块-------------------------------------------------------8

2.5提醒模块-------------------------------------------------------9

2.6控制模块------------------------------------------------------10

2.7显示模块------------------------------------------------------11

三、总电路设计--------------------------------------------------13

四、电路调试----------------------------------------------------14

五、设计调试总结与体会--------------------------------------16

六、附录-----------------------------------------------------------17

七、参考文献-----------------------------------------------------18

附:

课程设计评分表

一、设计总体思路

1.1设计总体内容

用FPGA为核心器件,用VHDL为设计手段设计制作一个具有大小月份自动调节和闰年补偿功能的数字日历,具体设计要求如下:

1、用7个数码管从左到右分别显示年(后两位)、月、日和星期;星期与日之间隔开一位。

2、年计数从00到99循环;月、日的计数显示均从1开始,并具备大小月份自动调节和闰年补偿功能,即日期的计数实现大月31天,小月30天,二月28天或29天(闰年)的自动调整(注意:

7、8月均为大月)。

3、对星期的计数显示从1到6再到日(日用8代替);注意星期应和实际日历相吻合。

4、具备日历调整功能和节日提醒功能。

要求采用分层次描述方式,且用图形输入和文本输入混合方式建立描述文件。

1.2设计要求

1、设计思路清晰,给出整体设计框图;

2、用VHDL设计各单元电路,完成其功能仿真和编译并生成低层模块;

3、在QuartusⅡ中完成顶层设计并编译通过;

4、在QuartusⅡ中完成设计下载并调试电路;

5、写出设计报告;

 

1.3课程设计的意义

了解EDA技术,EDA技术的基本特征:

EDA代表了当今电子设计技术的最新发展方向,利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在汁算机上自动处理完成。

设计者采用的设计方法是一种高层次的”自顶向下”的全新设计方法,这种设汁方法首先从系统设计人手,在顶层进行功能方框图的划分和结构设计。

在方框图一级进行仿真、纠错.并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行驶证。

然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路(ASIC)。

设计者的工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现。

由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避免设计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次性成功率。

由于现代电子产品的复杂度和集成度的日益提高,一般分离的中小规模集成电路组合已不能满足要求,电路设计逐步地从中小规模芯片转为大规模、超大规模芯片,具有高速度、高集成度、低功耗的可编程朋IC器件已蓬。

掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。

为了进一步了解计算机工作组成原理与系统结构,深入学习EDA技术,用VHDL技术,用VHDL语言去控制将会使我们对本专业知识可以更好地掌握。

熟悉QUARUSII软件的应用。

熟悉EDA实验开发系统的基本使用。

学习用VHDL基本单元电路的时间应用。

进一步掌握EDA的多层次设计方法。

 

1.4设计总体思路

基于FPGA利用VHDL语言进行编程然后利用其生成模块化然后利用模块再连接成顶层文件。

完成该万年历时,需要用一个可以选择计数器,在这里面可以完成对28、29、30、31天的计数功能,接下来需要一个十二进制计数器来进行月份的计数,然后就是利用一个一百进制的计数器来进行年数的计数,最后是利用一个七进制计数器来进行星期的计时。

到此为止就完成了我们所需要的几个计数模块。

通过一个控制模块来判断该年是不是闰年以及该月是大月或者小月。

数码管的显示我们通过一个数码驱动模块来实现。

对于特别日子的提醒功能,同样应用一个报警模块然后通过一个喇叭进行提醒。

通过这些模块的组合,我们可以完成具有闰年补偿功能的万年历的设计,同时可以通过控制键对时间和星期进行调整。

 

1.5设计框图

控制模块

 

二、单元电路设计

2.1天模块

程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitytianis

port(clk,s1,s2:

instd_logic;

d1,d2:

outstd_logic_vector(3downto0);

cout:

outstd_logic);

endtian;

architectureoneoftianis

signalq11,q22:

std_logic_vector(3downto0);

signals1s2:

std_logic_vector(1downto0);

begin

process(clk,s1,s2)

begin

ifclk'eventandclk='1'then

q11<=q11+1;

ifq11=9thenq11<=(others=>'0');

q22<=q22+1;

endif;

s1s2<=s1&s2;

cases1s2is

when"00"=>ifq22=3andq11=1

thenq22<="0000";q11<="0001";cout<='1';

elsecout<='0';

endif;

when"01"=>ifq22=3andq11=0

thenq22<="0000";q11<="0001";cout<='1';

elsecout<='0';

endif;

when"10"=>ifq22=2andq11=8

thenq22<="0000";q11<="0001";cout<='1';

elsecout<='0';

endif;

when"11"=>ifq22=2andq11=9

thenq22<="0000";q11<="0001";cout<='1';

elsecout<='0';

endif;

whenothers=>null;

endcase;

endif;

endprocess;

d1<=q11;d2<=q22;

end;

模块图:

2.2月模块

程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityyueis

port(clk,run:

instd_logic;

m1,m2:

outstd_logic_vector(3downto0);

a,b,cout:

outstd_logic);

endyue;

architectureoneofyueis

signalq1:

std_logic_vector(3downto0):

="0001";

signalq2:

std_logic_vector(3downto0):

="0000";

signalq2q1:

std_logic_vector(7downto0);

begin

process(clk)

begin

ifclk'eventandclk='1'then

q1<=q1+1;

ifq1=9thenq1<=(others=>'0');

q2<=q2+1;

endif;

ifq2=1andq1=2then

q2<="0000";q1<="0001";cout<='1';

elsecout<='0';

endif;

endif;

q2q1<=q2&q1;

caseq2q1is

when"00000001"=>a<='0';b<='0';

when"00000010"=>ifrun='1'then

a<='1';b<='1';elsea<='1';b<='0';

endif;

when"00000011"=>a<='0';b<='0';

when"00000100"=>a<='0';b<='1';

when"00000101"=>a<='0';b<='0';

when"00000110"=>a<='0';b<='1';

when"00000111"=>a<='0';b<='0';

when"00001000"=>a<='0';b<='0';

when"00001001"=>a<='0';b<='1';

when"00010000"=>a<='0';b<='0';

when"00010001"=>a<='0';b<='1';

when"00010010"=>a<='0';b<='0';

whenothers=>null;

endcase;

endprocess;

m1<=q1;m2<=q2;

end;

模块图:

2.3年模块

程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitynianis

port(clk:

instd_logic;

y1,y2:

outstd_logic_vector(3downto0);

run:

outstd_logic);

endnian;

architectureoneofnianis

signalq1,q2:

std_logic_vector(3downto0);

signalq3:

std_logic_vector(3downto0):

="0000";

signalrun1:

std_logic:

='1';

begin

process(clk)

begin

ifclk'eventandclk='1'then

q1<=q1+1;

ifq1=9thenq1<=(others=>'0');

q2<=q2+1;

endif;

ifq2=9andq1=9then

q2<="0000";q1<="0000";

endif;

endif;

endprocess;

process(clk)

begin

ifclk'eventandclk='1'then

q3<=q3+1;

ifq3=3thenq3<=(others=>'0');

run1<='1';

elserun1<='0';

endif;

endif;

y1<=q1;y2<=q2;run<=run1;

endprocess;

end;

模块图:

2.4星期模块

程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityxingqiis

port(clk:

instd_logic;

q1:

outstd_logic_vector(3downto0));

endxingqi;

architectureoneofxingqiis

signalq11:

std_logic_vector(3downto0);

begin

process(clk)

begin

ifclk'eventandclk='1'then

q11<=q11+1;

ifq11=6then

q11<="1000";

elsifq11>7then

q11<="0001";

endif;

endif;

endprocess;

q1<=q11;

end;

模块图:

2.5提醒模块

程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityalarmis

port(clk:

instd_logic;

T1,T2,yue1,yue2:

instd_logic_vector(3downto0);

alarm:

outstd_logic);

endalarm;

architectureoneofalarmis

signalq11:

std_logic_vector(15downto0);

begin

process(T1,T2,yue1,yue2)

begin

q11<=yue2&yue1&T2&T1;

caseq11is

when"0000100000000001"=>alarm<=clk;

when"0000010100000001"=>alarm<=clk;

when"0000101000000001"=>alarm<=clk;

whenothers=>null;

endcase;

endprocess;

endone;

模块图

2.6控制模块

程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitytiaoshiis

port(k1,k2:

instd_logic;

m1,m2,m3,m4:

instd_logic;

n1,n2,n3,n4:

outstd_logic);

endentity;

architectureoneoftiaoshiis

signalq:

std_logic_vector(3downto0);

begin

process(k1)

begin

ifk1'eventandk1='1'thenq<=q+1;

ifq=4thenq<="0000";

endif;

endif;

caseqis

when"0000"=>n1<=m1;n2<=m2;n3<=m3;n4<=m4;

when"0001"=>n1<=k2;n2<='0';n3<='0';n4<='0';

when"0010"=>n1<='0';n2<=k2;n3<='0';n4<='0';

when"0011"=>n1<='0';n2<='0';n3<=k2;n4<='0';

when"0100"=>n1<='0';n2<='0';n3<='0';n4<=k2;

--when"0101"=>n1<='0';n2<='0';n3<='0';n4<='0';

whenothers=>NULL;

endcase;

endprocess;

end;

模块图:

2.7显示模块

程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYledIS

PORT(CLK:

INSTD_LOGIC;

d0,d1,d2,d3,d4,d5,d6,d7:

inSTD_LOGIC_VECTOR(3DOWNTO0);

SG:

OUTSTD_LOGIC_VECTOR(6DOWNTO0);

BT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

END;

ARCHITECTUREoneOFledIS

SIGNALCNT8:

STD_LOGIC_VECTOR(2DOWNTO0);

SIGNALA:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

P1:

PROCESS(CNT8)

BEGIN

CASECNT8IS

WHEN"000"=>BT<="00000001";A<=d0;

WHEN"001"=>BT<="00000010";A<=d1;

WHEN"010"=>BT<="00000100";A<=d2;

WHEN"011"=>BT<="00001000";A<=d3;

WHEN"100"=>BT<="00010000";A<=d4;

WHEN"101"=>BT<="00100000";A<=d5;

WHEN"110"=>BT<="01000000";A<=d6;

WHEN"111"=>BT<="10000000";A<=d7;

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESSP1;

P2:

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'

THENCNT8<=CNT8+1;

ENDIF;

ENDPROCESSP2;

P3:

PROCESS(A)

BEGIN

CASEAIS

WHEN"0000"=>SG<="0111111";WHEN"0001"=>SG<="0000110";

WHEN"0010"=>SG<="1011011";WHEN"0011"=>SG<="1001111";

WHEN"0100"=>SG<="1100110";WHEN"0101"=>SG<="1101101";

WHEN"0110"=>SG<="1111101";WHEN"0111"=>SG<="0000111";

WHEN"1000"=>SG<="1111111";WHEN"1001"=>SG<="1101111";

WHEN"1010"=>SG<="1110111";WHEN"1011"=>SG<="1111100";

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2