基 于 VHDL 的 万历 设 计(EDA实验报告) .doc
《基 于 VHDL 的 万历 设 计(EDA实验报告) .doc》由会员分享,可在线阅读,更多相关《基 于 VHDL 的 万历 设 计(EDA实验报告) .doc(31页珍藏版)》请在三一办公上搜索。
1、EDA技术实用教程基 于 VHDL 的 万 年 历 设 计(实验报告) 学 校: 苏州大学 院 部: 电子信息学院 年 级: 2010级 专 业: 通信工程 姓 名: 王国盛 2012年12月28日前言本设计为实现一个多功能的万年历,具有年、月、日、时、分、秒计时并显示的功能,顾名思义,其满量程计时为一万年;具有校对功能,能够对初始的时间进行人为的设定。本设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计具有万年历功能的硬件电路,在QuartusII软件设计环境下,采用自顶向下的设计思路,分别对各个基础模块进行创建,通过各个基础模块的组合和连接来构建上层原理图,完成基于VHDL万
2、年历设计。 系统目标芯片采用EP1K30TC144-3,由时钟模块、控制模块、计时模块、数据译码模块、显示模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,将硬件编写程序下载到试验箱上,选择模式3进行功能验证。本系统能够完成年、月、日和时、分、秒的分别显示,由按键输入进行万年历的校时功能。 目录1 实验概述41.1 EDA技术41.2 QuartusII的使用41.3 模块化设计41.4 分析、解决问题42 实验内容与要求52.1实验内容52.1实验说明52.3实验要求63 实验原理73.1设计思想73.2设计原理图83.3工作工程94 实验结果104.1VHDL程序与仿真10
3、4.1.1秒和分模块10 4.1.2小时模块114.1.3日(天)模块124.1.4月份模块154.1.5年模块174.1.6校时模块194.1.7显示模式切换模块214.2顶层设计与仿真234.3下载与验证254.3.1电路结构选择254.3.2端口配置264.3.3实际电路验证295 实验小结30参考文献311 、实验概述1.1 EDA技术EDA(Electronic Design Automation),即电子设计自动化,是指利用计算机完成电子系统的设计。它的主要特征及核心是“自顶向下”的设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真
4、、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具生成具体门电路的网表。由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。1.2 QuartusII的使用 通过实验,熟悉并掌握QuartusII软件的使用,熟悉该软件工具的环境。除了学习利用VHDL语言编写程序实现硬件电路以外,还要熟练的使用原理图输入的方法进行硬件设计,具体是对每个模块形成一个功能元件,通过元件的连接来实现系统的功能,而不是通过VHDL语言的元件例化程序来完成,不仅提高了效率
5、,而且思想原理也更加的清晰。1.3 模块化设计掌握年、月、日、时、分、秒以及控制部分的各功能模块程序设计的原理,进而理解万年历的设计原理,学习并理解模块化设计的方法与思想。用VHDL语言编写各模块程序,进一步了解和掌握各个程序语言,知道编程中的注意事项,提高编程的熟练程度。1.4 分析、解决问题通过本实验设计,理论联系实际,巩固所学理论知识,并且提高自己通过所学理论分析、解决实际问题的能力。进一步加深对VHDL设计的了解与认识,体会EDA的巨大作用,了解进行硬件系统设计的整个流程,对生活工作中的电气设备有了更深一层次的了解,对电气工程专业有了更多兴趣。2、实验内容与要求2.1实验内容设计具有如
6、下功能的万年历:1)能进行正常的年、月、日和时、分、秒的日期和时间计时功能,按键KEY1用来进行模式切换,当KEY1=1时,显示年、月、日;当KEY1=0时,显示时、分、 秒。2)能利用实验系统上的按键实现年、月、日和时、分、秒的校对功能。3)用层次化设计方法设计该电路,编写各个功能模块的程序。4)仿真报时功能,通过观察有关波形确认电路设计是否正确。5)完成电路设计后,用实验系统下载验证设计的正确性。2.2实验说明万年历的设计思路与多功能时钟的设计思路相似。多功能时钟的各功能模块及相互之间的连接如下图1所示 图1多功能时钟系统原理框图 年、月、日和时、分、秒的显示格式如图2所示。年、月、日同时
7、显示,时、分、秒同时显示,通过显示模式切换来分别显示。 年/时 月/分 日/秒 图2万年历显示格式2.3实验报告要求1)分析系统的工作原理。 2)画出顶层原理图,写出顶层文件源程序。3)写出各功能模块的源程序。4)仿真各功能模块,画出仿真波形。5)书写实验报告应结构合理,层次分明。3、实验原理3.1设计思想按照模块化的设计思想,要实现万年历的基础功能,必定要包含年、月、日和时、分、秒的功能模块,其中秒和分可以用六十进制计数器来实现,时用二十四进制计数器实现,月用十二进制计数器来实现,年的低两位和高两位都是一百进制计数器,比较特殊的是天的计数器,因为它有四种情况,大月三十一天,小月三十天,平年二
8、月二十八天,闰年二月有二十九天,所以年和月的模块对天的计数都有影响,需要从年和月的输出端引出控制信号来控制天的计数。同时每个计数器都有显示输出端和进位输出端,同时低级别(如秒)的进位输出要给较高级别(如分)的时钟输入端,以此类推,采用串行工作方式进行连接。从而完成了基础的计时和显示的功能。再按照由基础功能到增强功能的设计思路,要实现校时功能,要在之前电路的基础之上增加一个校时控制模块,增加两个按键来实现控制,按键1来选择校对哪一个模块,按键2选择校对到何值检测到按键2的一个上升沿,对应的计数器加1。除此之外还需要有显示模式的切换的功能,需要增加一个模式切换的控制模块,通过增加一个按键3来实现控
9、制,是显示年月日还是时分秒。3.2实验原理图万年历时分秒部分的原理图如下图所示,年月日部分与之同理,通过控制可以进行切换。译码驱动译码驱动译码驱动译码驱动译码驱动译码驱动时十位计数时个位计数分十位计数分个位计数秒十位计数秒个位计数校时控制电路校分控制电路分频器电路分频器电路晶体振荡器电路1HZ图3万年历实验原理图图4万年历实验结构框图图5万年历实验结构局部图原理图说明: 如图4、5所示,K1键是选择万年历工作的模式,K2键提供上升沿(时钟功能)来使各计数模块加一,从而实现校时的功能。LED灯起指示作用。 模式0:正常计时显示 -K1不按,LED1到LED5都不亮 模式1:调整分增加 -K1按下
10、一次,LED1亮其余四个不亮 模式2:调整时增加 - K1按下两次,LED2亮其余四个不亮 模式3:调整日增加 - K1按下三次,LED3亮其余四个不亮 模式4:调整月增加 - K1按下四次,LED4亮其余四个不亮 模式5:调整年增加 - K1按下五次,LED5亮其余四个不亮 CLK是外部1Hz输入时钟,作为秒的时钟输入,驱动整个万年历工作运行。 K3键是显示模式的选择,显示时分秒时,LEDSHUCHUMOSHI指示灯亮,显示年月日时,LEDSHUCHUMOSHI指示灯灭。3.3工作过程 当1Hz时钟信号从CLK输入端输入时,K1,K2,K3都没有按下时,系统从零(闰年)开始处于正常的计时模式
11、,显示时分秒部分,LEDSHUCHUMOSHI指示灯亮。低位计满归零并且向高位进1,如果月份是二月,则天计满29就向月进1。如果按下按键3,LEDSHUCHUMOSHI指示灯不亮,显示年月日部分。如果此时按一下按键1,那么万年历停止计时,工作于模式1,再通过按键2对分进行校时,通过同样的方法可以对时、日、月、年进行校时。当校时完毕,需要万年历重新计时工作时,通过按下键1使LED1到LED5都不亮时,系统工作与正常计时模式。4、实验结果4.1VHDL程序与仿真4.1.1秒与分模块秒与分模块为六十进制的计数器源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
12、USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT60 ISPORT(CLK:IN STD_LOGIC;Q1,Q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT60;ARCHITECTURE ONE OF CNT60 ISSIGNAL Q11,Q22:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THENQ11=Q11+1;IF Q11=9 THEN Q110);Q22=Q22+1;EN
13、D IF;IF Q22=5 AND Q11=9 THEN Q22=0000;Q11=0000;COUT=1;ELSE COUT=0;END IF;END IF;END PROCESS;Q1=Q11;Q2=Q22;END;仿真结果:图6 60进制计数器仿真图如上图所示当Q1、Q2计满60时,Q1、Q2都归零同时有一个进位输出脉冲,完成了六十进制计数器的功能,设计正确。4.1.2小时模块时模块为24进制计数器。源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT24 ISPOR
14、T(CLK:IN STD_LOGIC; Q1,Q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT24;ARCHITECTURE ONE OF CNT24 ISSIGNAL Q11,Q22:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THENQ11=Q11+1;IF Q11=9 THEN Q110);Q22=Q22+1;END IF;IF Q22=2 AND Q11=3 THEN Q22=0000;Q11=0000;CO
15、UT=1;ELSE COUT=0;END IF;END IF;END PROCESS;Q1=Q11;Q2=Q22;END;仿真结果: 图7 24进制计数器仿真图如上图所示当Q1、Q2计满24时,Q1、Q2都归零同时有一个进位输出脉冲,完成了六十进制计数器的功能,设计正确。4.1.3日(天)模块日模块有四种情况,大月为31进制计数器,小月为30进制计数器,平年二月为28进制计数器,闰年二月为29进制计数器,需要有一个二位判断输入信号来进行进制数的选择。源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.
16、ALL;ENTITY DAY ISPORT( PANDUAN :IN STD_LOGIC_VECTOR(1 DOWNTO 0);-两位判断输入信号 CLK :IN STD_LOGIC; CQ1 :OUT STD_LOGIC_VECTOR (3 DOWNTO 0); CQ2 :OUT STD_LOGIC_VECTOR (3 DOWNTO 0); COUT :OUT STD_LOGIC);END;ARCHITECTURE ONE OF DAY ISSIGNAL CQ3,CQ4:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL PAN:STD_LOGIC_VECTOR(1 DO
17、WNTO 0);BEGINPROCESS(CLK,PANDUAN)BEGINIF CLKEVENT AND CLK=1 THEN -上升沿CQ3=CQ3+1;IF CQ3=9 THEN CQ30);CQ4=CQ4+1;END IF;PANIF CQ3=0001 AND CQ4=0011 -判断信号为00时为31进 THEN CQ3=0001;CQ4=0000;COUT=1; - 制计数器ELSE COUTIF CQ3=0000 AND CQ4=0011 -判断信号为01时为30进THEN CQ3=0001;CQ4=0000;COUT=1; - 制计数器ELSE COUTIF CQ3=1000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 计实验报告 EDA 实验 报告

链接地址:https://www.31ppt.com/p-4147896.html