基于FPGA的数字时钟verilog开发
目录
一、理论基础
二、案例背景
1.问题描述
2.思路流程
三、verilog核心仿真
四、仿真结论分析
五、参考文献
一、理论基础
整个程序分为以下三大部分:
·时钟控制部分,分为调整分,秒功能,秒清零功能;
·暂停功能,时钟计数停止功能;
·4位数码管显示功能;
系统按键为,分快速调整按钮,复位,秒清零按钮,系统暂停按钮(工作和暂停两个功能供用)
所以需要四个按钮。
二、案例背景
1.问题描述
整个系统的基本框图如下所示:
2.思路流程
·按键消抖主要是通过延迟的功能来实现的,在实际下板子的时候往往需要延迟很长一段时间,所以我们的代码为您提供两个版本的代码,一个版本为仿真版本,不加消抖,一个版本为硬件版本,具有消抖功能。
·仿真版本主要考虑系统的功能,所以我们直接对时钟进行系统控制;而硬件版本,我们为了得到1秒对应的时钟,需要对系统时钟进行分频。
三、verilog核心仿真
top程序如下:
module time_module(i_clk, //系统时钟//这里假设按键的初始状态为0,按下后为1 i_rst, //系统复位i_min_fast,//调整分i_sec_fast,//调整秒i_stop_run,//暂停或者继续工作o_min, //显示分o_sec //显示秒);
input i_clk;
input i_rst;
input i_min_fast;
input i_sec_fast;
input i_stop_run; output[7:0]o_min;
output[7:0]o_sec;reg[7:0]o_min = 8'd0;
reg[7:0]o_sec = 8'd0;always @(posedge i_clk or posedge i_rst)
beginif(i_rst)begino_min <= 8'd0;//59o_sec <= 8'd0;//59end
else beginif(i_stop_run == 0)//不按下时为0,时钟正常工作begin//正常计时间if(o_sec[3:0] == 4'd9)begino_sec[3:0] <= 4'd0;if(o_sec[7:4] == 4'd5)begino_sec[7:4] <= 4'd0;//分计数if(o_min[3:0] == 4'd9)begino_min[3:0] <= 4'd0;if(o_min[7:4] == 4'd5)begino_min[7:4] <= 4'd0;endelse begin o_min[7:4] <= o_min[7:4] + 4'd1;endendelse begino_min[3:0] <= o_min[3:0] + 4'd1;end endelse begin o_sec[7:4] <= o_sec[7:4] + 4'd1;endendelse begino_sec[3:0] <= o_sec[3:0] + 4'd1;end //调整时间 if(i_min_fast == 1'b1)beginif(o_min[3:0] == 4'd9)begino_min[3:0] <= 4'd0;if(o_min[7:4] == 4'd5)begino_min[7:4] <= 4'd0;endelse begin o_min[7:4] <= o_min[7:4] + 4'd1;endendelse begino_min[3:0] <= o_min[3:0] + 4'd1;end endif(i_sec_fast == 1'b1)begino_sec <= 8'd0;endendelse begin//按下时为1,时钟停止o_min <= o_min;o_sec <= o_sec; end end
endendmodule
四、仿真结论分析
仿真结果如下所示:
正常运行:
如上图可以看到,当秒计数到59的事后哦,变0,然后分的数字加1;
调整:
分调整:
分调整按钮按下,分马上开始快速计数,和现实中的电子表一个原理。
秒调整:
秒调整按钮按下,秒变0。
暂停:
当按下暂停的时候,停止走动。
复位:
通过复位后,系统变为0;A02-36
基于FPGA的数字时钟verilog开发相关推荐
- 基于FPGA的数字时钟设计
基于FPGA的数字时钟设计 芯片与开发板 技术指标 1.具有正常的日时分秒技术显示功能,用七个数码管分别显示日,时,分,秒. 2.有按键校日,校时,校分,校秒. 3.利用led模拟整点报时功能. 4. ...
- 基于FPGA的数字时钟(使用vivado)
基于FPGA的数字时钟(使用vivado) 使用两个四位数码管,可以实现时钟分钟秒钟显示,高两位设置不显示. 换了一个新开发板,nexys4ddr,资料不多,最多使用的就是一本英文Reference ...
- 基于FPGA的数字时钟的设计课设(HUAT)
目录 前言 一.数字时钟课设目标 二.部分代码 1.clock.v代码的编写 2.完整代码 3.仿真代码 总结 前言 学校黄老师的FPGA的设计课设,最后的课设为数字时钟,实现分时的计数功能,带有整点 ...
- 基于FPGA的呼叫设备verilog开发
欢迎订阅<FPGA学习入门100例教程>.<MATLAB学习入门100例教程> 目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 随着集成电路技术的发展,电子设计自 ...
- m基于FPGA的数字下变频verilog设计
目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA 1.算法描述 整个数字下变频的基本结构如下所示 NCO使用CORDIC算法,CIC采用h结构的CIC滤波器,HBF采 ...
- 基于FPGA的数字时钟显示(万年历lcd1602)
一. lcd1602a的驱动和配置 (1) lcd1602a的管脚分配图,在程序中,我们需要对相应的管脚进行操作,才能使其正确显示 (2) 由于我使用的板子EP4CE6上的晶振是50MHZ,而lc ...
- 基于FPGA的数字钟(四)——时钟控制模块
一.需求分析 时钟控制模块,需要生成秒,分,时三路信号,需要有外部信号能对其进行控制. 按照正常时钟逻辑: 秒满60归零: 分在秒满60时进1,分满60归零: 时在分满60时进1,时满24归零. 外部 ...
- 基于FPGA的数字钟——(三)时钟显示模块(数码管)
基于FPGA的数字钟--(三)数码管显示模块 一.硬件原理 本设计中使用 6 个共阳数码管,可以显示 6 个数字(包含小数点) .电路用 PNP管来反向驱动并且控制列扫描信号来选择哪个数码管.而且所有 ...
- [FPGA]基于FPGA的数字跑表
基于FPGA的数字跑表的设计与实现 一.设计要求 用FPGA设计并实现一个数字跑表,范围为0~59分59.99秒.可以实现数字跑表进行启动.停止计时和显示读数三个操作,可以在数码管上显示读数. 二.设 ...
- 基于FPGA的数字视频信号处理器设计(中)
今天给大侠带来基于FPGA的数字视频信号处理器设计,由于篇幅较长,分三篇.今天带来第二篇,中篇,视频信号概述和视频信号处理的框架.话不多说,上货. 之前也有图像处理相关方面的文章,这里超链接几篇,给各 ...
最新文章
- Vim对中文编码的支持[转]
- 世界首条柔性人造触觉神经诞生,有望应用于义肢感触等领域
- 高性能云计算展望(中)
- html头文件设置常用之meta设置缓存
- SVN服务器与客户端的配置
- NullInjectorError:No provider for MyNewService
- 2004-4-3+ asp.net编程环境的配置
- 扩散(信息学奥赛一本通-T1437)
- 微信自动抢红包软件被判赔475万
- sql学习练习题_学习SQL:练习SQL查询
- main()在C和C ++中应该返回什么?
- oracle rac的特征
- heidisql导入sql文件
- 简单的猜字游戏Java版
- html 链接到 appstore,如何在微信浏览器内打开App Store链接
- nginx root 和alise
- 博士申请 | 华东师范大学张凯教授课题组招收图神经网络方向博士生
- 基于加权对立和贪婪搜索多模态工程问题的黑猩猩优化算法(Matlab代码实现)
- apu运行linux,AMD发布带全新APU的新LINUX版本驱动
- Unity3D粒子系统实现落叶效果