1、基于FPGA的具有闰年补偿功能的数字日历课程设计任务书课程名称: EDA技术题目:基于FPGA的具有闰年补偿功能的数字日历 设计内容与设计要求一设计内容:用FPGA为核心器件,用VHDL为设计手段设计制作一个具有大小月份自动调节和闰年补偿功能的数字日历,具体设计要求如下:1、用7个数码管从左到右分别显示年(后两位)、月、日和星期;星期与日之间隔开一位。2、年计数从00到99循环;月、日的计数显示均从1开始,并具备大小月份自动调节和闰年补偿功能,即日期的计数实现大月31天,小月30天,二月28天或29天(闰年)的自动调整(注意:7、8月均为大月)。3、对星期的计数显示从1到6再到日(日用8代替)
2、;注意星期应和实际日历相吻合。4、具备日历调整功能和节日提醒功能。要求采用分层次描述方式,且用图形输入和文本输入混合方式建立描述文件。二、设计要求:1、设计思路清晰,给出整体设计框图;2、用VHDL设计各单元电路,完成其功能仿真和编译并生成低层模块;3、在Quartus中完成顶层设计并编译通过;4、在Quartus中完成设计下载并调试电路;5、写出设计报告; 主要设计条件1、提供EDA设计环境和EDA软件Quartus;2、提供 EDA实验箱和CPLD下载装置; 说明书格式1、课程设计报告书封面;2、任务书;3、说明书目录;4、设计总体思路;5、单元电路设计;6、总电路设计;7、设计调试体会与
3、总结;8、附录;9、参考文献。注意:每个人的课程设计报告说明书不得雷同! 进 度 安 排 第一周:星期一 上午 安排任务、讲课。星期一下午星期五 查资料、设计第二周: 星期一星期二 设计输入和设计仿真四楼EDA室 星期三 低层编译和设计下载四楼EDA室 星期四 调试电路、写总结报告; 星期五 答辩。 参 考 文 献EDA技术实用教程第四版 潘松主编电子技术与EDA技术课程设计指导 郭照南主编 中南大学出版社 电子线路设计、实验、测试 谢自美主编华中理工出版社。一、设计总体思路1.1课程设计内容-11.2课程设计要求-11.3课程设计的意义-21.4设计总体思路-21.5设计框图-3二 单元电路
4、设计2.1天模块-42.2月模块-52.3年模块. -72.4星期模块-82.5提醒模块-92.6控制模块-102.7显示模块-11三、总电路设计-13四、电路调试-14五、设计调试总结与体会-16六、附录-17七、参考文献-18附:课程设计评分表一、设计总体思路 1.1设计总体内容用FPGA为核心器件,用VHDL为设计手段设计制作一个具有大小月份自动调节和闰年补偿功能的数字日历,具体设计要求如下:1、用7个数码管从左到右分别显示年(后两位)、月、日和星期;星期与日之间隔开一位。2、年计数从00到99循环;月、日的计数显示均从1开始,并具备大小月份自动调节和闰年补偿功能,即日期的计数实现大月3
5、1天,小月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代表了当今电子设计技术的最新发展方向,利用ED
6、A工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在汁算机上自动处理完成。设计者采用的设计方法是一种高层次的”自顶向下”的全新设计方法,这种设汁方法首先从系统设计人手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行驶证。然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路(ASIC)。设计者的工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的
7、实现。由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避免设计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次性成功率。 由于现代电子产品的复杂度和集成度的日益提高,一般分离的中小规模集成电路组合已不能满足要求,电路设计逐步地从中小规模芯片转为大规模、超大规模芯片,具有高速度、高集成度、低功耗的可编程朋IC器件已蓬。掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。为了进一步了解计算机工作组成原理与系
8、统结构,深入学习EDA技术,用VHDL技术,用VHDL语言去控制将会使我们对本专业知识可以更好地掌握。熟悉QUARUS II软件的应用。熟悉EDA实验开发系统的基本使用。学习用VHDL基本单元电路的时间应用。进一步掌握EDA的多层次设计方法。1.4设计总体思路基于FPGA利用VHDL语言进行编程然后利用其生成模块化然后利用模块再连接成顶层文件。完成该万年历时,需要用一个可以选择计数器,在这里面可以完成对28、29、30、31天的计数功能,接下来需要一个十二进制计数器来进行月份的计数,然后就是利用一个一百进制的计数器来进行年数的计数,最后是利用一个七进制计数器来进行星期的计时。到此为止就完成了我
9、们所需要的几个计数模块。通过一个控制模块来判断该年是不是闰年以及该月是大月或者小月。数码管的显示我们通过一个数码驱动模块来实现。对于特别日子的提醒功能,同样应用一个报警模块然后通过一个喇叭进行提醒。通过这些模块的组合,我们可以完成具有闰年补偿功能的万年历的设计,同时可以通过控制键对时间和星期进行调整。1.5设计框图控 制 模 块二、单元电路设计 2.1天模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity tian is port(clk,s1,s2:in std_logic;
10、d1,d2:out std_logic_vector(3 downto 0); cout:out std_logic);end tian;architecture one of tian is signal q11,q22:std_logic_vector(3 downto 0); signal s1s2:std_logic_vector(1 downto 0);begin process(clk,s1,s2) begin if clkevent and clk=1 then q11=q11+1; if q11=9 then q110); q22=q22+1; end if; s1s2if q
11、22=3 and q11=1 then q22=0000;q11=0001;cout=1; else coutif q22=3 and q11=0 then q22=0000;q11=0001;cout=1; else coutif q22=2 and q11=8 then q22=0000;q11=0001;cout=1; else coutif q22=2 and q11=9 then q22=0000;q11=0001;cout=1; else coutnull; end case; end if; end process; d1=q11;d2=q22;end;模块图:2.2月模块程序:
12、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yue is port(clk,run:in std_logic; m1,m2:out std_logic_vector(3 downto 0); a,b,cout:out std_logic);end yue;architecture one of yue is signal q1:std_logic_vector(3 downto 0):=0001; signal q2:std_logic_vector(3 downto 0):=0
13、000; signal q2q1:std_logic_vector(7 downto 0);begin process(clk) begin if clkevent and clk=1 then q1=q1+1; if q1=9 then q10); q2=q2+1; end if; if q2=1 and q1=2 then q2=0000;q1=0001;cout=1; else cout=0; end if; end if; q2q1a=0;bif run=1 then a=1;b=1;else a=1;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;ba=0;ba
14、=0;ba=0;bnull; end case; end process; m1=q1;m2=q2;end;模块图:2.3年模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity nian is port(clk:in std_logic; y1,y2:out std_logic_vector(3 downto 0); run:out std_logic);end nian;architecture one of nian is signal q1,q2:std_logic_vec
15、tor(3 downto 0); signal q3:std_logic_vector(3 downto 0):=0000; signal run1:std_logic:=1;begin process(clk) begin if clkevent and clk=1 then q1=q1+1; if q1=9 then q10); q2=q2+1; end if; if q2=9 and q1=9 then q2=0000;q1=0000; end if; end if; end process; process(clk) begin if clkevent and clk=1 then q
16、3=q3+1; if q3=3 then q30); run1=1; else run1 =0; end if; end if; y1=q1;y2=q2;run=run1; end process; end;模块图:2.4星期模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xingqi is port(clk:in std_logic; q1:out std_logic_vector(3 downto 0);end xingqi;architecture one of xi
17、ngqi is signal q11:std_logic_vector(3 downto 0);begin process(clk) begin if clkevent and clk=1 then q11=q11+1; if q11=6 then q117 then q11=0001; end if; end if; end process; q1=q11;end;模块图:2.5提醒模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity alarm isport(clk:in
18、std_logic; T1,T2,yue1,yue2:in std_logic_vector(3 downto 0); alarm:out std_logic);end alarm; architecture one of alarm is signal q11:std_logic_vector(15 downto 0);begin process(T1,T2,yue1,yue2) begin q11alarmalarmalarmnull; end case; end process;end one;模块图:2.6控制模块程序:library ieee;use ieee.std_logic_1
19、164.all;use ieee.std_logic_unsigned.all;entity tiaoshi isport(k1,k2:in std_logic; m1,m2,m3,m4:in std_logic;n1,n2,n3,n4:out std_logic);end entity;architecture one of tiaoshi issignal q:std_logic_vector(3 downto 0); beginprocess(k1) begin if k1event and k1=1 then q=q+1; if q=4 then qn1=m1;n2=m2;n3=m3;
20、n4n1=k2;n2=0;n3=0;n4n1=0;n2=k2;n3=0;n4n1=0;n2=0;n3=k2;n4n1=0;n2=0;n3=0;n4n1=0;n2=0;n3=0;n4NULL;end case;end process;end;模块图:2.7显示模块程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY led IS PORT ( CLK : IN STD_LOGIC; d0,d1,d2,d3,d4,d5,d6,d7:in STD_LOGIC_VECTOR(3 DOWNTO
21、 0); SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); BT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END;ARCHITECTURE one OF led IS SIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINP1:PROCESS( CNT8 ) BEGIN CASE CNT8 IS WHEN 000 = 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) BEGIN IF CLKEVENT AND CLK = 1 THEN CNT8 SG SG SG SG SG SG SG SG SG SG SG SG = 1111100;
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2