EDA数字时钟设计.docx

上传人:b****7 文档编号:16604642 上传时间:2023-07-15 格式:DOCX 页数:14 大小:284.03KB
下载 相关 举报
EDA数字时钟设计.docx_第1页
第1页 / 共14页
EDA数字时钟设计.docx_第2页
第2页 / 共14页
EDA数字时钟设计.docx_第3页
第3页 / 共14页
EDA数字时钟设计.docx_第4页
第4页 / 共14页
EDA数字时钟设计.docx_第5页
第5页 / 共14页
EDA数字时钟设计.docx_第6页
第6页 / 共14页
EDA数字时钟设计.docx_第7页
第7页 / 共14页
EDA数字时钟设计.docx_第8页
第8页 / 共14页
EDA数字时钟设计.docx_第9页
第9页 / 共14页
EDA数字时钟设计.docx_第10页
第10页 / 共14页
EDA数字时钟设计.docx_第11页
第11页 / 共14页
EDA数字时钟设计.docx_第12页
第12页 / 共14页
EDA数字时钟设计.docx_第13页
第13页 / 共14页
EDA数字时钟设计.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

EDA数字时钟设计.docx

《EDA数字时钟设计.docx》由会员分享,可在线阅读,更多相关《EDA数字时钟设计.docx(14页珍藏版)》请在冰点文库上搜索。

EDA数字时钟设计.docx

EDA数字时钟设计

目录

1.设计实验目的………………

2.设计实验说明………………

3.设计实验要求………………

4.功能设计……………………

1时钟计数…………

2.时间设置…………

3.清零功能…………

4.整点报时功能…………

5.数字时钟计数报时VHDL程序设计仿真与分析……

1.秒计数器(miao)VHDL程序描述、仿真波形图及其分析……

2.分计数器(fen)VHDL程序描述、仿真波形图及其分析……

3.时计数器(shi)VHDL程序描述、仿真波形图及其分析……

4.整点报时器(baoshi)VHDL程序描述、仿真波形图及其分析

5.分频器(fenpin)设计、仿真波形图及其分析……

6.扫描显示译码器(saomiao))VHDL程序描述、仿真波形图及其分析……

7.数字时钟整体设计原理图及其分析……

6.设计总结………………

7.参考文献………………

1设计实验目的:

熟练运用VHDL语言,完成数字时钟设计的软件编程、编译、综合、仿真,使用EDA实验箱,实现数字时钟的硬件功能。

2设计实验说明:

1.数字时钟主要由:

分频器、扫描显示译码器、六十进制计数器(或十进制计数器与6进制计数器组成)、六十进制计数器(或十进制计数器与6进制计数器组成)、十二进制计数器(或二十四进制计数器)电路组成。

在整个时钟中最关键的是如何获得一个精确的1HZ计时脉冲。

2.数字时钟显示由时(12或24进制任选)、分(60进制)、秒(60进制)组成,利用扫描显示译码电路在六个数码管显示。

3.数字时钟组成及功能:

数字时钟组成及功能:

1.分频率器:

用来产生1HZ计时脉冲;2.十二或二十四进制计数器:

对时进行计数3.六十进制计数器:

对分和秒进行计数;4.六进制计数器:

分别对秒十位和分十位进行计数;5.十进制计数器:

分别对秒个位和分个位进行计数;6.扫描显示译码器:

完成对7.字段数码管显示的控制;

3.设计实验要求:

1.精确显示时、分、秒。

2.数字时钟要求:

具有对时、分、秒置数功能。

3.能够完成整点报时功能。

4.功能设计:

1.时钟计数:

完成时、分、秒的正确计时并且显示所计的数字;对秒、分60进制计数,即从0到59循环计数,对时24进制计数,即从0到23循环计数。

2.时间设置:

手动调节分钟(setfen)、小时(setshi),高定平时有效,可以对分、时进行进位调节,低电平时正常计数。

这样可以对所设计的时钟的时间任意调。

