多功能数字钟的设计与实现Word文档格式.docx
- 文档编号:15302579
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:18
- 大小:162.14KB
多功能数字钟的设计与实现Word文档格式.docx
《多功能数字钟的设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《多功能数字钟的设计与实现Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
计分:
以秒计数器进位信号作为分计数脉冲,0~59循环计数,59时产生进位;
计时:
以分计数器进位信号作为时计数脉冲,0~23循环计数,23时清0。
计数器的设计:
3.1.2设计程序
编程分别设计24、60进制计数器,计数状态以BCD码形式输出。
24进制计数器源程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityFEN24is
port(en,clk:
instd_logic;
----高电平有效的使能信号/输入时钟
co:
outstd_logic;
h1,h0:
outstd_logic_vector(3downto0));
----时高位/低位
endFEN24;
architecturebehaveofFEN24is
begin
process(clk)
variablecnt1,cnt0:
std_logic_vector(3downto0);
----记数
if(en='
0'
)then---“使能”为0
cnt0:
="
0010"
;
cnt1:
0001"
elsifclk'
eventandclk='
1'
then---上升沿触发
ifcnt1="
andcnt0="
0011"
then
0000"
----高位/低位同时为0时
co<
='
else
ifcnt0="
1001"
=cnt1+1;
else
=cnt0+1;
-----高位记数累加
endif;
h1<
=cnt1;
h0<
=cnt0;
endprocess;
endbehave;
60进制计数器源程序:
useieee.std_logic_unsigned.all;
entityFEN60is
port(en,clk:
---高电平有效的使能信号/输入时钟
---输出/进位信号
s1,s0:
endFEN60;
architecturebehaveofFEN60is
process(clk,en)
---计数
ifen='
then---“使能”为0
0101"
then---当计数为58(实际是经过59个计时脉冲)
---进位
s1<
s0<
3.1.3设计仿真及生成器件
24进制计数器仿真波形截图如图3.1.2所示,其中计到23时,即高位h1为2,低位h0为3时产生进位。
图3.1.224进制计数器仿真波形
60进制计数器仿真波形截图如图3.1.3所示,其中计到59时,即高位s1为5,低位s0为9时产生进位。
图3.1.360进制计数器仿真波形
24进制计数器和60进制计数器生成器件分别如图3.1.4、图3.1.5所示,其中en为时能信号,接高电平,clk接1kHz的时钟信号,co为进位,h1为时高位,h0为时低位,s1为秒或分高位,s0为秒或分低位。
图3.1.424进制计数器图3.1.560进制计数器
3.2校时模块
3.2.1设计原理
计、校时对模块如图3.2.1所示。
图3.2.1计、校时对模块
校时模块设计要求实现校时、校分以及清零的功能。
按下校时键,时位迅速递增以调至所需要的小时位,满23清0;
按下校分键,分位迅速递增以调至所需要的分位,满59清0;
按下清零键,秒清零;
选择实验板上的三个脉冲按键进行锁定。
对此模块的设计,需要注意两个问题:
1.如何实现校对时间时,计数器快速递增?
按键校对时间时,将一个频率较高的计数脉冲信号作用于计数器,屏蔽正常计时的计数脉冲信号。
2.“抖动”的消除
电路抖动:
一次按键的弹跳现象,电路产生多个计数脉冲,导致一次按键,多次计数的误动作。
抖动产生的原因:
物理原因。
消除抖动简易方法:
D触发器,同步按键脉冲。
原理:
一个CP内,屏蔽所有抖动脉冲。
两种脉冲信号用两路选择器进行选择,选择条件为是否按键。
按键输出经过了消抖处理。
3.2.2设计程序
二路选择器源程序:
entityMUX2is
port(A,B,S:
inbit;
Y:
outbit);
endMUX2;
architectureoneofMUX2is
process(A,B,S)
begin
ifS='
then
Y<
=A;
=B;
endone;
3.2.3设计仿真及生成器件
二路选择器生成器件如图3.2.2所示。
图3.2.2二路选择器
3.3整点报时模块
3.3.1设计原理
报时模块原理图如图3.3.1所示,数字钟从59分50秒开始,每2秒一次低音报时,当达到整点时,进行一次高音报时,其中低音报时频率为500Hz,高音报时频率为1kHz。
图3.3.1报时模块
进行报时的条件是计数器计数至所要求的时间点,因而需要实现一个比较模块,如图3.3.2所示,将分计数器和秒计数器的输出连至比较模块输入端完成比较工程。
图3.3.2比较模块
3.3.2设计程序
整点报时源程序:
entityZDBSis
port(mh,ml,sh,sl:
instd_logic_vector(3downto0);
--输入分秒高低位信号
sig500,sig1k:
outstd_logic);
---频声控制
endZDBS;
architecturebehaveofZDBSis
process(ml)
sig500<
sig1k<
ifmh="
andml="
ifsh="
and(sl="
orsl="
0100"
0110"
1000"
)
thensig500<
----低频输出为1
elsesig500<
----否则输出为0
andsh="
andsl="
-----整点报时
thensig1k<
-----高频输出为1
elsesig1k<
3.3.3设计仿真及生成器件
整点报时生成器件如图3.3.3所示,器件输入为分和秒,分别接分计数器和秒计数器的高低位,输出为高频声控sig500和sig1k。
图3.3.3整点报时
3.4分频模块
3.4.1设计原理
分频模块如图3.4.1所示,系统需要用到多种不同频率的脉冲信号,上至高音报时信号,下至1Hz的计秒脉冲,所有这些脉冲信号均可以通过一个基准频率分频器生成,基准频率分频器就是一个进制很大的计数器,利用计数器的分频功能,从不同的输出位得到所需要的脉冲信号。
因此可以设计一个进制较大的计数器,分频产生各种频率的脉冲信号。
图3.4.1分频模块
3.4.2设计程序
分频器源程序:
useieee.std_logic_arith.all;
entityFPQis
port(clk:
hz512:
hz64:
hz4:
hz1:
outstd_logic
);
endFPQ;
architecturebehaveofFPQis
signalq:
std_logic_vector(9downto0);
begin
process(clk)
ifclk'
then
q<
=q+1;
endprocess;
hz512<
=q(0);
hz64<
=q(3);
hz4<
=q(7);
hz1<
=q(9);
endbehave;
3.4.3设计仿真及生成器件
分频器仿真波形如图3.4.2所示,clk为时钟输入信号,设为1024Hz,由于1Hz和4Hz频率太小,因此在仿真波形图上为一条直线,从图上可以清楚看到512Hz和64Hz的频率
图3.4.2分频器仿真波形
分频器生成器件如图3.4.3所示,其中左端为时钟输入信号clk,右端为频率端,主要是整点报时用的1000Hz与500Hz的脉冲信号,及闹钟报时的4Hz,秒输入信号1Hz。
图3.4.3分频器
3.5动态扫描显示模块
3.5.1设计原理
由于资源不足无法完整显示6位时间,因此采用动态扫描的方式实现时间显示。
在动态扫描方式下,所有的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多功能 数字 设计 实现