基于VHDL数字钟的设计和分析范文.docx
- 文档编号:28522879
- 上传时间:2023-07-18
- 格式:DOCX
- 页数:32
- 大小:944.69KB
基于VHDL数字钟的设计和分析范文.docx
《基于VHDL数字钟的设计和分析范文.docx》由会员分享,可在线阅读,更多相关《基于VHDL数字钟的设计和分析范文.docx(32页珍藏版)》请在冰豆网上搜索。
基于VHDL数字钟的设计和分析范文
通信工程专业课程设计Ⅱ任务书
院(系)电信工程系专业班级通信工程专业071班学生姓名王飞
一、课程设计Ⅱ题目数字钟的设计
二、课程设计Ⅱ工作自2010年3月1日起至2010年3月19日止
三、课程设计Ⅱ进行地点:
电信工程系实验室
四、课程设计Ⅱ的内容要求:
设计一个数字时钟,要求显示时(2位),分(2位),秒(2位),具体要求是:
具有时分秒计数显示功能,以24小时循环计时;数码管动态显示时,分,秒;具有清零,调节小时,分钟,以及整点报时
指导教师系(教研室)通信工程教研室
接受任务开始执行日期2010年3月1日学生签名
基于VHDL的数字钟的设计与分析
魏丽娟
(陕西理工学院电信工程系通信071班,陕西汉中723003)
指导教师:
魏瑞
[摘要]随着基于CPLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息,通信,自动控制用计算机等领域的重要性日益突出。
作为一个学习通信工程专业的学生,我们必须不断的了解更多的新产品信息,这就更加要求我们对EDA有个全面认识。
本程序设计的是基于VHDL的数字时钟,采用EDA作为开发工具,VHDL语言为硬件描述语言,QUARTUSII作为程序的运行平台,所开发的程序经过调试运行,波形仿真验证,初步实现了设计目标。
本程序使用的硬件描述语言VHDL,可以大大降低了硬件数字系统设计的入门级别,让人感觉就是C语言的亲近。
通过本次的课程设计,不但使同学们进一步了解EDA技术在实际中的应用,也使同学们对EDA的综合应用有了更深一步的应用,这次的课程设计给同学们以后的学习与工作中有了一个全面的指导作用.
[关键词]EDA技术,VHDL语言,数字时钟,报警器,译码显示,时间调节
[中图分类号]TN702[文献标志码]A
DesignofcymometerdisplayedbyLCD
Weilijuan
(Grade07,Class1,MajorofCommunicationEngineering,Dept.ofE.I.ofShaanxiUniversityofTechnology,Hanzhong723003,China)
Tutor:
WeiRui
[Abstract]WiththeCPLD-basedEDAtechnologyandexpansionofapplicationfieldsandin-depth,EDAtechnologyinelectronicinformation,communication,automaticcontrolareassuchastheimportanceofcomputerisincreasinglyprominent.Asalearningcommunicationsengineeringstudents,wemustcontinuallylearnmoreaboutnewproductinformation,itisevenmorerequiresustohaveafullunderstandingoftheEDA.TheprogramdesignisbasedonVHDLdigitalclock,usingEDAasadevelopmenttool,VHDLlanguageforhardwaredescriptionlanguage,QUARTUSIIasaprogramrunningplatform,developedbytheprogramtorunthroughthedebugging,waveformsimulation,preliminarydesigngoalsachieved.ThisprogramusesthehardwaredescriptionlanguageVHDL,cangreatlyreducethehardwareoftheentry-leveldigitalsystemdesign,peoplefeelthatisclosertoClanguage.Throughthiscurriculumdesign,notonlythestudentsabetterunderstandingofEDAtechnologyinpracticalapplication,butalsosothatstudentshaveacomprehensiveapplicationofEDAdeeperapplications,thiscoursedesignedforstudentstostudyandworkafterChinahasacomprehensiveguide.
[Keywords]EDATechnologyVHDLlanguageDigitalClockAlarmDecodedisplay
TimeDebugging
[CLC]TN702
I.摘要………………………………………………………III
II.Astract……………..………………………….………….IV
1.绪论…………………………………………………...……2
1.1课题背景…………………………………………………3
1.2系统总体设计……………………………………………4
2.单元模块的设计……………………………..….…………7
2.1秒计数器的模块…………………………….….………..7
2.2分计数器的模块………………………….……………..8
2.3时计数器的模块……………………………………….10
2.4整点报时器模块……………………………………….12
2.5调时调分模块………………...………………………..15
2.6LED显示译码器模块………………...………………..17
3.顶层模块设计……………………………………...…….19
4.结论………………………………………………………27
参考文献………………………………………...…………26
附录………………………………………………………...30
1.绪论
2.数字钟是一种用数字电路实现时,分,秒计时的装置,与机械性时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。
数字中从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
因此,我们此次设计与制作数字钟就是为了了解数字钟的原理,从而学会制作数字钟,而且通过数字钟的制作进一步了解各种在制作中用到的中小规模集成电路的作用及实现方法。
且由于数字钟包括组合逻辑电路和时序电路,通过它们可以进一步学习与掌握各种组合逻辑电路和时序电路的原理与使用方法。
1.1课题背景
EDA技术的初级培训主要帮助同学们尽快掌握VHDL语言的开发流程和设计方法,以工程实践为例,循序渐进的学习VHDL的集成开发环境,开发流程,以及硬件电路设计等知识。
每次课程都匹配有相关实践训练,每个实践题目都可以通过EDA编程实现编译仿真,再下载到以84—15为主芯片的实验箱上进行验证,学生们可以更好的理解并消化课堂知识,工程实践水平会得到迅速提高。
下面我们来具体介绍一下EDA技术的有关内容.
EDA是电子设计自动化(ElcctronicDesignAutomation)的缩写,是90年代初从CAD(计算机辅助设备),CAM(计算机辅助制造),CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。
EDA技术是以计算机为工具,根据硬件描述语言HDL完成的设计文件,自动的完成逻辑编译,化简,分割,综合及优化,布局布线,仿真以及对特定目标芯片的适配编译和编程下载等工作,典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器,综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL原理图或状态图形描述,针对给定的硬件系统组件,进行编译,优化,转换和综合,最终获得我们欲将实现的功能的描述文件。
综合器在工作前,必须给定要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来,也就是说综合器是软件描述与硬件实现的一座桥梁。
综合过程就是将电路的高级语言描述转换成低级的,可与目标器件CPLD相映射的网表文件。
适配器的功能是将由综合器产生的网表文件配置与指定的目标器件中,产生最终的下载文件。
适配器所选的目标器件(CPLD芯片)必须包含于在综合器中已指定的目标器件系列。
硬件描述语言HDL是相对于一般的计算机软件语言,如:
C,PASCAL而言的HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能,电力结构和连接方式,设计者可利用HDL程序来描述所希望的电子系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应功能的门级或更底层的结构网表文件或下载文件。
硬件描述语言VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage。
它主要用于描述数字系统的结构,行为,功能和接口。
除了还有很多硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似与一般的高级计算机语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体内外部分的概念是VHDL系统设计的基本点。
应用VHDL进行工程设计的优点是多方面的。
其优点是:
与其它硬件描述语言相比,VHDL具有更强的行为描述能力,从而解决了他成为系统设计领域最佳的硬件描述语言,强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证;VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能和可行性,及时可对设计进行仿真模拟;VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能,符合市场需求的大规模系统高效,高速的完成必须有甚至多个代发组共同并行工作才能实现;对于VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表;VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
1.2系统总体设计
如下图所示为EPM7000SLC84-15芯片内的系统方块图.该系统框图由八个模块组成,分别为:
秒、分、时计数模块,分隔符显示模块,整点、整天报时模块,LED动态显示扫描模块,LED显示译码器模块组成。
其工作原理是:
基准脉冲输入信号同时加到秒、分、时、分隔符的脉冲输入端,采用并行计数的方式,秒的进位接到分的使能端上,秒的使能借到分隔符的使能上,分得接到时的使能端上,完成秒、分、时和分隔符的循环计数。
整点报时是根据分的A、B输出同时为0时,整点报时模块输出高电平控制报时。
整天报时是根据时、分得输出都为0时而输出高电平控制整天报时的。
LED显示扫描模块根据输入的扫描信号CKDSP轮流选通秒、分、时、分隔符的8位八段数码管,LED显示译码器完成计数器输出的BCD的译码。
系统设计方案
方案一:
数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。
由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。
通常使用石英晶体振荡器电路构成数字钟。
总体方案设计如下图所示。
方案二:
鉴于我们通信班级已经学习了几种工具语言,我们也可以通过软件编程(例如通过MATLAB语言或者EDA编程语句)来实现本次要的数字时钟。
方案比较:
对比方案一与方案二,我们组决定用第二种方案来实现本次的数字时钟,原因有:
1,EDA语言我们去年实验经常使用,比较熟悉,通过编程语言实现对数字钟的控制相对硬件来说比较容易,更何况其连线简单易于校验。
2,硬件实现起来所用的芯片比较多,连线过于麻烦,而且出现错误后不易检查。
2单元模块的设计
2.1.秒计数器模块
LIBRARYieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
ENTITYsecondIS
PORT(
clk,reset,setmin:
INSTD_LOGIC;
enmin:
OUTSTD_LOGIC;
daout:
outstd_logic_vector(6downto0));
ENDentitysecond;
ARCHITECTUREfunOFsecondIS
SIGNALcount:
STD_LOGIC_VECTOR(6downto0);
SIGNALenmin_1,enmin_2:
STD_LOGIC;
BEGIN
daout<=count;
enmin_2<=(setminandclk);
enmin<=(enmin_1orenmin_2);
process(clk,reset,setmin)
begin
if(reset='0')thencount<="0000000";
elsif(clk'eventandclk='1')then
if(count(3downto0)="1001")then
if(count<16#60#)then
if(count="1011001")then
enmin_1<='1';count<="0000000";
else
count<=count+7;
endif;
else
count<="0000000";
endif;
elsif(count<16#60#)then
count<=count+1;
enmin_1<='0'after100ns;
else
endif;
endif;
endprocess;
endfun;
编译过程:
仿真图如下:
2.2分计数器模块
LIBRARYieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
ENTITYminuteIS
PORT(
clk,clk1,reset,sethour:
INSTD_LOGIC;
enhour:
OUTSTD_LOGIC;
daout:
outstd_logic_vector(6downto0));
ENDentityminute;
ARCHITECTUREfunOFminuteIS
SIGNALcount:
STD_LOGIC_VECTOR(6downto0);
SIGNALenhour_1,enhour_2:
STD_LOGIC;
BEGIN
daout<=count;
enhour_2<=(sethourandclk1);
enhour<=(enhour_1orenhour_2);
process(clk,reset,sethour)
begin
if(reset='0')then
count<="0000000";
elsif(clk'eventandclk='1')then
if(count(3downto0)="1001")then
if(count<16#60#)then
if(count="1011001")then
enhour_1<='1';
count<="0000000";
ELSE
count<=count+7;
endif;
else
count<="0000000";
endif;
elsif(count<16#60#)then
count<=count+1;
enhour_1<='0'after100ns;
else
count<="0000000";
endif;
endif;
endprocess;
ENDfun;
编译过程:
仿真图如下:
2.3.时计数器模块
LIBRARYieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
ENTITYhourIS
PORT(
clk,reset:
INSTD_LOGIC;
daout:
outstd_logic_vector(5downto0));
ENDentityhour;
ARCHITECTUREfunOFhourIS
SIGNALcount:
STD_LOGIC_VECTOR(5downto0);
BEGIN
daout<=count;
process(clk,reset)
begin
if(reset='0')then
count<="000000";
elsif(clk'eventandclk='1')then
if(count(3downto0)="1001")then
if(count<=16#23#)then
count<=count+7;
else
count<="000000";
endif;
elsif(count<16#23#)then
count<=count+1;
else
count<="000000";
endif;
endif;
endprocess;
ENDfun;
编译过程:
仿真图如下:
2.4.整点报时器模块
LIBRARYieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
ENTITYalertIS
PORT(
clk:
INSTD_LOGIC;
dain:
INSTD_LOGIC_VECTOR(6DOWNTO0);
speak:
OUTSTD_LOGIC;
lamp:
OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDalert;
ARCHITECTUREfunOFalertIS
signalcoun:
std_logic_vector(1downto0);
signalcount1:
std_logic_vector(1downto0);
BEGIN
speaker:
process(clk)
begin
speak<=count1
(1);
if(clk'eventandclk='1')then
if(dain="0000000")then
if(count1>="10")then
count1<="00";
else
count1<=count1+1;
endif;
endif;
endif;
endprocessspeaker;
lamper:
process(clk)
begin
if(rising_edge(clk))then
if(coun<="10")then
if(coun="00")then
lamp<="001";
elsif(coun="01")then
lamp<="010";
elsif(coun="10")then
lamp<="100";
endif;
coun<=coun+1;
else
coun<="00";
endif;
endif;
endprocesslamper;
ENDfun;
编译过程:
仿真图如下:
2.5调时调分模块
LIBRARYieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
ENTITYseltimeIS
PORT(
clk1,reset:
INSTD_LOGIC;
sec,min:
INSTD_LOGIC_VECTOR(6downto0);
hour:
instd_logic_vector(5downto0);
daout:
OUTSTD_LOGIC_vector(3downto0);
dp:
OUTstd_LOGIC;
sel:
outstd_logic_vector(2downto0));
ENDseltime;
ARCHITECTUREfunOFseltimeIS
SIGNALcount:
STD_LOGIC_vector(2downto0);
BEGIN
sel<=count;
process(clk1,reset)
begin
if(reset='0')then
count<="000";
elsif(clk1'eventandclk1='1')then
if(count>="101")then
count<="000";
else
count<=count+1;
endif;
endif;
casecountis
when"000"=>daout<=sec(3downto0);dp<='0';
when"001"=>daout(3)<='0';daout(2downto0)<=sec(6downto4);dp<='0';
when"010"=>daout<=min(3downto0);dp<='1';
when"011"=>daout(3)<='0';daout(2downto0)<=min(6downto4);dp<='0';
when"100"=>daout<=hour(3downto0);dp<='1';
whenothers=>daout(3downto2)<="00";
daout(1downto0)<=hour(5downto4);dp<='0';
endcase;
endprocess;
endfun;
编译过程:
仿真图如下:
2.6.LED显示译码器模块
LIBRARYieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
ENTITYdeledIS
PORT(num:
INstd_logic_vector(3downto0);
led:
OUTstd_logic_vector(6downto0));
enddeled;
ARCHITEC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 数字 设计 分析 范文