3.清零功能:

reset为复位端,低电平时实现清零功能,高电平时正常计数。

这样可以对所设计的时钟的时间进行清零处理。

4.整点报时功能:

当分由59进位时,会在整点报时输出端输出高电平,此信号可以通过LED点亮检验。

5.数字时钟计数报时VHDL程序设计仿真与分析

1.

(1)秒计数器(miao)VHDL程序描述

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitymiaois

port(

clk,reset,setfen:

instd_logic;

enfen:

outstd_logic;

countmiao:

outstd_logic_vector(7downto0)

);

endmiao;

architecturefunofmiaois

signalcount:

std_logic_vector(7downto0);

signalenfen_1,enfen_2:

std_logic;

begin

countmiao<=count;

enfen_2<=(setfenandclk);

enfen<=(enfen_1orenfen_2);

process(clk,reset,setfen)

begin

if(reset='0')

thencount<="00000000";

enfen_1<='0';

elsif(clk'eventandclk='1')

thenif(count(3downto0)="1001")

thenif(count<16#60#)

thenif(count="01011001")

thencount<="00000000";

enfen_1<='1';

elsecount<=count+7;

endif;

elsecount<="00000000";

enfen_1<='0';

endif;

elsif(count<16#60#)

thencount<=count+1;

enfen_1<='0';

elsecount<="00000000";

enfen_1<='1';

endif;

endif;

endprocess;

endfun;

(2)秒计数器(miao)仿真波形图

(3)秒计数器(miao)仿真分析

随着clk脉冲信号的不断到来,countmiao记录出clk的脉冲个数,计数到59时,在下一个clk脉冲信号到来时,输出端enfen输出高定平,即向分进位,同时countmiao清零。

2、reset为清零端,reset低电平时,当countmiao计数从零重新开始计数。

3、setfen为分的手动进位端,当setfen高定平时且clk脉冲到来时,输出enfen高电平,向分进位。

2.

(1)分计数器(fen)VHDL程序描述

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfenisport(

imiao,clk,reset,setshi:

instd_logic;

enshi:

outstd_logic;

countfen:

outstd_logic_vector(7downto0)

);

endfen;

architecturefunoffenissignalenshi_1,enshi_2:

std_logic;signalcount:

std_logic_vector(7downto0);

begin

countfen<=count;enshi_2<=(setshiandclk);

enshi<=(enshi_1orenshi_2);

process(imiao,reset,setshi)

begin

if(reset='0')then

count<="00000000";

elsif(imiao'eventandimiao='1')then

if(count(3downto0)="1001")then

if(count<16#60#)then

if(count="01011001")then

count<="00000000";

enshi_1<='1';

elsecount<=count+7;

endif;elsecount<="00000000";

endif;

elsif(count<16#60#)then

count<=count+1;

enshi_1<='0';

elsecount<="00000000";

endif;

endif;

endprocess;

endfun;

(2)分计数器(fen)仿真波形图

(3)分计数器(fen)仿真分析

imiao为秒计数器的enfen进位输出端,当enfen(imiao)高电平到来时,clk高电平时,且countfen开始计数。

countfen计数到59时,下一个enfen(imiao)、clk到来时,enshi高电平,即向时进位,同时countfen清零。

2、reset为清零端,当reset低电平时,countfen计数从零重新开始计数。

3、setshi为时的手动进位端,当setshi高定平时且clk脉冲到来时,输出en时高电平,向时进位。

3.

(1)时计数器(shi)VHDL程序描述

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityshiis

port(

ifen,reset:

instd_logic;

countshi:

outstd_logic_vector(7downto0));

endshi;

architecturefunofshiis

signalcount:

std_logic_vector(7downto0);

begincountshi<=count;

process(ifen,reset)

begin

if(reset='0')then

count<="00000000";

elsif(ifen'eventandifen='1')then

if(count(3downto0)="1001")then

if(count<16#23#)thencount<=count+7;

elsecount<="00000000";

endif;

elsif(count<16#23#)then

count<=count+1;

elsecount<="00000000";

endif;

endif;

endprocess;

endfun;

(2)时计数器(shi)仿真扫描显示译码器(saomiao)仿真

(3)时计数器(shi)仿真分析

ifen为分计数器的enshi进位输出端,当enshi(ifen)为高电平时,countshi计数。

countshi计数到23时,当下一个enshi(ifen)、clk到来时,countshi会自动清零。

2、reset为清零端,当reset低电平时,countfen计数从零重新开始计数。

4.整点报时

(1)整点报时器(baoshi)VHDL程序描述

libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitybaoshiisport(clk:

instd_logic;inputmiao,inputfen:

instd_logic_vector(6downto0);output:

outstd_logic_vector(1downto0));endbaoshi;architecturefunofbaoshiissignaltemp:

std_logic_vector(1downto0);signalnummiao,numfen:

std_logic_vector(7downto0);beginnummiao<=inputmiao;numfen<=inputfen;output<=temp;process(clk,temp)beginif(clk'eventandclk='1')thenif(numfen="01011001")thencasenummiaoiswhen"01011000"=>temp<="01";when"01011001"=>temp<="10";whenothers=>temp<="00";endcase;endif;if(numfen="00000000")thencasenummiaoiswhen"00000000"=>temp<="11";whenothers=>temp<="00";endcase;endif;endif;endprocess;endfun;11

(2)整点报时器(baoshi)仿真波形图

(3)整点报时器(baoshi)仿真分析

input为分计数器的输出端,当输出58、59和00(十六进制)时,整点报时器(baoshi)的输出端output为高电平,点亮LED灯。

当intput为58、59时,点亮一个LED灯,当input为00时,点亮两个LED灯。

其他情况时,LED灯均不发光。

4.

(1)分频器(fenpin)设计

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;entityfenpinis

port(clk_5M:

instd_logic;

clk:

outstd_logic);

endfenpin;

architecturefunoffenpinissignalcount:

std_logic_vector(22downto0);begin

process(clk_5M)

begin

if(clk_5M'eventandclk_5M='1')then

if(count="10011000100101100111111")then

count<="00000000000000000000000";

clk<='1';

elsecount<=count+1;

clk<='0';

endif;

endif;

endprocess;

endfun;

5.

(1)扫描显示译码器(saomiao))VHDL程序描述

扫描显示译码器是用来显示时钟数值的装置,将数字时钟的高低电平信号用数码管的数值显示出来。

八个数码管中,用六个数码管显示时、分和秒,另外两个可做为时和分、分和秒之间的间隔,始终不显示。

首先对八个数码管进行扫描,每一时刻都只有一个数码管处于扫描状态,并将此时的数字时钟的高低电平通过十六进制的BCD码转换为数码管显示数值。

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitysaomiaois

port(

clk_smxs:

instd_logic;

shi:

instd_logic_vector(7downto0);

fen:

instd_logic_vector(7downto0);

miao:

instd_logic_vector(7downto0);

selout:

outstd_logic_vector(7downto0);

segout:

outstd_logic_vector(6downto0));

endsaomiao;

architecturefunofsaomiaois

signaltemp:

std_logic_vector(2downto0);

signalseg:

std_logic_vector(6downto0);

signalsel:

std_logic_vector(7downto0);

begin

selout<=sel;

segout<=seg;

process(clk_smxs)

variablenum:

std_logic_vector(3downto0);

begin

if(clk_smxs'eventandclk_smxs='1')theniftemp>="111"thentemp<="000";

elsetemp<=temp+1;

endif;

casetempiswhen"111"=>num:

=shi(7downto4);

sel<="00000111";

when"110"=>num:

=shi(3downto0);sel<="00000110";

when"100"=>num:

=fen(7downto4);

sel<="00000100";

when"011"=>num:

=fen(3downto0);sel<="00000011";

when"001"=>num:

=miao(7downto4);

sel<="00000001";

when"000"=>num:

=miao(3downto0);

sel<="00000000";

whenothers=>sel<="00000010";

endcase;

casenumiswhen"0000"=>seg<="0111111";

when"0001"=>seg<="0000110";

when"0010"=>seg<="1011011";

when"0011"=>seg<="1001111";

when"0100"=>seg<="1100110";

when"0101"=>seg<="1101101";

when"0110"=>seg<="1111101";

when"0111"=>seg<="0000111";

when"1000"=>seg<="1111111";

when"1001"=>seg<="1101111";

whenothers=>seg<="0000000";

endcase;

endif;

endprocess;

endfun;

(2)扫描显示译码器(saomiao)仿真波形图

6.数字时钟整体设计、数字时钟整体设计:

(1)数字时钟的电路原理图:

(3)数字时钟整体设计:

时钟脉冲源为EDA实验箱中的5MHz的脉冲信号,用于分频器的输入信号和扫描显示译码器的扫描。

分频器的功能是将5MHz的脉冲信号转换为1Hz的时钟信号,用于秒的计数。

秒为60进制计数器,当1Hz的脉冲信号来临时,开始计数。

计数到59时,会输出enfen高电平,用于分的计数。

setfen为手动进位端,置入高电平时也会使enfen产生高电平。

分计数器为60进制计数器,当enfen高电平来临时,分计数器会开始计数,计数到59时,会产生enshi的高电平。

setshi为手动置数端,当setshi高定平时,也会使enshi为高电平。

enshi为时计数器的计数脉冲输入,enshi高电平时,时计数器开始计数。

时计数器为24进制计数器,计数到24时会自动清零。

reset为异步清零端,高定平时,所有时钟显示数码管均为0。

selout为数码管扫描地址,接入数码管地址的低三位。

segout为数码管的输入端,分别接入数码管的a,b,c,d,e,f,g端口。

output为整点报时输出端。

当分为59,秒为58时,output1点亮第一个LED灯,当分为59,秒为59时,output2点亮地二个LED灯,当分为00,秒为00时,output1、output2同时点亮两个LED。

其他情况时,LED均处于灭等状态。

这样完成报时功能。

6.数字时钟设计总结、数字时钟设计总结

本次实习最主要的收获是:

使我们对EDA设计有一定的感性和理性认识;培养和锻炼我们的实际动手能力。

使我们的理论知识与实践充分地结合,作到不仅具有专业知识,而且还具有较强的实践动手能力,能分析问题和解决问题的高素质人才,为以后的顺利就业作好准备。

本次实习的对我们很重要,是我们通信工程学生实践中的重要环节。

在以前我们学的都是一些理论知识。

这一次的实习正如老师所讲,没有多少东西要我们去想,更多的是要我们去做,好多东西看起来十分简单,看着电路图都懂,但没有亲自去操作,就不会懂得理论与实践是有很大区别的。

看一个东西简单,但在实际操作中就是有许多要注意的地方,有些东西也与你的想象不一样,我们这次的实验就是要我们跨过这道实际和理论之间的鸿沟。

不过,我坚信自己的是有一定能力的。

以前我们光只注意一些理论知识,并没有专门的练习我们的实际动手能力。

这次的实习使我意识到我的操作能力的不足,在理论上也有很多的缺陷。

所以,在以后的学习生活中,我需要更努力地读书和实践。

7参考文献

1.辛春燕.VHDL程序描述语言.北京:

国防工业出版社,2002

2.包明,赵明富,陈泽光.EDA技术汲取应用.北京:

北京航空航天大学出版社,2004

3.马淑华,高原.电子设计自动化.北京:

北京邮电大学出版社,2006

4.周立功.EDA实验与实践.北京:

北京航空航天大学出版社,2009

5.罗中华,杨戈.EDA与可编程实验教程.重庆:

重庆大学出版社,2007

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

当前位置:首页 > 自然科学 > 物理

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

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