EDA数字时钟设计Word格式文档下载.docx
- 文档编号:21526947
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:12
- 大小:284.08KB
EDA数字时钟设计Word格式文档下载.docx
《EDA数字时钟设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA数字时钟设计Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
分别对秒个位和分个位进行计数;
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<
='
elsif(clk'
eventandclk='
1'
thenif(count(3downto0)="
1001"
)
thenif(count<
16#60#)
thenif(count="
01011001"
enfen_1<
elsecount<
=count+7;
endif;
elsecount<
elsif(count<
16#60#)
=count+1;
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:
enshi:
countfen:
endfen;
architecturefunoffenissignalenshi_1,enshi_2:
countfen<
enshi_2<
=(setshiandclk);
enshi<
=(enshi_1orenshi_2);
process(imiao,reset,setshi)
begin
)then
count<
elsif(imiao'
eventandimiao='
if(count(3downto0)="
if(count<
16#60#)then
if(count="
)then
count<
enshi_1<
elsif(count<
16#60#)then
enshi_1<
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程序描述
entityshiis
port(
ifen,reset:
countshi:
outstd_logic_vector(7downto0));
endshi;
architecturefunofshiis
signalcount:
begincountshi<
process(ifen,reset)
if(reset='
elsif(ifen'
eventandifen='
16#23#)thencount<
16#23#)then
(2)时计数器(shi)仿真扫描显示译码器(saomiao)仿真
(3)时计数器(shi)仿真分析
ifen为分计数器的enshi进位输出端,当enshi(ifen)为高电平时,countshi计数。
countshi计数到23时,当下一个enshi(ifen)、clk到来时,countshi会自动清零。
4.整点报时
(1)整点报时器(baoshi)VHDL程序描述
entitybaoshiisport(clk:
inputmiao,inputfen:
instd_logic_vector(6downto0);
output:
outstd_logic_vector(1downto0));
endbaoshi;
architecturefunofbaoshiissignaltemp:
std_logic_vector(1downto0);
signalnummiao,numfen:
beginnummiao<
=inputmiao;
numfen<
=inputfen;
output<
=temp;
process(clk,temp)beginif(clk'
)thenif(numfen="
)thencasenummiaoiswhen"
01011000"
=>
temp<
01"
when"
10"
whenothers=>
00"
endcase;
if(numfen="
11"
11
(2)整点报时器(baoshi)仿真波形图
(3)整点报时器(baoshi)仿真分析
input为分计数器的输出端,当输出58、59和00(十六进制)时,整点报时器(baoshi)的输出端output为高电平,点亮LED灯。
当intput为58、59时,点亮一个LED灯,当input为00时,点亮两个LED灯。
其他情况时,LED灯均不发光。
4.
(1)分频器(fenpin)设计
entityfenpinis
port(clk_5M:
clk:
outstd_logic);
endfenpin;
architecturefunoffenpinissignalcount:
std_logic_vector(22downto0);
process(clk_5M)
begin
if(clk_5M'
eventandclk_5M='
10011000100101100111111"
00000000000000000000000"
clk<
=count+1;
5.
(1)扫描显示译码器(saomiao))VHDL程序描述
扫描显示译码器是用来显示时钟数值的装置,将数字时钟的高低电平信号用数码管的数值显示出来。
八个数码管中,用六个数码管显示时、分和秒,另外两个可做为时和分、分和秒之间的间隔,始终不显示。
首先对八个数码管进行扫描,每一时刻都只有一个数码管处于扫描状态,并将此时的数字时钟的高低电平通过十六进制的BCD码转换为数码管显示数值。
entitysaomiaois
port(
clk_smxs:
shi:
instd_logic_vector(7downto0);
fen:
miao:
selout:
outstd_logic_vector(7downto0);
segout:
outstd_logic_vector(6downto0));
endsaomiao;
architecturefunofsaomiaois
signaltemp:
std_logic_vector(2downto0);
signalseg:
std_logic_vector(6downto0);
signalsel:
selout<
=sel;
segout<
=seg;
process(clk_smxs)
variablenum:
std_logic_vector(3downto0);
if(clk_smxs'
eventandclk_smxs='
)theniftemp>
111"
thentemp<
000"
elsetemp<
=temp+1;
casetempiswhen"
=>
num:
=shi(7downto4);
sel<
00000111"
when"
110"
=shi(3downto0);
sel<
00000110"
100"
=fen(7downto4);
00000100"
011"
=fen(3downto0);
00000011"
001"
=miao(7downto4);
00000001"
when"
=miao(3downto0);
00000010"
casenumiswhen"
0000"
seg<
0111111"
0001"
0000110"
0010"
1011011"
0011"
1001111"
0100"
1100110"
when"
0101"
1101101"
0110"
1111101"
0111"
0000111"
1000"
1111111"
1101111"
whenothers=>
0000000"
endcase;
(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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 数字 时钟 设计