没有合适的资源?快使用搜索试试~ 我知道了~
首页VHDL语言数字钟(含秒表)设计
资源详情
资源评论
资源推荐
基于 CPLD 的 VHDL 语言数字钟设计
基于 CPLD 的 VHDL 语言数字钟(含秒表)设计
利用一块芯片完成除时钟源、按键、扬声器和显示器(数码管)之外的所有数字电路
功能。所有数字逻辑功能都在 CPLD 器件上用 VHDL 语言实现。这样设计具有体积小、设
计周期短(设计过程中即可实现时序仿真)、调试方便、故障率低、修改升级容易等特点。
本设计采用自顶向下、混合输入方式(原理图输入—顶层文件连接和 VHDL 语言输入
—各模块程序设计)实现数字钟的设计、下载和调试。
一、 功能说明
已完成功能
1. 完成秒/分/时的依次显示并正确计数;
2. 秒/分/时各段个位满 10 正确进位,秒/分能做到满 60 向前进位;
3. 定时闹钟:实现整点报时,又扬声器发出报时声音;
4. 时间设置,也就是手动调时功能:当认为时钟不准确时,可以分别对分/时钟进行
调整;
5. 利用多余两位数码管完成秒表显示:A、精度达 10ms;B、可以清零;C、完成暂停
可以随时记时、暂停后记录数据。
待改进功能:
1. 闹钟只是整点报时,不能手动设置报时时间,遗憾之一;
2. 秒表不能向秒进位,也就是最多只能记时 100ms;
3. 秒表暂停记录数据后不能在原有基础上继续计时,而是复位重新开始。
【注意】秒表为后来添加功能,所以有很多功能不成熟!
二、 设计方案
1. 数字钟顶层设计
外部输入要求:输入信号有 1kHz/1Hz 时钟信号、低电平有效的秒/微秒清零信
号 CLR、低电平有效的调分信号 SETmin、低电平有效的调时信号 SEThour;
外部输出要求:整点报时信号 SOUND(59 分 51/3/5/7 秒时未 500Hz 低频声,
59 分 59 秒时为 1kHz 高频声)、时十位显示信号 h1(a,b,c,d,e,f,g)、时个位显示
信号 h0(a ,b,c,d,e,f,g)、分十位显示信号 m1 及分个位 m0、秒十位 s1 及秒个位
s0、微秒十位 ms1 及微秒个位 ms0;数码管显示位选信号 SEL0/1/2 等三个信号。
2. 内部功能模块主要有:
Fenp 分频模块:主要是整点报时用的 1kH 与 500Hz 的脉冲信号,这里的输入信号
是 1KHz 信号,所以只要一个二分频即可;时间基准采用 1Hz 输入信号直接提供
(当然也可以分频取得,这里先用的是分频取得的信号,后考虑到精度问题而采用
硬件频率信号。
实现带有 100 进制进位和清零功能,暂定等功能的微秒模块 MINSECONDB 输入为
1Hz 脉冲和低电平的清零信号 CLR 与暂定信号 STOP,输出微秒个位、十位及进位
信号 CO(虽然没有实现进位功能,但还是编写了这个端口,只是在连线时悬空)。
实现 60 进制带有进位和清零功能的秒计数模块 SECOND,输入为 1Hz 脉冲和低电
平有效的清零信号 CLR,输出秒个位、时位及进位信号 CO。
实现 60 进制带有进位和置数功能的分计数模块 MINUTE,输入为 1Hz 脉冲和高电
1
基于 CPLD 的 VHDL 语言数字钟设计
平有效的使能信号 EN,输出分个位、时位及进位信号 CO。
实现 24 进制的时计数模块 HOUR,输入为 1Hz 脉冲和高电平有效的使能信号
EN,输出分个位、时位。
实现分时复用功能模块 SELTIME,输入为秒(含个/十位)、分、时、扫描时钟
CLK1K,输出为 D 和显示控制信号 SEL。
实现整点报时功能模块 ALERT,输入为分/秒信号,输出为高频声控 Q1K 和
Q500。
实现译码显示功能模块 DISPLAY,输入为 D,输出为 Q
三、 设计框图
四、 模块说明(含程序代码)
1. 分频模块
2
频 率
信 号
输入
分频
微秒模块 秒模块 分模块 时模块
置数/位选
显示模块
进
位
进
位
进
位
高 /
低 电
平
基于 CPLD 的 VHDL 语言数字钟设计
采用原理图输入方式实现 2 分频与 1000 分频,但这里并没有用到 1000 分频,因为
后来考虑到精度问题,将千分频用直接输入了。程序如图:利用三个 7490 进行硬
件分频!
2. 微秒模块
采用 VHDL 语言输入方式,以时钟 clk,清零信号 clr 以及暂停信号 STOP 为进程
敏感变量,程序如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity MINSECONDb is
port(clk,clrm,stop:in std_logic;---- 时
钟/清零信号
secm1,secm0:out
std_logic_vector(3 downto 0);---- 秒
高位/低位
co:out std_logic);-------输出/进位
信号
end MINSECONDb;
architecture SEC of MINSECONDb
is
signal clk1,DOUT2:std_logic;
begin
process(clk,clrm)
variable cnt1,cnt0:std_logic_vector(3
downto 0);---计数
VARIABLE COUNT2 :INTEGER
RANGE 0 TO 10 ;
begin
IF CLK'EVENT AND
CLK='1'THEN
IF COUNT2>=0 AND
COUNT2<10 THEN
COUNT2:=COUNT2+1;
ELSE COUNT2:=0;
DOUT2<= NOT DOUT2;
END IF;
END IF;
if clrm='1' then----当 clr 为 1 时,高
低位均为 0
cnt1:="0000";
cnt0:="0000";
elsif clk'event and clk='1' then
if stop='1' then
cnt0:=cnt0;
cnt1:=cnt1;
end if;
if cnt1="1001" and cnt0="1000"
then----当记数为 98(实际是经过
59 个记时脉冲)
co<='1';----进位
cnt0:="1001";----低位为 9
3
剩余13页未读,继续阅读
engsl3400
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0