没有合适的资源?快使用搜索试试~ 我知道了~
基于Xilinx FPGA的数字钟设计
需积分: 19 34 下载量 152 浏览量
2015-01-01
10:39:49
上传
评论 4
收藏 479KB DOCX 举报
温馨提示
试读
16页
Verilog编写,多功能数字钟,具有基本显示,调时,电台报时和闹钟功能,分模块设计
资源推荐
资源详情
资源评论
基于 FPGA 的多功能数字钟
光信 12XX
一、设计题目
基于 Xilinx FPGA 的多功能数字钟设计
二、设计目的
1.掌握可编程逻辑器件的应用开发技术
——设计输入、编译、仿真和器件编程;
2.熟悉一种 EDA 软件使用;
3.掌握 Verilog 设计方法;
4.掌握分模块分层次的设计方法;
5.用 Verilog 完成一个多功能数字钟设计;
6.学会 FPGA 的仿真。
三、设计内容
设计实验项目九 多功能电子钟
功能要求:
利用实验板设计实现一个能显示时分秒的多功能电子钟,具体要求为:
基本功能:
1) 准确计时,以数字形式显示时、分、秒,可通过按键选择指示当前显示时间范围
模式;
2) 计时时间范围 00:00:00-23:59:59
3) 可实现校正时间功能;
4) 可通过实现时钟复位功能:00:00:00
扩展功能:
1) 定时报:时间自定(不要求改变),闹 1 分钟(1kHz)---利用实验板 LED 或外接电路
实现。
2) 仿广播电台正点报时:XX:59:[51,53,55,57(500Hz);59(1kHz)] ---利用实验板
LED 或外接电路实现。
3) 报整点时数:XX:00:[00.5-XX.5](1kHz),自动、手动---利用实验板 LED 或外
接电路实现。
4) 手动输入校时;
5) 手动输入定时闹钟;
6) 万年历;
7) 其他扩展功能;
设计步骤与要求:
1) 计算并说明采用 Basys2 实验板时钟 50MHz 实现系统功能的基本原理。
2) 在 Xilinx ISE13.1 软件中,利用层次化方法,设计实现模一百计数及显示的电
路系统,设计模块间的连接调用关系,编写并输入所设计的源程序文件。
3) 对源程序进行编译及仿真分析(注意合理设置,以便能够在验证逻辑的基础上尽
快得出仿真结果)。
4) 输入管脚约束文件,对设计项目进行编译与逻辑综合,生成下载所需 .bit 类型文
件。
5) 在 Basys2 实验板上下载所生成的.bit 文件,观察验证所设计的电路功能。
四、总体设计思路
主体分为分频模块,正常时间模块(包含两个模 60 计数器和一个模 24 计数器子模块),
闹钟模块(分为一个模 60 计数器模块,一个模 24 计数器模块,四个比较器模块),电台
报时模块,数码管显示模块(分为模式选择模块,片选信号及扫描程序模块,和译码模
块)。将各模块连接好各接线口即得到数字钟顶层模块 complete.sch。
五、各模块设计及源代码
1.分频模块
分频模块要将 50MHz 的时钟信号分成三个分别为 1Hz,500Hz,1kHz 的三个脉冲信号,
设置三个计数器,在三个频率信号分别对应的延时时间进行翻转,就可以得到三个不同的
脉冲信号。源代码如下:
//freq.v
module freq(clk,_1Hz,_500Hz,_1kHz);
input clk;
output _1Hz,_500Hz,_1kHz;
reg _1Hz=0,_500Hz=0,_1kHz=0;
reg [24:0] cnt1=0,cnt2=0,cnt3=0;
always @(posedge clk)
begin
if (cnt1<25'd24999999)
//if (cnt1<25'd249)
//做 test 仿真时让变化更快
cnt1<=cnt1+1;//未达到计数时间计数器加一
else
begin
_1Hz<=~_1Hz;//达到计时时间,信号翻转且计数器归零
cnt1<=0;
end
end
always @(posedge clk)
begin
if (cnt2<25'd49999)
//if(cnt2<25'd49)
cnt2<=cnt2+1;
else
begin
_500Hz<=~_500Hz;
cnt2<=0;
end
end
always @(posedge clk)
begin
if (cnt3<25'd24999)
//if (cnt3<25'd25)
cnt3<=cnt3+1;
else
begin
_1kHz<=~_1kHz;
cnt3<=0;
end
end
endmodule
2.时钟正常显示模块
正常显示模块分为时分秒三个子模块,分别对应一个模 24 计数器和两个模 60 计数器。
模 24 计数器和模 60 计数器设计都 BCD 码来表示时分秒的值,每个分为高位和低位,均
对应一个十进制的数。对模 24 计数器,每个脉冲信号来临时当低位小于 9 时加一;等于 9
时高位加一且低位置零;且高位小于 3,低位小于 9,超过时高低位均置零;当高位等于 2
时,低位只能到 3,同时复位 nCR 低电平时高低位均置零。同理可得模 60 计数器的设计。
根据这个思路,得到模 24 计数器源代码如下:
//counter24.v
module counter24(CntH,CntL,nCR,EN,CP);
input nCR,EN,CP;
output [3:0] CntH,CntL;//分别为高位和低位
reg [3:0] CntH,CntL;
always @(posedge CP or negedge nCR)
begin
if (~nCR) {CntH,CntL}<=8'h00;//复位键清零
else if(~EN) {CntH,CntL}<={CntH,CntL};//使能信号有效则暂停
else if((CntH>2)||(CntL>9)||((CntH==2)&&(CntL>=3)))
{CntH,CntL}<=8'b00;//出现计数错误全部清零
else if((CntH==2)&&(CntL<3))
CntL<=CntL+1;//超过 20 时计数方式
else if(CntL==9)
begin CntH<=CntH+1'b1;
CntL<=4'b0 ;//一般情况下计数方式
end
else
CntL<=CntL+1'b1;
end
模 60 计数器代码如下:
//counterM60.v
module counterM60(CntMH,CntML,nCR,EN,CP);
input CP,EN,nCR;
output [3:0] CntMH,CntML;
reg [3:0] CntMH=0,CntML=0;
always @(posedge CP or negedge nCR)
begin
if(~nCR)
剩余15页未读,继续阅读
资源评论
yewen1993
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python实现MLP时间序列预测(完整源码和数据)
- 已过基于Hadoop+Spark招聘推荐可视化系统 大数据项目 毕业设计(源码下载)
- python爬虫开发题答案及题目-100(1).zip
- Python 小游戏 (贪吃蛇、五子棋、扫雷、俄罗斯方块)-3 (2).zip
- c语言实现的数独小游戏.zip
- 高德地图中国行政区划省、市、县经纬度
- March 2024 Expiration Of The OAM Out Of The Box Certificates
- 二叉搜索树迭代器(java代码).docx
- 解决keil MDK 5.38版本 在Debug配置使用STlink调试时软件闪退的问题
- py小项目:用户登录和注册系统开发欢迎图片
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功