EDA课程设计万年历

上传人:工**** 文档编号:458965094 上传时间:2023-01-06 格式:DOC 页数:24 大小:4.14MB
返回 下载 相关 举报
EDA课程设计万年历_第1页
第1页 / 共24页
EDA课程设计万年历_第2页
第2页 / 共24页
EDA课程设计万年历_第3页
第3页 / 共24页
EDA课程设计万年历_第4页
第4页 / 共24页
EDA课程设计万年历_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《EDA课程设计万年历》由会员分享,可在线阅读,更多相关《EDA课程设计万年历(24页珍藏版)》请在金锄头文库上搜索。

1、目录一、设计任务和要求1二、总体框图1三、选择器件2四、功能模块341日模块34.2月模块54.3年模块74.4星期模块84.5扫描模块94.6数码管模块114.7三八译码器124.8分频器模块14五总体电路设计图和硬件实现145.1程序仿真电路145.2硬件实现18六设计中存在的问题21七、深入研究21八、心得体会21简易万年历的设计一、设计任务和要求1.用七个七段数码管显示年的低两位,月,日和星期,并具有闰年判断功能;2.可以手动调整年,月,日,星期;3.在Quartus II 6.0中编写VHDL程序实现年,月,日星期各模块的功能;4.编写顶层程序将各模块连接起来实现万年历调时功能。二、

2、总体框图图1 总体框图上图为总体设计框图,主要有计数模块、年月日模块、分频模块和扫描译码显示模块组成。分频模块在外部时钟信号的作用下实现分频后将其分频信号分别输出给计数模块和扫描模块。在分频信号(日脉冲)作用下计数模块实现计数功能实现年月日计数功能,但其计数功能是在以BCD码形式所记录的。这就需要扫描电路去扫描计数模块所输出的时间在500HZ脉冲下经过译码器将其译成共阴数码管所对应的二进制数进行显示,最终显示的为年月日。外部时间控制信号可控制时间的校验。三、选择器件1、PC机一台。2、CPLD/FPGA适配器板:标准配置EPF10K10LC84-4接口板,下载接口是数字芯片的下载接口(DIGI

3、TAL JTAG),主要用于CPLD/FPGA芯片的数据下载。3、实验箱:装有七段数码管及蜂鸣器等,七段数码管真值表及字型如下表1 七段数码管真值表输入输出字型DCBA00001111110000101100000010110110100111111001010001100110101101101101101011111011111100001000111111110011111011七段数码管字形如下:图2 数码管字型图四、功能模块41日模块1.模块图图3 日模块图2.仿真图 图4 日模块仿真图clk:输入脉冲;pan:输入月的判断信号,0表示大月为31天,1表示小月30天,2表示平月为28

4、天,3表示闰月为29天;T1:日的个位;T2:日的十位;cout:进位信号,当pan=0的时候T2T1=31时产生进位,cout=1,当pan=1的时候T2T1=30时产生进位信号,cout=1,当pan=2的时候T2T1=28时产生进位,cout=1,当pan=3的时候T2T1=29时产生进位,cout=1。3.程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TIAN IS PORT(CLK:IN STD_LOGIC; pan: in std_logic_vector(1 do

5、wnto 0); T1,T2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT:OUT STD_LOGIC); END;ARCHITECTURE ONE OF TIAN ISSIGNAL Q1,Q2:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL AB:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN PROCESS (CLK,pan) BEGIN IF (CLKEVENT AND CLK=1 )THEN 检测时钟上升沿 Q1=Q1+1; Q1开始计数 IF (Q1=9 )THEN Q1=0000; Q2=Q2+1; Q1

6、=9时,Q2开始计数且Q1清零 END IF; -ABIF (Q2=3 )AND Q1=1 THEN Q2=0000;Q1=0000;COUT=1; 当pan=00时,如果Q2=3,Q1=1,Q2清零,Q1从1开始计数并输出进位信号ELSE COUTIF Q2=3 AND Q1=0 THEN Q2=0000;Q1=0001;COUT=1; 当pan=01时,如果Q2=3,Q1=0,Q2清零,Q1从1开始计数并输出进位信号ELSE COUTIF Q2=2 AND Q1=8 THEN Q2=0000;Q1=0001;COUT=1; 当pan=10时,如果Q2=2,Q1=9,Q2清零,Q1从1开始计

7、数并输出进位信号ELSIF Q2=2 AND Q1=9 THEN Q2=0000;Q1=0001;COUT=1; 当pan=11时,如果Q2=2,Q1=8,Q2清零,Q1从1开始计数并输出进位信号ELSE COUTNULL;END CASE;END IF;END PROCESS;T1=Q1;T2=Q2;END ONE;4.2月模块1.模块图图5 月模块图2.仿真图图6 月模块仿真图clk:输入脉冲;pan:输出月的判断信号,1、3、5、7、8、10、12为大月输出pan=00,4、6、9、11为小月输出pan=01,闰年时2月为闰月输出pan=11,否则输出pan=10;Y1:月的个位;Y2:

8、月的十位;cout:进位信号,当Y2Y1等于12时输出cout=1;run:输入闰年信号,run=1时表示闰年,run=0时表示不是闰年。3.程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY yue IS PORT(CLK,run:IN STD_LOGIC; COUT:OUT STD_LOGIC; pan: out std_logic_vector(1 downto 0); y1,y2: out std_logic_vector(3 downto 0); END;ARCHITECT

9、URE ONE OF yue ISSIGNAL Q1,Q2:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL q3:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS (CLK,run) BEGIN IF (CLKEVENT AND CLK=1 )THEN 检测时钟上升沿 Q1=Q1+1; Q1开始计数 IF (Q1=9 )THEN Q1=0000; Q2=Q2+1; Q1=9时,Q2开始计数且Q1清零 END IF; if q1=2 and q2=1 then q1=0001;q2=0000;cout=1; q1=2,q2=1时,q2清

10、零,q1从1开始计数并输出进位信号 else cout=0; end if; end if; q3panif run=1 then pan=11;else panpanpanpanpanpanpanpanpanpanpanpan=00;END CASE;END PROCESS;y1=Q1;y2=Q2;END ONE;4.3年模块1.模块图图7 年模块图2.仿真图图8 年模块仿真图clk:输入脉冲;N1:年的个位;N2:年的十位;run:闰年信号输出,run=1时表示闰年,run=0时表示不是闰年,从N2N1=00开始,每4年输出一个闰年信号run=1。3.程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGI

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号