基于VHDL的数字钟设计及其仿真.docx

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

基于VHDL的数字钟设计及其仿真.docx

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

基于VHDL的数字钟设计及其仿真.docx

基于VHDL的数字钟设计及其仿真

 

基于VHDL的数字钟设计及其仿真

结构化设计元件例化配置原理图

一引言

所谓数字钟是指利用电子电路构成的计时器,相对机械钟而言,数字钟能达到准确计时,

同时能对该种进行调整。

当然,在此基础上还能够实现整点报时,定时报闹等功能。

设计过程采用系统设计的方法,先分析任务得到系统要求,然后进行总体设计,划分子

系统,然后进行详细设计,决定各个功能子系统的VHDL程序,最后进行调试仿真。

通过此次设计,对基于VHDL的结构化描述有深刻理解,为今后的集成电路设计打下坚实的基础。

二设计任务和要求

对于时钟,最基本的要求应具有时分秒的计数功能。

对于秒必须满足每满60s,分要记

一个数,并且秒重新从零计起;对于分必须满足60min,小时要记一个数,并且分重新从零

计起,对于时满24后也应重新从零计起。

此外当数字中走慢或走快时,还应能予以调整。

所以要求设计的数字中电路应具有以下功能:

1.具有十分秒计数功能,并进行十进制数字显示。

2.能分别进行时分的手动校正。

三工作原理

时钟信号的频率有振荡器产生,由于技术最小单位为1s,所以时钟信号经分频器后输

出频率为1Hz的秒脉冲elk;而校准信号的频率应高于1Hz,若取0.5,则时钟信号经另一个分频器后输出频率为2Hz的校准信号脉冲clk1。

当无校准信号作用,即校分信号xf、校时信号xs为高电平,整个电路处于正常计数的

工作状态时分秒计数器采用同步计数方式其时钟脉冲端均接有分频器输出的时钟信号elk.。

en为使能端,高电平有效。

三个计数器的复位端elr置入数据控制端Id都接高电平,故其置入端d[7…0]失效,且各计数器输出端分别接译码显示电路。

当有校准信号时,不妨假设只有校分信号,即xf=O、xf=1,则在二选一数据选择器的控

制下,分计数器的en端将始终接高电平,即分计数器将独立于秒计数器自行独立计数,但其结果仍影响到时计数器,因为此时没有校时信号。

同理,当只有校时信号或同时具有校时、校分信号,情况同上述分析一样。

四各个模块的VHDL仿真图以及计数部分校正仿真图

(图一、无时间调整下数字钟的仿真运行图)

(图二、利用xs信号校对时间的小时数的仿真结果图)

六十进制计数电路模块对应的仿真波形如下图所示了,elk为时钟脉冲,clr为复位端,

en为使能控制端,Id位并行置数输入端,ql、qh和co分别为六十进制计数器的个位十位和进位输出,由仿真波形可以看出,个位ql每从0—9计10个数,十位qh计一个数,当qh

每计到5时,进位co输出一个脉冲,说明计数器没来60个elk时钟脉冲,进位co产生一

个脉冲,实现六十进制计数。

(图四、带有异步清零和置数功能的60进制计数器元件仿真图)

二分频电路所对应的仿真波形如下图所示,clr为复位端,elk为2Hz时钟脉冲,当clr

为1时,二分频电路有效,cnt=2clk,实现了分频作用。

