EDA数字时钟设计.docx
- 文档编号:8390687
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:12
- 大小:284.08KB
EDA数字时钟设计.docx
《EDA数字时钟设计.docx》由会员分享,可在线阅读,更多相关《EDA数字时钟设计.docx(12页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 数字 时钟 设计