VAMISCZMMB]l>Qht.MOMtMlCr*450*4t(NMt血叶MOQh*

cMi

r、

1

1

jyyYyyyyqrjwmwir_rui

(图五、对时钟的二倍分频元件仿真图)

2选1数据选择器模块对应的仿真波形如下图所示,有仿真波形可以看出,当选择输入

(图六、2选1数据选择元件仿真图)

TSOOttiXHOmOh*

11*

I50AntHGriISOOn2000m

■O_■—d*一X

■MwuimuuuinnnnniuiiL

(图七、D触发器元件仿真图)

二十四进制计数电路模块对应的仿真波形如下图所示,有仿真波形可以看出,计数器每

来24个elk时钟脉冲,进位co产生一个脉冲,实现了二十四进制计数。

五整个过程各个模块VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycounteris

port(clk:

instd_logic;

xf:

instd_logic;

xs:

instd_logic;

co3:

outstd_logic;

d1,d2,d3:

instd」ogic_vector(7downto0);qh1,ql1,qh2,ql2,qh3,ql3:

outstd」ogic_vector(3downto0));

endcounter;

architecturert1ofcounteriscomponentcnt2

port(clr:

instd_logic;

clk:

instd_logic;cnt:

bufferstd_logic);

endcomponent;

componentd_ff

port(d:

std_logic;clk:

std」ogic;

q:

outstd」ogic);

endcomponent;

componentmux21

port(a,b,s:

instd_logic;

y:

outstd_logic);

endcomponent;

componentcon24v

port(clk,en,clr,ld:

instd_logic;

d:

instd_logic_vector(7downto0);

co:

outstd_logic;

qh,ql:

bufferstd_logic_vector(3downto0));

endcomponent;

componentcon60v

port(clk,en,clr,ld:

instd_logic;

d:

instd_logic_vector(7downto0);

co:

outstd_logic;

qh,ql:

bufferstd_logic_vector(3downto0));

endcomponent;

componentand21

port(a,b:

instd_logic;

y:

outstd」ogic);

endcomponent;

signalvcc,cnt,q1,q2:

std_logic;

signaly1_mux21,y_and,y2_mux21,co1,co2:

std_logic;

signalqh1_con60v,ql1_con60v,qh2_con60v:

std」ogic_vector(3downto0);

signalql2_con60v,qh3_con24v,ql3_con24v:

std」ogic_vector(3downto0);

begin

vcc<='1';

comp1:

cnt2portmap(vcc,clk,cnt);

comp2:

d_ffportmap(xf,clk,q1);

comp3:

d_ffportmap(xs,clk,q2);

comp4:

mux21portmap(vcc,co1,q1,y1_mux21);

comp5:

and21portmap(co1,co2,y_and);

comp6:

mux21portmap(vcc,y_and,q2,y2_mux21);

comp7:

con60vportmap(cnt,vcc,vcc,vcc,d1,co1,qh1_con60v,ql1_con60v);qh1<=qh1_con60v;

ql1<=ql1_con60v;

comp8:

con60vportmap(cnt,y1_mux21,vcc,vcc,d2,co2,qh2_con60v,ql2_con60v);qh2<=qh2_con60v;

ql2<=ql2_con60v;

comp9:

con24vportmap(cnt,y2_mux21,vcc,vcc,d3,co3,qh3_con24v,ql3_con24v);qh3<=qh3_con24v;

ql3<=ql3_con24v;

endrt1;

cnt21

libraryieee;

useieee.std」ogic_1164.all;

entitycnt2is

port(clr:

instd_logic;

clk:

instd_logic;

cnt:

bufferstd_logic);

endcnt2;

architectureoneofcnt2is

begin

process(clr,clk)

begin

if(clr='0')thencnt<='1';

elsif(clk'eventandclk='0')then

if(cnt='1')thencnt<='0';

elsecnt<='1';

endif;

endif;

endprocess;

endone;

configurationcon_cnt2ofcnt2is

forone

endfor;

endcon_cnt2;

cnt2

con24v

libraryieee;

useieee.std」ogic_1164.all;

useieee.std_logic_unsigned.all;

entitycon24vis

port(clk:

instd_logic;

en:

instd_logic;

clr:

instd_logic;

ld:

instd_logic;

d:

instd_logic_vector(7downto0);

co:

outstd_logic;

qh:

bufferstd_logic_vector(3downto0);

ql:

bufferstd_logic_vector(3downto0));

endcon24v;

architecturebhv1ofcon24vis

begin

co<='1'when(qh="0010"andql="0011"anden='1')else'O';

process(clk,clr,ld)

begin

if(clr='O')then

qh<="0000";

ql<="0000";

elsif(clk'eventandclk='1')thenif(ld='0')then

qh<=d(7downto4);

ql<=d(3downto0);

elsif(en='1')then

if(qh="0010"andql="0011")thenql<="0000";

qh<="OOOO";

else

ql<=ql+'1';

if(ql<9)then

ql<=ql+1;

elseql<="0000";

if(qh<2)thenqh<=qh+1;

elseqh<="OOOO";

endif;

endif;

endif;

endif;

endif;

endprocess;

endbhv1;

configurationcon_con24vofcon24vis

forbhv1

endfor;

endcon_con24v;

con24v

con60v

libraryieee;

useieee.std」ogic_1164.all;

useieee.std_logic_unsigned.all;

entitycon60vis

port(clk:

instd_logic;

en:

instd_logic;

clr:

instd_logic;

ld:

instd_logic;

d:

instd_logic_vector(7downto0);

co:

outstd_logic;

qh:

bufferstd_logic_vector(3downto0);

ql:

bufferstd_logic_vector(3downto0));

endcon60v;

architecturebhv2ofcon60vis

begin

co<='1'when(qh="0101"andql="1001"anden='1')else'0';process(clk,clr,ld)

begin

if(clr='0')then

qh<="0000";

ql<="0000";

elsif(clk'eventandclk='1')then

if(ld='0')then

qh<=d(7downto0);

ql<=d(3downto0);

elsif(en='1')then

if(ql<9)thenql<=ql+1;

elseql<="0000";

if(qh<5)thenqh<=qh+1;

elseqh<="0000";

endif;

endif;

endif;

endif;

endprocess;

endbhv2;

configurationcon_con60vofcon60vis

forbhv2

endfor;

endcon_con60v;

con60v

d_ff

libraryieee;

useieee.std」ogic_1164.all;

entityd_ffis

port(d:

instd_logic;

clk:

instd_logic;

q:

outstd_logic);

endd_ff;

architecturebhv3ofd_ffis

begin

process(clk)

begin

if(clk'eventandclk='1')then

q<=d;

endif;

endprocess;

endbhv3;

configurationcon_d_ffofd_ffis

forbhv3

endfor;

endcon_d_ff;

d_ff

mux21

libraryieee;

useieee.std」ogic_1164.all;

entitymux21is

port(a,b,s:

instd_logic;y:

outstd_logic);

endmux21;

architecturebhv4ofmux21is

begin

y<=awhens='0'elseb;

endbhv4;

configurationcon_mux21ofmux21isforbhv4

endfor;

endcon_mux21;

mux21

and21

libraryieee;

useieee.std」ogic_1164.all;

entityand21is

port(a,b:

instd_logic;

y:

outstd」ogic);

endand21;

architectureand21_archofand21isbegin

y<=aandb;

endand21_arch;

configurationcon_and21ofand21isforand21_arch

endfor;

endcon_and21;

and21

六总结

本次通过数字钟实现的例子展现了VHDL在灵活性,层次化设计方法的优点。

程序中

设计了五种元件,采用配置的方式分别将其实体和结构体相连结。

再通过元件的例化,端口

VHDL语言具有很强的电路描述和建模能力,能

映射把实现数字钟的整个电路图。

说明了从多个层次对数字系统进行建模与描述。

附:

数字时钟的的具体电路图

 

-闻tt

 

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

当前位置:首页 > 经管营销 > 经济市场

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

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